'                              Midi-Arpeggio-Demo
'                                 in GFA-Basic
'                                 fr Atari ST
'                          (c) Sebastian Niessen 7/89
' *****************************************************************************
midi=3
channel=1
turn_on=143+channel
turn_off=127+channel
max_note=32
DIM puffer(max_note,2)
'
'
HIDEM
PRINT "KEYS Midi-Arpeggiator, hit <space> to clear, <q> to quit."
@midi_flush
'
WHILE INKEY$<>"q"
  '
  WHILE INP?(midi) AND count_note<max_note
    IF INP(midi)=turn_on
      @store_note
      count_note=count_note+1
    ENDIF
  WEND
  '
  IF count_note
    @send_note(turn_on)
    PAUSE 5
    @send_note(turn_off)
    PAUSE 5
    play_note=(play_note+1) MOD count_note
    '
    IF INKEY$=" "
      @midi_flush
      count_note=0
      play_note=0
    ENDIF
  ENDIF
  '
WEND
EDIT
'
'
PROCEDURE midi_flush
  WHILE INP?(midi)
    VOID INP(midi)
  WEND
RETURN
'
PROCEDURE store_note
  puffer(count_note,0)=INP(midi)
  puffer(count_note,1)=INP(midi)
RETURN
'
PROCEDURE send_note(kommando)
  OUT (midi),kommando
  OUT (midi),puffer(play_note,0)
  OUT (midi),puffer(play_note,1)
RETURN
