-UGen의 argument를 다른 UGen으로 변경하여 가능성을 확장시킬 수 있다.
{SinOsc.ar(SinOsc.kr(1, mul:50, add:400),mul:0.3)}.scope
frequency를 SinOsc로 하여 sine wave로 변경.
mul을 다른 범위로 주어
예를들어 -1~1에서 mul = 4 로 해주면 `-4~4의 범위의 값을 얻는다.
add또한 원래의 값 -1, 1에 add = 2 를 해주면 1~3의 범위를 얻는다.
즉 위의 구문에서는 400-50hz에서 400+50hz를 움직이는 frequency를 생성한다.
-LFNoise0은 낮은 frequency의 noise를 생성한다.
LFNoise0(freq,mul,add) // freq is the rate to generate values
{LFNoise0.ar(10)}.scope
{SinOsc.ar(LFNoise0.ar(10,100,400))}.scope //mul:range, add:center value, frequency:400~600hz
-()를 사용하여 2개의 signal을 더할수 있다. 실행시에는 ()안을 모두 선택한후 ENTER.
add 2 signals:
(
{SinOsc.ar(400,0,0.3)
+
SinOsc.ar(123,0,0.3)
}.scope
)
multiply two signals:
(
{SinOsc.ar(400,0,0.3)
*
SinOsc.ar(100,0,0.3)
}.scope
)
-Parameter의 이름들은 다음과 같은 방법으로 표현될 수 있다. 복잡한 구문에서는 다음과 같은 방법이 도움이 된다.
(
{SinOsc.ar(freq: LFNoise0.ar( freq: 10,
mul: 100,
add: 500),
mul: 0.3
)
}.scope
)
//——————————————
2. Multi-channel expansion(and contraction)
UGen내의 parameter에 주어진 (array)와 같은 collection은 multi-channel output을 만든다.:
{SinOsc.ar([220,350])}.scope
Mix는 multi-channel output을 mix시켜준다.:
{Mix.ar(SinOsc.ar([220,365],0,0.3))}.scope
다음의 결과와 비슷하다. :
{SinOsc.ar(220,mul: 0.3) + SinOsc.ar(365,mul: 0.3)}.scope
//——————————————
3. MouseX,MouseY
마우스를 모니터의 X,Y축으로 사용한 컨트롤방법에 사용되는 오브젝트.
MouseX.kr(minval, maxval, warp, lag)
warp : 0= linear, 1=exponential 또는 직접 ‘linear’, ‘exponential’이라고 써준다.
{SinOsc.ar(MouseX.kr(100,2000),0,0.1)}.scope
{SinOsc.ar(MouseX.kr(100,2000,’exponential’),0,0.1)}.scope
{SinOsc.ar(MouseX.kr(100,2000,’linear’,5),0,0.1)}.scope
(
{SinOsc.ar(freq: MouseX.kr(100,2000,’exponential’),
mul: MouseY.kr(0.1, 0.01))// top of screen has larger amp.
}.scope
)
//——————————————
4. XLine, Line
-Controlling values with XLine:
XLine (start, end, dur, mul, add, doneAction) ar or kr
exponential curve를 생성한다.
start 와 end 가 0이 아닌수여야 한다.(Csound와 비슷)
주의: 마지막 값은 라인이 끝날때 수행되기위한 엑션이 아닌이상 지속되어야 한다.
옵션들은 EnvGen헬프를 참고
doneAction: 2 는 엑션이 끝나면 종결한다.(CMD+.를 할 필요가 없게 된다)
{SinOsc.ar(XLine.kr(100,2000,10),0,0.3)}.scope
{SinOsc.ar(XLine.kr(100,2000,10,doneAction:2),0,0.1)}.scope
-Line은 linear change를 형성.:
Line (start, end, dur, mul, add, doneAction) .ar or .kr
{SinOsc.ar(Line.kr(100,2000,10, doneAction: 2),0,0.1)}.scope
//——————————————
http://csound.x-y.net
Ji Youn Kang,
Csound Max Community