I; ; IBRATO WITH EL CHEAPO VARIABLE ; WIDTH (FREQUENCY HIGH BYTE) ; ; SES L6 VAR*2 TEMP ENTRY BMOVE #2 > L6 ;SPEED LOOP LOOP WAIT BMOVE #00 > TEMP+#1 ;HIGH BYTE BMOVE FREQ+#1 > TEMP ; WMUL TEMP ;DOUBLE IT WADD TEMP > FREQ & SID,COFFSET BDEC L6 UNTIL EQUAL LOOP WAIT BMOVE #00 > TEMP+#1 ;HIGH BYTE BMOVE FREQ+#1 > TEMP ; WMUL TEMP ;DOUBLE IT WSUB TEMP > FREQ & SID,COFFSET BINC L6 BTES L6<#4 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 #3>DUR UNTIL EQUAL WEND BAND #$FE > CREG&SID+#4,COFFSET ;CLEAR 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 #20 > 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 > #15 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; ; WEEP THE FREQUENCY, SLOWLY. ; ; OR USE WITH SYNC ; ; SES 7 VAR*2 TEMP SUB INC BMOVE FREQ+#1 > TEMP ;USE HIGH BYTE BORA #3 > TEMP WADD TEMP > FREQ & SID,COFFSET SEND SUB DEC BMOVE FREQ+#1 > TEMP ;USE HIGH BYTE BORA #3 > TEMP WSUB TEMP > FREQ & SID,COFFSET SEND ENTRY BMOVE #00 > L7 LOOP WAIT BADD #2 > L7 ;SPEED BTEST L7 > #128 WHEN POS JSUB INC ELSE JSUB DEC WEND FOREVER; ; IRROR VOICE 2 INTO VOICE 3, ; IN OCTAVES, ; PLUS A SMALL BEAT OFFSET ; ENTRY WMOVE SHADOW+#7 > SHADOW+#14 WDIV SHADOW+#14 WADD #01 > SHADOW+#14 & SID+#14 DONE; ; IRROR VOICE 2 INTO VOICE 3, ; IN OCTAVES, ; ENTRY WMOVE SHADOW+#14 > SHADOW+#7 WDIV SHADOW+#7 WMOVE SHADOW+#7 > SID+#7 DONE ; ; 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 34 ; ;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. ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQU SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (L3 > NOTE) > TEMP ;MOVE NEW FREQUENCY DATA INTO SID BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (L4 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER; ;a 2-NOTE ARPEGGIO, IF YOU LIKE. ; ;lOAD L7 WITH SPEED, L6 WITH INTERVAL ; VAR TEMP SUB DELAY BMOVE L7 > TEMP LOOP WAIT BDEC TEMP UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (L6 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY 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 ; ; LAYS THE FIRST FEW CLOCKS OF THE ; NOTE WITH A PULSE WAVEFORM. ; VAR TEMP DEF SIDCR SID+#4,COFFSET ENTRY BAND (#$0F > CREG) > TEMP BORA (#$20 > TEMP) > SIDCR WAIT WAIT WAIT WAIT BMOVE CREG > SIDCR DONE; ; IKE PULSE SWAP -- PLAY THE FIRST ; FEW TICKS IN A TRIANGLE WAVEFORM. ; VAR TEMP DEF S1 SID+#4,COFFSET ENTRY BAND (#$0F > CREG) > TEMP BORA (#$10 > TEMP) > S1 WAIT WAIT WAIT BMOVE CREG > S1 DONE; ;RPEGGIO 3-5-8 ; ;ARD-CODED ARPEGGIO TO SAVE ME ;SOME TYPING! ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (#6 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (#16 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER; ;INOR 3-5-8 ; ;ARD-CODED ARPEGGIO TO SAVE ME ;SOME TYPING! ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (#8 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (#18 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER; ;OMINANT 7TH, 3-5-7 NOTES ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (#6 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (#12 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER; ;RPEGGIO 1-3-5 (AJOR) ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (#8 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (#14 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER; ;RPEGGIO 1-3-5 (MINOR) ; VAR TEMP SUB DELAY BMOVE L7 > L6 LOOP WAIT BDEC L6 UNTIL EQUAL SEND ENTRY LOOP WMOVE FREQ > SID,COFFSET JSUB DELAY BADD (#6 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY BADD (#14 > NOTE) > TEMP BMOVE FLOTAB,TEMP > SID,COFFSET BMOVE FHITAB,TEMP > SID+#1,COFFSET JSUB DELAY FOREVER COMMENT THE MUSE - SLJ 7/98IIBRATO 1 K KATE DECAY LULSE RAMP dNULSE SWING P PREQ WEEP @RIRROR23 RIRROR32 nSEAT TOFTER TRPEGGIO 3 WWO STEP YXTRUM ZPPOGIATURA \ \AW SWAP c]RI SWAP <^AJOR 3-5-8 _INOR 3-5-8 aOMINANT 3-5-7?cAJ135 dIN135 afUTHOR ~f