Well, polyphony is working. The slight messiness in the code bothers me, but I'd rather have all the complexity in one place. When I get around to implementing DSSI support I'm sure I'll be glad I didn't go throwing polyphonic crap everywhere. There is a lot of duplication of data though, and since one of the primary reasons I'm writing this thing is that ams's polyphony is such a horrendous CPU hog, I wish I could fix that. I really, really, really don't want to make the "Node" class aware of polyphony though. I need to put some thought in to this. On the other hand, it's working right now. Why mess with a good thing? :)
"Premature optimization is the root of all evil" -Knuth
I think I'm going to put MIDI support in to the synth engine now, rather than having all communication via OSC. While the 100% OSC idea was nice on a conceptual level, the performance is obviously worse than direct MIDI, and doing things like setting a gate high on a noteon becomes a lot more nasty. Plus, once Jack MIDI gets out there, sample-accurate MIDI (and sample accurate everything, since the rest of the engine is) will be a possibility, which is nice. You can still control everything via OSC though, so no flexibility is lost.
Also, I think I might have found some bugs in blop-plugins today, but I'm not sure yet.
Speaking of plugins, using LADSPA plugins in a modular synth that actually cares about control rate vs. audio rate is interesting.. your plugin selection decreases a LOT, because nothing will connect. I think I found a single combination of envelope and filter that can connect (both in blop), and I had to hack an amp to even make envelope->amp possible (and I have pretty much every LADSPA plugin out there). As far as I can tell, it's impossible to make a simple synth with an oscillator through an enveloped amp with the LADSPA plugins available today. Wow.
Users are not going to be impressed when they finally get their hands on this thing. I think that's good though; plugin authors need to be making more variants of their plugins with audio-rate and control-rate inputs - blop is the only plugin package I could find that even has a filter with an audio-rate cutoff input! Good luck doing filter modulation with a control rate cutoff input.
(Why do I have a feeling I'm going to be submitting lots and lots of patches to LADSPA plugin authors in the near future?)