Purr in sync
README
ofxAbletonLinkKit
Header-only ofxKit bridge for network tempo and transport sync via Ableton Link.
This addon wraps ofxAbletonLink — the openFrameworks binding for the Link SDK — and connects it to the shared ofxEnTTKit music ECS (
ecs::clock_component, ecs::transport_control_component). It also registers a Link Sync ImGui window through ofxKit.Quick start
#include "ofxAbletonLinkKit.h"
ofxAbletonLinkKit linkKit;
void ofApp::setup() {
linkKit.setup(120.0);
linkKit.setEnabled(true);
linkKit.registerWithRuntime(); // View → Link Sync
}
void ofApp::update() {
linkKit.update(ofGetLastFrameTime());
}Open View → Link Sync to enable Link, see peer count, adjust BPM and quantum, and toggle start/stop sync.
How it works
Each frame, when Link is enabled,
ofxAbletonLinkKit::update():1. Polls
ofxAbletonLink::update() for session beat, phase, tempo, and play state. 2. Writes beat/phase/BPM into every ecs::clock_component with externalSync = true. 3. Optionally mirrors Link play/stop into all ecs::transport_control_component entities when start/stop sync is on.Sequencers and other systems that read the ECS clock (for example
triggermachine::EcsBridge or triggermachine::LinkSync in ofxTriggerMachine) stay locked to the same network beat without each app reimplementing Link polling.To opt a clock into Link sync, set
externalSync = true on its ecs::clock_component, or use Sync all in the Link Sync window.API highlights
| Method | Purpose |
|---|---|
setup(bpm) | Initialise Link at a starting tempo |
registerWithRuntime() | Add the Link Sync panel to ofxKit |
update(dt) | Poll Link and drive synced ECS clocks |
setEnabled(bool) | Turn Link session participation on/off |
link() | Direct access to the underlying ofxAbletonLink instance |
peers() | Number of other Link peers on the network |
License
Follows the licenses of ofxAbletonLink (GPL) and the Link SDK. See the ofxAbletonLink repository for details.
ofxAddons