Skip to main content
Glama

hellyee

Make music in Ableton Live by talking to Claude — it mixes and masters by actually reading the meters.

Other AI↔Ableton bridges hand the model a set of tools. hellyee closes the loop: it measures real output levels, adjusts, and measures again — and it ships a skill that teaches Claude how to produce, not just what the tools do. Compose, sound-design, automate, arrange, mix and master a full track from a conversation.

License: MIT Live 11 · 12 MCP Python 3.10+


you  →  "balance the mix — kick on top, then master it"

Claude →  plays the drop · reads every track's meter · adjusts faders ·
          measures again until it converges · loads EQ → Glue → Limiter ·
          drives the limiter by measurement · reports: "peak 0.835,
          breakdown-to-drop dynamic 0.23 — the drop still hits"

What it does

Tracks & clips

Create MIDI/audio tracks, rename, duplicate, delete. Create clips, fire them, set loop points.

MIDI

Write, read, replace and clear notes. Quantize with a strength control Live's own dialog doesn't offer.

Sound design

Full parameter access to every Live device — 93 parameters on Wavetable, all of EQ Eight, filters, envelopes. Presets are auditioned by measurement before they are kept, and a filter shut below the working floor is reported at load time.

Devices

Search Live's browser and load any instrument, effect or preset onto any track.

Mixing

Read real output meters and balance by measurement, not by guessing.

Arrangement

Read an existing song's structure, and place clips on the timeline to build your own.

Automation

Write parameter envelopes — filter sweeps through a build, anything that moves over time.

Master bus

Load and control devices on the master track.

Music theory

