sr = 44100 kr = 441 ksmps = 100 nchnls = 2 ; scroll.csd: Extracted from Electric Drum Kit ; DRUM MACHINE instr 1 kstep init 0 ; SEQUENCER SECTION ;------------------------------------------------------------------------- loop1: ; READ ALL OF THE TABLE VALUES. kdur table kstep, p5 kdrnum table kstep, p6 kleft table kstep, p7 kright table kstep, p8 kdur1 = kdur/8 ; MAKE THE STEP SMALLER. ; ALL OF THE ENVELOPES WANT TO BE OUTSIDE OF THE IF FOR SOME REASON. kampenv1 linseg 0, .01, p4/2, .04, 0, .01, 0 kampenv2 expseg .0001, .01, p4, .04, .01 kfreqenv expseg 50, .01, 200, .08, 50 kampenv3 expseg .0001, .01, p4*2, .08, .01 kampenv4 linseg 0, .001, 1, i(kdur1)-.021, 1, .02, 0 kfreqenv51 expseg 50, .01, 200, .08, 50 kfreqenv52 linseg 150, .01, 1000, .08, 250, .01, 250 kampenv5 linseg 0, .01, p4, .08, 0, .01, 0 kptchenv linseg 100, .01, 300, .2, 200, .01, 200 kampenv61 expseg .01, .01, p4, .2, p4/100, .1, .001 kampenv62 linseg 1, .1, 10, .1, .5, .01, 1 ; SOME OF THE SIGNAL GENERATORS MUST BE OUTSIDE OF THE IF'S asig4 pluck p4/2, kptchenv, 50, 2, 4, .8, 3 asig5 foscil kampenv61, 30, 1, 6.726, kampenv62, 1 ; SWITCH BETWEEN THE DIFFERENT DRUMS if (kdrnum != 0) goto next1 ; HIHAT aout rand kampenv1 goto endswitch next1: if (kdrnum != 1) goto next2 ; DUMB DRUM asig rand kampenv2 afilt reson asig, 1000, 100 aout balance afilt, asig goto endswitch next2: if (kdrnum != 2) goto next3 ; DUMB BASS DRUM asig rand kampenv3 afilt reson asig, kfreqenv, kfreqenv/8 aout balance afilt, asig goto endswitch next3: if (kdrnum != 3) goto next4 ; KS SNARE aout = kampenv4*asig4 goto endswitch next4: if (kdrnum != 4) goto next5 ; SORTA COOL KNOCK SWEEP DRUM asig rand kampenv5 afilt1 reson asig, kfreqenv51, kfreqenv51/8 afilt2 reson asig, kfreqenv52, kfreqenv52/4 aout1 balance afilt1, asig aout2 balance afilt2, asig aout = (aout1+aout2)/2 goto endswitch next5: if (kdrnum != 5) goto endswitch ; FM METAL BOINK DRUM aout = asig5 endswitch: ; WHEN THE TIME RUNS OUT GO TO THE NEXT STEP ; OF THE SEQUENCE AND REINITIALIZE THE ENVELOPES. timout 0, i(kdur1), cont1 kstep = frac((kstep + 1)/8)*8 reinit loop1 cont1: outs 5*aout*kleft, 5*aout*kright endin ; FIGURE OUT YOUR DRUMS DOWN HERE. THEN MOVE ENVELOPES INTO THE ENVELOPE ; SECTION AND THE REST INTO THE SWITCH SECTION OF THE DRUM MACHINE. instr 2 ; DUMB DRUM 1 kampenv expseg .0001, .01, p4, .04, .01 asig rand kampenv afilt reson asig, 1000, 100 aout balance afilt, asig outs aout, aout endin instr 3 ; DUMB BASS DRUM kfreqenv expseg 50, .01, 200, .08, 50 kampenv expseg .0001, .01, p4, .08, .01 asig rand kampenv afilt reson asig, kfreqenv, kfreqenv/8 aout balance afilt, asig outs aout, aout endin instr 4 ; KS SNARE DRUM kampenv4 linseg 0, .001, 1, p3-.021, 1, .02, 0 kptchenv linseg 100, .01, 300, .2, 200, .01, 200 asig pluck p4, kptchenv, 50, 2, 4, .8, 3 aout = kampenv4*asig outs aout, aout endin instr 5 ; SORTA COOL KNOCK SWEEP DRUM kfreqenv41 expseg 50, .01, 200, .08, 50 kfreqenv42 linseg 150, .01, 1000, .08, 250 kampenv4 linseg 0, .01, p4, .08, 0, .01, 0 asig rand kampenv4 afilt1 reson asig, kfreqenv41, kfreqenv41/8 afilt2 reson asig, kfreqenv42, kfreqenv42/4 aout1 balance afilt1, asig aout2 balance afilt2, asig outs (aout1+aout2)/2, (aout1+aout2)/2 endin instr 6 ; FM METAL BOINK DRUM kampenv61 expseg .01, .01, p4, .2, p4/100, .1, .001 kampenv62 linseg 1, .1, 10, .1, .5, .01, 1 asig foscil kampenv61, 30, 1, 6.726, kampenv62, 1 outs asig, asig endin ; Score f1 0 8192 10 1 f2 0 1024 7 1 1024 1 ; Duration f21 0 8 -2 1 1 1 1 1 1 1 1 f25 0 8 -2 4 1 1 2 4 1 1 2 f29 0 8 -2 4 1 1 1 1 4 2 2 ; Drums : 0=HiHat, 1=Tap, 2=Bass, 3=KS Snare, 4=Sweep, 5=FMBoink f22 0 8 -2 0 1 0 1 2 1 0 1 f26 0 8 -2 4 3 3 2 4 2 3 4 f30 0 8 -2 4 2 1 5 4 5 5 4 ; Panning f23 0 8 -2 1 0 1 0 1 0 1 1 f24 0 8 -2 0 1 0 1 1 1 1 0 f27 0 8 -2 1 0 1 1 0 1 1 0 f28 0 8 -2 0 1 0 0 1 1 0 1 f31 0 8 -2 0 0 0 0 0 1 1 0 f32 0 8 -2 1 1 1 1 1 0 1 1 ; Sta Dur Amp Tables ; Dur Drum PanL PanR i1 0 .5 8000 21 22 23 24 ;i2 0 0.25 8000 25 26 27 28 ; i1 0 6 8000 29 30 31 32 ; s ; f0 2 ; s ; i2 .2 .2 20000 ; i2 + .2 20000 ; s ; f0 2 ; s ; i6 0 .1 20000 ; i6 + .2 20000 ; s ; f0 2 ; s ; i4 0 1 10000