#PyTheory for Live: Music Theory for Humans

1 messages · Page 1 of 1 (latest)

vivid topaz
#

pytheory for Live — music theory tools, powered by actual Python running inside the Extension Host 🎵🐍

I've been building an extension that embeds pytheory ("Music Theory for Humans") into Live — and the fun part is how: it's real CPython compiled to WebAssembly (Pyodide), running inside the Extension Host. No Python install, nothing to set up — the interpreter, numpy, scipy, and the library all ship inside the .ablx.

What it does (25 context-menu actions across 6 scopes):

🔍 Analysis — right-click a MIDI clip for key detection, chord detection with Roman numerals + cadence labeling, melody analysis (scale degrees, passing/neighbor tones), next-chord suggestions, and chord substitutions (tritone subs, borrowed chords…)

🎼 Notation — engraved sheet music rendered right in a dialog, plus LilyPond source export

🎸 Guitar tabs — fingering charts for your clip's chords + full fretboard scale maps, for guitar/ukulele/bass/mandolin/banjo

Transforms — harmonize, arpeggiate, conform to scale, scale-degree-aware transposition, smooth voice-leading, negative harmony, invert, retrograde

🎹 Generators — chord progressions (named, Roman numerals, chord symbols like Am7 D7 Gmaj7, or a random walk), scales, melodies, basslines (incl. walking bass), 100 drum patterns, and a one-click Song Sketch that builds chords + bass + melody + drums at a scene

🎧 Audio — key & chord detection on audio clips, audio-to-MIDI transcription, sample tuning (root pitch + cents + transpose-to-Set-key), and rendering MIDI clips to audio with pytheory's own synth engine

Forms prefill from the Set's key/scale metadata, which turned out to be a lovely API touch. 👏

Install: grab the .ablx from the latest release and drop it on Settings → Extensions:
https://github.com/kennethreitz/ableton-pytheory/releases/latest

Source is MIT: https://github.com/kennethreitz/ableton-pytheory

For the Ableton folks — a few notes from the trenches: the vm sandbox's lack of dynamic import() plus the permission model denying worker_threads (and not propagating allow-lists to child processes) made hosting a WASM interpreter an adventure 😄; freshly created tracks briefly report zero clip slots (I poll); and with 17 items on the MIDI clip menu I would love submenu support in registerContextMenuAction. Happy to share more feedback.

Would love ears + bug reports!

unkempt widget
#

This is like just a week since ableton released sdk and you pulled up that.. this is so impressive im so curious to see what will come next month lol

coarse ridge
lost briar
vivid topaz
#

May need some tuning.

#

GitHub issues are welcome, but not necessary

vivid topaz
#

🎹 PyTheory for Ableton — v0.2.0 is out

This one pulls the new harmony tools from PyTheory 0.53 straight into Live. Three things:

🪞 Negative Harmony now runs through PyTheory's own engine and tells you the bridge chord — the negative dominant that links the two harmonic families (in C, that's Fm). Mirror a clip, see the axis and the pivot.

🎼 Generate Raga… (new) — pick a raga + your Sa and it lays the aroha (and avaroha) out as a MIDI clip. 36 ragas across all ten thaats — Yaman, Bhairav, Bhairavi, Todi, Malkauns, Bhimpalasi, Darbari, and more.

🧭 Suggest Next Chord is now harmony-aware. Every suggestion is tagged tonic / subdominant / dominant, the key's diatonic chords are grouped by function so you can see which ones are interchangeable, and a "Modulate (circle of fifths)" panel shows the two neighbouring keys a fifth away and the chords they share as pivots.

Bundles PyTheory 0.53.1.

Grab it: download pytheory-0.2.0.ablx from the release and open it in Ableton Live 12 (Extensions enabled in prefs).
https://github.com/kennethreitz/ableton-pytheory/releases/tag/v0.2.0

GitHub

PyTheory inside Ableton Live — this release brings the new harmony tools from PyTheory 0.53 into the extension.
What's new
Negative Harmony now routes through PyTheory's own code path. Each...

vivid topaz
#

🎛️ PyTheory for Ableton — v0.3.0 is out

Apply Effects on any audio clip. Right-click any audio clip → Apply Effects… and run it through PyTheory's effect chain onto a fresh audio track. The dialog is sliders (with live value readouts) for everything PyTheory offers:

🌫️ Reverb — mix + space: algorithmic, or any of the 7 convolution IRs (Taj Mahal, cathedral, plate, spring, cave, parking garage, canyon)
🔁 Delay — mix + feedback
🎚️ Lowpass / Highpass — cutoff + Q
🔥 Distortion — mix + drive
🌊 Chorus — mix

Set any mix to 0 to skip it. Stereo is preserved, the audio is resampled to 44.1 kHz when needed, and reverb/delay tails ring out past the end of the clip. Works on WAV clips directly, and renders other formats / arrangement clips first.

Bundles PyTheory 0.53.1.

Grab it: download pytheory-0.3.0.ablx from the release and open it in Ableton Live 12 (Extensions enabled in prefs).
https://github.com/kennethreitz/ableton-pytheory/releases/tag/v0.3.0

GitHub

What's new
Apply Effects on any audio clip. Right-click an audio clip → Apply Effects… and run it through pytheory's effect chain onto a new audio track. A dialog of sliders (with live valu...

lost briar
#

Nice one man, i think it applies a little bit of delay on the processed track when you apply any effects but it´s a good addition for sure, thank you so much!

vivid topaz
#

I will look into that, thank you.

vivid topaz
#

Is delay selected in the dialogue?

#

Might need to add more sensible defaults