The transport bar is the primary command surface for playback in 4Stem Band Player. It sits above the stem mixer, displays the current song title, and exposes every control you need to navigate through a song — from basic play/pause to jumping directly to named rehearsal sections.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cocreating/4StemPlayer/llms.txt
Use this file to discover all available pages before exploring further.
Layout
The transport panel is organised into two rows of buttons beneath the song title heading.First Row
Play / Pause, Stop, and Mixer — the core playback actions and access to the floating mixer panel.
Second Row
Sections and Lyrics — open floating panels that sit directly below the transport area.
song.json. The Lyrics button is only enabled when a lyrics.md file is present and non-empty. The Mixer button is only enabled when the audio engine has stems loaded.
Playback Position Readouts
Below the button rows, a seek slider tracks the live playhead. Two output labels sit beneath it:m:ss of m:ss— formatted time, e.g.1:23 of 4:06- Seconds-only — rounded position in seconds, e.g.
83 seconds
Play, Pause, and Stop
The first button in the primary row toggles between Play and Pause based on engine state — the label changes to reflect the current action.Play
Starts all loaded stems from the current playhead position. If the engine is already at the end of the song, playback starts from the beginning.
Pause
Stops all audio sources but retains the current position. Pressing Play resumes from the same point.
Seeking
You can seek in two ways:- Transport seek slider — drag or click anywhere along the range input beneath the transport readouts. The playhead jumps immediately; if playback was running it continues from the new position.
- Stem waveform — click any point on a waveform in the stem mixer. All stems seek to that position simultaneously. See Stem Mixer for waveform details.
Section Markers
When a song defines sections insong.json, the Sections button opens a floating panel below the transport area. Each entry shows the section label and acts as a seek button — pressing it jumps the playhead to that section’s start time.
Space Bar Shortcut
Pressing Space from anywhere on the page toggles play/pause without needing to click the transport button. The shortcut is intentionally ignored in the following contexts so it does not interrupt text entry:- Inside
<input>fields - Inside
<select>dropdowns - Inside
<textarea>elements - Inside any element with
contenteditableset
Loading States and Disabled Controls
All transport buttons are disabled in three situations:- While the current song is actively loading stems or waveforms
- Before the audio engine has produced its first snapshot
- When the engine reports load errors that prevent playback
Manifest fetch
The app fetches
/songs/manifest.json to build the song catalog. The UI shows “Loading song library” while this is pending.Stem decode
Each MP3 stem is fetched and decoded. Per-stem rows show a Loading status badge until their buffer is ready, then switch to Ready.
Error States
Transport controls remain disabled as long as any error condition blocks playback. Resolve the underlying issue (usually a missing or corrupt stem file) and reload the song to recover.
| State | Display |
|---|---|
| Manifest loading failure | ”Load error” alert section |
| Empty catalog | ”No songs were found in /songs/manifest.json.” |
| Stem failure | Per-stem Error status badge and inline alert text |
| Waveform failure | Waveform overlay with local error description |
song.json schemas, and Songs Overview for troubleshooting missing stems.