MTC (MIDI Time Code)

Sync with DAWs, audio systems, and MIDI-based show control. Full MTC quarter-frame and full-frame support.

Overview

MIDI Time Code (MTC) embeds SMPTE timecode in MIDI messages. Use cases:

  • DAW sync — Pro Tools, Logic, Ableton, Reaper, etc.
  • Show control — QLab (MIDI input), hardware sequencers
  • Video sync — Software that accepts MTC

BPTimecode outputs standard MTC quarter-frame messages during playback and full-frame messages on seek/jump.

🌐 Web UI

Configure MTC Output

  1. Go to Settings → Protocols → MIDI
  2. Select your MIDI Output Port
  3. Enable MTC Output
  4. Route a slot to mtc:default in the routing matrix

Virtual MIDI Ports

On macOS, use IAC Driver. On Windows, use loopMIDI or similar virtual MIDI software to route MTC to your DAW.

⌨️ CLI

List MIDI Ports

bptimecode midi list

Configure MTC Output

bptimecode midi set-output --port "IAC Driver Bus 1"
bptimecode config set mtc.enabled true

Route to MTC

bptimecode route create --source slot:1 --dest mtc:default

Send Full-Frame Message

# Useful for cueing to a position
bptimecode mtc send-fullframe --position 01:30:00:00

🔌 HTTP API

Endpoints

MethodEndpointDescription
GET/api/v1/midi/portsList MIDI ports
GET/api/v1/mtc/statusMTC status
PUT/api/v1/mtc/configConfigure MTC
POST/api/v1/mtc/fullframeSend full-frame

Configure MTC

curl -X PUT http://localhost:5050/api/v1/mtc/config \
  -H "Content-Type: application/json" \
  -d {"enabled": true, "port": "IAC Driver Bus 1"}

Send Full-Frame

curl -X POST http://localhost:5050/api/v1/mtc/fullframe \
  -H "Content-Type: application/json" \
  -d {"position": "01:30:00:00"}

📡 OSC

Addresses

AddressArgsDescription
/bptimecode/mtc/enableint (0/1)Enable/disable MTC
/bptimecode/mtc/fullframestringSend full-frame message

Examples

# Enable MTC output
oscsend localhost 5051 /bptimecode/mtc/enable i 1

# Send full-frame to cue position
oscsend localhost 5051 /bptimecode/mtc/fullframe s "01:30:00:00"