Rhodey r[5]; NRev rev[2] => dac; 0.05 => rev[0].mix; 0.05 => rev[1].mix; Rhodey solo => rev; Pan2 p[2]; p[0] => rev[0]; p[1] => rev[1]; Delay d[2]; rev[0] => d[0] => d[1] => rev[1]; 0.7 => d[0].gain => d[1].gain; second => d[0].max => d[0].delay => d[1].max => d[1].delay; SinOsc panner => blackhole; 1 => panner.freq; r[0] => p[0]; r[1] => p[0]; r[2] => p[1]; r[3] => p[1]; r[4] => p[0]; r[4] => p[1]; for (int i; i < r.cap(); i++) { 1 => r[i].lfoSpeed; 0.0 => r[i].lfoDepth; r[i].opAM(0,0.4); r[i].opAM(2,0.4); r[i].opADSR(0, 0.001, 3.50, 0.0, 0.04); r[i].opADSR(2, 0.001, 3.00, 0.0, 0.04); } // spork panner on its own shred spork ~ doPan(); 0 => int STEP_MIN; 270 => int STEP_MAX; 2::second => dur BUFFER_TIME; 1.5::second => dur FADE_TIME; 150::ms => dur NOTE_DUR; // Some chords. We don't use all here [41, 56, 60, 63, 67] @=> int Fmi9[]; [36, 55, 58, 62, 65] @=> int BfMajC[]; [34, 56, 60, 63, 67] @=> int AfMaj7Bf[]; [43, 53, 58, 62, 65] @=> int Gmi7[]; [62, 66, 69, 74] @=> int DMaj[]; [59, 62, 66, 68] @=> int Bmi6[]; [55, 59, 62, 66] @=> int GMaj7[]; [59, 62, 66, 71] @=> int Bmi[]; [62, 66, 69, 73] @=> int D7[]; [62, 66, 69, 74] @=> int DFs[]; [64, 69] @=> int UH[]; [36, 41, 45, 48, 69] @=> int BOTTOM[]; second/2 => dur Q; Q/2 => dur E; E/2 => dur S; spork ~ rising_steps(); // Wait for intro to complete BUFFER_TIME + NOTE_DUR * (STEP_MAX - STEP_MIN) + FADE_TIME + 8::second => now; // Play song while (true) { play_song(); 10::second => now; } fun void play_song() { spork ~ rollChord(BOTTOM, 1.0 ); 8 * second => now; Std.mtof(69) => solo.freq; 0.6 => solo.noteOn; 2 * Q => now; Std.mtof(64) => solo.freq; 0.6 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.6 => solo.noteOn; Q => now; Std.mtof(64) => solo.freq; 0.6 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.6 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.8 => solo.noteOn; Q => now; Q => now; Std.mtof(74) => solo.freq; 0.8 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.8 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.6 => solo.noteOn; 2 * Q => now; Std.mtof(67) => solo.freq; 0.4 => solo.noteOn; 2 * Q => now; Std.mtof(69) => solo.freq; 0.3 => solo.noteOn; 2 * Q => now; spork ~ rollChord(DFs, 0.8); 4*second => now; Std.mtof(76) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(74) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(72) => solo.freq; 0.8 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.8 => solo.noteOn; Q => now; spork ~ chord(UH, 0.8); 2*second => now; Std.mtof(67) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(71) => solo.freq; 0.8 => solo.noteOn; 3 * Q => now; spork ~ chord(UH, 0.8); 2*second => now; spork ~ chord([55, 64], 0.6); 2 * Q => now; spork ~ chord([57, 64, 69], 0.7); 2 * Q => now; spork ~ chord([59, 64], 0.8); 2 * Q => now; spork ~ chord([60, 69], 0.9); 3 * Q => now; 2 * Q => now; spork ~ chord([67, 74], 0.8); Q => now; Q => now; Std.mtof(72) => solo.freq; 0.75 => solo.noteOn; 2 * Q => now; Std.mtof(71) => solo.freq; 0.7 => solo.noteOn; 2 * Q => now; Q => now; Std.mtof(67) => solo.freq; 0.7 => solo.noteOn; 2 * Q => now; Q => now; Std.mtof(69) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(76) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.5 => solo.noteOn; Q => now; 3 * Q => now; Std.mtof(76) => solo.freq; 0.6 => solo.noteOn; 2 * Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([69, 74], 0.6); Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([67, 72], 0.6); Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([72, 77], 0.6); Q => now; Std.mtof(79) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(74) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(72) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(74) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; 2 * Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([62, 67], 0.6); Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([60, 65], 0.6); Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ chord([65, 70], 0.6); Q => now; Std.mtof(67) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(67) => solo.freq; 0.7 => solo.noteOn; Q => now; Std.mtof(69) => solo.freq; 0.7 => solo.noteOn; Q => now; spork ~ rollChord(Bmi, 0.4); 2 * second => now; Std.mtof(69) => solo.freq; 0.6 => solo.noteOn; 3 * E => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(72) => solo.freq; 0.7 => solo.noteOn; 3 * E => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(76) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(81) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(76) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; 3 * E => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(72) => solo.freq; 0.6 => solo.noteOn; 3 * E => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(71) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(67) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(69) => solo.freq; 0.6 => solo.noteOn; 3 * E => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(72) => solo.freq; 0.7 => solo.noteOn; 3 * E => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(76) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(81) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(76) => solo.freq; 0.8 => solo.noteOn; 2 * Q => now; Std.mtof(76) => solo.freq; 0.7 => solo.noteOn; 3 * E => now; Std.mtof(74) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(72) => solo.freq; 0.6 => solo.noteOn; 3 * E => now; Std.mtof(71) => solo.freq; 0.5 => solo.noteOn; 3 * E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(71) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(67) => solo.freq; 0.4 => solo.noteOn; E => now; Std.mtof(69) => solo.freq; 0.4 => solo.noteOn; E => now; 4 * second => now; } fun void rising_steps() { Flute flute => PoleZero f => rev; 0.1 => flute.jetDelay; 0.6 => flute.jetReflection; 0.530745 => flute.endReflection; 0.6 => flute.noiseGain; 7.725672 => flute.vibratoFreq; 0.176077 => flute.vibratoGain; 0.05 => flute.pressure; Rhodey steps => rev; BUFFER_TIME => now; 0.0 => float saturation; for (STEP_MIN => int i; i < STEP_MAX; i++) { Std.mtof(i) => flute.freq; (STEP_MAX - STEP_MIN - i + 1) / (3 * (STEP_MAX - STEP_MIN)$float) => flute.noteOn; Std.mtof(i) => steps.freq; (i + 1) / (2 * STEP_MAX - STEP_MIN)$float => steps.noteOn; NOTE_DUR => now; } FADE_TIME => now; } fun void doPan() { while( true ) { 1.0 - panner.last() => float temp; temp => p[0].pan; 1.0 - temp => p[1].pan; ms => now; } } fun void chord(int chord[], float vel) { for (int i; i < chord.cap(); i++) { Std.mtof(chord[i]) => r[i].freq; vel => r[i].noteOn; } } fun void rollChord(int chord[], float vel) { for (int i; i < chord.cap(); i++) { Std.mtof(chord[i]) => r[i].freq; vel => r[i].noteOn; Math.random2f(0.01,0.08)::second => now; } }