ð0@S; ;nAME: C64 CHORDS ; ;aUTHOR: jONAS hULTEN ; ;mODULATIONS: ; fILTER FREQUENCY CONTROLLED BY ; MODULATION WHEEL. ; ;nOTES: ; pLAY ON THE UPPER PART OF THE ; KEYBOARD. cHANGE CHORDS BY PRESSING ; THREE DIFFERENT KEYS IN THE LOWEST ; OCTAVE. aLWAYS START WITH c. ; GLOBAL D0,D1,D2 GLOBALiNIT: SETTIMERI 20000 ;50 hZ SET sidgVOLUME SET sidgFILTERbp SET sidgFILTERrESO MOVEI 0,D0 MOVEI 3,D1 MOVEI 7,D2 END GLOBALaLWAYS: MOVE midgPITCH,sidgFILTERfREQ SHIFTRI 3,sidgFILTERfREQ DISPLAY midgMODwHEEL END LOCAL CHORD LOCALiNIT1: LOCALiNIT2: LOCALiNIT3: MOVEI $E000,sidATTACK MOVEI $E000,sidDECAY MOVEI $9000,sidRELEASE SET sidFILTER CLR CHORD END LOCALkEYdOWN1: CMPI 48,midKEY BHI PLAYiT ;CHANGE CHORD MOVE midKEY,KEY SUBI 36,KEY REG2GLOB KEY,D0 END LOCALkEYdOWN2: CMPI 48,midKEY BHI PLAYiT ;CHANGE CHORD MOVE midKEY,KEY SUBI 36,KEY REG2GLOB KEY,D1 END LOCALkEYdOWN3: CMPI 48,midKEY BHI PLAYiT ;CHANGE CHORD MOVE midKEY,KEY SUBI 36,KEY REG2GLOB KEY,D2 END PLAYiT: MOVE midVELOCITY,sidSUSTAIN MAXI $3000,sidSUSTAIN MOVE midFREQ,sidFREQ ;PLAY CORRECT FREQUENCY SET sidGATE ;ACTIVATE aTTACK/dECAY CLR sidTRIANGLE SET sidSAW END LOCALkEYuP1: LOCALkEYuP2: LOCALkEYuP3: CLR sidGATE ;ACTIVATE RELEASE SET sidTRIANGLE CLR sidSAW END LOCAL KEY,TEMP LOCALaLWAYS1: LOCALaLWAYS2: LOCALaLWAYS3: CMPI 1,CHORD BHI LBL2 BEQ LBL1 LBL0: MOVEI 1,CHORD ; NOTE2FREQ midKEY,sidFREQ MOVE midKEY,KEY GLOB2REG D0,TEMP ADD TEMP,KEY NOTE2FREQ KEY,sidFREQ END LBL1: MOVEI 2,CHORD MOVE midKEY,KEY GLOB2REG D1,TEMP ADD TEMP,KEY NOTE2FREQ KEY,sidFREQ END LBL2: MOVEI 0,CHORD MOVE midKEY,KEY GLOB2REG D2,TEMP ADD TEMP,KEY NOTE2FREQ KEY,sidFREQ END÷