LooperDisplay ist ein Tool, das die ersten acht Looper in einem Ableton-Projekt erkennt und ihren Zustand als drehende Ringe in einer Weboberfläche visualisiert, die über das Intranet auch auf anderen Endgeräten (iPad, iPhone etc.) funktioniert.
Über diese Weboberfläche lassen sich die Looper auch direkt bedienen — antippen, dazu Stop und Clear über die Eck-Tasten. Dafür sind nur ein paar MIDI-Zuweisungen in Live nötig, den Rest übernimmt automatisch das Remote Script.
Zusätzlich und optional lassen sich die Looper auch über echte Hardware bedienen: über ein KORG nanoKONTROL2 (mit LED-Rückmeldung) und/oder ein Roland SPD-SX PRO (per Pad). Beide lösen dieselben Zuweisungen aus wie die Bedienung im Browser und dürfen gleichzeitig laufen.
Erste Einrichtung
Die App ist ein fertig gebautes Programm für Apple-Silicon-Macs (M-Prozessoren). Kein Node.js, kein npm install, kein Terminal-Wissen nötig.
Der Ordner Programm (nicht anfassen) muss so bleiben, wie er ist — node_modules darin enthält die MIDI-Anbindung für die Bedienung einzelner Looper aus dem Browser.
Den Ordner Zum Kopieren/Remote Scripts/LooperDisplay nach
~/Music/Ableton/User Library/Remote Scripts/
kopieren. Hast du zusätzlich ein Roland SPD-SX PRO, den Ordner Zum Kopieren/Remote Scripts/SPD_SX_Pro_Looper gleich mit dorthin.
Einstellungen → Link, Tempo & MIDI öffnen.LooperDisplay auswählen.| Bedienoberfläche | Eingang | Ausgang |
|---|---|---|
LooperDisplay | Kein | Kein |
✅ Ohne eigene Hardware bleiben Eingang und Ausgang auf „Kein" — ein KORG nanoKONTROL2 ist optional. Auch ohne angeschlossenes Gerät liefert das Script trotzdem alle Daten für die Anzeige.
Im Finder zu diesem Ordner wechseln und dort doppelklicken auf Looper-Display starten.command.
Beim allerersten Start fragt macOS zusätzlich einmalig, ob „osascript" das Terminal steuern darf — dafür wird das Fenster minimiert und später wieder geschlossen. Bitte erlauben. Ohne diese Erlaubnis läuft die App trotzdem, das Fenster bleibt dann nur offen.
Für ein Tablet zusätzlich die zweite, im (minimierten) Terminal-Fenster angezeigte Adresse dort in Safari öffnen:
Anzeige: http://localhost:8080
http://192.168.0.XXX:8080 (für Tablet/Handy)
Für eine Anzeige ganz ohne Browser-Oberfläche: die zweite Adresse in Safari öffnen, Teilen-Symbol → „Zum Home-Bildschirm" — nicht „Zu Lesezeichen hinzufügen". Danach startet die Seite über das neue Symbol komplett ohne Adressleiste.
Im Finder doppelklicken auf Looper-Display beenden.command — findet und beendet die App, auch wenn das (minimierte) Terminal-Fenster längst aus den Augen ist. Zwei weitere, gleichwertige Wege: ⏻ Server beenden oben rechts in der Anzeige selbst, oder Ctrl + C im (wieder eingeblendeten) Terminal-Fenster.
Schließt du nur den Browser-Tab mit der Anzeige, läuft die App im Hintergrund weiter — das ist meistens gewollt, falls ein Tablet die Seite dauerhaft offen halten soll.
Jeder Ring lässt sich antippen, dazu gibt es Ecktasten für Stop und Clear. Das braucht — anders als die vier Transporttasten oben in der Anzeige — eine kleine einmalige Einrichtung, weil Ableton Loopern keinen direkten „stoppe quantisiert" oder „lösche" Befehl über die API erlaubt. Der Weg dahin: ein virtueller MIDI-Bus, den die App bedient, und eine ganz normale MIDI-Zuweisung in Live — komplett über den Browser, ganz ohne KORG nanoKONTROL2 oder Roland SPD-SX PRO. Diese Geräte sind rein optionale Zusatz-Hardware (Abschnitt „Hardware" weiter unten) und lösen automatisch dieselben Zuweisungen aus, falls du sie später ergänzt.
IAC-Treiber (Bus 1) — Remote an, Track aus.Cmd + M in Live (Map-Modus). Für jeden Looper: großen Transportknopf anklicken, kurz im Browser auf den Ring tippen — Zuweisung entsteht automatisch. Ebenso für die STOP- und CLEAR-Ecktasten.Cmd + M verlassen, Set speichern.Live quantisiert danach selbst, genau wie bei einem echten Controller. Damit sind alle 24 Zuweisungen angelegt — CC 64–71 für den Transportknopf, 32–39 für Stop, 48–55 für Clear, je Looper 1–8. Ohne sie bleiben Stop und Clear wirkungslos.
💡 Einfacher geht's mit dem 🧭 Setup-Assistenten — sobald die App läuft, verlinkt „❓ Help" oben in der Anzeige dorthin. Er führt Schritt für Schritt durch alle 24 Zuweisungen, statt die Tabelle oben von Hand abzuarbeiten.
Wenn die App läuft
Jeder Looper hat zwei Ringe: außen der Fortschritt über die ganze Loop-Länge mit einer Marke pro Takt, innen eine Torte, die sich einmal pro Takt füllt. In der Mitte steht Takt / Takte und der Zustand.
Live führt Stop und den Transportknopf erst am nächsten Taktstrich aus. Bis dahin pulsiert die getippte Stelle hell mit „WARTET".
📱 Auf iPhone und iPad blendet der Vollbild-Button Safaris Adressleiste nie zuverlässig aus — eine Einschränkung des Browsers, kein Fehler dieser Seite. So klappt es garantiert:
Vier Tasten neben Tempo und Takt steuern Lives Transport, unabhängig von den Loopern:
Play/Stop starten und stoppen Lives Transport, Rec und Loop schalten die Arrangement-Aufnahme bzw. den Arrangement-Loop um — sofort über die Live-API, ohne Einrichtung.
Zusätzliche Controller
Beide Geräte lösen dieselben Zuweisungen aus wie die Bedienung im Browser und dürfen gleichzeitig laufen.
Bedienoberfläche LooperDisplay (Schritt 2) mit Eingang nanoKONTROL2 (SLIDER/KNOB) und Ausgang nanoKONTROL2 (CTRL) statt „Kein". Das KORG bietet zudem die Möglichkeit, alle Looper gleichzeitig zu starten und zu stoppen, sowie die Lautstärke-Fader in Ableton pro Looper zu bedienen.
Auf dem Mac sind die „Communication"-Menüpunkte im KORG KONTROL Editor oft nicht anklickbar (getestet mit macOS 26 auf Apple Silicon). Abhilfe: die Einstellung einmalig auf einem Windows-Rechner schreiben — danach steckt sie dauerhaft im Controller.
Die Zuweisung hängt an der MIDI-Nachricht, nicht am Gerät: Drückst du R1, S1 oder M1, sendet das dieselben CCs, die du in der Installation per Browser-Tap zugewiesen hast — die Mappings aus der Installation greifen also automatisch auch am Pult.
| Taste | CC | Ziel im Looper |
|---|---|---|
| R 1–8 | 64–71 | der große Transportknopf |
| S 1–8 | 32–39 | Stop |
| M 1–8 | 48–55 | Clear |
⚠️ R1, S1 und M1 gehören fest zu Looper 1: Lives Mapping folgt den Bank-Tasten des Pults nicht, nur die Fader tun das.
Ein Kanalzug bedient jeweils einen Looper — Fader, S/M/R und die Transportleiste ganz rechts.
Pro Looper-Streifen zeigen drei übereinanderliegende LEDs — S, M, R —, welche Taste gerade sinnvoll ist, genau wie am Gerät selbst. Die Vorschau unten zeigt automatisch alle fünf Zustände.
Zweites Remote Script, Ordner Zum Kopieren/Remote Scripts/SPD_SX_Pro_Looper ebenfalls nach ~/Music/Ableton/User Library/Remote Scripts/ kopieren. In einer weiteren freien Zeile der Bedienoberflächen:
| Bedienoberfläche | Eingang | Ausgang |
|---|---|---|
SPD_SX_Pro_Looper | SPD-SX PRO | IAC-Treiber Bus 1 |
Der Ausgang geht nicht an das SPD, sondern in dieselbe IAC-Schleife wie beim nanoKONTROL2. Am Gerät müssen neun Pads auf feste Noten (Kanal 1) programmiert sein.
Neun Pads im 3×3-Raster — Belegung wie in der Übersicht weiter unten.
Im Ordner Zum Kopieren/SPD-SX Pro Preset liegt die Kit-Datei KIT-APP_LooperDisplay.TD0 — sie enthält alle neun Pad-Zuweisungen fertig eingerichtet.
BACKUP → LOAD 1 KIT.… die Datei KIT-APP_LooperDisplay.TD0 auswählen, OK.Die drei linken Pads wirken immer auf den gerade am Gerät gewählten Looper — welcher das ist, zeigt die Anzeige mit einem gelben Rahmen:
Maßgeblich sind die Notennummern, nicht die Position. Die Auswahl läuft nicht im Kreis, sondern stößt an den Enden an. Alle Pads liegen auf MIDI-Kanal 1.
Für Fortgeschrittene
Damit beide Scripts und die Anzeige laufen, müssen in Einstellungen → Link, Tempo & MIDI die passenden Bedienoberflächen aktiv sein — mit beiden Controllern zusammen:
| Bedienoberfläche | Eingang | Ausgang |
|---|---|---|
LooperDisplay | nanoKONTROL2 (SLIDER/KNOB) | nanoKONTROL2 (CTRL) |
SPD_SX_Pro_Looper | SPD-SX PRO | IAC-Treiber (Bus 1) |
In der MIDI-Ports-Tabelle darunter müssen drei Zeilen stimmen:
| Eingang | Track | Remote |
|---|---|---|
| IAC-Treiber (Bus 1) | aus | an |
| SPD_SX_Pro_Looper Input | nach Bedarf | an |
| LooperDisplay Input | nach Bedarf | an |
Remote ist Voraussetzung für die Clear-Zuweisungen. Beim IAC-Eingang muss Track aus bleiben, sonst landen die Clear-CCs zusätzlich in scharfgeschalteten MIDI-Spuren.
Der Looper schneidet das Eingangssignal dort mit, wo es in Live ankommt — also um die Eingangslatenz verspätet. Du hörst dein Instrument direkt ohne Verzögerung, die Aufnahme landet aber zu spät im Raster. An der Schleifengrenze trifft dann Material aufeinander, das nicht zusammengehört — hörbar als Knacken oder Versatz beim Übergang.
In Einstellungen → Audio → Optionen:
| Einstellung | Wert |
|---|---|
| Verzögerungsausgleich | aus |
| Reduced Latency When Monitoring | aus |
Live kompensiert sonst nur anhand der Latenz, die der Treiber meldet — USB-Interfaces melden sie oft ungenau, der Rest bleibt als Versatz stehen. Wer noch genauer sein will, misst zusätzlich die Treiberfehlerkompensation einmalig ein: einen kurzen, harten Transienten exakt auf einen Taktstrich aufnehmen und in Einstellungen → Audio so lange nachjustieren, bis er im Clip auf dem Strich sitzt.
⚠️ „Verzögerungsausgleich aus" heißt auch: Live gleicht keine Plugin-Latenzen mehr aus. Solange nichts im Set Latenz meldet — Linearphasen-EQs, Multiband-Kompressoren, manche Amp-Simulationen —, fällt das nicht auf.
Nicht zu verwechseln: Ein abgeschnittenes Ausklingen am Loop-Ende (ein Becken, eine offene HiHat) ist kein Latenzproblem, sondern eine Eigenheit des Loopers — er nimmt in einen Puffer fester Länge auf. Test: Loop mit leerem letztem Takt aufnehmen. Knackt es trotzdem, ist es der Latenzversatz; ist es sauber und knackt nur beim Durchspielen bis zum Schluss, ist es das Ausklingen.
Bevor du fragst
Kleingedrucktes
Dieses Projekt ist für den persönlichen, nicht-kommerziellen Gebrauch gedacht. Weitergabe an Freunde und Bandkollegen ist ausdrücklich erwünscht — Weiterverkauf oder Veröffentlichung als eigenes Produkt bitte nicht ohne Rücksprache.
Selbst gebaut mit Node.js, unter Verwendung der Pakete ws und @julusian/midi (beide MIT-Lizenz).
LooperDisplay is a tool that detects the first eight loopers in an Ableton project and visualizes their state as spinning rings in a web interface that also works over the local network on other devices (iPad, iPhone, etc.).
That web interface can also control the loopers directly — tap a ring, plus Stop and Clear via the corner buttons. That only needs a few MIDI mappings in Live; the Remote Script handles the rest automatically.
On top of that, and optionally, the loopers can also be played from real hardware: a KORG nanoKONTROL2 (with LED feedback) and/or a Roland SPD-SX PRO (by pad). Both trigger the same mappings as browser control and can run at the same time.
First-time setup
The app is a ready-built program for Apple Silicon Macs (M-series chips). No Node.js, no npm install, no terminal knowledge required.
The Programm (nicht anfassen) folder needs to stay exactly as it is — the node_modules inside it holds the MIDI link used to control individual loopers from the browser.
Copy the folder Zum Kopieren/Remote Scripts/LooperDisplay to
~/Music/Ableton/User Library/Remote Scripts/
If you also own a Roland SPD-SX PRO, copy the Zum Kopieren/Remote Scripts/SPD_SX_Pro_Looper folder there as well.
Settings → Link, Tempo & MIDI.LooperDisplay in an empty Control Surface row.| Control Surface | Input | Output |
|---|---|---|
LooperDisplay | None | None |
✅ Without your own hardware, Input and Output stay set to „None" — a KORG nanoKONTROL2 is optional. Even without one connected, the script still feeds all the data the display needs.
Switch to this folder in Finder and double-click Looper-Display starten.command there.
The very first time, macOS also asks once whether „osascript" may control Terminal — needed to minimize the window and later close it again. Please allow it. Without that permission the app still runs fine, the window just stays open.
For a tablet, additionally open the second address shown in the (minimized) Terminal window there in Safari:
Anzeige: http://localhost:8080
http://192.168.0.XXX:8080 (for tablet/phone)
For a display with no browser interface at all: open the second address in Safari, then Share icon → „Add to Home Screen" — not „Add Bookmark". The page then launches from its own icon with no address bar whatsoever.
In Finder, double-click Looper-Display beenden.command — it finds and stops the app even if the (minimized) Terminal window is long out of sight. Two more, equally good ways: ⏻ Server beenden in the top right of the display itself, or Ctrl + C in the (restored) Terminal window.
Closing just the browser tab showing the display leaves the app running in the background — usually what you want if a tablet is meant to keep the page open permanently.
Each ring can be tapped, and there are corner buttons for Stop and Clear too. Unlike the four transport buttons at the top of the display, this needs a small one-time setup, because Ableton doesn't offer a direct "quantised stop" or "clear" command through its API for loopers. The way around that: a virtual MIDI bus the app talks to, and an entirely ordinary MIDI mapping in Live — entirely through the browser, no KORG nanoKONTROL2 or Roland SPD-SX PRO required. Those devices are purely optional add-on hardware (the "Hardware" section further down) and automatically trigger the same mappings if you add one later.
IAC Driver (Bus 1) — Remote on, Track off.Cmd + M in Live (Map Mode). For each looper: click the big transport knob, then briefly tap the ring in the browser — the mapping is created automatically. Do the same for the STOP and CLEAR corner buttons.Cmd + M, save the set.Live then quantises everything itself, exactly as with a real controller. That sets up all 24 mappings — CC 64–71 for the transport knob, 32–39 for Stop, 48–55 for Clear, per looper 1–8. Without them, Stop and Clear do nothing.
💡 Easier: the 🧭 Setup wizard — once the app is running, „❓ Help" at the top of the display links to it. It walks you through all 24 mappings step by step, instead of working through the table above by hand.
Once it's running
Each looper has two rings: the outer one shows progress across the whole loop length with one mark per bar, the inner one is a pie that fills up once per bar. The centre shows bar / total bars and the state.
Live only executes Stop and the transport button on the next bar line. Until then, the tapped spot pulses brightly with „WAITING".
📱 On iPhone and iPad, the Fullscreen button can never reliably hide Safari's address bar — that's a limitation of the browser, not a bug in this page. Here's what's guaranteed to work:
Four buttons next to the tempo and bar counter control Live's transport, independently of the loopers:
Play/Stop start and stop Live's transport, Rec and Loop toggle arrangement recording and the arrangement loop — instantly through the Live API, no setup required.
Extra controllers
Both devices trigger the same mappings as browser control and can run at the same time.
Control Surface LooperDisplay (step 2) with Input nanoKONTROL2 (SLIDER/KNOB) and Output nanoKONTROL2 (CTRL) instead of „None". The KORG also lets you start and stop all loopers at once, and control each looper's volume fader in Ableton.
On the Mac, the „Communication" menu items in the KORG KONTROL Editor are often not clickable (tested on macOS 26 on Apple Silicon). Workaround: write the setting once on a Windows machine — after that it stays in the controller for good.
The mapping is tied to the MIDI message, not the device: pressing R1, S1 or M1 sends the same CCs you already mapped by tapping in the browser during installation — those mappings work at the console automatically, too.
| Button | CC | Target on the looper |
|---|---|---|
| R 1–8 | 64–71 | the big transport knob |
| S 1–8 | 32–39 | Stop |
| M 1–8 | 48–55 | Clear |
⚠️ R1, S1 and M1 are fixed to looper 1: Live's mapping doesn't follow the controller's bank buttons, only the faders do.
Each channel strip controls one looper — fader, S/M/R, and the transport row on the far right.
Each looper strip has three stacked LEDs — S, M, R — showing which button currently makes sense, just like on the device itself. The preview below cycles automatically through all five states.
Second Remote Script — copy the folder Zum Kopieren/Remote Scripts/SPD_SX_Pro_Looper to ~/Music/Ableton/User Library/Remote Scripts/ as well. In another free Control Surface row:
| Control Surface | Input | Output |
|---|---|---|
SPD_SX_Pro_Looper | SPD-SX PRO | IAC-Treiber Bus 1 |
The output doesn't go to the SPD itself, but into the same IAC loop as the nanoKONTROL2. On the device, nine pads need to be programmed to fixed notes (channel 1).
Nine pads in a 3×3 grid — layout as in the overview below.
The folder Zum Kopieren/SPD-SX Pro Preset contains the kit file KIT-APP_LooperDisplay.TD0 — it has all nine pad assignments already set up.
BACKUP → LOAD 1 KIT.… to pick the file KIT-APP_LooperDisplay.TD0, then OK.The three left pads always act on whichever looper is currently selected on the device — this display shows which one with a yellow ring:
The note numbers are what matters, not the position. Selection doesn't wrap around — it stops at both ends. All pads sit on MIDI channel 1.
Advanced
For both scripts and the display to work together with both controllers, these need to be active under Settings → Link, Tempo & MIDI:
| Control Surface | Input | Output |
|---|---|---|
LooperDisplay | nanoKONTROL2 (SLIDER/KNOB) | nanoKONTROL2 (CTRL) |
SPD_SX_Pro_Looper | SPD-SX PRO | IAC Driver (Bus 1) |
In the MIDI Ports table below, three rows need to be set correctly:
| Input | Track | Remote |
|---|---|---|
| IAC Driver (Bus 1) | off | on |
| SPD_SX_Pro_Looper Input | as needed | on |
| LooperDisplay Input | as needed | on |
Remote is required for the Clear mappings to fire. On the IAC input, Track must stay off, otherwise the Clear CCs would also land on any armed MIDI tracks.
The looper cuts the input signal exactly where it arrives in Live — delayed by the input latency. You hear your instrument directly with no delay, but the recording lands too late in the grid. At the loop boundary, material that doesn't belong together then meets — audible as a click or a shift at the transition.
In Settings → Audio → Options:
| Setting | Value |
|---|---|
| Delay Compensation | off |
| Reduced Latency When Monitoring | off |
Otherwise Live only compensates based on the latency the driver reports — USB interfaces often report it inaccurately, and the rest stays as an offset. For extra precision, also measure the driver error compensation once: record a short, hard transient exactly on a bar line, and adjust in Settings → Audio until it sits on the line in the clip.
⚠️ "Delay Compensation off" also means Live no longer compensates for plugin latency. As long as nothing in the set reports latency — linear-phase EQs, multiband compressors, some amp sims — this won't be noticeable.
Don't confuse this with: a cut-off tail at the end of a loop (a cymbal, an open hi-hat) isn't a latency problem, it's a quirk of the looper — it records into a fixed-length buffer. Test: record a loop whose last bar is empty. Still clicks? That's the latency offset. Clean, and only clicks when played through to the end? That's the tail — a playing question, not a setting.
Before you ask
Fine print
This project is meant for personal, non-commercial use. Sharing it with friends and bandmates is explicitly encouraged — please don't resell it or publish it as your own product without asking first.
Built with Node.js, using the packages ws and @julusian/midi (both MIT licensed).