// Michael J. Wilson // Music 220a Fall 2010 // Final Project // Very basic four-sound drumkit public class MainDrums { // Kick (for sporking): fun void play_kick(float volume) { SinOsc i => ADSR e => Gain g => Control.chan[12]; 30 => i.freq; 20.0 => i.gain; e.set( 0::ms, 15::ms, 0.5, 5::ms ); volume => g.gain; e.keyOn(); 15::ms => now; e.keyOff(); .5::second => now; } // Hi-hat (closed) (for sporking): fun void play_closed_hat(float volume) { Noise n => HPF f => ADSR e => Gain g => Control.chan[12]; 1.0 => n.gain; e.set( 0::ms, 15::ms, 0.15, 5::ms ); 250 => f.freq; volume => g.gain; e.keyOn(); 40::ms => now; e.keyOff(); .5::second => now; } // Hi-hat (open) (for sporking): fun void play_open_hat(float volume) { Noise n => HPF f => ADSR e => PRCRev r => Gain g => Control.chan[12]; 1.0 => n.gain; e.set( 0::ms, 50::ms, 0.5, 500::ms ); 250 => f.freq; 0.1 => r.mix; volume => g.gain; e.keyOn(); 10::ms => now; e.keyOff(); 390::ms => now; 0.0 => g.gain; } // Snare (for sporking): fun void play_snare(float volume) { Noise n => LPF f => ADSR e => PRCRev r => Gain g => Control.chan[12]; 5.0 => n.gain; 10000 => f.freq; 0.1 => r.mix; e.set( 0::ms, 45::ms, 0, 5::ms ); volume => g.gain; e.keyOn(); 200::ms => now; e.keyOff(); 0.0 => g.gain; } // Make it easier to play the drums fun void kick(float volume) { spork ~ play_kick(volume); } fun void snare(float volume) { spork ~ play_snare(volume); } fun void hat(float volume) { spork ~ play_closed_hat(volume); } fun void openhat(float volume) { spork ~ play_open_hat(volume); } fun void rest(float beats) { Control.beat * beats => now; } // Sequences Note this is handled differenty than the pitched // instruments, since we're always sporking off each drum hit and // none of them sustain. fun void A1() { kick(1); snare(1); rest(3.5); openhat(1); rest(0.5); } fun void A2() { kick(1); openhat(1); rest(2.5); kick(1); rest(0.5); snare(1); rest(0.5); kick(1); rest(0.5); } fun void A3() { kick(1); snare(1); rest(3); kick(1); snare(1); rest(0.5); kick(1); snare(1); rest(0.5); } fun void A4() { snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); } fun void A5() { kick(1); openhat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); openhat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); rest(0.5); } fun void A6() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); hat(1); hat(1); rest(0.5); snare(1); openhat(1); rest(0.5); openhat(1); rest(0.5); } fun void A7() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); openhat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); rest(0.5); } fun void A8() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); hat(1); rest(0.5); snare(1); hat(1); rest(0.25); snare(.5); rest(0.25); snare(.6); openhat(1); rest(0.25); snare(.75); rest(0.25); } fun void B1() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); openhat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); rest(0.5); } fun void B2() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); hat(1); hat(1); rest(0.5); snare(1); openhat(1); rest(0.5); snare(1); hat(1); rest(0.5); } fun void B3() { B1(); } fun void B4() { kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); hat(1); rest(0.5); snare(1); hat(1); rest(0.25); snare(.5); rest(0.25); snare(.6); openhat(1); rest(0.25); snare(.75); rest(0.25); } fun void B5() { snare(1); kick(1); hat(1); rest(0.5); hat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); kick(1); rest(0.25); rest(0.25); hat(1); rest(0.5); kick(1); openhat(1); rest(0.5); snare(1); hat(1); rest(0.5); hat(1); rest(0.5); } fun void B6() { B2(); } fun void B7() { B3(); } fun void B8() { A4(); } fun void C1() { B5(); } fun void C2() { B2(); } fun void C3() { B3(); } fun void C4() { B2(); } fun void C5() { B3(); } fun void C6() { B6(); } fun void C7() { B7(); } fun void C8() { B4(); } fun void D1() { B5(); } fun void D2() { B2(); } fun void D3() { B3(); } fun void D4() { B4(); } fun void D5() { B3(); } fun void D6() { B6(); } fun void D7() { B7(); } fun void D8() { snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); rest(0.5); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); snare(1); hat(1); kick(1); rest(0.25); // Bonus button at the end :-) snare(1); hat(1); kick(1); rest(0.25); } // Play all sequences fun void play() { A1(); A2(); A3(); A4(); A5(); A6(); A7(); A8(); B1(); B2(); B3(); B4(); B5(); B6(); B7(); B8(); C1(); C2(); C3(); C4(); C5(); C6(); C7(); C8(); D1(); D2(); D3(); D4(); D5(); D6(); D7(); D8(); } }