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

KeyAction
SpaceToggle play/pause (focused slot)
EnterPlay from current position
EscapeStop
/ 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

MethodEndpointDescription
POST/api/v1/slots/:id/playStart playback
POST/api/v1/slots/:id/pausePause playback
POST/api/v1/slots/:id/stopStop and reset
POST/api/v1/slots/:id/seekSeek to position
POST/api/v1/slots/:id/gotoJump 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

AddressArgsDescription
/bptimecode/slot/{id}/playnoneStart playback
/bptimecode/slot/{id}/pausenonePause
/bptimecode/slot/{id}/stopnoneStop and reset
/bptimecode/slot/{id}/togglenoneToggle play/pause

Position Control

AddressArgsDescription
/bptimecode/slot/{id}/positionstringSet position (HH:MM:SS:FF)
/bptimecode/slot/{id}/gotostringJump and play
/bptimecode/slot/{id}/framesintSet position in frames
/bptimecode/slot/{id}/nudgeintNudge ±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"