Hi Mitch. Yeah, I couldn't get sync to work for frequency either. I guess we should file that as a bug. The only refinements I would make is to put the code to update the envelope in a separate thread and spork it. Envelope e => blackhole; 440 => e.value; SinOsc s => dac; 0.1 => s.gain; 100::ms => e.duration; spork ~gliss (100::samp); while (1) { Math.random2(220,880) => e.target; second => now; } fun void gliss(dur updateRate) { while (1) { e.value() => s.freq; updateRate => now; } } //------------------------------------------------------------ On 09/03/2015 07:13 PM, Mitch Kaufman wrote:
Hi list,
I am a relatively new user and am enjoying exploring different areas of ChucK. I was trying to develop a program to create glissons or short particles with a moving frequency range. I came up with an approach but I think there may be an easier way. Here is the program:
SinOsc sin => dac; Envelope env => blackhole; 500.0 => sin.freq => float x; //starting frequency 100::ms => dur rampTime; //ramp time period 0 => env.value; //starting value rampTime => env.duration; 400.0 => env.target; //ramp to target - in this case, 900 Hz now + rampTime => time t; while( now < t ) { // modulate frequency by envelope x+env.value() => sin.freq; // advance time by 100 samples 100::samp => now; }
I think there may be an easier way of doing this using:
Envelope env => SinOsc sin => dac;
But I can't seem to get it working using a proper sin.sync value. Does anyone have any ideas on improving the approach?
Regards, Mitch
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users