[flocking-users] combining with processingjs? and timing accuracy

enrike altern2 at gmail.com
Mon Apr 14 12:56:43 EDT 2014

sorry I am kinf of half offline...

this code is very old I just copied and pasted I hope it works fine

SynthDef ( "StereoPlayer" , {
	arg outbus=0, buffer=0, amp=1, pan=0, mute=1, start=0, end=1, rate=1, 
fps=12, index=0; //, trig=1, resetpos=0;
     	var length, offset, clock, env, sound, left, right, phasor, dur;

	dur = BufFrames.kr(buffer);
     	length = (end - start) * dur; // scale from range 0 - 1 to 0 - 
     	clock = LFPulse.kr(rate.abs / length, 0); // loop
     	length = Latch.kr(length, clock);
     	offset = Latch.kr(start * dur, clock);
     	env = EnvGen.kr( Env .new([0,1,1,0], [0.01, 0.98,0.01]), clock, 
timeScale:length /(rate.abs)) * amp * mute;

	phasor = Phasor.ar( 0, rate, start*dur, end*dur);
     	SendTrig .kr( LFPulse.kr(fps, 0), index, phasor/dur); //12 times 
per sec playhead. Normalised to 0-1 range
     	#left, right = BufRd.ar( 2, buffer, phasor, 1 ) * env;
     	Out .ar(outbus, Balance2.ar(left, right, pan));

Basically this does the job
SendTrig .kr( LFPulse.kr(fps, 0), index, phasor/dur);

In this case this is a sample player that is looping a buffer. I needed 
to display in the graphics a "playhead" that shows where in the buffer 
the player was, typically going left to right. This kind of thing

But I was also thinking on other things such as the frequency of a 
sinosc controlling the radius of a circle, for instance. That kind of 
things, visuals responding to audio units internal states. I am not sure 
I am clear I am writing very quickly


ig., 2014.eko apiren 13a 18:14(e)an, Colin Clark(e)k idatzi zuen:
> It’d definitely possible to write a unit generator to do this. Just to be sure I fully understand your use case, can you elaborate on what you want to accomplish or send an example of some SuperCollider code? Are you thinking of things like SendTrig in SuperCollider, where a message can be sent from the server to the client? That should be easy to implement.
> Thanks,
> Colin
> On Apr 11, 2014, at 7:22 AM, enrike <altern2 at gmail.com> wrote:
>> would it be possible to call a function from a ugen like a pulse for instance? or set a variable from a ugen? a bit like in Supercollider you can use triggers from synthdefs. For instance flock.ugen.xLine to control the value of a variable
>> og., 2014.eko apiren 10a 01:55(e)an, Colin Clark(e)k idatzi zuen:
>>> Hi Enrike,
>>> I haven’t heard of anyone yet who is using Processing.js with Flocking, but I don’t see any reason why it wouldn’t work. Web Audio in general has some risks with very sophisticated visuals because of the fact that the audio processing runs in the same thread as the visuals, but I think there’s lots of room to work with them both.
>>> In terms of the reliability of timing in Flocking, it depends on how you schedule things. At the moment, the asynchronous scheduler is a little bit “drifty,” especially in Firefox. I’m in the midst of planning out a block-accurate scheduler that will have no drift, and I can fast-track that work if it’s a priority for you. In the meantime, I do most of my high priority scheduling within the unit generator graph, by using unit generators like flock.ugen.sequence as well as triggers like flock.ugen.impulse. It’s solid and simple. Here’s an example of a piece I wrote recently that has a very accurate drum pulse in it.
>>> https://github.com/colinbdclark/compositions/blob/master/greenwich-park/js/instruments.js#L4-L60
>>> Colin
>>> On Apr 9, 2014, at 10:00 AM, enrike <altern2 at gmail.com> wrote:
>>>> hi
>>>> two different questions...
>>>> has anyone tried to combine Flockingjs with Processingjs?
>>>> http://processingjs.org/
>>>> how accurate and reliable is timing using Flocking? I need to work on a percussion system that needs to be quite precise.
>>>> thanks
>>>> enrike

More information about the flocking mailing list