View Issue Details
|OpenMPT 1.31.04.00 / libopenmpt 0.7.3 (current stable)
|0001727: Extend assignable notes for Note Column keyboard input to benefit users of custom tunings
Currently, the Keyboard settings for Pattern Editor - Note Column allows assignment of note numbers of -12 (Base octave C) to 21 (Base octave +2 A), where note 0 is middle-C (when base octave is 4). This means that in a 31-edo custom tuning for example, the scale is broken up into two C-to-C octaves, which is inconvenient for input. For even bigger scales like 41- or 53-edo it's impossible to assign keys to all the degrees of the scale.
Extending the assignable notes in the Note Column keyboard input settings would solve these issues. Allowing assignment up to "Base Octave +3 B" (note number 35) would enable a full 31-edo C-to-C scale for example. Going up to "Base Octave +5 B" (note number 59) would fit 53-edo, although I assume most users would probably assign a smaller sample of scale degrees (the diatonics) and make small adjustments using the transpose keys.
In addition, adding note numbers to the command name in the keyboard settings UI would help all users of custom tunings. Something like this:
"Base Octave C" becomes "Base Octave C (-12)"
"Base Octave +1 C" becomes "Base Octave +1 C (0)"
"Base Octave +2 A" becomes "Base Octave +2 A (21)"
Code-wise I see that the CommandID enum in CommandSet.h and the CommandDefinitions struct in CommandSet.cpp would need to be extended and updated. There might be more I missed.
Thank you for making OpenMPT a great tool for creating xenharmonic music!
|Steps To Reproduce
I've attached a 31-edo tuning file for testing purposes.
|No tags attached.
|Has the bug occurred in previous versions?
|Tested code revision (in case you know it)
Here's the tuning file
31edo.zip (360 bytes)
Practically speaking, where are you taking those extra keys from? I have considered extending the number of assignable note key shortcuts before but it didn't seem practical at all given the limited number of available keys.
For 31-edo, I was thinking of assigning Q-\ as notes 0-12, A-; as notes 13-22, and Z-. as notes 23-31. This fits the C-to-C scale on the keyboard while removing the negative note numbers.
For 53-edo, assigning some sample of notes across the scale (for example 0/4/9/13/18/22/26/31/35/40/44/49/53) to the keyboard and using the transpose shortcuts to reach the other notes could work. Adding the note numbers to the command names in the settings would help here. I imagine different people would have their own preferences on which notes to include for easy access.
I think the natural extension of this idea would be to allow assigning arbitrary note numbers to keys. In the 53-edo example, using only 12 assigned notes per scale, you could fit 2 octaves on the keyboard if you allowed assignment of notes -53 to 53. Allowing assignment of the full -64 to 63 range would make for a really long options menu, but that might open up options for other tunings.
I made an account here to suggest the same thing! I sometimes use a custom 19edo keyboard layout and almost all the keys can be bound but still a few are out of range. For EDOs larger than this, if you have a tuning file with all the possible pitches, you might not have enough keys on the keyboard to keybind them all, but the ones you do bind still need to be in range, which is limiting.
The range could be expanded in either direction; if keys could be assigned below Base Octave C, then my layout could start at Base Octave -1 A instead, so that the Z key would be assigned Base Octave C, and the highest note, backslash/pipe key would be Base Octave +2 A#. Or if it was expanded upward, then my layout could start at Base Octave C and go up to Base Octave +3 C#.
Attached is a picture of the keyboard layout and what keys can and can't be bound. Thank you so much to the developers for making such a wonderful tool for xenharmonic music! :)
|Note Added: 0005776
|File Added: 31edo.zip
|Note Added: 0005777
|Note Added: 0005778
|Note Added: 0005828
|File Added: 19edo keybinds.png
|Note Edited: 0005828