I’d like to propose
aligning the playhead positioning behavior between
pattern length changes on the one hand and
pattern start & end changes on the other hand.
Currently changes made to pattern length (P.L
, PN.L
) affect the playhead position differently than changes made to pattern start or end (P.START
, PN.START
, P.END
, PN.END
):
- On changing the pattern length, the playhead position is automatically forced to index 0. This ensures that the playhead is always in the index range defined by the pattern length.
- But on changing the pattern start or end, the playhead position is not changed. So if e.g. the pattern end is set to an index before the current playhead position, the playhead will continue to proceed thru all index values after the end index, until it reaches the end of pattern length.
For me, this has led to confusing situations during “live coding” of pattern start or end values, as I can not rely on the playhead being bound to the range I define by pattern start and end value. Depending on when I commit a change to pattern start or end, the playhead might wander thru an undesireable range of values.
This can not happen with changes to pattern length. The current implementation ensures that playhead is always confined to the index range defined by pattern length. But as a the start of pattern length can not be changed (it is always index 0), I can not “window” thru a range of indizes, but have to use pattern start and end values for this, and have to ensure that both start and end values are inside the pattern length, while making sure that I change start and end values in the correct order and at the correct time in order to prevent the playhead moving thru indices outside the new range defined by start and end.
To make this less error prone (at least for me, admittedly) I propose the following new behavior for changing start and end values:
- If the new start value made the playhead be outside of the range defined by the new start value and the current end value, the playhead should be set to the new start value.
- If the new end value made the playhead be outside of the range defined by the current start value and the new end value, the playhead should be set to the current start value.
This change would ensure that the playhead is always confined to the index ranges as defined by pattern length or pattern start&end.
My apologies if this has already been discussed and dismissed, or if this behavior already exists and I did not find it. Thanks for listening!