Demo

Transport Bar

Complete transport control strip combining TransportButton, TimeDisplay, and BPMControl components into a unified interface.

Live Autonomous Mode

A fully functional transport bar that manages its own audio Transport, Clock, and Metronome. Click Play to hear the metronome.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000

Controlled Mode

Transport bar controlled by external state. All callbacks fire for integration with your own audio engine or Redux store.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
State: stopped | BPM: 120 | Loop: Off | Metro: Off | Rec Armed: No | Mode: bars

Sizes

Transport bar in small, medium, and large sizes.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
Small
BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
Medium
BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
Large

Visibility Options

Show or hide individual sections of the transport bar.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
All Controls
BARS
1:1:000
BARS
1:1:000
Minimal (Play/Stop + Time)
120.00BPM
120.00BPM
No Time Display

BPM Control Features

Configure what features are shown in the BPM control section.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
All BPM Features
BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
BPM Value Only

Count-In Feature

Show the count-in control for pre-recording countdown.

BARS
1:1:000
120.00BPM
120.00BPM
BARS
1:1:000
Count-In: Off

Sync Indicators

Show sync source when tempo is controlled externally.

BARS
1:1:000
MIDI
120.00BPM
MIDI
120.00BPM
BARS
1:1:000
MIDI Sync (Locked)
BARS
1:1:000
LINK
128.00BPM
LINK
128.00BPM
BARS
1:1:000
Ableton Link

Architecture

How the TransportBar integrates with the audio engine.

Component Integration

  • Combines TransportButton, TimeDisplay, and BPMControl
  • Uses useTransportSync hook for audio timing
  • Supports both autonomous and controlled modes

Autonomous vs Controlled Mode

  • Autonomous: Pass audioContext to manage its own audio engine
  • Controlled: Pass callbacks and state props for external control

Redux Integration Example

// Using with Redux store
const dispatch = useAppDispatch();
const isPlaying = useAppSelector(selectIsPlaying);
const bpm = useAppSelector(selectBpm);

<TransportBar
  transportState={isPlaying ? "playing" : "stopped"}
  bpm={bpm}
  onPlay={() => dispatch(play())}
  onStop={() => dispatch(stop())}
  onBPMChange={(bpm) => dispatch(setBpm(bpm))}
/>

Keyboard Shortcuts

  • Space - Play / Pause
  • Enter - Stop
  • L - Toggle Loop
  • M - Toggle Metronome