Note Hold Module
in progress
Nikolozi
- The Note Hold module blocks note-off MIDI events and converts every second note-on event of a given note into a note-off event.
- The Held view displays up to 9 held notes. If there are more, an ellipsis symbol appears.
- Tapping the Held view releases all held notes.
- Note Hold is part of Collection 4.
Nikolozi
Build 422
Note Hold Module
- The Note Hold module blocks note-off MIDI events and converts every second note-on event of a given note into a note-off event.
- Hold Parameter: When turned off, all held notes are released, and new events pass through the module. You can automate or modulate this parameter as needed.
- Notes View: The view displays up to 9 held notes. If there are more, an ellipsis symbol appears.
- Note Hold is part of Collection 4.
Nikolozi
Jon Diercks This module can also be used to create the flip-flop behaviour, when used with MIDI Source's Note-On/Off Gate, and as a bonus, the modulation signal is velocity-sensitive.
Jon Diercks
Nikolozi - I like it, could be useful for quite a few things.
I might have found a bug ... if I set a Macro Button to target the Release All action of the Note Hold with Intensity +100%, the first press of the Macro Button releases held notes as expected, but after returning the Macro Button to off state, the Note Hold still won't hold new notes unless I fully disable the Macro Button module. If I set the Macro Button intensity to -100% I can get it to sort of work as one might expect, though of course in reverse.
Nikolozi
Jon Diercks can you send me your preset? I can not reproduce it. https://www.youtube.com/watch?v=JlH3GhhxaJU
Nikolozi
Jon Diercks not to worry, I reproduced it in AUM.
Nikolozi
Jon Diercks update on this, I figured out what triggers the issue and why it's happening. Things stop working when Release All is triggered via the tap, after that modulation breaks. But a more interesting thing is, I made Release All a special parameter type, Trigger, which is an internal concept. Trigger parameters are used by Peak and Gain Reduction meters. You know, tapping them resets the values. I didn't plan for them to be ever modulated, but when you modulated Release All, I wasn't too surprised that it had issues, but in my mind, it was supposed to still work. Anyway, I know where the bug is (easy fix), but more importantly, your approach got me thinking, maybe the Release All button shouldn't be hidden to make it more obvious that it can be modulated as well as show its current state. It could be used creatively.
I'm also considering another parameter, Max Note Length, the length can be set in seconds or be a sync value. It will release a note if its length reaches the set value. Of course, the parameter can be disabled.
Jon Diercks
Nikolozi - Ah! That does shed light on it. And yes, I agree exposing that button is a good idea.
What specifically is the expected modulation behavior for triggers, then? Anything >0 activates the trigger? And then I assume the trigger won't happen again until the mod signal dips back to <=0 and then >0 again?
Related to this, back when Macro Button was first introduced, I had asked about essentially a "trigger mode" option for it instead of toggle. I think that might be worth reopening discussion now that trigger-type modulations are becoming codified. I understand the design idea of tap-slide-release, but for trigger-type operations a single tap is much more intuitive. If not a configuration option for Macro Button, maybe split it out to two separate but similar modules, Macro Toggle Button and Macro Trigger Button?
Nikolozi
Jon Diercks What I'm going to do for this module is have a toggle button called Hold. That way, both states make sense, whether it's on or off. It no longer needs to be thought of as a trigger type. So when Hold is off, the module releases and no longer holds new notes.
Regarding the Macro Button, and generally about a trigger parameter, there's no parameter type in the AUv3 API that can be thought of trigger, it's really 3 types: toggles, continuous and lists. Therefore, if I create a trigger, it would have to be a hack on top. The main difference between a trigger and a toggle is that a trigger has an automatic off state or instant off state. The main thing I think about is what it is supposed to look like in an automation lane, say in Logic. Or even when you modulated the trigger parameter. If you modulate it with a slider and then have the slide set to 100%, what does this mean? It's a trigger. How can the Release All trigger parameter continue to have a 100% modulation value? Shouldn't it be instantaneous? This contradiction bothers me, that's why, instead of Release All, it's now going to be a Hold parameter. And modulating the Hold parameter makes sense, as it can have both states.
And with tap-slide-release, I was side-stepping this issue, because the user ends up triggering the off state. But maybe all you need is just a mode with the Macro Button, where when you release it, it will go to the off state. Ok this approach also side steps it, so this mode will toggle on on touch, and when you release will toggle off. That should feel like a trigger for your needs.
Jon Diercks
Nikolozi - OK that also makes sense, and you're right it's probably best that the UI/UX be a consistent representation of what's actually going on in the code. And if Macro Button gains a "momentary" option or some such, then I could still use that to modulate the Hold button of the Note Hold module (I assume the default/initial state of the Hold button would be "on"?), with mod intensity -100%, and then the momentary macro button would have a "Release All" type of result. Correct? I think I like this. Clear, clean, and consistent.
Nikolozi
Jon Diercks Default state of the Hold button will be on, and yes -100% mod will do the release. But since Hold will be a toggle button, you can flip the state if that makes more sense for your modulation setup.
And even without the momentary option you can still use a Macro Button, you will just need to manually reset to the other state every time you do "Release All".
Nikolozi
Jon Diercks Demo https://x.com/Nikolozi/status/1927032008070353309
Nikolozi
in progress
Available for testing in
build 441