0% found this document useful (0 votes)
22 views2 pages

10.3 Network Music Lab

Super Collider

Uploaded by

Manu Codjia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views2 pages

10.3 Network Music Lab

Super Collider

Uploaded by

Manu Codjia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

//Quick network music introduction (adapted from code by Julian Rohrhuber)

//This sets up connections to the various IP addresses around the network: you will
need to update this code to reflect your local setup

//We will need to collect IPs of the computers in the Lab

(
a = [190, 30, 198, 200,196, 227].collect({ arg el;
Server("test"++el, NetAddr("139.184.50." ++ el, 57110))
});
)

a = ["10.0.10.25","10.0.9.172",""].collect({ arg ip,i;


Server("test"++i, NetAddr(ip, 57110))
});
)

//makes a Server GUI that represents a particular network target


a[0].makeWindow;

//function to encapsulate sending a SynthDef to all Servers


f = { arg synthDef; a.do({ arg el; synthDef.send(el) }) };

//send to a specific Server


(
SynthDef("finesine", { arg out, freq=440, amp=0.1, pan, sustain=0.01, x=0.5;
var e, u;
e = EnvGen.ar(Env.perc(0.001, sustain, amp), doneAction:2);
u = SinOsc.ar(freq * [1.0, 5/6, 17/8] * XLine.ar(1 + x, 1,
sustain)).sum * amp;
Out.ar(out, u)
}).send(a[0]);
)

//use function f to send to all


(
f.value(
SynthDef("finesine", { arg out, freq=440, amp=0.1, pan, sustain=0.01, x=0.5;
var e, u;
e = EnvGen.ar(Env.perc(0.001, sustain, amp), doneAction:2);
u = SinOsc.ar(freq * [1.0, 5/6, 17/8] * XLine.ar(1 + x, 1,
sustain)).sum * amp;
Out.ar(out, u)
})
)
)

//automate Synth grain firing once around the Servers in random order
(
{
10.do { arg el, i;
Synth.grain(\finesine, [\freq, 1000 +(i*200)], a.choose);
0.1.wait;
}
}.fork;
)

//Using a pattern to target particular Servers in the array a


(
{
var pat;
pat = Pseq([0,1,2,3,2,1,4,5]);
pat.asStream.do { arg serverIndex, i;
Synth.grain(\finesine, [\freq, rrand(500,2000)], a[serverIndex]);
0.1.wait;
}
}.fork;
)

You might also like