i have been debugging this fm instrument i'm building for a client. (his name is keith o_0 ). i installed supercollider on his machine and updated his class library to accommodate for the requisite changes i made to the class library (see previous post- nothing has changed in that regard). the demo was pretty successful- this project is turning out to be really fun. there's something really satisfying about watching someone interact with something you've built for them, especially if it's a creative tool. for me personally, the tool's interface and paradigm weren't terribly interesting, until i put it in keith's hands and saw his eyes light up. then the inevitable feature requests came, although honestly i think i made more of myself than he did. ok, so i should qualify the above statement further, the demo was pretty successful *until* he tried to save and reload some previous settings. a bug showed up that i thought had been ironed out. i've now fixed it. the code may be found here. make sure, if you want to run this on vanilla supercollider, to make the changes documented in this file.
here's a screenshot:
the program consists of 16 oscillators, which can be routed into one another for frequency modulation. more rigorously, the synthesis process is phase modulation, since the audible effects are more sensible, at the expense of slightly weirder math. i like to think the sonic results are pretty intuitive. the interface itself is designed to look like a 16 channel mixer, where you can re-route any channel into any other channel. i know what you're thinking, but audible feedback is not allowed since each oscillator can go to only one output. the pre-amplitude of the input for each channel may be set with the "pres" row of number boxes. this value is kind of like a "trim" setting on the input of a mixer- all the incoming signal of the channel is multiplied by this value. among the feature requests i am entertaining for the next iteration cycle are ringing filters, noise generation, and delays.
check out that previous post (linked above) for a delightfully blissed-out video demo! ^_^