Good points.
My concern (which may be unfounded) about the Live versions of the controls is then when you first load the preset, maybe you have a nice patch all setup and you want to capture it. If I use the Live objects, will they initialize to some default state, forcing the controls to output to those values? If so, I’m concerned that either you’ll lose your preset before capturing it, or that the values will be out of synch with the hardware’s idea and you’ll get a CC “jump” when starting playback.
Basically, you need to send Sysex to query the device at some point to say “hey, what are you currently loaded with and what are your knobs/expression pedal settings”, and then you need to send the configuration you want. During playback my assumption is that the automation would be “absolute” - e.g if I have chosen patch 42 and knob 3 is at 64, I expect that patch 42 with knob 3 at value 64 is actually what the device is set to then. But when I first insert the plugin, or before I record automation, I expect it to track / reflect the device’s actual configuration. So that’s my main concern - I don’t want dropping the plugin in to change any settings initially - in fact I want it to query the device and reflect the actual settings - and I’m not sure if, when you load the live set, it should “slam” the saved config or should again re-query the device until playback starts. I’m leaning towards “query on insert, slam on reload”… maybe in the future I can make it an option.
So, with that in mind, is there a way to determine that the plugin has just been inserted / loaded from a saved set?
As for being a MIDI track, it’s not really necessary: I can use the IMP.MIDI devices (https://www.theimpersonalstereo.com/blog/blog/2016/3/impmidi-cross) to access midi connections that are not directly in/out for the plugin. Thus it can, in fact, be a MIDI-controlled audio processor. To me, this makes more conceptual sense since I don’t want to store midi clips of notes or whatever, I want to store automation (e.g. on a bus or on top of the channel’s other data, which is likely to be audio). This makes it more flexible than requiring it to be on a MIDI track separate from the audio that it’s processing.
As for searching, I didn’t find that plugin, but it’s different enough from what I’m trying to do that I think we’re not crossing paths too much - mine uses the native SysEx to query the device and read the algorithm (which is not supported in the same way as a Factor pedal) and preset name directly from the config - this is not transmitted by the Program Change / Bank data. Mine also listens for preset change and then re-queries the native state of the device to resynch the knobs and display the correct “Factor” box that the algorithm belongs to (e.g. if you switch from a TimeFactor algo to a Space algo the colours of the device change, the names of the knobs change, etc…).n That said, I’ll take theirs apart and see if I can learn anything useful from it, thanks!