EventEvent๋ ํ๋์ Environment๋ก์ Play๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ์ ์ก์
์ ์ทจํ๋๋ก ๋ง๋ค์ด์ง ๊ฒ์
๋๋ค.
Event๋ defaultParentEvent๋ฅผ ์ ๊ณตํ๋๋ฐ ์ด๋ ๋ค์ํ ๋ค๋ฅธ event type ์ ์ ์ํด์ฃผ๊ณ ๊ฐ๊ฐ์ type์ default key.value pairs๋ฅผ ์ ๊ณตํด ์ค๋๋ค.
type ์ type, note์ ๊ฐ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
Event ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ง์
( ).play; // the default note
( freq: 500, pan: -1) .play; // 500 Hz, panned left
( degree: (0..12)).play // a whole tone cluster
Events ์ SynthDefsSynthDef์์๋ ํ๋์ instrument๋ฅผ ์ ์๋ด๋ ค ์ค๋๋ค. ๊ทธ instrument๋ ‘Event’์ ์ํด ์คํ๋์ด ์ฃผ๋ ๊ฒ์ด์ง์.
๋ค์์ ์์ ๋ฅผ ๋ณด์ธ์.
SynthDef(“pm”, { | out=0, freq=440, amp=0.1, pan=0, gate=1, ratio = 1, index = 1, ar = 0.1, dr = 0.1 |
var z;
z = LPF.ar(
PMOsc.ar(freq, freq * ratio, Linen.kr(gate, ar,index, dr), 0, 0.3),
XLine.kr(Rand(4000,5000), Rand(2500,3200), 1)
) * Linen.kr(gate, 0.01, 0.7, dr, 2);
OffsetOut.ar(out, Pan2.ar(z, pan, amp));
}).store;
(instrument: “pm”).play;
(instrument: “pm”, ratio: 3.42, index: 12, freq: 150, ar: 8, dr: 3, sustain: 10).play;
pm์ด๋ผ๋ SynthDef๊ฐ ์ ์๋ด๋ ค์ก๊ณ , store์ ์ํด ์๋ฒ์ ๋ณด๋ด์ง๋๋ค.
** ์๋ฒ์ ๋ณด๋ด์ง synthDef๋ฅผ ํ์ธํ์๋ ค๋ฉด Users/Library/ApplicationSupports/SuperCollider3/synthdefsํด๋์ ์ ์ฅ๋ฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ๊ณณ์์๋ SynthDef์ ์ ๊ทผ ๊ฐ๋ฅํ๋ฐ ์ฐธ๊ณ ํ์ธ์.
์๋ instrument๋ฅผ ์ฌ์ฉํ์ฌ pm์ ์ฐ์ฃผํด ์ฃผ๋๊ฒ์ด event์
๋๋ค.
Events ์ Patterns
์ด๋ฒคํธ๋ ํํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ ์ฉ๋ฉ๋๋ค. pattern์ ๋ค๋ฅธ๊ณณ์์ ๋ค๋ฃจ์ด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ค์์ ๋ช๊ฐ์ keys๊ฐ ํจํด์ ์ ์ฉ๋ ์์ ์
๋๋ค. ์ฌ๊ธฐ์ key๋ค์ stepsPerOctave, note, ctranspose, detune, sustain, dur, db๊ฐ ์ฌ์ฉ๋์์ต๋๋ค.
(
p = Pbind(*[
stepsPerOctave: Pstep(Pseq((2..12).mirror, inf),12), // 3 – 12 tone e.t. scales
note: Pseq((0..12).mirror, inf),
ctranspose: Pwhite(-0.2, 0.2), // detune up to +-20 cents
detune: Pwhite(-1.0, 1.0), // detune up to 1 Hz
sustain: Prand([0.2, 0.2, 0.2, 4], inf), // notes last 0.2 or 4 seconds
dur: Prand([0.2, 0.2, 0.2, 0.2, 0.2, 0.8], inf), // 1 in 6 chance note lasts 0.8 seconds
db: Pstep( // 4 beat accent structure
Pseq([-15, -25, -20, -25], inf),
0.8
)
]);
p.play
)
Event play method.Event๋ ๋ค๋ฅธ Environment๊ฐ use(function)๋ฉ์ธ์ง๋ฅผ ๋ฐ์ผ๋ฉด, ๊ทธ ์ฆ์ ์ด๋ currentEnvironment๊ฐ ๋๋ฉฐ, function์ ๊ณ์ฐํ๊ณ , currentEnvironment์ ์๋ ๊ฐ์ ๋ค์ ์ ์ฅํฉ๋๋ค.
์ด๋ ๊ฒ ํ์ธํฉ๋๋ค.
currentEnvironment.at(keyName)
๋๋ ~keyName
๋ค๋ฅธ ํค๊ฐ์ ์ค์ ํ ๋์๋
currentEnvironment.put(keyNamem value)
์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
~keyName = value
์ฌ๊ธฐ์ ~keyName์ ๋ฌผ๋ก ์ ์ฅ๋ ํค์ ๊ฐ, ์์ ์์ ๋ก ๋ณผ๊ฒ๊ฐ์ผ๋ฉด ~sustain, ๋๋ ~dur๋ฑ๋ฑ์ด ๋๊ฒ ์ง์.
‘~Name'(environment)์ ๋ํด์๋ ๋ค์์ ๋ค์ ๊น๊ฒ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ค์์ Enevt play method๋ฅผ ์ ์ํ ์์ ์
๋๋ค.
play {
if (parent.isNil) { parent = defaultParentEvent };
this.use { ~play.value };
}
์์ ์์ ๋ฅผ ์ค๋ช
ํ์๋ฉด ~play์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ด ์๋ค๋ฉด defaultParentEvent๋ฅผ ์ฌ์ํ๋ผ๋ ๋ป์
๋๋ค.
-Reference
SC Help file.
ย