[chuck-users] stk questions - SawOsc and filters
signal.automatique at gmail.com
Thu May 31 09:17:42 EDT 2007
On 5/31/07, Josh Lawrence <hardbop200 at gmail.com> wrote:
> Last night I sat down and was able to modify polyfony.ck to use a
> SawOsc instead of the Mandolin.
My next step was to try to connect
> that oscillator to a filter, but how do I do that? My thinking was
> after I get done with defining my SawOsc parameters, I could just
> chuck the oscillator to the filter, like so?
> s => moog;
> (s is my SawOsc, and moog is Moog.)
Ah, yes. "moog" in this case refers to a emulation (a simple but fun one) of
a Moog synth, not to the Moog filter (think Minimoog v.s. Moogerfooger).
What you are looking for would run something like this;
SawOsc osc => LPF filt => ADSR env => dac;
That would be the basic layout of a traditional single oscilator synth. You
could elaborate on that, for example by adding a second oscilator and a
filter modulation envelope if you'd like to get more fancy.
> Does anyone have any examples of a more complete subtractive
> synthesizer that I can model mine after?
How about starting with the layout above? You can look up the Ugens used in
the manual and see how far those get you.
> Final question: Is monophonic operation with glide out of the
> question with ChucK?
No, not at all, that's quite possible and indeed would likely be more simple
then polyphonic operation. The glide bit would be the hardest. How about
//warning, unchecked code, might contain typos
SawOsc s => dac;
//you might want to look up "blackhole" to see what it does,
//blackhole is quite usefull when using modulation.
Envelope slide => blackhole;
//this will be a 303-style slide that takes a second to reach any given
second => slide.duration;
//set initial frequency
330 => s.freq;
//making sure the modulation source fits this
330 => slide.value;
//let it sound for a bit
second => now;
//the actual slide starts here.
440 => slide.target;
//we run this untill the slide has reached it's goal
while(slide.value() != slide.target)
//this is where the actual modulation occurs
slide.value() => s.freq;
//this represents the "controll rate"
//shorter values produce a smoother glide at a higher cpu cost
10::ms => now;
//let the new frequency sound for a bit too
second => now;
Hope that gets you started?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the chuck-users