Send the tempo to Ableton or LiveProfessor
Set up a virtual MIDI port, send the tempo and a delay time as controller values, and when to use MIDI clock instead.
On this page
MIDI output works in Chrome, Edge and Firefox on a laptop. Safari and iOS have no Web MIDI; detection itself works everywhere.
1. Create a virtual MIDI port
- macOS — open Audio MIDI Setup → Window → Show MIDI Studio, double-click IAC Driver and tick Device is online.
- Windows — install a virtual port such as loopMIDI.
2. Pick the port in TempoSense
Open Output ⚙. Choose the port under MIDI port and the Channel
the receiver listens on (1 is the usual default). Leave Only while
locked (or held) ticked so a breakdown or a searching phase does not
send nonsense. While any output is on, TempoSense keeps listening when
you switch to another tab or app — the receiver is usually on the same
laptop.
3. Tempo as a controller — the safest path
Tick Send tempo as a controller. TempoSense sends a value only when the tempo changes and only while locked. Two modes:
- CC (7-bit) — the default, controller CC 20. Over an 80-BPM range this gives about 0.6 BPM steps.
- Pitch bend (14-bit) — 0.1 BPM resolution where the receiver supports it.
The value maps the current Range (⚙) onto 0–127 (or 0–16383), so the receiver's mapping range must match it. If ½×, 2× or Hold put the tempo outside that range, the status line says so — the controller then sits at its end.
Ableton Live
- Preferences → Link/Tempo/MIDI → set the IAC port's Remote to On.
- Enter MIDI map mode (Cmd+M) and click the tempo field.
- Make TempoSense send a message — let the tempo move, or toggle Hold.
- Set the mapping range at the bottom to the same range as in ⚙ (for example 80–160). Leave map mode.
Every tempo-synced delay, LFO and plugin now follows the room.
LiveProfessor — use MIDI Learn on the tempo control the same way.
4. Delay time as a controller
Tick Send delay time as a controller to drive a delay plugin's time parameter directly. Choose the Note value, a controller (default CC 21) and the ms range (default 0–2000 ms). Map the controller to the plugin's time parameter and set the plugin's mapping range to the same millisecond range.
MIDI clock
Send MIDI clock (24 ppqn) is for receivers that must slave. In Ableton set the port's Sync to On and enable EXT.
- The clock starts on beat 1 (on the next beat when the bar is not known).
- It follows the detected beat smoothly — small corrections are spread over a second, never a jump.
- When the beat is lost it keeps running at the last good tempo. It stops only when you press ■ Stop or untick the clock; STOP is sent after the last tick.
- Set 1 restarts it (STOP + START) on the new beat 1, so a DAW's bar lines match the music.
Ableton in slave mode cannot be tempo-automated by you at the same time. Prefer the controller path when the receiver should stay the master.
Beat notes and clock ticks are sent with exact timestamps, so a busy laptop does not make them jitter. Use ⚙ → Beat offset when the lights should fire earlier than the microphone hears the beat.
The status line at the bottom of the Output window shows what is
going out: tempo 128.2 → 77, delay 468 ms → 30, beats ÷1 ÷2 ÷4 ÷8
or clock 128.2. If it says Choose a port above, no port is selected;
if nothing changes, check that TempoSense is locked.
For beat pulses to a lighting desk, see Send beat pulses to a lighting desk.
Thanks for the feedback.