[chuck-users] SndBuf Passing args to running functions
herman verbaeten
hverb54 at hotmail.com
Mon Feb 24 04:27:00 EST 2020
Thanks Michael, your example is very clarifying!
Verstuurd vanaf mijn iPad
Op 24 feb. 2020 om 05:14 heeft Michael Heuer <heuermh at gmail.com<mailto:heuermh at gmail.com>> het volgende geschreven:
Hello Herman,
I don't think you need to pass values to the sporked functions.
Scoping rules allow the sporked functions to access variables declared in their enclosing class, e.g.
0 => int centralpos;
spork ~ doSomething();
spork ~ doSomethingElse();
2::second => now;
42 => centralpos;
2::second => now;
0 => centralpos;
<<<"done">>>;
fun void doSomething()
{
while (true)
{
if (centralpos == 42)
{
<<<"hello from doSomething!">>>;
}
250::ms => now;
}
}
fun void doSomethingElse()
{
while (true)
{
if (centralpos == 42)
{
<<<"hello from doSomethingElse!">>>;
}
500::ms => now;
}
}
Do remember to advance time everywhere or things won't work correctly.
Hope this helps!
michael
On Feb 21, 2020, at 2:11 AM, herman verbaeten <hverb54 at hotmail.com<mailto:hverb54 at hotmail.com>> wrote:
Hi,
I'm in big trouble. I'v been trying for a long time now to change an argument in a running function. As you can see in my script i set a certain central pos ("70000")to buf.pos as a central position in my soundbuffer and i let my function LFOtoPOS circle around it.
Once the "spork" instruction has started the process i can't figure out how to addresss the argument "centralpos" to change it on the fly or by another function or parameter. Some help please ...
Kind regards,
Herman
----------------------------------------------------------------------------------------------
me.sourceDir() + "sound.wav" => string filename;
if( me.args() ) me.arg(0) => filename;
SndBuf buf => dac;
filename => buf.read;
1 => buf.pos;
.5 => buf.gain;
spork ~ LFOtoPOS(70000);
fun void LFOtoPOS(int centralpos)
{
TriOsc lfo => blackhole;
1 => lfo.freq;
centralpos => buf.pos;
while (true)
{
1::samp => now;
(10000*lfo.last())$ int => buf.pos;
}
}
// time loop
while( true )
{
1000::ms => now;
}
_______________________________________________
chuck-users mailing list
chuck-users at lists.cs.princeton.edu<mailto:chuck-users at lists.cs.princeton.edu>
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________
chuck-users mailing list
chuck-users at lists.cs.princeton.edu<mailto:chuck-users at lists.cs.princeton.edu>
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200224/f50a90d6/attachment-0001.html>
More information about the chuck-users
mailing list