Thanks for the quick fix, this really helped me with a little issue. I had a retrigger script for my sustains that was being triggered even though the MIDI muter was enabled, this fix solved it.
I regret to say I just left the house for the weekend, so you'll have to wait until Monday before I can confirm how many outputs are listed in the JUCE plugin host. Logic itself is fine now, though!
In regards to this problem, I had it and found a temporary workaround: how large is your instrument GUI? Setting my own to something large enough (in my case, 720x480) revealed the option to close the preset window on the upper right.
I'm copying the font colours from my design in inkscape, which are provided as hex. I've tried using a hex to decimal conversion but that hasn't produced the same result that the JSON gives. My solution is to use the hex sliders in the colour picker and then copy what the JSON provides into my script - no big deal :)
I'll need to read the MPE specs to get a full image of how it works, but internally I am using an own message format which allows a little bit more information than just the pure MIDI messages (eg. 256 MIDI channels etc). I think adding MPE support shouldn't be too hard. It's a kind of niche thing right now (apart from Bigwig I don't know any host that supports this yet), but in the future it will become interesting.
But if I understand you correctly, even with the Linnstrument it's only one active note per MIDI channel? If that's the case, my assumption is still correct, I'll just need to add the storage for different channels (which I need to do anyway for any sort of multitimbral sampler).
Aha! I just moved my external files and it loaded up no problem. It was crashing as soon as I opened the preset, no clicking on anything. So my next task is to narrow down which file is causing the crash and then which bit of code.
Yes I introduced this glitch when I rewrote the voice count system but I think I already fixed it again (but I may have not uploaded the most recent changes).
The Synth.getAttribute() method is working, but you need a getAttribute() method for connected modules, which was indeed missing. I added it for all module types.
BTW, it is a bit more efficient (and more compact) to write toggle behavior like this: