Key Hold in REAKTOR 6

Mar
Mar Member Posts: 28 Member

I've mentioned in a previous Forum Discussion on how to create this in the primary level of Reaktor 6. Creating a Key Hold option.

Absynth when it was available had Key Hold function.

DESCRIPTION FOR KEY HOLD FUNCTION: Whatever keys you hold down on the keyboard will remain active, even after you lift your fingers. Even in polyphonic additional notes you play will be added to the keys/chord currently playing. Playing new keys will turn off currently playing notes and replace them with the new notes you play.

Can any programmer elaborate on making this? Correctly in polyphonic mode.

Comments

  • Sunborn
    Sunborn Member Posts: 2,187 Expert

    Usually Key hold is a simple switch and it is used mostly on arpeggiators. Here is an example:


    You can find the above example and study it, by downloading my JP-8000 ensemble from the user library (Arp module taken and reworked from AmbieGarde ensemble, by Paule).

    https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/14527/

  • colB
    colB Member Posts: 755 Guru

    Can any programmer elaborate on making this? Correctly in polyphonic mode.

    I think you need to use the channel message module. Check for note-on events, and note-off events.

    Monitoring note events, is the only way AFAIK to keep track of when at least one key is being held. I don't think you can do that with any of the gate modules, because they don't correctly handle polyphony for this application.

    You need this, because you need to be able to correctly tell when no keys are active.

    You could use a counter for this, or in core maybe a bitmap and some boolean logic. (bitmap is good because hanging notes can be easier to deal with if it's implemented correctly. A counter is problematic, because if a note hangs - note off is missed for some reason - then the count will be off until there is some sort of reset, so you need a panic button.

    Set up a flag to keep track of the state of your logic. This can be OBC in core, or an event table in primary, or maybe some feedback trick...

    When the flag is clear, if a key is hit, you close all your poly gates for all your voices, then reopen the one for the key that was hit, and then you set the flag

    while the flag is set, you don't allow any gates to close.

    You only clear the flag when no keys are active (which is why you need to monitor MIDI note events), this doesn't reset the gates, it just sets you up so the next new keypress resets them.

    ----------------------------------

    There might be an alternative approach using a voice hack in some specific allocation mode, not sure.

Back To Top