< Back to IRCAM Forum

Visitlabel and visitbeat

Hello,

I’m currently looking at using the transport command visitlabel instead of jumptolabel or gotolabel when the listener gets lost or stuck at a place.

Visitlabel seems to be the perfect fit as the listener goes directly to the event rather than scrubbing from the beginning (and the scrubbing can be slow when I have multiple variables). However, I found that if there are multiple time signature changes, visitlabel seems to go to the wrong event. This seems to be unique to visitlabel as jumptolabel, gotolabel and startfromlabel seem to get to the label just fine.

This behaviour is slightly strange because if you feed a test file where the key signature is at 4/4 for the whole piece, visitlabel works perfectly.

I was also looking at visitbeat, and it works perfectly if the score position is before the visitbeat. But if the listener’s position is after visitbeat (i.e. the listener skipped a few important labels and you want it to rewind a little), it gives the error message: “Semantics of visitbeat is not yet established. Report what you want.” and it may or may not go to the beat.

I’ve attached a quick video of the behaviour and the asco.txt file which has the time signature changes (you’ll have to visitlabel measure200 or more to see the issue). I can probably upload a higher resolution video, but wasn’t sure what is the maximum size.

I am using the latest distributed Antescofo (1.0-599) on Max 8.6.5 on MacOS Sequoia on an Intel Macbook.

Thank you so much for your time!
Screen Recording 2026-03-12 at 8.26.47 PM|video

untitled.asco.txt (59.2 KB)

Hello @cow.

Unfortunately, the resolution of the video makes it difficult for me to clearly understand the problem you are pointing out. But they are some known drawbacks on the Antescofo side.

First, note that Antescofo has no notion of musical measures . Even if measure numbers sometimes appear in the score, they are only comments inserted by the Antescofo converter. The Antescofo runtime itself does not use this information.

There is also an important semantic difference between visitlabel and visitbeat .

visitbeat only partially mirrors the intended semantics and is only implemented for beats that occur after the current position in the score.

visitlabel , on the other hand, behaves in a more consistent way. It jumps directly to the target label, skipping all actions between the source position and the destination . However, the actions attached to the target label are executed before the system waits for the next musical event. Note that any tempo changes located between the source and the destination are not taken into account . If needed, you can explicitly set the tempo upon arrival using antescofo::tempo xxx .

If the issue is that the listening machine becomes lost or stuck at some point , you can manually trigger next_event at any time. The next_event command fully emulates the occurrence of the next musical event, and the tempo is inferred as usual.

You can also use next_label to jump to the next labeled event. In that case, the tempo inference mechanism is not triggered .

If Antescofo moves too far ahead of the performer , there are also previous_event and previous_label commands. However, I generally do not recommend using them , because actions that have already been triggered will continue to run. Passing again through the same musical event will therefore trigger the corresponding actions a second time.

In concert situations, the usual strategy is different: one typically freezes the score following (using suivi 0 ) and waits until the musician reaches the current position. Once synchronization is restored, the score following can be re-enabled.
With respect to next_* and previous_* commands (such as next_beat , previous_beat , next_label , etc.), the visit , goto , and jump transport commands operate at a more global level. Their target can be located anywhere in the score (subject to the constraints that apply to visit ).

For this reason, these commands are often used during a performance to recover from score-following problems.

I am not sure whether this fully answers your question?

Hello @giavitto,

Thank you so much for your reply!

I apologize for the low quality screenshot; I wasn’t sure how big of a file I can upload to the forum (it looks like 4mb?). Hopefully this new video will give you a better view of the unexpected behaviour of visitlabel.

Regarding the first point - thank you for the reminder that Antescofo doesn’t have a notion of musical measures. After doing a little bit more troubleshooting, I realized that I was looking at the wrong place.

Basically, what is happening is that a rest (NOTE 0) on the score seems to interfere with where visitlabel goes to.

In the screenshot (I’ll upload to YouTube if this upload doesn’t work), basically if there aren’t any rests in the score (“Normal.asco.txt”), visitlabel is perfectly transported to measure 4. If there are rests (I added 3 quarter note rests in this example, “Changed.asco.txt”), then visitlabel lands 3 beats before measure 4. I am demonstrating in the video how “gotolabel” is not affected by the rests and acts as expected.

Normal.asco.txt (1.3 KB)
Changed.asco.txt (1.2 KB)

Thank you so much for clarifying visitbeat - I was hoping that visitbeat would be a workaround for visitlabel, especially if the listener jumped ahead so visitbeat could bring Antescofo to the right position. I understand that suivi 0 is also a better strategy in these cases, but I’m hoping to use Antescofo in a live performance where it would just be the performer on stage controlling Antescofo without assistance. In these scenarios, it would be easier in the heat of the performance to have a button that can be pushed for Antescofo and the live performer to realign at a checkpoint.