//////////////////////////////////////////////////////////////////
// SuperCollider - Einführung, Oberseminar 12.2.2009
// Renate Wieser, Julian Rohrhuber, Till Bovermann
// unäre operatoren //////////////////////////////////////////////
3.squared;
squared(2);
1000.rand;
1000.0.rand;
2pi;
2pi.rand;
inf.rand;
// binäre operatoren //////////////////////////////////////////////
3 * 3;
5 + 7;
1 / 0;
inf + inf;
inf - inf;
2 ** 7;
2 ** -7;
1 / (2 ** 7);
// variablen und funktionen //////////////////////////////////////////////
a = 2;
b = 5;
1 / (a + b);
// runde klammern
(
f = { |alpha|
var beta = 500.rand;
1 / (alpha + beta);
}
)
f.value(0);
f.value(-100);
f.(10);
// arrays, strings //////////////////////////////////////////////
a = "hallo world";
a.scramble;
a[0]
a[0..3];
a = [0, 1, 2, 100];
a.scramble;
a[0]
a[0..3];
a.sum;
sum(a);
a + 100;
f.(a);
// sound funktionen //////////
{ SinOsc.ar(440) * 0.1 }.play;
a = { |freq=440| SinOsc.ar(freq) * 0.1 }.play;
a.set(\freq, 440 * 6/5);
{ SinOsc.ar(440 * [1, 6/5, 3/2]).sum * 0.1 }.play;
{ SinOsc.ar(440 ** [1, 6/5, 3/2]).sum * 0.1 }.play;
(
{
var a = SinOsc.ar(440 * [1, 6/5, 3/2]);
var b = SinOsc.ar(0.3) ** a;
(b.sum * 0.1).clip2 * 0.1;
}.play;
)
(
{
var a = SinOsc.ar(440 * [1, 6/5, 3/2]);
var b = a ** SinOsc.ar(0.3);
(b.sum * 0.1).clip2 * 0.1;
}.play;
)
(
{
var a = SinOsc.ar(440 * [1, 6/5, 3/2]);
var b = SinOsc.ar(0.3 * [1, 1.1, 1.23]) ** a;
(b.sum * 0.1).clip2 * 0.1;
}.play;
)
// mehreren unit generatoren
(
{
var a = SinOsc.ar(440 * [1, 6/5, 3/2]);
var b = a * LFPulse.kr([1, 1.3, 1.56], 0, 0.1);
b.sum * 0.1
}.play;
)
UGen.dumpClassSubtree;
// mehrere synth gleichzeitig: /////////////////////////////////
(
{
var a = SinOsc.ar(440 * [1, 6/5, 3/2]);
var b = a ** SinOsc.ar(0.3);
(b.sum * 0.1).clip2 * 0.1;
}.play;
)
//////// Synth Definition
(
SynthDef(\expsin, { |freq = 440, fmod = 0.3, pan, out, amp = 0.1, sustain=1.0|
var a = SinOsc.ar(freq * [1, 6/5, 3/2]);
var b = a ** SinOsc.ar(fmod);
var c = b.sum.clip2 * Line.kr(amp, 0, sustain, doneAction:2);
Out.ar(out, Pan2.ar(c, pan))
}).store;
)
(instrument: \expsin, fmod: 0.3, freq:330, sustain: 4).play;
(instrument: \expsin, fmod: 0.3, freq:220, sustain: 4).play;
(instrument: \expsin, fmod: 20.0.rand, freq:120 + 100.0.rand, sustain: 2).play;
(
SynthDef(\expsin, { |freq = 440, fmod = 0.3, ffreq = 600, pan, out, amp = 0.1, sustain=1.0|
var a = SinOsc.ar(freq * [1, 6/5, 3/2]);
var b = a ** SinOsc.ar(fmod);
var c = b.sum.clip2 * Line.kr(amp, 0, sustain, doneAction:2);
c = BPF.ar(c, ffreq, 0.3);
Out.ar(out, Pan2.ar(c, pan))
}).store;
)
(instrument: \expsin, fmod: 20.0.rand, freq:120 + 100.0.rand, sustain: 2, ffreq: 100 + 1500.0.rand).play;