Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

AbletonLiveDiscordPresence

A zero-dependency Ableton Live Remote Script that shows your current session on Discord via Rich Presence.

Tested on Ableton Live 12 Suite (Windows). No external bridge, no pypresence, no extra processes — the script runs inside Ableton's own Python interpreter and talks to Discord directly over its local IPC pipe.

What it shows

Ableton Live 12 Suite
Project: my-track
128 BPM · Playing
00:01:23 elapsed
  • Project name — parsed from Ableton's window title (the open .als file)
  • Tempo — live from the Live API, updates instantly when you change it
  • Play / Stop state — listens to transport events
  • Elapsed timer — resets every time you hit play

Requirements

  • Ableton Live 11 or 12 (Windows)
  • Discord desktop client running
  • Nothing else — uses only Ableton's built-in Python stdlib

Installation

  1. Download the latest DiscordRPC.zip from Releases.
  2. Extract it so you end up with this folder structure:
    %USERPROFILE%\Documents\Ableton\User Library\Remote Scripts\DiscordRPC\
        __init__.py
        DiscordRPC.py
    
  3. Fully quit Ableton (Remote Scripts are scanned only at launch).
  4. Launch Ableton → Settings → Link, Tempo & MIDI.
  5. In the first empty Control Surface row, pick DiscordRPC. Leave Input and Output as None.
  6. Close Settings. Presence should appear in Discord within a couple of seconds.

That's it. The script auto-runs whenever Ableton starts.

Configuration

Edit DiscordRPC.py near the top:

Constant Default Purpose
CLIENT_ID 1256769208704958464 Discord Application ID. The default is a public app named "Ableton Live 12 Suite" published by the DAWRPC project — replace with your own from the Discord Developer Portal if you want a custom name/icon.
LARGE_IMAGE_KEY "icon" Asset image key uploaded to the Discord app.
LARGE_IMAGE_TEXT "Ableton Live 12 Suite" Tooltip text for the image.
POLL_INTERVAL_TICKS 50 Refresh cadence (~5 s). One tick ≈ 100 ms.
TITLE_REFRESH_EVERY_N_POLLS 6 How often to re-check the window title for project-name changes (~30 s).

How it works

┌─────────────────── Ableton process ────────────────────┐
│                                                        │
│  Live API ──► listeners (tempo, is_playing)            │
│  Window title ─► subprocess(powershell)   ─► project   │
│                                                        │
│  Activity payload  ─► background thread                │
│                       │                                │
│                       ▼                                │
│              open(r'\\.\pipe\discord-ipc-N', 'r+b')    │
│                       │                                │
└───────────────────────┼────────────────────────────────┘
                        ▼
                 Discord desktop client
  • The Live API gives tempo and playback state via listeners — instant updates, no polling for those.
  • Project name comes from the Ableton window title, fetched once every ~30 s on a background thread via PowerShell (Get-Process -Id $PID). The Live API itself does not expose the open .als file path.
  • Discord IPC is a framed binary protocol over a Windows named pipe (\\.\pipe\discord-ipc-0 through -9). The script opens the pipe with Python's built-in open() and writes op + length + JSON frames — no ctypes, no pypresence.

Why no ctypes / pypresence?

Ableton's embedded Python is stripped down — ctypes is not included, which rules out most off-the-shelf Discord RPC libraries. This script intentionally uses only modules Ableton ships: json, struct, socket-free pipe IO via open(), subprocess, threading, uuid, os, time.

Security & Privacy

The script is open source and short (~250 lines) — read it before running. Specifically:

  • No network connections. The script never reaches the internet. The Discord pipe (\\.\pipe\discord-ipc-N) is local-only, same-user IPC — the same channel Spotify, Steam, and games use for Rich Presence.
  • No data collection or telemetry. Rich Presence is one-way: the script sends "I'm working on X" to your local Discord client. Nothing comes back to anyone.
  • No persistence. No registry keys, no startup entries, no scheduled tasks. The script only runs because Ableton loads it when you tick the box in Settings. Untick it and it's gone.
  • No dynamic code. No downloads, no eval, no remote imports. What's in the repo is exactly what runs.
  • No shell injection surface. The one subprocess call invokes PowerShell with a hardcoded command that interpolates only os.getpid() (a number) — not user input.
  • Discord Client ID is just an identifier. The default ID (1256769208704958464) belongs to the DAWRPC project. The owner controls only the displayed name and icon — they cannot see who uses it, get any data, or run code on your machine. To eliminate even this minor third-party dependency, create your own Discord App and replace CLIENT_ID in DiscordRPC.py.

If you find a security issue, please open an issue on this repo.

Troubleshooting

DiscordRPC doesn't appear in the Control Surface dropdown

Open Ableton's log:

"$env:APPDATA\Ableton\Live <version>\Preferences\Log.txt"

Search for DiscordRPC or RemoteScriptError. The script logs Discord RPC: loaded (client_id=...) on a successful load. If you see an ImportError, something in the file got mangled — re-extract from the release zip.

Make sure you fully quit and relaunch Ableton — Remote Scripts are only scanned at launch.

Presence doesn't appear in Discord

  • Confirm the Discord desktop app is running.
  • Discord → Settings → Activity Privacy → Share your detected activities must be ON.
  • Discord → Settings → Registered Games — you don't need Ableton listed for Rich Presence to work, but if you've added it as a non-game manually it's harmless.
  • If you replaced CLIENT_ID, make sure the Discord app is set to Public.

Project name shows "Live Set"

That's the fallback if subprocess / PowerShell isn't reachable. Check the log for Discord RPC update error. PowerShell needs to be on PATH.

Acknowledgments

License

MIT


This is an unofficial third-party tool. Not affiliated with, endorsed by, or sponsored by Ableton AG or Discord Inc. "Ableton" and "Live" are trademarks of Ableton AG. "Discord" is a trademark of Discord Inc.

About

Zero-dependency Discord Rich Presence for Ableton Live 12 — drop-in Remote Script, no external bridge.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages