dexed
dexed copied to clipboard
Note-off or all-notes-off appears to be ignored
Hello.
I notice in the changelog that there have been some recent changes to how all-notes-off MIDI events are handled. It seems that something is still not working correctly (I don't know if it worked correctly prior to those changes).
If I do the following:
- Start up Rosegarden.
- Start up Carla.
- Create a new
Dexed.soVST instance in Carla. Select a patch that will play a sustained note for as long as a key is held. - Create a MIDI track in Rosegarden and connect the MIDI output of Rosegarden to the
eventsinput of Dexed. - Write some long notes on the MIDI track. Press play and then stop playback in the middle of one of those long notes (so that
note-offisn't reached).
At this point, Dexed will sustain the last note that it received forever. There appears to be no way to shut it up aside from manually toggling the MONO switch on and off on the synth.
I don't think Rosegarden is to blame here, as I've used the various MIDI inspector plugins in Carla to verify that Rosegarden is sending all-notes-off events on all channels.
This is actually a serious usability issue, as every time you happen to stop playback in the middle of a note, you then have to go into all of your Dexed instances and toggle the MONO switch to stop them blaring at you.
I'm on Arch Linux. Dexed is compiled from the latest git master (73a266dd70e58e7def14a52bf2a53b5486d083dc).
I've verified that this also happens in Ardour. It's a serious usability issue: I stop a track playing (in this case Ardour always sends an ALL-NOTES-OFF event) and then have to go through each of the twelve or so Dexed instances, toggling the MONO switch for each to get them to stop playing.
What you need then is a ALL-SOUND-OFF (midi CC=120). When you use the MONO switch, it internally does ALL-SOUND-OFF. ALL-NOTES-OFF (midi CC=123) just switch note status to key up. If the EG you programmed is design to play afterwards the key is up, this is a work as designed.
If the EG you programmed is design to play afterwards the key is up, this is a work as designed.
None of the EGs have a release phase in my patches. The instrument seems to be either losing NOTE-OFF events, or failing to handle ALL-NOTES-OFF events. It never used to do this - I've been using Dexed for about a year now, and I've not had any issues like this with older versions.
Can you do a midi stream for this, redirect Rosegarden midi output trough a midi file ? This will be easier to debug...
I will try! I'll try to capture some output from Ardour too.
I'm having serious trouble reproducing this with a simple example. It's non-trivially reproducible with both Rosegarden and Ardour. It seems like it only happens once the arrangement of instruments reaches a certain complexity. Once that happens, the arrangement essentially becomes completely unusable, as every time you pause either sequencer, all of the Dexed instances keep sustaining whatever note they were on. At that point, you either have to do the MONO on/off trick, or just save and quit/restart the sequencer.
It basically makes Dexed unusable for me, and given that it's the only instrument I actually want to use, that's a bit of a pain!
I'll see if I can upload a Rosegarden or Ardour project file that does reproduce the issue.
I've managed to reproduce this with a fairly small example. It's a Rosegarden project file with a short musical phrase, with four Dexed VST plugins loaded into a Carla rack.
The included something.rg file is the Rosegarden project file, and something.carxp is the Carla rack. You'll need to open something.rg in Rosegarden, and then open Carla and load the given rack file. One small thing: I believe that Carla embeds the full path to the Dexed.so file inside the .carxp file. You may need to hand-edit this to get it to load the plugin properly (it's just XML, so not difficult). It may even correct the path itself upon loading, I'm not sure.
Assuming that the above loads correctly and that the midi connections are properly created between the Rosegarden tracks and the Dexed instances... Just press play, then press stop any time before the phrase ends. On my system, that will reliably cause all of the Dexed instances to keep perpetually sustaining whatever was the last note played.
I've observed this behaviour in Rosegarden and Ardour, and I know that both Ardour and Rosegarden send an "ALL-NOTES-OFF" event whenever you press stop. In Ardour, the plugins are loaded directly inside Ardour (rather than having the separate Carla rack), so I don't believe it's a Carla issue.
Please let me know if you have trouble with this. I realize that it's not the most ideal conditions under which to debug, but I've not been able to reproduce the problem any other way.
Could it be that you've accidentally recorded cc64 into the midi clips?
When you use the MONO switch, it internally does ALL-SOUND-OFF. ALL-NOTES-OFF (midi CC=123) just switch note status to key up.
This is a pretty bad way to do the monophonic mode... It should have a proper event queue and last note priority, while also being able to retrigger back to previously held notes that are still pressed down...
I discovered this behaviour when I noticed that an Arduino sequencer I'm writing behaves differently controlling a Volca FM than controlling Dexed. On startup, it sends CC=123, and that does silence all voices on the Volca FM, but the same patches in Dexed remain playing. I'm sending CC=120 on startup now as well, and I don't know what the DX7's behaviour would be on receiving CC=123, but I'd vote for Dexed having the same behaviour as a DX7.