View Issue Details
|OpenMPT 1.31.04.00 / libopenmpt 0.7.3 (current stable)
|0001735: "Step Cycler": an AWESOME simple idea for MUCH faster note input for many use cases and probably easy to implement too!
Hey everyone, it's been a long time! Good to see that OpenMPT is still doing well! The last time I messed around with OpenMPT was around 2015 and haven't done music composition since around then (my degree is Computer Science actually, with little/no music training), but I'm planning on using OpenMPT to do some tracker based music for future projects and really looking forward to working with it again and actually making something this time around instead of just messing with it like last time! OpenMPT has got some great features that cannot be matched elsewhere (such as the natural ease of microtonality via custom note names compared to most/all traditional piano roll systems, great hotkeys for quick edits, etc) and I'm excited to work with it again after so long away from music.
Anyway, today I had a really great idea for a new feature that I'd estimate would be both easy to implement and extremely useful for working with OpenMPT!
The idea occurred to me because I was getting reacquainted with the hotkeys recently and was repeatedly changing the "edit step" while experimenting randomly some.
It occurred to me that it would be really nice if there was a way to specify a sequence of edit steps that OpenMPT automatically rotates between each time you write a note into the pattern. So, for example if you had this sequence set to "2, 4, 8" then the next note you pressed would cause the cursor to jump forward 2 rows, then next 4 rows, then next 8 rows, and then back to 2 rows again and the cycle would repeat infinitely likely that for as long as this "step cycling mode" is enabled.
But then an even better idea occurred to me! Why stop at just edit steps? Why not have cyclic sequence lists for ALL of the basic attributes of a note written into the pattern?
Thus, my suggestion is the creation of a "step cycler" or "step rolodex" or "cycle sequencer" that implements exactly that, which arbitrary length repeating cycles that each separately cycle around and around as you press notes, one each for each of the most basic note properties (plus the edit step) for five automated sequences: edit step, note/pitch, volume, effect, and instrument number.
Wouldn't that be really great for inputting some kinds of sequences much faster? Take a moment to think about it and imagine it!
It could be used for lots of different kinds of arpeggios and many other repetitive input tasks. It would make it a lot faster to do structured repetitive input patterns without having to do as much manual editing.
For example, for the note/pitch cycler the "cycle sequence" could be based on offsets from whatever pitch is pressed. For example, a note cycle sequence of "0, 0, 5, 7" followed by pressing C-4 five times would output "C-4, C-4, F-4, G-4, C-4" and if there was also an edit step cycle sequence of "2, 4" then each of the notes would be spaced out by alternating gaps of 2 and 4 rows (just like as if edit step had been used manually).
The fact that you can have the different parameters cycle independently is also a key aspect of the expressive flexibility of this idea, since many possible forms where you don't want the sequences to all have the same cycling length could exist and there's little reason to restrict the user from using them.
Even better would be if the user could save and restore different sets of these "cycle sequences" during a session (and perhaps written into the file for .mptm files) and then reuse them as the user goes back and forth between different kinds of arpeggio-like generalized manipulations of the sequence of notes. You could make some awesome structured patterns with interesting sounds in a hurry this way! It could be a really awesome workflow improvement and when combined with OpenMPT's other tracker-based quick editing capabilities would be something fairly unique and increase the software's competitive edge.
The feature could use a little icon of a cycle of some kind (though one wouldn't want it to look too much like a "playback loop" icon) or a rolodex, perhaps placed adjacent to the "edit step" area (or perhaps even replacing it, if you generalize it the right way) in the pattern editing part of the window. It could be a toggle that you easily turn off and on and a click or with a hotkey. Perhaps having it be one of those "icon + dropdown" style buttons would be a good way to squeeze it in. The user could click the dropdown button attached to the icon each time they want to change which "cycle sequence" they are using and there could also be a pair of hotkeys for cycling to the next/previous "cycle sequence" set that the user has defined. That could further speed up the workflow even more. If you have a several repetitive arpeggio-like constructs you could switch between them really fast.
It could be a "10x" improvement in note input speed for certain types of pattern sequences, potentially!
I really think it'd be a great addition to OpenMPT!
Please consider implementing it!
In any case though: Thank you for your time and efforts, as always!
I really admire your persistence and quality and attention to detail in OpenMPT and there are some things (like microtonality) that I'd easily consider OpenMPT to be the best "DAW" at even compared to the big paid professional DAWs!
Making the sequence editing even faster than it already is via this "cycle sequence" or "step cycler" or "step rolodex" idea would amplify OpenMPT's distinctly fast tracker-like workflow even more than it already is. It would be a very tracker-like kind of thing to do I think.
|Steps To Reproduce
|No tags attached.
|Has the bug occurred in previous versions?
|Tested code revision (in case you know it)
I realized there was one more simple thing the idea would benefit a lot from having:
There should also be a "reset cycles" button and hotkey of some kind.
Otherwise, the user would have to deactivate and then reactivate (thus two button presses) the "step cycler"/"step rolodex"/"cycle sequencer" feature to restart the cycles, which would be common for many use cases (such as when you want to fully apply a cycled sequence in one place and then only partially apply it somewhere else, which would often be desirable).
Having a single hotkey to reset all the cycles would be immensely useful for speed and more precise control.
Anyway, thanks for reading and considering the idea, as always! Have a great day/night!