I’m assuming you passed the first great wall of your ecosystem : Your hardware is made, your software has most of the required bricks elements done and It can send midi messages following orders going through your pipes algorithms. Let me offer you an advice regarding your internal organization. It perhaps might be improved if it became more organic. Considering at least 2 types of end users : put a beta program in place, allow your community to become testers. Most of us would be fine with an early not gold painted beta version to be used at our own risk. This would allow you to take a bigger time to finetune the perfect public version, limiting frustration on your fan base. Just saying.
Regarding my personal needs i have plenty. But I can give you a summary of some use cases, but the basic thing would be to be able to send a sysex string when a note on or note off occured :
Using one of the green buttons of an UC4 Controller (http://www.faderfox.de/images/UC4%20side%20view.jpg) I could trigger a dedicated note on event to send a sysex message to a Virus Synth for it to load the second multiselect program :
F0 00 20 33 01 10 73 00 69 00 F7
Note, that i would require to filter that note, because i don’t want it to be played by the synth.
Another idea involving the clock :
for some reason, the Virus doesn’t stop its arpegiator running on a channel when the midi clock is stopped.
So, we could listen to the clock stop event, and send a sysex to the virus for it to stop the arpegiator of the midi channel 5.
F0 00 20 33 01 00 6E 04 7B 01 F7
F0 00 20 33 01 00 71 04 0F 00 F7
F0 00 20 33 01 00 71 04 0F 01 F7
These are in fact 3 chained messages for the arpegiator stop to really work
In later steps, we could imagine :
- 1/ being able to detect a CC within a range to send a static sysex string.
- 2/ detect a sysex to send another sysex
- 3/ even more powerful, being able to keep a value you detected in a pipe in a variable (like VAR1). And being able to pass this variable later on (in a sysex string for example) using (placeholders like $VAR1 or {VAR1} for example.
F0 00 00 3F 22 01 77 00 10 33 41 5A 00 {VAR1} 54 32 01 22 5F F7
I encourage you to check the functions offered by the MidiSolutions Event processor here : Event Processor Guide
This guide is well written, and gives you an idea of the state of mind of their creators when building this little box.
Cheers