Hello, I've been interested in trying ChucK for several years now but I've just recently started playing with it in earnest. I like what I see so far :)

I have one thing that's bothering me - coming from SuperCollider, I'm used to being able to put UGens in pretty much any argument, like this:

{a = SinOsc.kr(freq: 20, mul: 300);
SinOsc.ar(freq: a, mul: 0.8)}.play

If I wanted basic FM. So intuitively, trying out ChucK for the first time, I tried to do:

SinOsc mod => SinOsc car.freq => dac;

Which didn't work. After a bit of reading, I understand that UGens have "inputs" in ChucK, by default set to modify the frequency, and if you want to modulate a different parameter, you change that object's sync attribute.

That seems kind of weird/unintuitive to me, is there something that I'm missing that went into making the syntax like this?

Besides that, I find ChucK really fun to play with, and I look forward to making some zany sounds with it :)

-Greg Sabo