Supercollider: Difference between revisions
No edit summary |
No edit summary |
||
Line 50: | Line 50: | ||
== Facts == | == Facts == | ||
* [https://en.wikibooks.org/wiki/Designing_Sound_in_SuperCollider Fun Tutorials] | |||
* [https://supercollider.github.io/ Project page] | * [https://supercollider.github.io/ Project page] | ||
* [https://twitter.com/hashtag/SuperCollider?src=hash hashtag search on twitter] | * [https://twitter.com/hashtag/SuperCollider?src=hash hashtag search on twitter] | ||
* [https://soundcloud.com/livecodenet-ensamble soundcloud recordings from a Mexican residency project] | * [https://soundcloud.com/livecodenet-ensamble soundcloud recordings from a Mexican residency project] |
Latest revision as of 09:15, 15 February 2018
Introduction[edit]
Supercollider (SC) operates in the same vein as the bytebeat project but at a higher level. The computer music workstation has SC installed.
Supercollider Class[edit]
Starting the first week in Feburary 2018, there will be a weekly class on Supercollider, lasting for 12 weeks. Details on the Supercollider Class page.
Example code[edit]
The following is an algorithmic composition in the SC language by Fredrik Olofsson, published on Twitter. It must be executed in the SC virtual machine.
play{a=LFCub;Splay.ar(a.ar(b=2/(2..9))%a.ar(b/5)*a.ar(2**a.ar(b/8)>0+1*2*(b*[300,303]-(a.ar(b/9)>0*50).lag2))*a.ar(b/6,b))}
This is not a limitation of the language though. It can be written in a much more expressive way, and lends itself to livecoding as a performative activity.
For example, the following creates a synth definition, followed by four instances of that synth with different parameters. Each code block can be executed as a piece, and the engine runs the code blocks in realtime.
// Define a single synth that takes parameters SynthDef.new("impulse-sinefunc", { | impulseLFO = 0.49, panPos = 0.5, lfoRange = 833, sinFreq = 435 | Out.ar(0, Pan2.ar( Decay2.ar( Impulse.ar( LFCub.kr(1,0.33,1,impulseLFO), 0 ),0.09,0.4,SinOsc.ar(sinFreq,0,0.25,0) ),panPos) )} ).add; // mess around with these four starting at different times x = Synth.new("impulse-sinefunc",[\impulseLFO,5.5,\panPos, 0.2, \sinFreq, 457]); x.free; y = Synth.new("impulse-sinefunc", [\impulseLFO,5, \panPos, 0.7]); y.free; z = Synth.new("impulse-sinefunc", [\impulseLFO,4, \panPos, 0.3,\sinFreq, 488]); z.free; a = Synth.new("impulse-sinefunc", [\impulseLFO,4.2, \panPos, 0.8,\sinFreq, 444]); a.free;