It does some things right, and some things crazy.
Right things include: on linux, nice integration with emacs, so that you can very easily copypasta single lines from the documentation into your buffer, and you are two keystrokes away from hearing what it sounds like. I'm to understand it's like this on other platforms too, only without emacs. Lots of functional programming combinators, though no types, of course.
Bad things include: holy shit too much TMTOWTDI. Hard to be sure you are deallocating all the things you need to deallocate. Different synth units interact via numbered busses.
Here is some of "my" code, but it's really just documentation copypasta with a few choice parameter settings:
( SynthDef(\sawpulse, { |out, freq = 440, gate = 0.5, plfofreq = 6, mw = 0, ffreq = 2000, rq = 0.3, freqlag = 0.05, amp = 1| var sig, plfo, fcurve; plfo = SinOsc.kr(plfofreq, mul:mw, add:1); freq = Lag.kr(freq, freqlag) * plfo; fcurve = EnvGen.kr(Env.adsr(0, 0.3, 0.1, 20), gate); fcurve = (fcurve - 1).madd(0.7, 1) * ffreq; sig = Mix.ar([Pulse.ar(freq, 0.9), Saw.ar(freq*1.007)]); sig = RLPF.ar(sig, fcurve, rq) * EnvGen.kr(Env.adsr(0.04, 0.2, 0.6, 0.1), gate, doneAction:2) * amp; Out.ar(out, sig ! 2) }).store; ) SynthDef("help-Diskin-2chan", { arg bufnum = 0; Out.ar(0, DiskIn.ar(2, bufnum)); }).store; SynthDef("help-Diskout", {arg bufnum; DiskOut.ar(bufnum, In.ar(0,2)); }).store; p = PmonoArtic(\sawpulse, \dur, 0.2, \freq, Pwhite(1,8) * 100, \mw, 0.8, \plfofreq, 8, \gate, 0, \rq, 0.05, \freqlag, 0.0001, \legato, Pwrand(#[0.5, 1.0], #[0.1, 0.9], inf) ).play; q = Pbind(\instrument, \sawpulse, \delta, 3, \dur, 3, \mw, 0.9, \plfofreq, 19, \freq, 220, \rq, 0.05, \ffreq, Pseq([200, 200, 180, 180], inf), \amp, 1).play; b= Buffer.alloc(s, 65536, 2); b.write("/tmp/rec.wav".standardizePath, "wav", "float", 0, 0, true); d = Synth.tail(nil, "help-Diskout", ["bufnum", b]); d.free; p.stop; q.stop; x = Synth.basicNew("help-Diskin-2chan"); m = { arg buf; x.addToHeadMsg(nil, [\bufnum,buf])}; b = Buffer.cueSoundFile(s,"/tmp/rec.wav".standardizePath, 0, 2, completionMessage: m);
Here is what it sounds like: http://soundcloud.com/jcreed/jurassic-wugs-in-peril
---
Another thing I learned today: road bikes are not suitable for biking in snowstorms ahahaha. I think I'ma just take the bus back home.