Ok, that’s a useful information!
I will debug the script, trying to reproduce the issue by sending NOTE ONs with NULL velocity instead of NOTE OFFs.
Thanks!
Gabriel
Ok, that’s a useful information!
I will debug the script, trying to reproduce the issue by sending NOTE ONs with NULL velocity instead of NOTE OFFs.
Thanks!
Gabriel
Just to mention that sustain is dealt with differently by different plugins. Sostenuto keeps note ons until pedal release, while sustain does issue note offs as played, and addresses the envelope generators according to the plugin author’s preference.
Hi @Ade,
I have found the bug. When an incoming note on was received I did not check if its velocity was zero before incrementing the counter, so I counted NOTE ON with velocity=0 as actual NOTE ONs!
BTW, the same bug also affected my pseudo-polyAT script, though in that case it is probably less noticeable. I will have to correct that, too.
Down here I attach the (hopefully) debugged ANO script.
Gabriel
EDIT: I had to write a script to convert NOTE OFFs to NOTE ONs with 0 velocity in order to debug the script. I have reproduced the problem and know it seems to be solved.
allnotesoff.zip (1.3 KB)
Glad you found it.
I route the pseudo poly script independently of notes - only poly AT is supplied via the script. Nothing else. That may be obscuring the problem, if any.
It appears to be working very well!
Wow, what a boon!
Hi Gabriel,
I have a reproducible (I think) situation which is causing new notes to issue ANO, immediately choking anything that’s sounding. In the following example you see a note issued and held. When the next note is added, an ANO is issued, cutting off the first note.
If further notes are played, they sound and no ANO is issued until all notes are released, at which point an ANO is issued ahead of Note Off events.
I think some of this is may be related to the use of sostenuto. Once the bug is in, it cannot recover, regardless of whether sostenuto is used or not.
One thing for sure, when these niggles are ironed out, this will be one very important plugin!
I will look into it. I do not manage sostenuto in the plugin, yet…do I understand correctly that no note off messages are sent until the pedal is released? Is the Held note in your gif obtained using the Sostenuto pedal? I admit that I have never used Sostenuto before.
Cheers,
Gabriel
Yes, that is exactly it. Notes already pressed will lock on when the sostenuto command is received. When released, NOFs are issued for the held notes. In my situation, I have states which apply a transform to CC64, turning it into CC66, allowing the same pedal to do the job. The synth still sees CC64, and sostenuto it sees purely as fingers still pressed on keys.
You mean that CC64 gets to the synth anyway? So what happens is that when you release the pedal
I would like to reproduce the situation. Are you using Cantabile Sostenuto filter (or pizmidi or similar plugins) to convert sustain into sostenuto?
Gabriel
I think I’ve sorted it out. My setup breaks out the main keyboard midi into several routes - notes only, a certain controller group, aftertouch via your script etc. I think there was some interaction which was delaying the timely arrival of the ANO under certain conditions.
I now have the ANO script on a discrete path. It’s guaranteed (I hope) to be the last event in the queue and, so far, under all sustain/sostenuto conditions, it’s performing flawlessly.
As I mentioned above, this is going to be a very important plugin for Cantabile users.
It’s probably that, since I have tested the script with midiSostenuto in a simple chain
(notes+sustain) to midiSostenuto to reajs to synth
and it seems to work as expected. I hope you will have no more problems!
Gabriel
Funny thing. At some point in the last few months at least, when I stop the metronome by using a macro button on my Komplete Kontrol, it issues an all notes off… which is so annoying. I have to trace down whether that’s an issue with the macro button or something in Cantabile.
I thought I would use this as an excuse to premiere the upcoming channel, and exercise my noobie OBS chops.
So… I’m running Cubase into Cantabile via Loop MIDI. (not RTP as I said in vid) and when Cantabile receives an ANO at its input, it appears to generate a second ANO. I could’ve asked the question as simply as this, but I got a kick out of running Cantabile, Cubase and OBS simultaneously via Voicemeeter and @terrybritton should be happy to know that his efforts have not been in vain!
FYI, MetaPlugin is used in Cubase to route MIDI. Seems to be the most painless approach.
Hey @Ade,
Cantabile shouldn’t be generating a second ANO event on receiving one. I just did a quick test here and was only seeing the one.
What happens if you go back in the MIDI path and use the MIDI monitor at various points to see if you can figure out where the second one is coming from. eg: start with the MIDI Input port and see what it’s receiving, then move to the MIDI route, then move to the plugin and see if things change along the way.
You don’t have a binding somewhere generating ANO events do you?
Brad
@Brad, sorry for that waste of time. I should have checked a clean project. It’s as you say.
Oh well, it did give me an excuse to immortalize my dumbass in sound and pictures.