Stream2Trig generate a trigger signal from a stream

superclass: StreamKrDur

Stream2Trig(levels,deltas)

Take a pattern and use it as a stream of values for a trigger. This plays the pattern in real time on the client, and sends messages to the server.

levels - A stream of values for the level of each trigger

1.0

Prand([1,0],inf)

{ 1.0.rand }

`[ 1,0,1,0,] // Ref converted into Pseq([1,0,1,0],inf)

deltas - A stream of values for the delta in beats between each trigger.

0.25

Prand([0.25,0.5],inf)

FuncStream({ rrand(0.125,16.0) })

`[1.0,0.25,0.5] // Ref

(

Instr(\Stream2Trig, {arg gate=0.0,freq=440,env;

p = Pulse.ar(freq,LFNoise1.kr(0.1).abs,0.5);

Enveloper2.ar(p,gate,env,2,2);

},[

nil,

nil,

\envperc

]);

Patch.new(\Stream2Trig,

[

Stream2Trig(

Pseq([

Prand([1,1,1,1,1,0,0,0,0],2)],inf),

Pseq([0.25,0.25,0.25,0.125,0.125],inf)

),

StreamKrDur(Pseq( Array.rand(16,30,50).midicps,inf ), 0.25,0.1 )

]).gui

)

(

Patch.new(\Stream2Trig,

[

Stream2Trig(

Pseq([

Pn(Pshuf([1,0,1,0],4),3),

Pshuf([0.2,0,0.2,0],4)],inf),

Pseq([0.25,0.25,0.25,0.125,0.125],inf)

),

84

]).gui

)

A nice sequel would be to make a class that also takes a gate duration stream

(in beats or legato), so that the gate will stay open for that long.