(Feature request) for instant pattern seeking within Openmpt

Started by 6xes, July 02, 2023, 03:41:58

Previous topic - Next topic

6xes

Pattern seeking partially exists in Openmpt.... only that it is a drag and drop affair, which would be better suited to a assignment of either a midi-press or keyboard button.

pattern seeking is when a pattern is playing.... and you wish to jump into another pattern but have the pattern not resync back to 00, rather it continues from the last numbering cycle..
ie... a pattern having 128 lines and decide to press the change to a new pattern at line 32... the new pattern instantly starts at line 33 thus remaining in sync
it would also be nice to seek to the closest beat or every 4th beat etc... but instantaneously changing patterns is very useful

this currently works with songs... by having the pattern list menu on the lefthand side and dragging and dropping a numbered pattern onto the highlighted "playing" pattern on the main in the patterns Tab(the change is instant)

it would be nice if we could have a method of scrolling through the pattern list of a project and a simple keypress or midi press would execute the same action, instead of it resetting the pattern line to zero

Saga Musix

Just to confirm, what you are looking for is a variant of the Previous Order / Next Order that would keep the play cursor on the currently played row when using it during playback?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

6xes

yes... thats correct..
having the choice of the patterns to sync next, would be a nice little means of toying around with all the patterns in realtime

cTrix

Quote from: 6xes on July 02, 2023, 13:05:16yes... thats correct..
having the choice of the patterns to sync next, would be a nice little means of toying around with all the patterns in realtime

I'd imagine 3 modes if this feature existed: 

- Mode 1 : Pattern changes but keeps the playhead and timing position (like ProTracker)
- Mode 2 : Pattern changes at multiple of a tick... keeps play head position
- Mode 3 : Cues up the next pattern and plays it after the current pattern has ended

It comes down to how to implement it without adding any clutter to the interface (which is quite perfect at the moment).  I would certainly use this feature too, especially when pattern ordering tracks.

I guess this really belongs in "Feature Requests" too :-o  (sorry Saga!)
4ch Protracker MOD's are my home format :-)  GUS is my second happy-place (DOS demos).  Annnnnd our custom demotools inevitably use OpenMPT input.

Saga Musix

I'm currently having a stab at this. I think it makes sense to implement this feature in two places:

First off, as an extension of the order queueing mechanism in the order list (which is "mode 3" in cTrix' post, so that already exists). The current mechanism would be extended to have four queue modes:
  • Transition to the selected pattern at the end of the current pattern
  • Transition to the selected pattern at the end of the current measure
  • Transition to the selected pattern at the end of the current beat
  • Transition to the selected pattern at the end of the current row
In all four cases, playback would continue where it left off in the previously played pattern, e.g. transitioning at the end of the first measure of a pattern would start playing the second measure of the new pattern. In additition to the current queueing mechanism that uses middle-clicking or ctrl-clicking an order item (which is supported by more modifier keys to choose between the four modes), there would also be four new keyboard shortcuts to make the feature more practical.

Second, as mentioned above, it probably makes sense to have new, separate Next Order / Previous Order shortcuts. Right now only one mode is implemented (transition at end of row, so kinda like ProTracker), but maybe it would make sense to add the three other modes here as well. What do you think?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Saga Musix

Okay, as of revision: 19645 (OpenMPT 1.32.05.00), I have something for you to try. Test builds of this version (or a later one) will be available from https://builds.openmpt.org/ in a few hours. Behaviours are subject to change if we reach the conclusion that the implemented behaviour does not match the request.

So, as mentioned, the first change is in the order list: It is now possible to queue the next pattern to not only play when the current pattern is finished, but also when the current measure, beat or row is finished. This can be done through the order list context menu, four new keyboard shortcuts (combinations of Shift+Alt+Q), or as before by middle-clicking or ctrl-left-clicking (using the same modifier combinations of Shift and Alt). (The combinations are: Pattern end: No modifier, Measure end: Shift, Beat end: Alt, Row end: Shift+Alt)

Apart from that, in addition to the "Previous Order" and "Next Order" shortcuts, there are now also shortcuts that can delay the pattern transition until the next measure, beat or row is reached. When the song isn't playing, they behave like the normal "Previous Order" and "Next Order" shortcuts. I know the names for those shortcuts are currently not readable in the keyboard setup because they are truncated, this will hopefully be fixed / worked around soon. For the reference, the shortcuts are ordered like this: measure, beat, row.

As a bonus fix, the "Previous Order" and "Next Order" shortcuts (as well as the newly added variations of that) now also work when the pattern editor isn't focussed. This should have always been possible because they were marked as global shortcuts, but they were only implemented in the pattern editor.

Feedback from either of you two would be highly appreciated.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

6xes

ill check it out & test things... and get back to you
thanks for implementing this feature!!
awesome!

6xes

hi, Saga musix
the seeking aspect works well!!

having the seeking modes act globally(with sequences) would be a welcome addition, an indicator on the UI somewhere letting us know which seeking mode we are in would also be helpful

as i was using it... the thought of being able to decouple the playback, to then set the(blue range)start point & end point and then decide to sync, but also having the ability to save the blue-range as a sequence...
the sequences of course just acting as a defined loop

but i found the end point would always remain at the point when you held down the shift-button
if a full decoupling of the unlock-playback so we can make the selection/s of patterns...whilst it is decoupled the patterns continue as per usual... only when we execute a seek the blue selected patterns come into play from start point to end point

following the logical steps.. its all going to lead to a performance sequencer *smiles rather than a linear one
love to get your thoughts on other additional features...and whether you would go down that path?

personally i work with performance based workflows & midi controllers... being able to implement the library of songs that openMPT can play, and create quick sequences for looping purposes opens up a whole lot of possibilities!