Playback Control
Play, pause, stop, and seek timecode. Jump to specific positions or scrub frame-by-frame.
Web UI
Playback Controls
Each slot card has transport controls:
- ▶ Play — Start timecode playback
- ⏸ Pause — Pause at current position
- ⏹ Stop — Stop and reset to start position
Seeking
Click on the timecode display to edit the position directly. You can:
- Type a new timecode (e.g.,
01:30:00:00) - Use arrow keys to nudge frames
- Click and drag on individual segments (HH, MM, SS, FF)
Keyboard Shortcuts
| Key | Action |
|---|---|
Space | Toggle play/pause (focused slot) |
Enter | Play from current position |
Escape | Stop |
← / → | Nudge ±1 frame |
Shift + ←/→ | Nudge ±1 second |
CLI
Play
bptimecode slot play --id 1 Pause
bptimecode slot pause --id 1 Stop
bptimecode slot stop --id 1 Seek to Position
bptimecode slot seek --id 1 --position 01:30:00:00 Jump and Play
bptimecode slot goto --id 1 --position 01:30:00:00 --play Control All Slots
# Play all
bptimecode slot play --all
# Stop all
bptimecode slot stop --all HTTP API
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/slots/:id/play | Start playback |
| POST | /api/v1/slots/:id/pause | Pause playback |
| POST | /api/v1/slots/:id/stop | Stop and reset |
| POST | /api/v1/slots/:id/seek | Seek to position |
| POST | /api/v1/slots/:id/goto | Jump and optionally play |
Play
curl -X POST http://localhost:5050/api/v1/slots/1/play Seek to Position
curl -X POST http://localhost:5050/api/v1/slots/1/seek \
-H "Content-Type: application/json" \
-d {"position": "01:30:00:00"} Jump and Play
curl -X POST http://localhost:5050/api/v1/slots/1/goto \
-H "Content-Type: application/json" \
-d {"position": "01:30:00:00", "play": true} Get Current State
curl http://localhost:5050/api/v1/slots/1 Response:
{
"id": 1,
"name": "Main TC",
"position": "01:30:00:00",
"state": "playing",
"frameRate": "29.97df"
} OSC
Default OSC port: 5051
Transport Controls
| Address | Args | Description |
|---|---|---|
/bptimecode/slot/{id}/play | none | Start playback |
/bptimecode/slot/{id}/pause | none | Pause |
/bptimecode/slot/{id}/stop | none | Stop and reset |
/bptimecode/slot/{id}/toggle | none | Toggle play/pause |
Position Control
Address Args Description /bptimecode/slot/{id}/positionstring Set position (HH:MM:SS:FF) /bptimecode/slot/{id}/gotostring Jump and play /bptimecode/slot/{id}/framesint Set position in frames /bptimecode/slot/{id}/nudgeint Nudge ±N frames
Examples
# Play slot 1
oscsend localhost 5051 /bptimecode/slot/1/play
# Jump to position
oscsend localhost 5051 /bptimecode/slot/1/position s "01:30:00:00"
# Jump and play
oscsend localhost 5051 /bptimecode/slot/1/goto s "01:30:00:00"
# Nudge forward 10 frames
oscsend localhost 5051 /bptimecode/slot/1/nudge i 10
QLab Cues
Create Network cues in QLab:
Destination: [BPTimecode IP]:5051
Message Type: OSC
Play: /bptimecode/slot/1/play
Stop: /bptimecode/slot/1/stop
Goto: /bptimecode/slot/1/goto "01:30:00:00"