// Michael J. Wilson // Music 220a Fall 2010 // Final Project // This holds Morse code generation routines, for use in the "warmth" // section of the piece. They are purposefully not synced with the // beat of the rest of the piece. SinOsc beeper; // Give this channel 1 beeper => Envelope env => Control.chan[1]; 5::ms => env.duration; // Frequency of Morse code beeps Std.mtof(90) => float freq; // Gains 1.0 => float gain; 1.0 => beeper.gain; freq => beeper.freq; // Element delay 40::ms => dur element_delay; // Short mark . fun void dit() { gain => env.target; element_delay => now; } // Long mark - fun void dah() { gain => env.target; 3 * element_delay => now; } // Gap between dots and dashes within a character fun void inter_element_gap() { 0.0 => env.target; element_delay => now; } // Gap between characters in a word fun void short_gap() { 0.0 => env.target; 3 * element_delay => now; } // Gap between words fun void long_gap() { 0.0 => env.target; 7 * element_delay => now; } // Test while (true) { // I dit(); inter_element_gap(); dit(); long_gap(); // L dit(); inter_element_gap(); dah(); inter_element_gap(); dit(); inter_element_gap(); dit(); short_gap(); // O dah(); inter_element_gap(); dah(); inter_element_gap(); dah(); short_gap(); // V dit(); inter_element_gap(); dit(); inter_element_gap(); dit(); inter_element_gap(); dah(); short_gap(); // E dit(); long_gap(); // Y dah(); inter_element_gap(); dit(); inter_element_gap(); dah(); inter_element_gap(); dah(); short_gap(); // O dah(); inter_element_gap(); dah(); inter_element_gap(); dah(); short_gap(); // U dit(); inter_element_gap(); dit(); inter_element_gap(); dah(); long_gap(); }