fCOMMENT VIB1 ENTRY BMOVE #3 > L1 LOOP LOOP WADD #22> FREQ & SID,COFFSET WAIT BDEC L1 UNTIL EQUAL LOOP WAIT WSUB #22> FREQ & SID,COFFSET BINC L1 BTES L1<#6 UNTIL EQUAL FOREVER; BUZZ SLJ ENTRY LOOP WAIT WADD #400 > FREQ & SID,COFFSET WAIT WSUB #380 > FREQ&SID,COFFSET WAIT WSUB #380 > FREQ&SID,COFFSET WAIT WADD #400 > FREQ& SID,COFFSET 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 #1>DUR UNTIL EQUAL WEND BAND #$FE > CREG&SID+#4,COFFSET;CLR GATE DONE; SWEEP THE PULSE LOOP WADD #36 > PWIDTH&SID+#2,COFFSET WAIT FOREVER; ; VIBRATO 2 ; ;LIKE NORMAL VIBRATO, BUT FREQUENCY ;WIDTH INCREASES IN TIME ; ;USES VARIABLES L1, L2, AND L0 ; ENTRY WMOVE #35 > L1 ;INIT SWEEP SIZE BMOVE #3 > L0 LOOP LOOP WAIT WADD L1 > FREQ & SID,COFFSET BINC L0 BTEST L0 > #6 UNTIL EQUAL LOOP WAIT WSUB L1 > FREQ & SID,COFFSET BTEST L0 > #4 WHEN EQU WADD #40 > L1 WEND BDEC L0 UNTIL EQUAL FOREVER;ARPEGGIO 1 ;STRATEGY: NOTE TABLE IS SUCH THAT ; HALF STEPS LIE IN EVEN SLOTS IN ; NOTE TABLE. THUS TO DO A MAJOR ; ARPEGGIO TAKE THE CURRENT NOTE ; AND ADD THE APPROPRIATE INTERVAL ; ;TO USE: LOAD L7 WITH THE DESIRED ; SPEED. ; ;USES VARIABLES G13,G14,G15 AND L7 ;SO ONLY ONE ARPEGGIO AT A TIME! ; DATA EMBED 3 ;NUMBER OF STEPS EMBED 8 6 10;STEP DIFFERENTIALS ENTRY LOOP BMOVE NOTE > G15 ;STARTING NOTE BMOVE #0 > G14 ;DATA INDEX LOOP BMOVE L7 > G13 LOOP ;DELAY SPEED WAIT BDEC G13 UNTIL EQUAL ;ADD OFFSET BADD DATA+#1,G14 > G15 ;MOVE NEW FREQUENCY DATA INTO SID BMOVE FLOTAB,G15 > SID,COFFSET BMOVE FHITAB,G15 > SID+#1,COFFSET BINC G14 BTEST G14 > DATA ;NUMBER OF STEPS UNTIL EQUAL 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; ; WOBBLE ; ; THIS MACRO WOBBLES BETWEEN A NOTE ; AND THE NEXT OCTAVE UP. ; ; USES: L2 L3 L4 L5 L6 ; WMOVE FREQ > L2 & L4 WADD L2 > L2 ;NEXT OCTAVE LOOP BMOVE #7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL LOOP WAIT WADD #144 > FREQ & SID,COFFSET WTEST FREQ < L2 UNTIL POS WMOVE L2 > SID,COFFSET BMOVE #21 > L6 LOOOP WAIT BDEC L6 UNTIL EQU ;RESTORE OLD VALUE WMOVE L4 > FREQ&SID,COFFSET FOREVE; ; 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; ; bIT TWIDDLE -- TOGGLE A WAVEFORM ; BIT ON AND OFF TO CREATE NEW ; INSTRUMENTS. ; DATA EMBED 00 ENTRY LOOP BMOVE #2 > DATA LOOP WAIT BDEC DATA UNTIL EQU BEOR #%00010000 > CREG&SID+#4,COFFSET FOREVER; ;aRPEGGIO 2 ; ;lIKE ARPEGGIO 1 BUT MORE FLEXIBLE. ; ;lOAD L3 L4 WITH THE INTERVALS ;L7 WITH SPEED. ; ;USES VARIABLES G5 AND L7 ;SO ONLY ONE ARPEGGIO AT A TIME! ; DATA EMBED 00 ENTRY LOOP BMOVE NOTE > G5 ;STARTING NOTE BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQUAL ;ADD OFFSET BADD L3 > G5 ;MOVE NEW FREQUENCY DATA INTO SID BMOVE FLOTAB,G5 > SID,COFFSET BMOVE FHITAB,G5 > SID+#1,COFFSET BMOVE L7 > DATA LOOP WAIT BDEC DATA UNTIL EQU BADD L4 > G5 BMOVE FLOTAB,G5 > SID,COFFSET BMOVE FHITAB,G5 > SID+#1,COFFSET BMOVE L7 > DATA LOOP WAIT BDEC DATA 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 FOREVERQU; ; 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; COMMENT TUNE BY SLJ 9/3/97fIBRATO 1 fUZZ gATE DECAY hULSE SWEEP iIBRATO 2 jRPEGGIO 1 mIDER VIBRATO n nOBBLE HpEAT pWIDDLE qRPEGGIO 2 OtWO STEP u u u uIMPLE RUM ixASS DRUM [z \z ]z ^z _z `zUTHOR ~z