Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Synthwave Dream
- // by ChucK Assistant
- // Drum Machine
- SndBuf kick => dac;
- me.dir() + "data/kick.wav" => kick.read;
- SndBuf snare => dac;
- me.dir() + "data/snare.wav" => snare.read;
- SndBuf hihat => dac;
- me.dir() + "data/hihat.wav" => hihat.read;
- // Synths
- TriOsc bass => LPF bassFilter => dac;
- SawOsc lead => ADSR env => NRev reverb => dac;
- SqrOsc pad => JCRev padReverb => dac;
- // Parameters
- 0.7 => bass.gain;
- 0.4 => lead.gain;
- 0.3 => pad.gain;
- 0.1 => reverb.mix;
- 0.2 => padReverb.mix;
- bassFilter.set(400, 1);
- env.set(10::ms, 200::ms, 0.5, 100::ms);
- // Chord progression
- [48, 53, 55, 58] @=> int chords[]; // Cm9 voicing
- [0, 3, 4, 2] @=> int progression[]; // i-IV-V-iii
- // Tempo
- 120 => float bpm;
- (60 / bpm)::second => dur quarter;
- // Main loop
- while(true) {
- for (0 => int beat; beat < 16; beat++) {
- // Drums
- if (beat % 4 == 0) kick.pos(0);
- if (beat % 4 == 2) snare.pos(0);
- if (beat % 8 < 7) hihat.pos(0);
- // Bass (root notes)
- if (beat % 4 == 0) {
- Std.mtof(chords[progression[beat/4 % 4]] - 24) => bass.freq;
- }
- // Melody
- if (beat % 8 == 0) {
- chords[progression[(beat/4) % 4]] + [0,2,4,7][Math.random2(0,3)] => int note;
- Std.mtof(note + 12) => lead.freq;
- env.keyOn();
- }
- // Pad (every chord change)
- if (beat % 4 == 0) {
- chords[progression[beat/4 % 4]] + 7 => int chordTone;
- Std.mtof(chordTone) => pad.freq;
- }
- quarter => now;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment