Skip to content

feat: Follower Mode (External Master) #11

@ElBeh

Description

@ElBeh

Description

Second operating mode where SongLab follows an external device (e.g. M-Live
B.Beat, DAW, or any MIDI-capable playback system) instead of controlling
playback itself. The external device is the audio master; SongLab acts as a
passive "digital music stand".

Depends on: MIDI Input (#10)
Estimated effort: ~4–6h (on top of MIDI Input feature)

Requirements

Mode switching

  • Mode toggle in settings or toolbar (Master / Follower)
  • Follower mode: transport controls disabled or hidden
  • Follower mode: no local audio playback
  • Follower mode: DummyWaveform component with simulated playhead (optional)
  • Visual indicator showing current mode and connection status
  • Mode persisted in localStorage

MIDI-driven navigation (Follower mode)

  • Incoming Program Change → switch to song N in active setlist
  • Incoming CC (configurable) → jump to section by index
  • Incoming CC → Play/Stop signal (update UI state without audio)
  • Optional: MIDI Clock sync for continuous position tracking (future)
  • Optional: MIDI Timecode (MTC) for sample-accurate position (future)

Band Sync integration

  • Host in Follower mode: MIDI-triggered song/section changes forwarded to all viewers via existing WebSocket sync protocol
  • Chain: B.Beat → MIDI → SongLab Host (Follower) → WebSocket → Viewers
  • Viewers behave identically regardless of Host mode (transparent)

Decisions

  • Follower mode reuses DummyWaveform component (no audio, visual timeline only)
  • Initial version uses discrete MIDI messages (PC/CC) only. Continuous position sync via MIDI Clock/MTC deferred
  • Architecturally similar to Band Sync Viewer but driven by MIDI instead of WebSocket
  • B.Beat's proprietary WiFi/Prompter protocol is not supported (closed system)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions