// Retarded "speech" synthesis: // by: Pyry Pakkanen ( Frostburn ) frostburn@suomi24.fi // licence: Attribution-Share Alike 3.0 // You are free: // * to Share — to copy, distribute and transmit the work // * to Remix — to adapt the work // Under the following conditions: // * Attribution. You must attribute the work in the manner specified by the author or licensor // (but not in any way that suggests that they endorse you or your use of the work). // * Share Alike. If you alter, transform, or build upon this work, // you may distribute the resulting work only under the same, similar or a compatible license. SinOsc s => Gain formant_in; Gain formant_out; s => HPF h => s; 2 => s.sync; 150.0 => s.freq; 250.0 => h.gain; 2.0 => h.freq; 0.9 => h.Q; Noise esioN => LPF l => blackhole; 2.0 => l.freq; 0.7 => l.Q; Noise whitehole => OnePole brownhole => LPF redhole => blackhole; -Math.pow(0.5,samp/second) => brownhole.a1; 1.0 + brownhole.a1() => brownhole.b0; 4.0 => redhole.freq; 0.8 => redhole.Q; 3 => int F; BPF bpf[F]; Noise n[F]; LPF wander[F]; formant_out => HPF fryhole => dac; 3.0 => formant_out.gain; 100.0 => fryhole.freq; for(0 => int i; i < bpf.cap(); i++){ formant_in => bpf[i] => formant_out; 40.0 => bpf[i].Q; n[i] => wander[i] => blackhole; 2.0 => wander[i].freq; 0.6 => wander[i].Q; } while(true){ redhole.last()*10000.0 + 150.0 => s.freq; l.last()*9000.0 + 50.0 => h.gain; for(0 => int i; i < bpf.cap(); i++){ wander[i].last()*1000.0*(i*0.7+1) + i*250.0 + 50.0 => bpf[i].freq; } 10::ms => now; }