I no longer need an answer to 3, assuming samples behave the same way under MIDI instruments as they do with other VSTis
Question 1 still stands: Can Renoise respond to MIDI signals sent from a VSTi? Or, to put it another way, can I use a VSTi to add notes to the current track in the pattern editor?
Just to clarify- this question is strictly for the Renoise devs, and VSTi authors- the rest of you can be forgiven if your eyes start to glaze over lol
I will rephrase question 2 a bit…
At the moment I am attempting to send MIDI messages- specifically tune data, but controls are in the works- to Renoise via the MidiProcessor component of a VST host (Renoise in this case). The plugin API I am using is VST.Net rather than the native Steinberg VST SDK, but it seems to do everything it claims to do so far- it uses a Steinberg wrapper that allows plugins to be loaded as if they were native, and is generally quite nifty. Hopefully the namespaces are similar enough that references to the API won’t be gobbledegook
The plugin I have written implements IVstPluginMidiSource, and has a type of “Synth”, since that seemed to be what puts the “i” in “VSTi”. I have an AudioProcessor implemented for timing.
When an event occurs on my instrument peripheral (to wit: a Rock Band guitar peripheral), the following occurs:
- The instrument event is translated to a NoteOn (button pressed) or NoteOff (button released) MIDI message, and added to a queue.
- When a call is made to the Process(event) method in the AudioProcessor, the following occurs:
- The host’s MidiProcessor complenent is fetched (using Host.getInstance())
- The queue is sent to the MidiProcessor by invoking its Process(events) method
That seems to be enough to satisfy the assorted tutorials I’ve read. However, as previously stated, no corresponding note is played in Renoise when this occurs.
So, what am I doing wrong here? Do I need to, for example, send and receive CLOCK and TICK messages? Regularly? Does Renoise need to be treated as a Midi slave, and the plugin as a Midi master? Whatever happened to that crispy bacon we had before the war?
Incidentally “learn C++ and use the native API” IS an acceptable answer to this question (I already learned C# for this, one more language isn’t going to make much of a difference), but I’d really prefer it if it was an answer of last resort. Oh, and I know about keymappers already- I want to do a bit more than “if button A is pressed, map it to the C key”