Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Load voice data from the MIDI track in a DAW #401

Open
probonopd opened this issue Dec 10, 2023 · 3 comments
Open

Load voice data from the MIDI track in a DAW #401

probonopd opened this issue Dec 10, 2023 · 3 comments

Comments

@probonopd
Copy link

probonopd commented Dec 10, 2023

User story: As a user, I would like to put voice data into my MIDI track that is being played by Dexed in a DAW (the one that contains the notes to be played). When playing MIDI from the track, the voice data from the sysex should be loaded into the Dexed VST. My use case i that I would like to script loading voice data into Dexed inside Reaper.

Currently it seems that Dexed only accepts sysex over the MIDI device set under PARM as "MIDI In".

It would be nice if it would also accept sysex coming in from the MIDI track that is being played. Just like it plays MIDI notes, it should also load MIDI sysex. This way, MIDI notes and MIDI sysex could be saved together on the same track in the DAW. This would allow to automate (by scripting the DAW) the setup of multiple layers (tracks) in TX816 style.

image

In the picture, each of the tracks TG1...TG8 contains a sysex ("SYX") with the voice data that should be played by the Dexed instance that is on the respective track.

More information:
#352

@probonopd
Copy link
Author

probonopd commented Dec 10, 2023

Looks like MiniDexed also ignores sysex coming in via MIDI sends (i.e. MIDI that is being sent from one track to another; this works fine for notes but presently not for sysex).

@probonopd
Copy link
Author

probonopd commented Dec 10, 2023

Looking at the source, might possibly be a bug?

As per the high-level code flow in https://github.com/asb2m10/dexed/blob/b6cf2e9190e216387ad96f977284ebbef765b447/Source/PluginProcessor.cpp

  • The host VST3 application (DAW) sends MIDI events, which are then passed to the DexedAudioProcessor::processBlock() function for processing - or are they not?
  • DexedAudioProcessor::processBlock() calls DexedAudioProcessor::processMidiMessage() on each MIDI event
  • void DexedAudioProcessor::processMidiMessage() calls DexedAudioProcessor::handleIncomingMidiMessage() if it sees a sysex
  • DexedAudioProcessor::handleIncomingMidiMessage() loads the voice data from the sysex

...or at least that's how it seems intended to be, because as per my tests, it doesn't do that for whatever reason. But where is the culprit?

@probonopd
Copy link
Author

probonopd commented Dec 10, 2023

The same was asked in #87 if I understand it correctly. Back then, the answer was:

Dexed doesn't listen to any sysex midi message from the standard plugin midi stream: all of the DAW that I worked with flushes anything that is sysex related. It's the reason why Dexed have it's own configuration midi listener that bind to a specific hardware device to read the sysex data (and there is no JUCE API to call this)... Sorry, blame big names vsthosts :D.

Now, it seems that Reaper specifically allows sysex to be part of MIDI tracks, and it would be nice if Dexed would use them. I don't quite understand this answer, but I take it that #87 had been closed without this ever being solved?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant