hey all, Is there a way to control aspects of a sample (rate, reverb, delay) while it is being read? I'm interested in, say, playing a minute-long speech sample and being able to change the effects as it is playing. I've done this with supercollider and pure data but can't seem to find the resources in chuck. Thanks! all best, Tim
Hi Tim
Is there a way to control aspects of a sample (rate, reverb, delay) while it is being read? I'm interested in, say, playing a minute-long speech sample and being able to change the effects as it is playing. I've done this with supercollider and pure data but can't seem to find the resources in chuck.
All you have to do is to load your sample in a SndBuf ugen (or is there another ugen for very long samples ?) and then chuck (=>) its output to your effects - you are free to change the effects parameters whenever you like, or even to reroute the signal. for example, a script randomly changing the reverb parameters every 10ms (beware, code not tested): SndBuf buf => JCRev rev => dac; "mysample.wav" => buf.read; while (true) { Std.rand2f(0,1) => rev.mix; 10::ms => now; } Now, you might want to manually play with the parameters during the playback. In that case, you will have to use Events [1]: a part of your code is listening to an Event object, and when the event is triggered, it does something - in your case, changing a parameter. This mechanism allows you to do some message-passing between differents parts of your program. In your case, you can have one script doing the playback and listening to an Event object - then, changing the parameters is a matter of triggering events from your "livecode". I hope this helps tom
PS: I meant to add a reference at the end of my email : [1] http://chuck.cs.princeton.edu/doc/language/event.html Excerpts from Tomtom's message of jeu. mai 19 17:46:47 +0200 2011:
Hi Tim
Is there a way to control aspects of a sample (rate, reverb, delay) while it is being read? I'm interested in, say, playing a minute-long speech sample and being able to change the effects as it is playing. I've done this with supercollider and pure data but can't seem to find the resources in chuck.
All you have to do is to load your sample in a SndBuf ugen (or is there another ugen for very long samples ?) and then chuck (=>) its output to your effects - you are free to change the effects parameters whenever you like, or even to reroute the signal.
for example, a script randomly changing the reverb parameters every 10ms (beware, code not tested):
SndBuf buf => JCRev rev => dac;
"mysample.wav" => buf.read;
while (true) { Std.rand2f(0,1) => rev.mix; 10::ms => now; }
Now, you might want to manually play with the parameters during the playback. In that case, you will have to use Events [1]: a part of your code is listening to an Event object, and when the event is triggered, it does something - in your case, changing a parameter. This mechanism allows you to do some message-passing between differents parts of your program.
In your case, you can have one script doing the playback and listening to an Event object - then, changing the parameters is a matter of triggering events from your "livecode".
I hope this helps
tom
participants (2)
-
Timothy Leonido
-
Tomtom