Skip to content
DocumentationRunning a session

Running a session

A session has one leading device and the members that follow it. The leader decides what is played and where everyone is in it.

Session roles

The role is chosen manually at start — there is no automatic election and no vote.
RoleHow it happensWhat it does
LeaderStarts a session on the sync screenAnnounces itself, runs the server, broadcasts commands
MemberJoins a discovered sessionReceives commands and executes them
A session holds up to 50 members — that is the limit in the app, not a tested capacity. We have not yet run that many devices together. The leader sees the connected list with name, instrument and latency, and can kick anyone out.
ℹ

Even after members join, the leader stays in the "advertising" state — it keeps listening for more arrivals. Only members show "connected".

What the leader controls

ActionWhat happens on members
Song changeMembers move to the same song
Forced song changeThe same, but also for members who turned following off
Scroll positionScroll positions line up
Start auto-scrollMembers start scrolling from the same position at the same speed
Pause auto-scrollEveryone stops at a shared position
Auto-scroll speed changeThe new speed propagates to everyone
TranspositionMembers get the same semitone shift applied
Section changeA jump to a section is forwarded
Metronome start and stopMembers' metronomes start at the same tempo and on the same beat
Stage cueAn overlay appears on everyone else's screen — "SOLO", "LAST CHORUS", "END"

Members who turn following off stay put and can browse on their own. A forced song change is the leader's tool for pulling them back.

Catching up

When a member receives a position that differs from its own, it does not snap there — the position is closed with a smooth glide over roughly two tenths of a second. On a projector or a tablet it does not read as a jerk.

The band metronome

When the leader starts the metronome, members start at the same tempo and on the same beat.
Nothing periodic is sent. A single message goes out carrying the tempo, the beats per bar and an anchor — the absolute instant beat zero fell. Each device works out where it is from that anchor, using the clock offset measured when it joined.
ℹ

The practical upshot: anyone joining mid-song receives the same anchor and comes in on the right beat. No waiting for the next bar, no catching up by ear.

Stage cues

During a song the leader can send a short cue that appears on everyone else's screen as an overlay across the lyrics — "SOLO", "LAST CHORUS", "END".

Unlike the other commands it is not scheduled to a shared instant; it is delivered as soon as it arrives. It is an instruction for people, not a synchronised action.

Only the leader can send them.

What does not sync

Two things people often expect that are not in the protocol:
  • PDF page turns. The session carries a scroll position, not a page number. On top of that, a horizontal swipe in stage mode changes the song, not the page.
  • Song MIDI commands. Everyone has their own rig, so MIDI stays on the device.

Personal fields do not sync either — transposition can be broadcast as a command, but the value stored with your song stays yours.

What happens when you join

On joining, a member gets everything they need to play: an identity in the session, the roster, the current song, the active setlist, and an offer of the songs from it they are missing. If auto-scroll or the metronome happens to be running, those come across too — and land in the right place, not back at the start.

Song changes, the metronome and auto-scroll all fire at the same instant on every device, not whenever each message happens to arrive, so a device on a slower connection does not lag behind.

If something falls out of step, the full state can be asked for again.

Requesting content

Beyond control commands, the protocol also carries content itself. The one missing something always initiates:

WhatHow it works
SongA member requests a song by identifier, the leader sends its shared fields
SetlistA member requests the active setlist with its song list
Bulk transferThe leader offers metadata for every song in the setlist, the member asks only for what it lacks and receives them one by one with an index
PDF, MusicXML, imagesTransferred on request, never automatically
If auto-download of missing songs is on in settings (the default), the member asks by itself. Otherwise it offers a button.

Transfer limits

TypeLimit
PDFDownscaled automatically above 3 MB, refused above 10 MB
MusicXML10 MB
Image bundle25 MB

Sharing between members

When the leader does not have a requested attachment, the session does not stall. Brokered member-to-member sharing kicks in:

  1. The leader asks the others who has the file.
  2. Those who do announce themselves.
  3. The requester picks a source.
  4. The file travels from the chosen member through the leader.
The file's owner gets an approval prompt ("Peter is asking for the sheet music for this song. Share?"). Approval can be turned off in settings; it is on by default.

Pre-gig check

Before you start playing, the leader can ask once and the whole band answers. The result is a list of what is about to go wrong:

FindingWhat it means
Missing songsSomebody lacks a song from the active setlist
Missing attachmentsThey have the song but no sheet music or PDF
Different setlistSomebody has a different setlist active than the leader
No setlistSomebody has none active
Low batteryThe device will not last the gig
High latencyA weak connection
No replyThe device did not answer
Muted audioThe device's volume is down, so it will not hear the metronome or backing tracks
Empty setlistThe active setlist has no songs in it
Song count mismatchThe setlists share a name but not a length
Unplayable songsA song has neither lyrics nor an attachment — there will be nothing on stage
Songs without a durationWithout durations there is no estimate of when the set ends
It is started from Sync on the leader's side. Replies are collected for 6 seconds; anyone who does not answer is listed as no reply.
✦

Worth running when you arrive at the venue, not five minutes before the first song. Missing attachments can only be filled in while everyone is still on the same network.

A locked session

When you start a session you can lock it with a password. That changes two things at once:
Open sessionPassword-locked
Who can joinanyone on the same networkonly those who know the password
Transferred contentnot encryptedencrypted (AES-256-GCM)

The key is derived from the password and is never sent anywhere — only your band knows it.

✦
In your own rehearsal room an open session is fine. At a venue, on someone else's network, lock it — in an open session anyone on that network can read what you share.

When the leader drops out

The leader can nominate a backup member in advance. If the leader's device goes quiet, that member is offered the role.
A person has to accept it. Nothing switches over on its own — on stage it is worse for the role to move without the band knowing than for nobody to lead for a moment.

If no backup member was nominated, the others switch to reconnecting to the same leader.

Limits of the model

Things worth knowing:

  • A session cannot be split or merged; one band = one session = one leader.
  • Taking over is not a seamless automatic failover — there is a moment with nobody leading, and a person confirms it.
  • Members do not talk to each other directly; even attachment sharing goes through the leader.