[API request] Modalization of Keybind

Summary

This API allows Renoise to operate at the speed of thought.

While keyboard-centric operation is convenient in Renoise, the current challenge is that key bindings are quickly depleted due to assignments to numerous functions.
I believe this can be resolved by enabling the modalization of key bindings.
A specific method would be something like the following:
(This is merely one example as a simple idea; if there is a better implementation method, that would be preferable.)

  • “Temporarily” reassign or unassign any key to any function expressed in Keybindings.xml
  • Read any file path, such as within a Tools archive, as Keybindings.xml
  • Piano keyboard keybindings definable within Keybindings.xml
    • This allows piano keys to be freely used with non-QWERTY layouts like DVORAK, Colemak, or Workman.
    • For those like me who are more accustomed to the fret layout of guitars and basses than piano keyboards, it becomes possible to input using an arrangement where Z corresponds to E-2, A to A-2, Q to D-3, and 1 to G-3, then progressing in semitones to the right from there.

I posted a proposal for this function below, but I thought it was worth posting as a dedicated thread since it is a pretty game changer for what seems to be a relatively simple implementation.

How would this be useful?

It would allow for modal handling of the keyboard system, allowing for virtually unlimited key bindings.
For example z,x,c,v… Each of these keys can have its own key layer, and on top of each key layer, an infinite number of additional key layers can be created.

Example 1: Toggle keys on the piano keyboard layer

The F key can be assigned as an enable/disable toggle key on the piano keyboard.
This way, 37 keys from Z to = on ANSI keyboards and about 40 keys on ISO and JIS keyboards can be assigned to other functions.

However, this requires support for standard functions.
In the current V3.5.2, it is not possible to assign another key to a key on the piano keyboard layer.

Example 2: VIM mode

Modal key bindings in the form of vim are possible. Use h,j,k,l to move the cursor keys. Enter edit mode with i or a, use macro functions, etc. for quick editing, and return to normal mode with esc when you are done.

request

You can’t immediately imagine how much more efficient this will make your work.
Of course, this is only if you properly implement Renoise Tools with this API, but it is important to note that it is possible in principle.

Please consider implementing this API.

5 Likes

Renoise team please add this! The number one feature that I want to see in a future version of renoise is more customization of shortcuts, and the ability to custom assign the keys for the piano keyboard.

2 Likes

yeah this would be a gamechanger. tool developers could ship a keybinding for their specific tool, and then safely return back to the “current one” without data loss, when, say, uninstalling the tool etc etc.

but of course, qwertyuiop etc keys being mappable would be amazing, too. maybe more complex, don’t know?

is this possible to implement meanwhile, i.e. vim and Emacs keybindings ?

If my proposed API is implemented correctly, it will at least be possible in principle. That’s what matters.
The actual implementation could be simplified further. For example, it might be smarter to create a function that allows “temporary” reassignment and release of any key to any feature expressed in Keybindings.xml.
In any case, what I’m seeking is an API that can make the key operation system modal.
Implementation beyond the API will likely fall to the developers of Renoise Tools. However, given the dedicated fanbases passionate about the operational philosophies and systems of these two major editors, I anticipate someone wanting to implement these modes will emerge sooner than expected.
For users of these editors, their operational systems represent fundamental muscle memory and consistent conceptual frameworks for operations.
As a Vim user myself, I’m looking forward to it. This should enable extremely fast operations with minimal cognitive load.

1 Like

in the last weeks I played around with emacs and supercollider. I even use it at work to write smaller texts in org mode and export them to odt files.

I’ve added the following to the implementation example in the OP.
I think many people would find it interesting, especially the possibility of changing the piano keyboard layout to a guitar/bass fretboard layout.

1 Like

@tkna as you know, i have a solution for the fret thing. thanks for the example - i’ve added the 1-0 control for 4th octave

1 Like