Then nearly everything stopped working properly. I bet you thought the timing bug was going to be the worst of it right? Yeah me too. But no – sending notes to the right sounds was breaking in all sorts of ways, so a loop would play back properly, until I asked it to play a Formant sound, then it would play the loop AND a bunch of other loops too (er, wrong), then loops would not load/unload fully (purge to you KSP jockeys).. Sigh. Partial load/unload within a group (of Zones for you Kontakt gurus) is a BIG problem, because I cant ask Kontakt to do this I can ONLY ask for FULL load/unload of all zones in a group, so it’s a bug in Kontakt…somewhere, unless its me – which really it might be.
The base level complexity here is doing Formant sounds, they need their own group, and these need keeping track of *everywhere*. I like them but they double the complexity. I couldn’t get them to behave. I thought for a while about how I could do this formant thing any other way.
There’s a formant filter in the FX system that works nicely, it doesn’t give you the same control over formant shapes however. But…. some of the “problems” with formants I was uncovering whilst using them in this product were, they were “unruly”, you could get a nice sounds but getting to targeted specific sounds was much harder, the controls were very sensitive, especially on drum sounds. Plus the range of formant sounds wasn’t that expansive for drum sounds (actually not much of a surprise when you think about it).
So losing the beloved formants, looked, in theory, to make Orbiter into LESS of a sound design tool, but in practice wasn’t as big a loss as it seemed. The user could get formant-ish sounds by putting a formant filter in one of the bus effect slots. Of course this meant that they would be applied all the time to every pad (nowhere near as nice as the current Formant effect solution). Could I think of a way to get back this nice “switching formant effects in and out on each pad separately” control?
Well I now had a pad-effect area(previously occupied by the Formant effect), I could set it up to bypass/un-bypass an effect in the loops bus, in fact any effect in any slot in the bus (so 4 slots = 4 effects). Thus you could (for example) distort every 6th beat, phase every 4th beat, and formant filter beats 2,3,4, 9,and 22 etc. Etc. So I tried it, and yes the formant filter was a much more reliable effect, and as every playing loop had its own bus every loop could have a unique set of 4 FX to bypass/use. Sounded good.
Next I realised having this sort of control would “break” the on/off buttons on the bus effect tabs themselves. In Bus 1 (for loop 1) you might put an Amp simulation in slot 1, and turn it on, then run the pattern only to find your Amp–sim is turned off, because every pad in the first loop has its FX control turned ON but each of these has its first FX toggled to OFF. So Orbiter thinks you want to turn OFF the first FX slot for every pad individually. Lots of UI interpretation problems then. This is what I came up with:
If you have the pad FX control turned off (the little “F” button), then Orbiter will look to the on/off setting in the effect slot itself. If you have the pad FX control turned ON it will obey the settings you have in that pad itself, but only for that pad. It’s a little counter intuitive I feel. But I cant think of a better solution, and I really like the idea of per-pad effect control; it’s a little less Formant but a whole lot more of every other kind of effect(all 24 different choices of them).
All this work fixed the timing, the load/unload and the crashing issues – pretty much for good (fingers crossed though). So the ever onwards journey of the little “F-button” continues, from “Fade-In” to “Formant” to “FX”. Lets hope it can settle there now, not least because I cant think of anything else starting with “F”, well I can; but who needs a button for that?
I realise this is all a bit abstract, even with some screen shots, so here’s a quick video of the overall approach of Orbiter. I’ll try and do more detailed versions as I go.