-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pattern start/end/length/indexing needs an overhaul #240
Comments
This is not limited to manually-adjusted pattern bounds. We have data-editing OPs which destructively affect length, e.g. I am very curious to hear if anyone utilizes both systems. Anecdotally, every user I've polled uses only one system and is confused about the difference. |
can you clarify what the two systems are? do you mean manual P.START/END vs. P.POP/P.INS? the second are for treating the tracker like a stack, which is somewhat unusual hence i understand confusing. i'll boot up TT and try your test cases--- those do sound like display (and possibly data) bugs. |
Length, displayed by brighter numbers in the tracker, defines a region of the the pattern which always begins at tracker index 0. It remains stationary regardless of manipulations to start/end. Length is affected by many data operations, from entering data manually in the tracker, to using Start and end, displayed by a scroll bar to the right of the pattern, defines a freely adjustable region of the pattern which can begin and end at any tracker index. Start and end are unaffected by all OPs other than Pattern start does not become index 0, neither does it move the "length" region to begin at pattern start. |
I would (perhaps naively) propose unifying these two systems such that:
Quoting myself from lines PM (though the above diverges a bit from that message):
|
ok: i think i figured out where the confusion/dissonance is coming from. LEN currently as designed isn't related to START/END--- it's referring to the tracker/data length. perhaps a better name would be SIZE. MOVE makes sense as an op to move both START and END at the same time. also a theoretical LENGTH should shift the END position relative to the START. the problem now is that the START/END don't have any fencing/limiting with regard to the LEN/SIZE, which is confusing. so, yes, i see a clarification should be made, and some ops revised and docs made more clear along with a tutorial/study revision. re: your points above
yes. i don't recall if P.HERE also has a setter, but that i think addresses your last idea
START/END should respect LEN/SIZE, and should be sensibly/automatically confined/wrapped to this region.
i attempted to correct this misunderstanding of LEN/SIZE vs. LENGTH (we could totally add a LENGTH/etc or adjust
yes, if we were to add a new op for LENGTH (as opposed to LEN/SIZE)
i propose adding MOVE
as above, i propose START/END stay independent, add MOVE and LENGTH to relative adjustment ops all "data" ops should act relative to index 0 and have nothing to do with the START/END markers. START/END pertains to HERE, NEXT, (etc) exclusively. we should put the docs into sections to properly reflect this. |
I turn my head and squint, and now this bunny is clearly a duck. Thank you for clearing this up! Later today I think I will pick a few existing OPs and walk through how they might interact within a "start/end are constrained to pattern size" paradigm. On first glance it seems very backwards-compatible. If we maintain the current This all seems easy to define "at rest", but the behavior of indexed markers HERE/START/END during a |
glad to hear, again i apologize for the initial confusion. ahhhh i admit that calling a sequence length "size" really really bugs me. i'd almost suggest |
so it sounds like the intent behind the existing "length" parameter was for it to serve as the maximum pattern length - this explains why it always starts at 0 and why it's used as another boundary for some of the ops. also why it doesn't get updated when start/end are changed. is there actually any benefit in being able to limit max pattern length other than automatically constraining start/end values and wrapping? this is not reflected in the UI other than highlighting, for instance - you can still see values beyond length. you can still access values outside of length, which doesn't make sense if length serves as "max pattern length". if there is no clear benefit to it, what if we just change it as you propose, to be tied to start/end and serve as the loop length? i'm concerned introducing yet another term will just add to the confusion. this does mean introducing a breaking change though. |
also some findings, i went through the existing ops and identified which ops use which parameters. also identified a few inconsistencies/bugs.. (only listing
several ops use function
in the documentation it's described like this: "Negative x values are indexed backwards from the end of the pattern length of the working pattern". ops that do NOT use length
if we want to support ops that use length but do not change it
ops that use length and possibly change it
other
|
the UI: you can set you can set
|
yes, on second thought (i'm sorry it's been so long since i've had my head deep in TT space) i think the main issue at hand is documentation, to explain what P.L actually does and is intended for. i'd rather not introduce any breaking changes re: design philosophy, and i'm not sure constraining the START/END with L to be terribly constructive. but we should address the bugs you list, absolutely. i'm concerned that some OPs got introduced that misunderstood the original intention of LENGTH (now that we have returned to clarify) i think the UI is still spot-on |
Isn’t in PN.NEXT the „ index == length - 1 or end“ also a bug? Explanation: if you change p.end to a value below the current index and the length is larger. You can get a similar issue with p.start if it’s higher than the current index. So maybe a constrain within p.next the index to p.start would help too. |
Please describe the bug.
Pattern length is totally decoupled from start/end.
Pattern end can precede pattern start.
The documentation and studies are unclear about pattern length and indexing.
Please include the hash displayed at startup and the release of the software (e.g. "Teletype v2.0.1 5f838c9")
v3.2 but surely earlier also
What steps are required to reproduce the bug?
P.START 6; P.END 10; P.L 3
, then look on Tracker at the two totally isolated pattern zones. Try indexing through withP.NEXT
.P.END 1
, then look at Tracker which doesn't reflect meaningful pattern bounds. Try indexing through withP.NEXT
. Try various combinations of length, start, and end.The text was updated successfully, but these errors were encountered: