슈콜의 completion message
( SynthDef(\test, {| freq, amp | var sig, env, pansig; sig = LFNoise1.ar(freq, mul: amp); env = EnvGen.kr(Env.perc, doneAction: 2); pansig = Pan2.ar(sig * env, 0); Out.ar(0, pansig); } ).send(s, ["/s_new", "test", s.nextNodeID, 0, 0, "freq", 200, "amp", 1.0]); )
Advertisements
mortp 12월 11, 2011의 10:12 오전 퍼머링크 |
슈콜에는 completion message 라는 것이 있는데요,
버퍼를 만들거나, 신스데프를 서버에 등록하는 경우 등 짧지만 분명히 시간이 걸리는 일을 시키는 경우에,
그 일이 완전히 끝나고 나서 다른 일을 시킬때 사용합니다.
예를들어 버퍼가 완전히 만들어 지고 나서 그 버퍼를 사용하는 신스데프를 만들어야 하고,
신스데프가 완전히 서버에 등록된 다음에야 그 신스를 실행해야 하는 것이죠.
보통 completion message는 오브젝트 스타일과 osc 스타일 모두 사용가능한데요,
SynthDef의 경우는 osc 스타일만 가능하게 되어 있습니다.
위의 예에서는 [“/s_new”, “test”, s.nextNodeID, 0, 0, “freq”, 200, “amp”, 1.0] 부분 입니다.
보통은 .play 도 있고, synth 가 등록되지 않았다는 에러메시지를 한 번 받고 나면 다음부턴 괜찮기 때문에 불필요해 보일수 있지만, 클래스를 작성하는 경우 등 completion message가 꼭 필요할 때가 있는것 같습니다.
mortp 12월 11, 2011의 10:13 오전 퍼머링크 |
이것은 다분히 허세적이라 허세반에 등록할게요 ㅎㅎㅎ
morogado 12월 12, 2011의 12:06 오후 퍼머링크
completion message 거는 처음 보는 단어. 이런식으로 쓸수도 있는거군요.
joynimm 12월 12, 2011의 12:49 오후 퍼머링크 |
좋은 팁 감사합니다.