http://www.em411.com/show.php?area=patch&area_id=153
I uploaded a single file patch version of my 3 op FM synth to
em411.com. It is pretty big as em411 only allows 1 file per patch (470kb) I will abstract it out this weekend and upload it to the new pure-data.org, for those of you who want to see it but are scared of a 1/2 Mb pd file.
Now the goods: It is 8 voice polyphonic. With envelopes for each operator: Amplitude, Pitch and filter (its uses, vcf~, I am going to look at the various filters discussed yesterday to see if I can get a better sounding one). It has been tested by me for a good day or so, but I am sure I missed some bugs please email me if you run into problems (particularly sticky ones are those when the envelopes don't seem to work, I found 2 last night). Load save is form an older patch so that should be pretty solid. Also because it uses Arrays to store its info it will always remember the last 8 patches you worked on.
The bads: It is not GOP safe, and has not been tested with multiple copies of itself, so I don't know if it is abstraction safe. Its eats CPU cycles for breakfast (20% on my windows 2k machine at home which is an amd 1000 with 512megs of ram, 35-40% at work which is an intel p4 1500). This is my first major Synthesis patch, so I will be exploring ways to get this down in the coming weeks.
The Uglies. The envelopes are [line] and [line~] driven. I would like to move them to T3 envelopes, but the help files for the t3 stuff are Greek to me, it is going to require a bit more experimentation for me to figure them out. The envelope times are hardcoded into the sliders. I would like them to be slider independent and also respond or map to tempo information Obviously the CPU and GOP/abstraction stuff. I am not scaling the output of the 8 voices so if you go full throttle on the keyboard you will get clipping. How do people usually avoid this? I can think of a bunch of ways to do it, but is there a standard? I would like to set up a nice CC matrix or gui that allows you to route Control Change Msgs to any value.
I had a big old list of things in my head last night before I went to bed, but I forgot them. I will remember better ones as the patch progresses (like assignable LFO's, but maybe I should make the user do it externally through the CC gui.)
As always comments/questions/bug reports are very very welcomed!
m.