Skip to content

Live-Probe-Modus (Rehearsal Mode)

Verfügbar ab: v0.7.0
Tier: Premium
Erstellt: 22. Februar 2026

Überblick

Der Probenmodus ermöglicht es dem Kapellmeister, eine Probe-Session zu starten. Alle Musiker treten mit ihrem Gerät bei und sehen automatisch die richtige Stimme als PDF — ohne manuelles Suchen. Wenn der Kapellmeister das Stück wechselt, aktualisiert sich die Anzeige bei allen Musikern in Echtzeit.

Optimiert für: Tablets, Smartphones, E-Ink-Reader (Boox, PocketBook Eo/Color Note)


Voraussetzungen

VoraussetzungDetails
TierPremium
Rolle (Starten)Archivar, Admin oder Owner
Rolle (Beitreten)Alle Rollen (auch Viewer)
Stimmen-ZuordnungMusiker muss eine bevorzugte Stimme im Profil gesetzt haben
PDF-StimmenDie Stücke müssen Stimmen-PDFs hochgeladen haben

Ablauf

1. Bevorzugte Stimme einstellen

Jeder Musiker wählt einmalig seine Stimme(n) im Profil:

  1. Profil aufrufen (Klick auf Avatar → Einstellungen)
  2. Unter „Bevorzugte Stimme" die eigene Stimme auswählen
  3. Speichern

Tipp: Musiker die mehrere Instrumente spielen (z.B. Klarinette und Saxophon) können mehrere Stimmen zuweisen.

2. Probe starten (Kapellmeister)

  1. Probenmodus in der Navigation öffnen
  2. „Neue Probe starten" klicken
  3. Optional: Ein Konzert verknüpfen (für die Setlist)

3. Beitreten (Musiker)

  1. Probenmodus in der Navigation öffnen
  2. Falls eine Probe läuft, wird automatisch zur Musiker-Ansicht weitergeleitet
  3. Die richtige Stimme wird anhand der Profil-Einstellung geladen

4. Stück wechseln (Kapellmeister)

  1. Auf dem Steuerpult ein Stück aus der Liste auswählen
  2. Alle verbundenen Musiker bekommen sofort das neue Stück angezeigt

5. Probe beenden

Der Kapellmeister klickt „Probe beenden" → die Session wird für alle geschlossen.


Musiker-Ansicht im Detail

Vollbild-Modus

Die Musiker-Ansicht öffnet sich als bildschirmfüllende PDF-Anzeige ohne Navigation, optimiert für maximale Lesbarkeit:

  • Seitenwechsel: Tap auf die linke Hälfte (zurück) oder rechte Hälfte (weiter) des Bildschirms
  • Schwebende Buttons: Alternativ Vor/Zurück-Buttons am Bildschirmrand
  • Stückname: Wird oben eingeblendet

Mehrseitige Stimmen

Wenn eine Stimme mehrere Seiten hat (S.1, S.2, S.3, ...), navigiert der Musiker mit den gleichen Tap-Zonen oder Buttons durch alle Seiten seiner Stimme.

Farbinversion

Für dunkle Probenräume: Toggle für invertierte PDF-Darstellung (weiß auf schwarz). Ideal für Abendproben.

E-Ink-Modus

Speziell für E-Ink-Reader (Boox, PocketBook):

  • Keine Animationen (verursachen Ghosting auf E-Ink)
  • Hoher Kontrast
  • Große Tap-Targets
  • PDF wird ohne Inversion gerendert (E-Ink hat ohnehin hohen Kontrast)

Echtzeit-Kommunikation (SSE)

Die Kommunikation zwischen Kapellmeister und Musikern läuft über Server-Sent Events (SSE):

  • Der Musiker öffnet einen SSE-Stream (/api/rehearsals/:id/stream)
  • Wenn der Kapellmeister das Stück wechselt, sendet der Server ein Event an alle verbundenen Clients
  • SSE reconnected automatisch bei Verbindungsabbrüchen
  • Kein WebSocket nötig — SSE ist einfacher und reicht für diesen Anwendungsfall

