%d COMMENT VIB1 ENTRY BMOVE #2 > L1 LOOP LOOP WADD #11> FREQ & SID,COFFSET WAIT BDEC L1 UNTIL EQUAL LOOP WAIT WSUB #11> FREQ & SID,COFFSET BINC L1 BTES L1<#4 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; ; hOWL -- MAKE THE WIND (AND BANSHEE ; PERHAPS) HOWL BY SWEEPING THE FREQ ; AROUND. ; ENTRY LOOP BMOVE #80 > L1 LOOP WAIT WADD #56 > FREQ & SID,COFFSET BDEC L1 UNTIL EQU BMOVE #38 > L1 LOOP WAIT WSUB #26 > FREQ &SID,COFFSET BDEC L1 UNTIL EQU BMOVE #41 > L1 LOOP WAIT WADD #67 > FREQ & SID,COFFSET BDEC L1 UNTIL EQU BMOVE #80 > L1 LOOP WAIT WSUB #56 > FREQ & SID,COFFSET BDEC L1 UNTIL EQU BMOVE #38 > L1 LOOP WAIT WADD #26 > FREQ & SID,COFFSET BDEC L1 UNTIL EQU BMOVE #41 > L1 LOOP WAIT WSUB #67 > FREQ & SID,COFFSET BDEC L1 UNTIL EQU ; aT THIS POINT, FREQ SHOULD BE BACK ; TO ITS INITIAL VALUE 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; ; 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 #%00110000 > CREG&SID+#4,COFFSET FOREVER; ;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 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; ;dRAIN -- DECREASE THE FREQUENCY ; ENTRY LOOP WAIT WSUB #05 > FREQ & SID,COFFSET FOREVER; COMMENT hALLOWEEN97 BY SLJ 10/29/97'dÖIBRATO 1 ëdÂUZZ §eÇATE DECAY ÐfÐULSE SWEEP gÖIBRATO 2 ±hÁRPEGGIO 1 °k×IDER VIBRATO  l ¡lÈOWL poÂEAT pÔWIDDLE âpÁRPEGGIO 3 æsÔWO STEP au bu cu duÓIMPLE ÄRUM xÂASS DRUM òyÄRAIN Sz Tz Uz Vz WzÁUTHOR ~z