Timecode Slots

Manage up to 32 independent timecode sources, each with its own playback state, frame rate, and routing.

🌐 Web UI ⌨️ CLI 🔌 HTTP API 📡 OSC

🌐 Web UI

The web dashboard shows all timecode slots in a grid view. Access it at http://localhost:5050 after starting the server.

Creating a Slot

  1. Click the + button in the top-right corner
  2. Enter a name for your slot
  3. Select the frame rate (23.976, 24, 25, 29.97DF, 29.97NDF, 30)
  4. Click Create

Slot Controls

Each slot card displays:

  • Timecode display — Current position in HH:MM:SS:FF format
  • Play/Pause button — Toggle playback
  • Stop button — Stop and reset to 00:00:00:00
  • Frame rate badge — Shows the slot's frame rate
  • Settings gear — Access slot configuration

Editing a Slot

  1. Click the settings gear on the slot card
  2. Modify name, frame rate, or other settings
  3. Click Save

⌨️ CLI

List Slots

bptimecode slot list

Create a Slot

bptimecode slot create --name "Main TC" --framerate 29.97df

Options

Option Description Default
--name Display name for the slot Slot N
--framerate Frame rate (23.976, 24, 25, 29.97df, 29.97ndf, 30) 29.97df
--start Initial timecode position 00:00:00:00

Delete a Slot

bptimecode slot delete --id 1

Get Slot Info

bptimecode slot get --id 1 --format json

🔌 HTTP API

Endpoints

Method Endpoint Description
GET /api/v1/slots List all slots
GET /api/v1/slots/:id Get slot by ID
POST /api/v1/slots Create a slot
PUT /api/v1/slots/:id Update a slot
DELETE /api/v1/slots/:id Delete a slot

List All Slots

curl http://localhost:5050/api/v1/slots

Response:

[
  {
    "id": 1,
    "name": "Main TC",
    "frameRate": "29.97df",
    "position": "01:23:45:12",
    "state": "playing"
  }
]

Create a Slot

curl -X POST http://localhost:5050/api/v1/slots \
  -H "Content-Type: application/json" \
  -d {"name": "Main TC", "frameRate": "29.97df"}

Update a Slot

curl -X PUT http://localhost:5050/api/v1/slots/1 \
  -H "Content-Type: application/json" \
  -d {"name": "Renamed Slot"}

📡 OSC

OSC commands are received on port 5051 by default (configurable).

Addresses

Address Arguments Description
/bptimecode/slots none Query all slots (replies to sender)
/bptimecode/slot/<id>/name string Set slot name
/bptimecode/slot/<id>/framerate string Set frame rate

Examples

Using oscsend (from liblo):

# Set slot 1 name
oscsend localhost 5051 /bptimecode/slot/1/name s "Main TC"

# Set slot 1 frame rate
oscsend localhost 5051 /bptimecode/slot/1/framerate s "29.97df"

QLab Example

In QLab, create a Network cue with:

  • Destination: Your BPTimecode machine IP
  • Port: 5051
  • Message: /bptimecode/slot/1/name "Show TC"