Sequencing |
'{ $STAMP BS2 } drumnote VAR BYTE 'Useful constants for MIDI I/O baudmode CON 60 '60 for BS2sx, 12 for BS2 midinoteon CON 144 'Define voicing constants kick CON 35 'kick drum note number 'Define channel constants drumchan CON 9 'drums on channel 10 loop: PAUSE 400 'sleep for 400 milliseconds ... controls tempo drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO loop |
'{ $STAMP BS2 } tick16 VAR NIB drumnote VAR BYTE 'Useful constants for MIDI I/O baudmode CON 60 '60 for BS2sx, 12 for BS2 midinoteon CON 144 'Define voicing constants kick CON 35 'kick drum note number 'Define channel constants drumchan CON 9 'drums on channel 10 tick16 = 0 loop: PAUSE 100 'sleep for 100 milliseconds ... controls tempo IF tick16 = 0 THEN case0 IF tick16 = 1 THEN case1 IF tick16 = 2 THEN case2 IF tick16 = 3 THEN case3 IF tick16 = 4 THEN case4 IF tick16 = 5 THEN case5 IF tick16 = 6 THEN case6 IF tick16 = 7 THEN case7 IF tick16 = 8 THEN case8 IF tick16 = 9 THEN case9 IF tick16 = 10 THEN case10 IF tick16 = 11 THEN case11 IF tick16 = 12 THEN case12 IF tick16 = 13 THEN case13 IF tick16 = 14 THEN case14 IF tick16 = 15 THEN case15 GOTO inctick16: case0: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case1: GOTO inctick16 case2: GOTO inctick16 case3: GOTO inctick16 case4: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case5: GOTO inctick16 case6: GOTO inctick16 case7: GOTO inctick16 case8: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case9: GOTO inctick16 case10: GOTO inctick16 case11: GOTO inctick16 case12: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case13: GOTO inctick16 case14: GOTO inctick16 case15: inctick16: tick16 = tick16 + 1 'increment wraps every 16 because of NIB size GOTO loop |
'{ $STAMP BS2 } tick16 VAR NIB drumnote VAR BYTE 'Useful constants for MIDI I/O baudmode CON 60 '60 for BS2sx, 12 for BS2 midinoteon CON 144 'Define voicing constants kick CON 35 'kick drum note number closedhat CON 42 'closed hi-hat note number 'Define channel constants drumchan CON 9 'drums on channel 10 tick16 = 0 loop: PAUSE 100 'sleep for 100 milliseconds ... controls tempo IF tick16 = 0 THEN case0 IF tick16 = 1 THEN case1 IF tick16 = 2 THEN case2 IF tick16 = 3 THEN case3 IF tick16 = 4 THEN case4 IF tick16 = 5 THEN case5 IF tick16 = 6 THEN case6 IF tick16 = 7 THEN case7 IF tick16 = 8 THEN case8 IF tick16 = 9 THEN case9 IF tick16 = 10 THEN case10 IF tick16 = 11 THEN case11 IF tick16 = 12 THEN case12 IF tick16 = 13 THEN case13 IF tick16 = 14 THEN case14 IF tick16 = 15 THEN case15 GOTO inctick16 case0: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case1: GOTO inctick16 case2: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case3: GOTO inctick16 case4: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case5: GOTO inctick16 case6: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case7: GOTO inctick16 case8: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case9: GOTO inctick16 case10: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case11: GOTO inctick16 case12: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case13: GOTO inctick16 case14: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case15: inctick16: tick16 = tick16 + 1 'increment wraps every 16 because of NIB size GOTO loop |
'{ $STAMP BS2 } tick16 VAR NIB drumnote VAR BYTE bassnote VAR BYTE 'Useful constants for MIDI I/O baudmode CON 60 '60 for BS2sx, 12 for BS2 midinoteon CON 144 midinoteoff CON 128 midiprogchng CON 192 'Define voicing constants kick CON 35 'kick drum note number closedhat CON 42 'closed hi-hat note number bass CON 39 'bass program number 'Define channel constants drumchan CON 9 'drums on channel 10 basschan CON 0 'bass on channel 1 'Set voices with ProgramChange messages SEROUT 15, baudmode, 0, [midiprogchng+basschan, bass] bassnote = 28 tick16 = 0 loop: PAUSE 100 'sleep for 100 milliseconds ... controls tempo IF tick16 = 0 THEN case0 IF tick16 = 1 THEN case1 IF tick16 = 2 THEN case2 IF tick16 = 3 THEN case3 IF tick16 = 4 THEN case4 IF tick16 = 5 THEN case5 IF tick16 = 6 THEN case6 IF tick16 = 7 THEN case7 IF tick16 = 8 THEN case8 IF tick16 = 9 THEN case9 IF tick16 = 10 THEN case10 IF tick16 = 11 THEN case11 IF tick16 = 12 THEN case12 IF tick16 = 13 THEN case13 IF tick16 = 14 THEN case14 IF tick16 = 15 THEN case15 GOTO inctick16: case0: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] SEROUT 15, baudmode, 0, [midinoteoff+basschan, bassnote, 64] bassnote = 28 SEROUT 15, baudmode, 0, [midinoteon+basschan, bassnote, 64] GOTO inctick16 case1: GOTO inctick16 case2: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case3: GOTO inctick16 case4: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case5: GOTO inctick16 case6: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case7: GOTO inctick16 case8: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case9: GOTO inctick16 case10: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case11: GOTO inctick16 case12: drumnote = kick SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case13: GOTO inctick16 case14: drumnote = closedhat SEROUT 15, baudmode, 0, [midinoteon+drumchan, drumnote, 64] GOTO inctick16 case15: inctick16: tick16 = tick16 + 1 'increment wraps every 16 because of NIB size GOTO loop |