Difference between revisions of "SuperCollider Cookbook"

From CCRMA Wiki
Jump to: navigation, search
(Looping)
Line 49: Line 49:
 
<pre>
 
<pre>
 
5.do({ arg item; item.postln }); // iterates from zero to four
 
5.do({ arg item; item.postln }); // iterates from zero to four
 +
do(5, {arg item; item.postln}); // same as above
 +
</pre>
 +
Now compare these:
 +
<pre>
 +
do(9, {arg whatevername; whatevername.postln});
 +
do([9, 8, 3, 5], {arg whatevername; whatevername.postln});
 +
do([9, 8, 3, 5], {arg whatevs1, whatevs2; [whatevs2, whatevs1].postln});
 +
</pre>
  
 
["zero", "first", "second", "third", 500].do({ arg item, i; [i, item].postln; });
 
["zero", "first", "second", "third", 500].do({ arg item, i; [i, item].postln; });

Revision as of 18:39, 8 June 2011

SuperCollider Cookbook by Bruno

Play a sound file, vary speed, reverse

create a buffer

~mysound = Buffer.read(s, "path/to/sound/file.wav");

simple play

{PlayBuf.ar(1, ~mysound)}.play; // number of channels and buffer

get sound file info

[~mysound.bufnum, ~mysound.numChannels, ~mysound.path, ~mysound.numFrames];

varying speed

{PlayBuf.ar(1, ~mysound, 2, loop: 1)}.play; // play 2x faster
{PlayBuf.ar(1, ~mysound, 0.5, loop: 1)}.play; // play at half the speed
{PlayBuf.ar(1, ~mysound, Line.kr(0.5, 2, 10), loop: 1)}.play; // playback speed goes from 0.5 to 2 in 10 seconds

changing direction

{PlayBuf.ar(1, ~mysound, -1, loop: 1)}.play; // reverse sound
{PlayBuf.ar(1, ~mysound, -0.5, loop: 1)}.play; // play at half the speed AND reversed

Play a MIDI file

Do this and that.

List Operations

scramble reverse find nth


Looping

While

(
i = 0;
while ( { i < 5 }, { i = i + 1; "boing".postln });
)

For

for (3, 7, { arg i; i.postln }); // prints values 3 through 7

ForBy

forBy (0, 8, 2, { arg i; i.postln }); // prints values 0 through 8 by 2's

Do

5.do({ arg item; item.postln }); // iterates from zero to four
do(5, {arg item; item.postln}); // same as above

Now compare these:

do(9, {arg whatevername; whatevername.postln});
do([9, 8, 3, 5], {arg whatevername; whatevername.postln});
do([9, 8, 3, 5], {arg whatevs1, whatevs2; [whatevs2, whatevs1].postln});

["zero", "first", "second", "third", 500].do({ arg item, i; [i, item].postln; });

do(["zero", "first", "second", "third", 500], {arg item, i; [i, item].postln});

"you".do({ arg item; item.postln }); // a String is a collection of characters

'they'.do({ arg item; item.postln }); // a Symbol is a singular item

(8..20).do({ arg item; item.postln }); // iterates from eight to twenty 

(8,10..20).do({ arg item; item.postln }); // iterates from eight to twenty, with stepsize two </pre>

Amplitude Modulation

Frequency Modulation

Additive Synthesis

Subtractive Synthesis