Cursor doesn’t stop at the Loop end point #2507
Replies: 5 comments 1 reply
-
|
This is currently the intended behavior but it could get some improvement. It's a bit tricky because the cursor rather follows the "time axis". If you would put a time-scale on top of the notation, the first rest (bar 8) in your video "ends" when the second rest starts (on bar 9). Hence from a time-axis and cursor positioning alphaTab is not doing anything "wrong". You can see this effect also when during normal playback the "highlighted bar" switches when the first beat actually starts, not exactly when the beat cursor crosses the bar boundary. From an end user expectation and experience it would be better to let the cursor end at the end of the selection. I added: #2515 |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for this Daniel. I had begun to wonder if there might be a way
to create a false repeat symbol presence that would trick the system and
then add something that removes it once the Loop is disabled.
…On Mon, Jan 19, 2026 at 2:37 AM Daniel Kuschny ***@***.***> wrote:
This is currently the intended behavior but it could get some improvement.
It's a bit tricky because the cursor rather follows the "time axis". If you
would put a time-scale on top of the notation, the first rest (bar 8) in
your video "ends" when the second rest starts (on bar 9). Hence from a
time-axis and cursor positioning alphaTab is not doing anything "wrong".
You can see this effect also when during normal playback the "highlighted
bar" switches when the first beat actually starts, not exactly when the
beat cursor crosses the bar boundary.
From an end user expectation and experience it would be better to let the
cursor end at the end of the selection. I added: #2515
<#2515>
—
Reply to this email directly, view it on GitHub
<#2507 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BNLESQBA73HJPQB5QTWZ22T4HSXVPAVCNFSM6AAAAACRXPV7SWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNJTG42DIMA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Will this now update nightly or are the nightly updates not yet ready?
Here is what I tried so far but then got the following error:
Console TypeError
<https://nextjs.org/docs/app/building-your-application/configuring/debugging#server-side-code>
Cannot set property isRepeatEnd of #<MasterBar> which has only a getter
src/components/alphaTab/AlphaTabRenderer.tsx (156:43) @ applyStructuralWall
154 | } else {
155 | // Already has a repeat group, just mark it
156 | (masterBar as any).isRepeatEnd = true;
| ^
157 | }
158 |
159 | console.log(`🏗️ V98.81: Structural Wall applied to
M${endBarIndex + 1} (tick ${endTick})`);
Call Stack6
Show 4 ignore-listed frame(s)
applyStructuralWall
src/components/alphaTab/AlphaTabRenderer.tsx (156:43)
AlphaTabRenderer.useEffect.handleRangeChange
src/components/alphaTab/AlphaTabRenderer.tsx (929:21)
…On Mon, Jan 19, 2026 at 2:37 AM Daniel Kuschny ***@***.***> wrote:
This is currently the intended behavior but it could get some improvement.
It's a bit tricky because the cursor rather follows the "time axis". If you
would put a time-scale on top of the notation, the first rest (bar 8) in
your video "ends" when the second rest starts (on bar 9). Hence from a
time-axis and cursor positioning alphaTab is not doing anything "wrong".
You can see this effect also when during normal playback the "highlighted
bar" switches when the first beat actually starts, not exactly when the
beat cursor crosses the bar boundary.
From an end user expectation and experience it would be better to let the
cursor end at the end of the selection. I added: #2515
<#2515>
—
Reply to this email directly, view it on GitHub
<#2507 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BNLESQBA73HJPQB5QTWZ22T4HSXVPAVCNFSM6AAAAACRXPV7SWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNJTG42DIMA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
nope, there is no magical false repeat symbol in alphatab that would trigger such a behavior.
Not sure what you mean? If there are changes to alphaTab, new versions will be published eventually. There weren't any code changes from me since a while.
I don't think there are any workarounds to this behavior and alphaTab will need to be updated to provide your desired cursor behavior. Generally the logic on deciding whether to animate to the next beat or end of bar is located in the This component will have to be updated to check against the playback range too. Additionally there needs to be a new alphaTab/packages/alphatab/src/AlphaTabApiBase.ts Lines 2295 to 2308 in 8d3bc71 |
Beta Was this translation helpful? Give feedback.
-
|
Thank you and my apologies:
Will this now update nightly or are the nightly updates not yet ready?
Not sure what you mean? If there are changes to alphaTab, new versions will
be published eventually. There weren't any code changes from me since a
while.
I was trying to wrap my head around understanding how the new updates you
push into Development will work going forward as you introduced the
@nightly I believe that work’s the moment you push them compared to the
previous versions that could take 1-2 months like version 1.8.0
As I did just yesterday update to the new 1.9.x …
Thank you!
…On Wed, Jan 28, 2026 at 6:26 AM Daniel Kuschny ***@***.***> wrote:
I had begun to wonder if there might be a way to create a false repeat
symbol presence that would trick the system and then add something that
removes it once the Loop is disabled.
nope, there is no magical false repeat symbol in alphatab that would
trigger such a behavior.
Will this now update nightly or are the nightly updates not yet ready?
Not sure what you mean? If there are changes to alphaTab, new versions
will be published eventually. There weren't any code changes from me since
a while.
Here is what I tried so far but then got the following error:
isRepeatEnd is not a writable property. That should be visible from the
IDE and type definitions.
https://alphatab.net/docs/reference/types/model/masterbar/#isrepeatend
https://github.com/CoderLine/alphaTab/blob/develop/packages/alphatab/src/model/MasterBar.ts#L254
------------------------------
I don't think there are any workarounds to this behavior and alphaTab will
need to be updated to provide your desired cursor behavior.
Generally the logic on deciding whether to animate to the next beat or end
of bar is located in the MidiTickLookup, e.g. here:
https://github.com/CoderLine/alphaTab/blob/develop/packages/alphatab/src/midi/MidiTickLookup.ts#L370
This component will have to be updated to check against the playback range
too. Additionally there needs to be a new
MidiTickLookupFindBeatResultCursorMode.ToEndOfBeat (maybe it can replace
ToEndOfBar) which eventually needs to be handled here where we calculate
the X-position of the "next beat":
https://github.com/CoderLine/alphaTab/blob/8d3bc71cbd69874254a9f6c616e80ee854501f6a/packages/alphatab/src/AlphaTabApiBase.ts#L2295-L2308
—
Reply to this email directly, view it on GitHub
<#2507 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BNLESQCGUHQYFDXIH3VMO3L4JDBINAVCNFSM6AAAAACRXPV7SWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRSHE2TAMQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
@Danielku15
Not sure if this was present before the new 1.8.0 version I am running now. However, my cursor is going past the Loop end and midway of the next measure before it restarts.
The cursor should stop at the end of the Loop section and start over immediately but it doesn't.
Anyone else have that issue or any solutions?
Not sure if it's a ghost buffer issue or effective boundary or what but it seems that that perhaps alphaTab had a lazy loop enforcement at least in the new 1.8.0
One thing I do notice in testing a song with a short 2 measure repeat x3 section the cursor does not overshoot this! As it hits it immediately repeats the same way the Loop should work.
What, I've seen is that the Loop 🔁 in which any measures after my loops have more notes in them, the cursor stops where it should or begins to loop. However, if for example my loop is M24-M25 but M26 is empty or half rest the cursor overshoots to the start of the half rest before it restarts.
Wondering if you might have any suggestions on this?
Tried adjusting by ticks 1200 and dynamic changes and even a watchdog, and css doesn't work because the cursor is SVG right?
Some could be browser related as I'm testing on chrome browser.
Thank you!
https://youtube.com/shorts/5VHpE0gUt0g?si=Dtk8MQPq-IrDVH1e
Bad quality video-- sorry it's a little shaky as I used my phone to do a quick capture on desktop
Beta Was this translation helpful? Give feedback.
All reactions