View Issue Details

IDProjectCategoryView StatusLast Update
0001727OpenMPTFeature Requestpublic2024-03-23 16:38
ReporterMessyblue Assigned ToSaga Musix  
Status resolvedResolutionfixed 
Platformx64OSWindowsOS Version10
Product VersionOpenMPT / libopenmpt 0.7.3 (upgrade first) 
Target VersionOpenMPT / libopenmpt 0.7.6 (current stable)Fixed in VersionOpenMPT / libopenmpt 0.7.6 (current stable) 
Summary0001727: Extend assignable notes for Note Column keyboard input to benefit users of custom tunings

0001568: Base Octave does not honor group size 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
  1. Open Settings
  2. Go to Keyboard tab
  3. Select Pattern Editor - Note Column
  4. Cannot assign keys to notes above note number 21
Additional Information

I've attached a 31-edo tuning file for testing purposes.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)




2023-09-06 14:40

reporter   ~0005776

Here's the tuning file (360 bytes)
Saga Musix

Saga Musix

2023-09-06 16:47

administrator   ~0005777

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.



2023-09-06 23:44

reporter   ~0005778

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.



2024-01-16 22:56

reporter   ~0005828

Last edited: 2024-01-16 22:58

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! :)

19edo keybinds.png (118,668 bytes)   
19edo keybinds.png (118,668 bytes)   
Saga Musix

Saga Musix

2024-03-03 18:40

administrator   ~0005852

Last edited: 2024-03-03 18:41

As of r20224, available shortcuts now go up to base octave + 4 B. Please give it a try, as it hasn't been tested very much. You can download test builds from (should show up in a few hours there) or set the update channel to "Development" (ditto).



2024-03-07 03:32

reporter   ~0005866

I'm able to assign a full 31-edo C-to-C scale to different keys using r20224. Thank you!

Issue History

Date Modified Username Field Change
2023-09-06 14:34 Messyblue New Issue
2023-09-06 14:40 Messyblue Note Added: 0005776
2023-09-06 14:40 Messyblue File Added:
2023-09-06 16:47 Saga Musix Note Added: 0005777
2023-09-06 23:44 Messyblue Note Added: 0005778
2024-01-16 22:56 amimifafa Note Added: 0005828
2024-01-16 22:56 amimifafa File Added: 19edo keybinds.png
2024-01-16 22:58 amimifafa Note Edited: 0005828
2024-03-03 18:35 Saga Musix Assigned To => Saga Musix
2024-03-03 18:35 Saga Musix Status new => assigned
2024-03-03 18:40 Saga Musix Note Added: 0005852
2024-03-03 18:40 Saga Musix Status assigned => feedback
2024-03-03 18:40 Saga Musix Target Version => OpenMPT 1.32 / libopenmpt 0.8 (goals)
2024-03-03 18:41 Saga Musix Note Edited: 0005852
2024-03-07 03:32 Messyblue Note Added: 0005866
2024-03-07 03:32 Messyblue Status feedback => assigned
2024-03-23 16:38 Saga Musix Status assigned => resolved
2024-03-23 16:38 Saga Musix Resolution open => fixed
2024-03-23 16:38 Saga Musix Fixed in Version => OpenMPT / libopenmpt 0.7.6 (current stable)
2024-03-23 16:38 Saga Musix Target Version OpenMPT 1.32 / libopenmpt 0.8 (goals) => OpenMPT / libopenmpt 0.7.6 (current stable)