13 scales, 14 chord types, key-aware note spelling (F minor gives you Ab, not G#).

Audio in

Turn a hummed melody into MIDI, or a spoken command into text.

Remix & reference

Analyze any song (key, tempo, band energies), separate its stems with demucs, and import audio onto tracks — reference channels and full remix flows.

76 tools in total. Full reference below.

Related MCP server: io.github.peterkolbe/ableton-for-ai

The skills

The tools are half the story. hellyee setup also installs eight skills — production knowledge Claude loads when the task calls for it:

Skill

What it teaches

hellyee

How to drive the tools: ordering rules, unit-aware parameter setting, mixing by measurement, and the eight Live behaviours that fail silently with no error.

genre-blueprints

Per-genre conventions with real numbers — tempo, drum grids, bassline patterns, sidechain amounts, kick/bass frequency separation, section lengths — for techno, house, trance, melodic techno, dnb, trap and ambient.

emotion-to-notes

Turns a mood ("hüzünlü", "euphoric", "tense") into scale, contour, velocity and density decisions, then verifies the written notes actually match the intended emotion.

melody-craft

Why generated melodies sound simple (the seven traps) and how to write ones that don't: motif development, tension notes, climax placement, question/answer phrasing — plus a feedback dictionary so "daha duygulu" or "çok yoğun" maps to concrete note edits instead of a regeneration.

arrangement-transitions

Risers, gasps, fills and impacts — and which of them each genre actually uses. Carries the measured rule that a drop only hits if the moment before it is smaller.

mastering-targets

Loudness per destination (Spotify −14 LUFS, Apple −16, club −6…−9) mapped to Live's meter scale, with section-contrast and kick-survival guardrails.

remix-and-reference

Reference-channel workflow (import muted, A/B by solo, level-match before judging) and the remix pipeline: analyze → separate stems → import → rebuild in the target genre.

sound-check

Pre-flight verification that every track actually makes sound before an arrangement is built on it — drum pad coverage, one-pass metering, and the decision tree for a track that reads silent.

Together they are why a one-line request ("make a techno track, master it for Spotify") comes out structured like the genre instead of generic MIDI.

How it works

Claude launches hellyee as a subprocess and talks to it over MCP. hellyee speaks OSC to AbletonOSC, a remote script running inside Live's own Python, which drives the Live Object Model.

Stock AbletonOSC exposes a lot, but not the browser, the master track, or arrangement clips. hellyee ships handlers that add all three, plus a patcher that installs them.


Install

1. Run the installer

If you have uv — no Python setup needed at all:

uvx hellyee setup

Otherwise:

pip install hellyee
hellyee setup
curl -LsSf https://astral.sh/uv/install.sh | sh     # macOS · Linux
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"   # Windows

uv downloads its own Python, so you never install or manage one.

hellyee setup downloads AbletonOSC, patches it with the browser / master / arrangement handlers, and writes your Claude config. It is idempotent — run it again any time. Use --client desktop for Claude Desktop, or --client both.

Want the audio features (hum-to-MIDI, voice commands)? They add ~380 MB, so they are opt-in:

pip install "hellyee[audio]"

2. Set up Live

This step is manual — Live has no API for enabling its own control surfaces.

  1. Quit and reopen Live. Remote Scripts are only scanned at startup.

  2. Open settings:

    • Live 12: Settings → Link, Tempo & MIDI

    • Live 11: Preferences → Link/Tempo/MIDI

    • Cmd + , on macOS · Ctrl + , on Windows

  3. In the Control Surface table, pick AbletonOSC in the first free row.

  4. Leave Input and Output as None — it communicates over the network, not MIDI ports.

  5. You should see AbletonOSC: Listening for OSC on port 11000 in Live's status bar.

Once only. Live remembers it.

3. The skills

hellyee setup installs the skills (see The skills) into .claude/skills/ next to your .mcp.json; Claude Code picks them up automatically. Worth reading yourself — together they are a condensed map of how tracks actually get made, and what goes wrong.

4. Check it

With Live open:

hellyee doctor     # connection, handlers, optional features
hellyee smoke      # full end-to-end test, cleans up after itself

smoke creates a real track, writes and quantizes notes, and loads an instrument, then deletes the track. Pass --keep to leave it in place.


Using it

Say what you want. Claude reads the set's state first, then acts.

"make a 4-bar house beat at 124 BPM"
"add a MIDI track called Bass and put Wavetable on it"
"write a rolling bassline in F minor, offbeat eighths"
"quantize that to 16ths at 0.7 strength so it still breathes"
"put an Auto Filter on the bass and close it down a bit"
"this lead is harsh — round off the highs and slow the attack"
"balance the mix, kick should sit on top"
"arrange this into a full track: intro, build, drop, breakdown, drop, outro"
"sweep the filter open across the last 8 bars before the drop"

Conventions worth knowing

Time is in beats. One 4/4 bar is 4 beats; a 16th note is 0.25.

Pitches use Live's display convention: C3 = 60. Standard MIDI notation calls that C4. hellyee follows Live so the note Claude writes matches the note you see.

Device parameters are set in the unit you mean, never raw. Live's raw values live on internal scales that are not what the UI shows — Auto Filter's Frequency runs 20–135 but reads as "265 Hz". So set_device_parameter takes hz=250 (solved against the device's own readout, correct on every device), display="1/4" for named settings, or percent= for unitless controls like Amount and Drive. It reports back the displayed value so you can confirm what actually happened.


Tools

Group

Tools

Connection

check_connection

Song

get_song_status · set_tempo · transport · set_playhead · set_loop · back_to_arranger · create_scene · fire_scene

Tracks

create_track · rename_track · delete_track · duplicate_track · set_mixer

Clips

create_clip · delete_clip · fire_clip · stop_clip · set_clip_properties · set_audio_clip · list_session_clips

Notes

get_clip_notes · add_notes · replace_clip_notes · clear_clip_notes · quantize_clip · apply_groove

Theory

get_scale_notes · get_chord_notes · snap_notes_to_scale · get_drum_map · get_drum_pads

Devices

list_track_devices · list_device_parameters · set_device_parameter · get_parameter_options · list_track_filters · delete_device

Browser

browser_categories · search_browser · load_device · load_device_by_uri

Mixing

measure_track_level · measure_tracks · get_master_meter · record_master · audition_instrument · compare_audio_files

Sends

list_return_tracks · get_track_sends · set_track_send · set_return_volume · list_return_devices · list_return_device_parameters · set_return_parameter · load_return_device

Master

list_master_devices · list_master_device_parameters · set_master_parameter · load_master_device

Arrangement

place_in_arrangement · get_arrangement_clips · refresh_arrangement_track · clear_arrangement_track · delete_arrangement_clip · show_arrangement_view · get_arrangement_length · render_arrangement

Automation

automate_clip · automate_arrangement · clear_clip_automation

Audio

notes_from_audio · transcribe_audio · analyze_audio_file · separate_stems · import_audio


Audio input

Claude's API does not accept audio, so audio is processed locally and reaches the model as text or JSON:

You provide

Processed with

Claude receives

A spoken command

Whisper

Text

A hummed melody

librosa.pyin pitch tracking

A note list

notes_from_audio is monophonic only — humming, single-note lines. It will not transcribe chords or a full mix; use a polyphonic model such as basic-pitch for that.

On Apple Silicon, pip install mlx-whisper makes transcription much faster; hellyee prefers it when present. The first run downloads a model (~500 MB).


Known limitations

Claude cannot hear. It can measure output levels through Live's meters and reason about frequency ranges, but it cannot judge tone. EQ and sound-design choices come from convention and measurement — the final call is your ears.

Third-party plugins are opaque. Live does not expose VST/AU parameters to the API until you expose them by hand. Serum, Vital and friends will load and play, but Claude sees one parameter: Device On. To unlock a plugin, hit Configure on its device header, click the knobs you want controllable, then exit Configure — those parameters then appear.

Metering runs at ~10 Hz. AbletonOSC processes on a 100 ms tick, so meters measure sustained level, not transient peaks.

Quantize is client-side. Notes are read, snapped in Python, written back. That is why strength exists — but it costs a round trip rather than being instant.

Automation must start in a session clip. Live only creates envelopes on session clips, so hellyee writes automation there and carries it into the arrangement when the clip is placed. To vary automation across sections, write several clip variants and place the right one in each.

Session clips override the arrangement. If a track has ever had a session clip fired, it ignores arrangement clips until Back to Arrangement is pressed. hellyee handles this, but it is worth knowing when something plays silently.

No undo grouping. Each operation is its own step in Live's undo history.


Development

hellyee/
  osc.py            OSC client — persistent socket, request/response matching
  core.py           Live operations as plain functions (no Claude dependency)
  music.py          scales, chords, quantization, key-aware spelling
  audio.py          audio → notes, speech → text
  mcp_server.py     MCP tool layer
  cli.py            connection tests and diagnostics
abletonosc_patch/
  browser.py        adds browser access to AbletonOSC
  master.py         adds master track + arrangement to AbletonOSC
  setup_cli.py      installer: download, patch, configure Claude
abletonosc_patch/
  → shipped inside the wheel as hellyee/_patch
.claude/skills/hellyee/
  SKILL.md          how to drive the tools; loaded by Claude Code
tests/
  fake_live.py      in-memory Live + OSC double; no Ableton needed
  test_automate_arrangement.py

Working on hellyee itself:

git clone https://github.com/guvense/hellyee.git && cd hellyee
uv sync --extra audio          # or: pip install -e ".[audio]"
hellyee setup                  # re-applies the patch from your working copy

core.py holds the logic and knows nothing about Claude, so it is testable on its own and drivable from any front end. mcp_server.py is a thin layer of tool definitions over it.

That is what lets the regression suite run with no Ableton attached: tests/fake_live.py answers the same OSC addresses the real patch does, and reproduces the two behaviours that bugs hide behind — an out-of-range clip slot raising Index out of range, and insert_step accumulating rather than replacing. Stdlib unittest, no extra dependency:

python -m unittest discover -s tests -t .

⚠️ Editing anything in abletonosc_patch/? Those files run inside Live, which embeds Python 3.7. Walrus operators (:=), builtin generics (list[str]) and X | Y unions will not parse. The patcher does not check this for you — but python -c "import ast; ast.parse(open('file').read(), feature_version=(3,7))" does.

Hot reload. Editing an already-loaded handler does not need a Live restart — send /live/api/reload and it picks up the change in seconds. Adding a new module does require a restart, which is why browser and master handlers each live in one file.

Contributing

Issues and pull requests welcome. Useful directions:

  • Polyphonic audio-to-MIDI (basic-pitch)

  • Windows testing (developed on macOS)

  • Genre templates and arrangement patterns for the skill

Credits

Built on AbletonOSC by Daniel Jones, which does the hard work of exposing Live's Object Model over OSC.

License

MIT

hellyee

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    MCP server for controlling Ableton Live, enabling AI assistants to interact with Live sessions through tools for track/clip/scene management, playback control, and device parameter adjustments.
    48
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that exposes Ableton Live control (session state, transport, tracks, devices, clips, MIDI note editing) as tools for LLM agents, enabling natural language manipulation of a Live session.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/guvense/hellyee'

If you have feedback or need assistance with the MCP directory API, please join our Discord server