Ád COMMENT VIB1 ENTRY BMOVE #3 > L6 LOOP LOOP WAIT WADD #34> FREQ & SID,COFFSET BDEC L6 UNTIL EQUAL LOOP WAIT WSUB #34> FREQ & SID,COFFSET BINC L6 BTES L6<#6 UNTIL EQUAL FOREVER; GATE TOGGLE ; THE IDEA IS TO START THE DECAY ; CYCLE ON THE LAST BEAT, E.G. TO ; ALLOW SEQUENTIAL NOTES OF THE ; SAME FREQUENCY BOR #1 > CREG&SID+#4,COFFSET ;SET GATE BTEST #1>DUR WHEN NEQUAL LOOP WAIT BTEST #2>DUR UNTIL EQUAL WEND BAND #$FE > CREG&SID+#4,COFFSET;CLR GATE DONE; ; RAMP THE PULSE UP AND THEN DOWN. ; BMOVE #00 > L2 WMOVE PWIDTH > L0 LOOP LOOP WAIT ; TEST BIT ON ; BOR #$08 > CREG&SID+#$12,COFFSET WADD #41> L0&SID+#2,COFFSET ; TEST BIT BACK OFF ; BAND #$F7 > CREG&SID+#$12,COFFSET BINC L2 BTEST L2 > #14 UNTIL EQU LOOP WAIT ; BOR #$08 > CREG & SID+#$12,COFFSET WSUB #41 > L0&SID+#2,COFFSET ; BAND #$F7 > CREG & SID+#$12,COFFSET BDEC L2 UNTIL EQU FOREVER; ; a NONLINEAR PULSE RAMP. ; DATA EMBED 00 00 0 0 ENTRY BMOVE #00 > L1 BMOVE #30 > L0 WMOVE PWIDTH > DATA+#2 LOOP LOOP WAIT ; TEST BIT ON ; BOR #$08 > CREG&SID+#$12,COFFSET BMOVE L0 > DATA WADD DATA > DATA+#2&SID+#2,COFFSET ; TEST BIT BACK OFF ; BAND #$F7 > CREG&SID+#$12,COFFSET BADD #7 > L0 BINC L1 BTEST L1 > #21 UNTIL EQU LOOP BSUB #7 > L0 WAIT ; BOR #$08 > CREG & SID+#$12,COFFSET BMOVE L0 > DATA WSUB DATA > DATA+#2&SID+#2,COFFSET ; BAND #$F7 > CREG & SID+#$12,COFFSET BDEC L1 UNTIL EQU FOREVER; ;lIKE VIBRATO, BUT A LITTLE WIDER, ;FOR HIGHER NOTES. ENTRY BMOVE #3 > L1 LOOP LOOP WADD #36> FREQ & SID,COFFSET WAIT BDEC L1 UNTIL EQUAL LOOP WAIT WSUB #36> FREQ & SID,COFFSET BINC L1 BTES L1<#6 UNTIL EQUAL FOREVER; ; bEAT -- oFFSET THE FREQUENCY BY ; A LITTLE BIT TO PRODUCE BEATS ; ESP. FOR PLAYING IN OCTAVES. ; ; SLJ 8/97 WADD #6 > FREQ & SID,COFFSET DONE; ; LOWER THE SUSTAIN LEVEL ; DATA EMBED 00 ENTRY BMOVE SUREL > DATA ;CLUMSY BAND #$0F > DATA BOR #$80 > DATA & SID+#6,COFFSET DONE ; ;aRPEGGIO 3 ; ;lIKE ARPEGGIO 1 BUT MORE FLEXIBLE. ; ;lOAD L3 L4 WITH THE INTERVALS FROM ;THE ROOT, E.G. L3=8 AND L4=14 FOR ;A MAJOR ARPEGGIO, L3=6 FOR MINOR, ;ETC. ;lOAD L7 WITH SPEED. ; ;uSES L6 AS TEMPORARY COUNTER. ; DATA EMBED 00 ENTRY LOOP BMOVE NOTE > G5 ;STARTING NOTE BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL BMOVE NOTE > DATA ;INITIAL NOTE BADD L3 > DATA ;ADD OFFSET ;MOVE NEW FREQUENCY DATA INTO SID BMOVE FLOTAB,DATA > SID,COFFSET BMOVE FHITAB,DATA > SID+#1,COFFSET BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQU BMOVE NOTE > G5 BADD L4 > DATA BMOVE FLOTAB,DATA > SID,COFFSET BMOVE FHITAB,DATA > SID+#1,COFFSET BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQU WMOVE FREQ > SID,COFFSET FOREVER ; ;a 2-NOTE ARPEGGIO, IF YOU LIKE. ; ;lOAD L7 WITH SPEED, L6 WITH INTERVAL ; ;uSES VARS G6 DATA EMBED 0 ENTRY LOOP BMOVE NOTE > G6 BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQUAL BADD L6 > G6 BMOVE FLOTAB,G6 > SID,COFFSET BMOVE FHITAB,G6 > SID+#1,COFFSET BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQU WMOVE FREQ > SID,COFFSET FOREVER; ;sTRUM ; ;lIKE ARPEGGIO 3 BUT STRUMS THE ;ARPEGGIO ONCE. ; ;lOAD L3 L4 WITH THE INTERVALS FROM ;THE ROOT, E.G. L3=8 AND L4=14 FOR ;A MAJOR ARPEGGIO, L3=6 FOR MINOR, ;ETC. ;lOAD L7 WITH SPEED. ; DATA EMBED 00 ENTRY BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQUAL BMOVE NOTE > DATA ;INITIAL NOTE BADD L3 > DATA ;ADD OFFSET ;MOVE NEW FREQUENCY DATA INTO SID BMOVE FLOTAB,DATA > SID,COFFSET _ & FREQ BMOVE FHITAB,DATA > SID+#1,COFFSET _ & FREQ+#1 BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQU BMOVE NOTE > DATA BADD L4 > DATA BMOVE FLOTAB,DATA > SID,COFFSET&FREQ BMOVE FHITAB,DATA > SID+#1,COFFSET _ & FREQ+#1 DONE; ; a GRACE-NOTE. a ONE-NOTE STRUM ; IN A SENSE. ; ; L3 = NOTE OFFSET ; L4 = DELAY DATA EMBED 00 ENTRY BMOVE NOTE > DATA BADD L3 > DATA BMOVE FLOTAB,DATA > SID,COFFSET BMOVE FHITAB,DATA > SID+#1,COFFSET BMOVE SUREL > DATA ; ACCENT BOR #$F0 > DATA & SID+#6,COFFSET BMOVE L4 > DATA LOOP WAIT BDEC DATA UNTIL EQUAL ;RESTORE NOTE BMOVE SUREL > SID+#6,COFFSET WMOVE FREQ > SID,COFFSET DONE ; ; A SIMPLE DRUM ; ; STARTING FROM THE CURRENT NOTE, ; IT PLAYS A SHORT SEQUENCE OF NOTES ; ; USES JUST ONE INTERNAL VARIABLE ; AND ONLY AT THE BEGINNING; ; COMMENT DRUM1 DATA EMBED $00 ;TEMPORARY VARIABLE! ENTRY BMOVE #168 > DATA ;24*7=HIGH OFFSET BADD NOTE > DATA BMOVE #00 > ATDK & SID+#5,COFFSET BMOVE #$F7 > SUREL & SID+#6,COFFSET BMOVE #$81 > CREG & SID+#4,COFFSET BMO FLOTAB,DATA > SID,COFFSET BMO FHITAB,DATA > SID+#1,COFFSET WAIT BMOVE #$11 > CREG & SID+#4,COFFSET WMOVE FREQ > SID,COFFSET ;OLD FREQ WAIT WAIT WAIT BMOVE #$80 > CREG & SID+#4,COFFSET BMO FLOTAB,DATA > SID,COFFSET BMO FHITAB,DATA > SID+#1,COFFSET DONE; ; BASS DRUM ; DATA EMBED 00 ;INDEX VARIABLE EMBED 00 ;SPARE VARIABLE EMBED 44 40 36 32 26 20 14 8 ENTRY BMOVE #00 > DATA BMOVE #$81 > CREG& SID+#4,COFFSET BMOVE #00 > ATDK & SID+#5,COFFSET BMOVE #$F7 > SUREL & SID+#6,COFFSET LOOP WAIT BMOVE #$11 > CREG&SID+#4,COFFSET BMOVE DATA+#2,DATA > DATA+#1 BMOVE FLOTAB,DATA+#1 > SID,COFFSET BMOVE FHITAB,DATA+#1 > SID+#1,COFFSET WAIT WAIT WAIT WAIT BINC DATA BTEST DATA > #8 UNTIL EQUAL BMOVE #$10 > CREG&SID+#4,COFFSET DONE; ;dRAIN -- DECREASE THE FREQUENCY ; ENTRY LOOP WAIT WSUB #05 > FREQ & SID,COFFSET FOREVER; COMMENT hALLOWEEN97 BY SLJ 10/29/97ÃdÖIBRATO 1 ‡e ˆeÇATE DECAY ±fÐULSE RAMP ihÐULSE SWING  j ¡j×IDER VIBRATO ‘k ’k “kÂEAT (lÓOFTER °lÁRPEGGIO 3 ´oÔWO STEP /qÓTRUM ÓsÁPPOGIATURA cu duÓIMPLE ÄRUM xÂASS DRUM òyÄRAIN Sz Tz Uz Vz WzÁUTHOR ~z