MelaM
Mela
May 23

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. - 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.
CompletedCompleted

Jun 6, 2025

Shipped as part of the Mela 6.6 update.

May 27, 2025

**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.

May 23, 2025

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.

May 23, 2025

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.

May 24, 2025

Jon Diercks can you send me your preset? I can not reproduce it. https://www.youtube.com/watch?v=JlH3GhhxaJU

May 24, 2025

Jon Diercks not to worry, I reproduced it in AUM.

May 26, 2025

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.

May 26, 2025

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?

May 26, 2025

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.

May 26, 2025

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.

May 26, 2025

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".

May 26, 2025

Jon Diercks Demo https://x.com/Nikolozi/status/1927032008070353309

May 23, 2025

Available for testing in **build 441**