 '                              Midi-Arpeggio-Demo
 '                               in Omikron-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)
 '
 '
 MOUSEOFF
 PRINT "KEYS Midi-Arpeggiator, hit <space> to clear, <q> to quit."
 Midi_Flush
 '
 WHILE RIGHT$( INKEY$ ,1)<>"q"
   Status=1
   WHILE Status<>0 AND Count_Note<Max_Note
     BIOS (Status,1,Midi)
     IF Status THEN
       BIOS (Byte,2,Midi)
       IF Byte+256=Turn_On THEN
         Store_Note
         Count_Note=Count_Note+1
       ENDIF
     ENDIF
   WEND
   '
   IF Count_Note THEN
     Send_Note(Turn_On)
     WAIT .1
     Send_Note(Turn_Off)
     WAIT .1
     Play_Note=(Play_Note+1) MOD Count_Note
     '
     IF RIGHT$( INKEY$ ,1)=" " THEN
       Midi_Flush
       Count_Note=0
       Play_Note=0
     ENDIF
   ENDIF
 WEND
 END
 '
 '
 DEF PROC Midi_Flush
 REPEAT
   BIOS (Status,1,Midi)
   IF Status THEN
     BIOS (Byte,2,Midi)
   ENDIF
 UNTIL Status=0
 RETURN
 '
 DEF PROC Store_Note
   BIOS (Puffer(Count_Note,0),2,Midi)
   BIOS (Puffer(Count_Note,1),2,Midi)
 RETURN
 '
 DEF PROC Send_Note(Kommando)
   BIOS (,3,Midi,Kommando)
   BIOS (,3,Midi,Puffer(Play_Note,0))
   BIOS (,3,Midi,Puffer(Play_Note,1))
 RETURN