API-Endpoints

MethodPathBeschreibungRolle
GET/api/rehearsalsAktive Sessions auflistenmember+
POST/api/rehearsalsSession erstellenarchivist+
GET/api/rehearsals/:idSession-Detailsmember+
PATCH/api/rehearsals/:idStück wechseln / Status ändernconductor
DELETE/api/rehearsals/:idSession beenden & löschenconductor
GET/api/rehearsals/:id/streamSSE-Stream für Echtzeit-Updatesmember+
GET/api/rehearsals/user-voicesEigene Stimmen abfragenmember+
PUT/api/rehearsals/user-voicesEigene Stimmen setzenmember+

Datenmodell

RehearsalSession

FeldTypBeschreibung
idStringUUID
organizationIdStringVerein
conductorIdStringKapellmeister (User)
concertIdString?Optionales verknüpftes Konzert
currentPieceIdString?Aktuell geprüftes Stück
statusEnumwaiting / active / paused / ended
concertIdString?Optionales verknüpftes Konzert

UserVoice

FeldTypBeschreibung
userIdStringMusiker
voiceIdStringBevorzugte Stimme
organizationIdStringVerein

PieceVoice (erweitert)

FeldTypBeschreibung
pageNumberIntSeitennummer (Default: 1)
Unique[pieceId, voiceId, pageNumber]

Technischer Ablauf

Kapellmeister                    Fastify API                    Musiker (×30)
     |                              |                              |
     |-- POST /rehearsals --------->|                              |
     |   (Session erstellen)        |                              |
     |                              |<-- GET /rehearsals/:id/stream|
     |                              |    (SSE-Verbindung)          |
     |-- PATCH /rehearsals/:id ---->|                              |
     |   (currentPieceId ändern)    |--- SSE Event: piece_changed->|
     |                              |                              |-- GET /api/files/:key
     |                              |                              |   (PDF laden)
     |                              |                              |-- PDF anzeigen ✓

Edge Cases

SituationLösung
Musiker hat keine Stimme zugewiesenHinweis: „Bitte Stimme im Profil auswählen"
Stück hat kein PDF für diese StimmeFallback auf Direktion/Partitur oder Hinweis
Musiker spielt mehrere InstrumenteAlle zugewiesenen Stimmen werden angezeigt
Kapellmeister verliert VerbindungSession bleibt bestehen, Reconnect via SSE auto-retry
E-Ink-Reader mit langsamem RefreshE-Ink-Modus: Keine Animationen, seitenbasiert

Frontend-Dateien

DateiBeschreibung
src/pages/RehearsalMode.jsxKapellmeister-Steuerpult
src/pages/RehearsalMusicianView.jsxMusiker-PDF-Ansicht (Fullscreen)
src/hooks/useRehearsal.jsHook für SSE, Session-State, PDF-Loading
src/lib/api.jsAPI-Funktionen (rehearsals, userVoices)
src/lib/tierConfig.jsrehearsalMode: boolean pro Tier

Backend-Dateien

DateiBeschreibung
backend/src/services/rehearsalService.tsBusiness-Logik (CRUD, Join, Stückwechsel)
backend/src/routes/rehearsal.tsHTTP-Endpoints + SSE-Stream
backend/src/schemas/rehearsal.tsZod-Validierung
backend/src/lib/sse.tsSSE-Infrastruktur (Event-Streaming, Client-Management)
backend/prisma/schema.prismaRehearsalSession, UserVoice, RehearsalStatus

Nice-to-haves (spätere Ausbaustufen)

  • 📝 Markierungen/Annotations auf dem PDF (persönlich pro Musiker)
  • 🔄 Synchrones Blättern (Kapellmeister steuert die Seite für alle)
  • 📊 Anwesenheits-Tracking (wer war bei der Probe dabei)
  • 🎵 Metronom/Tempo-Anzeige vom Kapellmeister
  • 📋 Proben-Notizen live an alle senden („Takt 34 nochmal!")
  • 📱 PWA mit Service Worker für Offline-PDF-Cache