[chuck-users] Does a Std.system call block concurrency?

federico lopez fede2001 at gmail.com
Fri Jan 1 06:42:31 EST 2021


On Thu, Dec 31, 2020 at 6:42 PM Spencer Salazar <spencer.salazar at gmail.com>
wrote:

> Correct, Std.system does block concurrency. Depending on what you're
> trying to do there are a few workarounds..
>

Hi Spencer, thanks for your response


>
> - make any Std.system calls at the beginning of your ChucK script, before
> audio has started processing
>

Although it is a good solution, it is not usable in my case, In the actual
reasoning I need to grab from R new notes each step of a 16 step sequencer.


> - run the R scripts in the background using Std.system -- Std.system more
> or less directly calls system(3), and it seems as though '&' works, though
> I havent personally tried this: https://stackoverflow.com/a/5691067
>

Thats work!  adding the ampersand keeps ChucK on time having access to R
functions, I will try to explore this solution for now.

In my case:
Blocking :         Std.system("Rscript corpus.R  > out.log 2> /dev/null");

Non-blocking:  Std.system("Rscript corpus.R & > out.log 2> /dev/null");



> - use OSC to communicate with a separate long-running script that runs
> whatever you need
>

I currently use OSC to fetch the R data at each step, but you make me
wonder if there is a better way

best regards,

federico



>
> On Thu, Dec 31, 2020 at 3:33 AM federico lopez <fede2001 at gmail.com> wrote:
>
>> Hi,
>> Is the ChucK thread disrupted by the execution time of a Std.system
>> script call?
>>
>> In the code below, sporking a fast script, e.g. Std.system("sleep 0"),
>> there is no noticeable disruption,  but sporking a time consuming version
>> e.g. Std.system("sleep 3") there is a disruption in the other sporks.
>>
>> I'm trying to call R scripts using ChucK concurrency.
>>
>> // test code, run with --caution-to-the-wind command-line flag
>> Noise n => Envelope e => dac;
>>
>> fun void metro()
>> {
>>     while(true)
>>     {
>>         e.keyOn();
>>         10::ms => now;
>>         e.keyOff();
>>         990::ms => now;
>>         <<< now, "samples" >>>;
>>     }
>> }
>>
>> fun void callSystem()
>> {
>>     while(true)
>>     {
>>         Std.system("sleep 0"); // comment this to test
>>         //Std.system("sleep 3"); // uncomment this to test
>>         1000::ms => now;
>>     }
>> }
>>
>> spork~ metro();
>> spork~ callSystem();
>> while(true){10::ms => now;}
>>
>> // end test code
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> 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
> 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/20210101/81817751/attachment.html>


More information about the chuck-users mailing list