Hallo, Once again, sorry for the rudimentary questions, but I can't seem to find the correct language for a very simple function: Instead of using Std.rand2f( ) for fluctuating volume or buf.rate, I'd like to simply have an either/or option. Play sample at a rate of 1.0 *or *1.5, randomly. The moses function (in pure data) was useful for this. Direction to the appropriate helpful would also be appreciated. Thanks so much, Tim
Tim, You can use rand2f to do this.... float sampleRate; if (std.rand2f(0.0, 1.0) < 0.5) 1.0 => sampleRate; else 1.5 => sampleRate; I ran this section of code 1,000,000 times in my program doing this chunk of code every 1 sample and: 1. ChucK did not make my computer explode :) 2. The rate was set to 1.0 500,814 times and 1.5 499,186 times (pretty good distribution) Hope that helps! Best, Mark On Sep 3, 2010, at 8:21 AM, Timothy Leonido wrote:
Hallo,
Once again, sorry for the rudimentary questions, but I can't seem to find the correct language for a very simple function: Instead of using Std.rand2f( ) for fluctuating volume or buf.rate, I'd like to simply have an either/or option. Play sample at a rate of 1.0 or 1.5, randomly. The moses function (in pure data) was useful for this. Direction to the appropriate helpful would also be appreciated.
Thanks so much,
Tim _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
I believe that the much simpler way is to simply use "maybe"
float sampleRate
if (maybe)
1.0 => sampleRate;
else
1.5 => sampleRate
2010/9/3 Mark Cerqueira
Tim, You can use rand2f to do this....
float sampleRate;
if (std.rand2f(0.0, 1.0) < 0.5) 1.0 => sampleRate; else 1.5 => sampleRate;
I ran this section of code 1,000,000 times in my program doing this chunk of code every 1 sample and:
1. ChucK did not make my computer explode :) 2. The rate was set to 1.0 500,814 times and 1.5 499,186 times (pretty good distribution)
Hope that helps!
Best, Mark
On Sep 3, 2010, at 8:21 AM, Timothy Leonido wrote:
Hallo,
Once again, sorry for the rudimentary questions, but I can't seem to find the correct language for a very simple function: Instead of using Std.rand2f( ) for fluctuating volume or buf.rate, I'd like to simply have an either/or option. Play sample at a rate of 1.0 *or *1.5, randomly. The moses function (in pure data) was useful for this. Direction to the appropriate helpful would also be appreciated.
Thanks so much,
Tim _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
-- David M
2010/9/3 Mark Cerqueira
Tim, You can use rand2f to do this....
float sampleRate;
if (std.rand2f(0.0, 1.0) < 0.5) 1.0 => sampleRate; else 1.5 => sampleRate;
Mark is right, his code is clean, readable and correct. It could also easily be tweaked to change the distribution.... And yet I'd still be tempted to do this; 1 + (.5 * maybe) => float sampleRate; Generally "maybe" is my first port of call if I want to quickly and randomly choose between two options; if (maybe) do_stuff(); else do_things(); Take Mark's option for long term projects that you will need to get back to or collaborate on. Pick my first option when livecoding as it's short to type and audiences like "maybe" as a word. My second expample might be closest to the PD object that you are missing. "maybe" resolves to "true" or "false" ("1"(int) and "0" (int) in ChucK) with 50/50 chance at each call. Practically speaking it's completely equivalent to; Std.rand2(0,1) However that, unlike Mark's example, can't be tuned in case you later decide you need a 25/75 distribution instead. Yours, Kas.
participants (4)
-
David M
-
Kassen
-
Mark Cerqueira
-
Timothy Leonido