livepilot 1.4.1 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp.json +9 -0
- package/CHANGELOG.md +29 -0
- package/README.md +31 -29
- package/mcp_server/memory/technique_store.py +14 -19
- package/mcp_server/tools/arrangement.py +1 -0
- package/mcp_server/tools/browser.py +4 -0
- package/mcp_server/tools/clips.py +1 -0
- package/mcp_server/tools/notes.py +1 -0
- package/mcp_server/tools/tracks.py +1 -0
- package/package.json +1 -1
- package/plugin/plugin.json +1 -1
- package/plugin/skills/livepilot-core/references/device-atlas/00-index.md +110 -0
- package/plugin/skills/livepilot-core/references/device-atlas/distortion-and-character.md +687 -0
- package/plugin/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +753 -0
- package/plugin/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +525 -0
- package/plugin/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +402 -0
- package/plugin/skills/livepilot-core/references/device-atlas/midi-tools.md +963 -0
- package/plugin/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +874 -0
- package/plugin/skills/livepilot-core/references/device-atlas/plugins-synths.md +2012 -0
- package/plugin/skills/livepilot-core/references/device-atlas/presets-by-vibe.md +727 -0
- package/plugin/skills/livepilot-core/references/device-atlas/samples-and-irs.md +598 -0
- package/plugin/skills/livepilot-core/references/device-atlas/space-and-depth.md +571 -0
- package/plugin/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +714 -0
- package/plugin/skills/livepilot-core/references/device-atlas/synths-m4l.md +730 -0
- package/plugin/skills/livepilot-core/references/device-atlas/synths-native.md +953 -0
- package/plugin/skills/livepilot-core/references/device-atlas/utility-and-workflow.md +843 -0
- package/remote_script/LivePilot/arrangement.py +2 -1
- package/remote_script/LivePilot/browser.py +91 -8
- package/remote_script/LivePilot/devices.py +164 -34
- package/remote_script/LivePilot/server.py +9 -2
- package/remote_script/LivePilot/transport.py +4 -2
- package/remote_script/LivePilot/utils.py +7 -2
package/.mcp.json
ADDED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.4.4] — 2026-03-18
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
- **`find_and_load_device` breadth-first search** — Pass 0 instant top-level check finds raw devices like "Operator", "Auto Filter", "Limiter" in O(50) instead of O(thousands). Falls back to breadth-first recursive search for nested items
|
|
7
|
+
- **Better "no devices" error message** — `get_device_parameters` on an empty track now says "Track 'BASS' has no devices — load an instrument or effect first" instead of the confusing "Device index 0 out of range (0..-1)"
|
|
8
|
+
|
|
9
|
+
## [1.4.3] — 2026-03-18
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
- **`find_and_load_device` now finds raw instruments** — two-pass search: exact name match first (finds "Operator" before "Hello Operator.adg"), then partial match for M4L devices (e.g., "Kickster" matches "trnr.Kickster")
|
|
13
|
+
- **Browser now searches plugins and Max for Live categories** — added `browser.plugins` and `browser.max_for_live` to all browser operations. AU/VST/AUv3 plugins (Moog, Drambo, BYOD, etc.) are now discoverable and loadable via `find_and_load_device` and `search_browser("plugins")`
|
|
14
|
+
- **`load_browser_item` handles Sounds FileId URIs** — URIs containing internal FileId references (e.g., `query:Sounds#Pad:FileId_6343`) now trigger a deep URI search instead of failing with "not found"
|
|
15
|
+
- **`load_browser_item` URI category prioritization** — parses category hint from URI (e.g., `query:Drums#...` searches drums first), reducing search time from 10K+ iterations to under 1K for most loads
|
|
16
|
+
- **Iteration limit increased** — `load_browser_item` and `load_device_by_uri` now search up to 50K iterations (was 10K), preventing timeouts on large browser categories
|
|
17
|
+
- **Case-insensitive parameter matching** — `set_device_parameter` and `batch_set_parameters` now try exact match first, then case-insensitive fallback. Error messages list available parameter names for debugging
|
|
18
|
+
- **Track index validation relaxed** — `_validate_track_index` in arrangement, browser, clips, notes, and tracks MCP tools now allows negative indices for return tracks (-1=A, -2=B) and -1000 for master, consistent with the remote script's `get_track()` behavior
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- `search_browser("plugins")` — browse all installed AU/VST/AUv3 plugins
|
|
22
|
+
- `search_browser("max_for_live")` — browse all M4L devices directly
|
|
23
|
+
- `search_browser("clips")` and `search_browser("current_project")` — additional browser categories
|
|
24
|
+
|
|
25
|
+
## [1.4.2] — 2026-03-18
|
|
26
|
+
|
|
27
|
+
### Fixes
|
|
28
|
+
- `memory_recall` multi-word search now works — queries are split into words and matched across name, tags, and qualities (was treating entire query as single substring)
|
|
29
|
+
- `set_session_loop` returns correct loop state — echoes requested value instead of reading stale LOM property
|
|
30
|
+
- `jump_to_time` returns correct position — echoes requested beat_time instead of reading stale `current_song_time`
|
|
31
|
+
|
|
3
32
|
## [1.4.1] — 2026-03-18
|
|
4
33
|
|
|
5
34
|
### Fixes
|
package/README.md
CHANGED
|
@@ -19,33 +19,41 @@ Every command goes through Ableton's official Live Object Model API. No hacks, n
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## Agent & Technique Memory
|
|
23
23
|
|
|
24
|
-
LivePilot
|
|
24
|
+
LivePilot is stateless by default — 104 tools, deterministic execution, no hidden context. The agent layer adds **persistent state** on top: a technique memory system that stores production decisions as typed, searchable, replayable data structures with structured metadata.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
### How it works
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
The memory system stores five technique types: `beat_pattern`, `device_chain`, `mix_template`, `preference`, and `browser_pin`. Each technique consists of three layers:
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
| Layer | Contents | Purpose |
|
|
31
|
+
|-------|----------|---------|
|
|
32
|
+
| **Identity** | UUID, name, type, tags, timestamps, rating, replay count | Indexing, filtering, sorting |
|
|
33
|
+
| **Qualities** | Structured analysis — summary, mood, genre tags, rhythm feel, harmonic character, sonic texture, production notes, reference points | Search ranking, agent context at decision time |
|
|
34
|
+
| **Payload** | Raw data — MIDI notes, device params, tempo, kit URIs, send levels | Exact replay or adaptation |
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
2. **Tell the agent to save it** — "remember this groove" / "save this reverb chain"
|
|
34
|
-
3. **The agent writes a stylistic analysis** — not just raw MIDI data, but *what makes it work*: the rhythmic feel, the sonic texture, the mood, what it pairs with, what artists it evokes
|
|
35
|
-
4. **Your library grows** — rate and favorite the best techniques, tag them by genre or mood, build categories
|
|
36
|
-
5. **The agent develops taste** — next time you say "make me a beat", it checks your library, reads your tendencies, and creates something new that sounds like you
|
|
36
|
+
When you save a technique, the agent collects raw data from Ableton using existing tools (`get_notes`, `get_device_parameters`, etc.) and writes a structured qualities analysis. The qualities are what make search useful — `memory_recall(query="dark heavy 808")` matches against mood, genre tags, sonic texture, and summary fields, not just names.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
### Three operating modes
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
| Mode | Trigger | Behavior |
|
|
41
|
+
|------|---------|----------|
|
|
42
|
+
| **Informed** (default) | Any creative task | Agent calls `memory_recall`, reads top results' qualities, lets them influence decisions (kit selection, parameter ranges, rhythmic density) without copying |
|
|
43
|
+
| **Fresh** | "ignore my history" / "something new" | Agent skips memory entirely — uses only the shipped reference corpus and its own knowledge |
|
|
44
|
+
| **Explicit recall** | "use that boom bap beat" / "load my reverb chain" | Direct retrieval via `memory_get` → `memory_replay` with `adapt=false` (exact) or `adapt=true` (variation) |
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
- **Fresh** — "ignore my history" / "something completely new" — blank slate, pure musical knowledge, zero influence from saved techniques
|
|
44
|
-
- **Explicit recall** — "use that boom bap beat I saved" — direct retrieval and replay
|
|
46
|
+
The agent consults memory by default but never constrains itself to it. Override is always one sentence away.
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
### Replay architecture
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
`memory_replay` does not execute Ableton commands directly. It returns a structured plan — an ordered list of tool calls (`search_browser`, `load_browser_item`, `create_clip`, `add_notes`, etc.) that the agent then executes through the existing MCP tools. This keeps the memory system decoupled from the Ableton connection and makes replay logic testable without a running DAW.
|
|
51
|
+
|
|
52
|
+
### Building the corpus over time
|
|
53
|
+
|
|
54
|
+
The shipped plugin includes a reference corpus (~2,700 lines): genre-specific drum patterns, chord voicings, sound design recipes, mixing templates, and workflow patterns. This is the baseline — the agent is competent from the first session.
|
|
55
|
+
|
|
56
|
+
The technique memory extends this with user-specific data. As you save techniques, rate them, and tag them, the library becomes a structured representation of your production preferences. The agent reads across saved qualities at decision time — not to copy stored patterns, but to understand tendencies: swing ranges, kit preferences, harmonic language, arrangement density. New output is always generated; the memory informs the generation.
|
|
49
57
|
|
|
50
58
|
---
|
|
51
59
|
|
|
@@ -269,7 +277,7 @@ npx -y github:dreamrec/LivePilot --status
|
|
|
269
277
|
|
|
270
278
|
## Claude Code Plugin
|
|
271
279
|
|
|
272
|
-
The plugin
|
|
280
|
+
The plugin adds a skill, an autonomous agent, and 5 slash commands on top of the MCP tools.
|
|
273
281
|
|
|
274
282
|
```bash
|
|
275
283
|
claude plugin add github:dreamrec/LivePilot/plugin
|
|
@@ -283,23 +291,17 @@ claude plugin add github:dreamrec/LivePilot/plugin
|
|
|
283
291
|
| `/beat` | Guided beat creation — genre, tempo, instrumentation |
|
|
284
292
|
| `/mix` | Mixing assistant — levels, panning, sends |
|
|
285
293
|
| `/sounddesign` | Sound design workflow — instruments, effects, presets |
|
|
286
|
-
| `/memory` | Browse, search, and manage your
|
|
287
|
-
|
|
288
|
-
### The Producer Agent
|
|
289
|
-
|
|
290
|
-
The heart of the plugin. An autonomous agent that builds tracks from high-level descriptions like *"Make me a 126 BPM rominimal track in D minor with hypnotic percussion"*. It handles the full pipeline: planning the arrangement, creating tracks, loading instruments, programming patterns, adding effects, and mixing — with mandatory health checks to make sure every track actually produces sound.
|
|
291
|
-
|
|
292
|
-
What makes it different from a generic AI with tools is **what it knows**. The agent ships with a deep reference corpus — genre-specific drum patterns, chord voicings, sound design recipes, mixing templates, song structures — so it doesn't start from zero every time. It knows that a boom bap kick lands on beat 1 and the "and" of 2, that a Drum Rack needs a kit preset (not an empty shell), that a Saturator with Drive at 0 is a pass-through doing nothing.
|
|
294
|
+
| `/memory` | Browse, search, and manage your technique library |
|
|
293
295
|
|
|
294
|
-
|
|
296
|
+
### Producer Agent
|
|
295
297
|
|
|
296
|
-
|
|
298
|
+
Autonomous agent that executes multi-step production tasks from high-level descriptions. Handles the full pipeline: session planning, track creation, instrument loading, MIDI programming, effect configuration, and mixing — with mandatory health checks between each stage to verify every track produces audible output.
|
|
297
299
|
|
|
298
|
-
|
|
300
|
+
The agent ships with a 2,700-line reference corpus covering genre-specific drum patterns, chord voicings, sound design parameter recipes, mixing templates, and song structures. It consults the technique memory by default (see above), and can be overridden to work from a clean slate.
|
|
299
301
|
|
|
300
302
|
### Core Skill
|
|
301
303
|
|
|
302
|
-
|
|
304
|
+
`livepilot-core` encodes operational discipline for the 104 tools: read state before writing, verify after every mutation, validate instrument loading (empty Drum Racks produce silence), never hallucinate device names (always `search_browser` first), use negative track indices for return tracks. Without it, an LLM with access to the tools will produce silent tracks and load wrong devices.
|
|
303
305
|
|
|
304
306
|
---
|
|
305
307
|
|
|
@@ -124,19 +124,13 @@ class TechniqueStore:
|
|
|
124
124
|
tag_set = set(tags)
|
|
125
125
|
results = [t for t in results if tag_set & set(t.get("tags", []))]
|
|
126
126
|
|
|
127
|
-
# text search
|
|
127
|
+
# text search — all query words must appear somewhere in the technique
|
|
128
128
|
if query:
|
|
129
|
-
|
|
129
|
+
words = query.lower().split()
|
|
130
130
|
filtered = []
|
|
131
131
|
for t in results:
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
continue
|
|
135
|
-
if any(q in tag.lower() for tag in t.get("tags", [])):
|
|
136
|
-
filtered.append(t)
|
|
137
|
-
continue
|
|
138
|
-
# search all qualities fields
|
|
139
|
-
if self._matches_qualities(t.get("qualities", {}), q):
|
|
132
|
+
searchable = self._searchable_text(t)
|
|
133
|
+
if all(w in searchable for w in words):
|
|
140
134
|
filtered.append(t)
|
|
141
135
|
results = filtered
|
|
142
136
|
|
|
@@ -255,15 +249,16 @@ class TechniqueStore:
|
|
|
255
249
|
raise ValueError(f"NOT_FOUND: technique '{technique_id}' does not exist")
|
|
256
250
|
|
|
257
251
|
@staticmethod
|
|
258
|
-
def
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
252
|
+
def _searchable_text(t: dict) -> str:
|
|
253
|
+
"""Build a single lowercase string from all searchable fields."""
|
|
254
|
+
parts = [t.get("name", "")]
|
|
255
|
+
parts.extend(t.get("tags", []))
|
|
256
|
+
for v in t.get("qualities", {}).values():
|
|
257
|
+
if isinstance(v, str):
|
|
258
|
+
parts.append(v)
|
|
259
|
+
elif isinstance(v, list):
|
|
260
|
+
parts.extend(str(item) for item in v)
|
|
261
|
+
return " ".join(parts).lower()
|
|
267
262
|
|
|
268
263
|
@staticmethod
|
|
269
264
|
def _multi_sort(results: list[dict]) -> list[dict]:
|
|
@@ -18,6 +18,7 @@ def _get_ableton(ctx: Context):
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def _validate_track_index(track_index: int):
|
|
21
|
+
"""Validate track index. Must be >= 0 for regular tracks."""
|
|
21
22
|
if track_index < 0:
|
|
22
23
|
raise ValueError("track_index must be >= 0")
|
|
23
24
|
|
|
@@ -49,6 +50,9 @@ def search_browser(
|
|
|
49
50
|
) -> dict:
|
|
50
51
|
"""Search the browser tree under a path, optionally filtering by name.
|
|
51
52
|
|
|
53
|
+
path: top-level category to search under. Valid categories:
|
|
54
|
+
instruments, audio_effects, midi_effects, sounds, drums,
|
|
55
|
+
samples, packs, user_library, plugins, max_for_live, clips
|
|
52
56
|
max_depth: how deep to recurse into subfolders (default 8)
|
|
53
57
|
max_results: maximum number of results to return (default 100)
|
|
54
58
|
"""
|
package/package.json
CHANGED
package/plugin/plugin.json
CHANGED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Device Atlas — Master Index
|
|
2
|
+
|
|
3
|
+
> Last updated: 2026-03-18 | 10,600+ lines | 330+ devices | 139 drum kits | 350+ IRs | 1,850+ presets mapped
|
|
4
|
+
|
|
5
|
+
## How to Use This Atlas
|
|
6
|
+
|
|
7
|
+
**Agent loading strategy:**
|
|
8
|
+
1. Read this index first to understand what's available
|
|
9
|
+
2. Based on the user's request, load only the relevant 1-2 category files
|
|
10
|
+
3. For compound requests ("add compression and reverb"), load both relevant files
|
|
11
|
+
4. For vibe-based requests ("make it darker"), load `presets-by-vibe.md`
|
|
12
|
+
5. Always verify device existence via `search_browser` before loading — the atlas tells you WHAT and WHY, the browser confirms it EXISTS
|
|
13
|
+
|
|
14
|
+
## Atlas Files
|
|
15
|
+
|
|
16
|
+
### Sound Processing
|
|
17
|
+
|
|
18
|
+
| File | Scope | Devices | Lines |
|
|
19
|
+
|------|-------|---------|-------|
|
|
20
|
+
| [dynamics-and-punch.md](dynamics-and-punch.md) | Compressors, limiters, gates, transient shapers | 21 (6 native + 15 M4L) | 525 |
|
|
21
|
+
| [distortion-and-character.md](distortion-and-character.md) | Saturators, fuzz, amp sims, tape, IRs | 17 + 350 IRs | 687 |
|
|
22
|
+
| [space-and-depth.md](space-and-depth.md) | Reverbs, delays, diffusion, spatial | 19 (12 native + 7 M4L) | 571 |
|
|
23
|
+
| [movement-and-modulation.md](movement-and-modulation.md) | Chorus, phaser, LFOs, tremolo, auto-pan | 21 (5 native + 16 M4L) | 874 |
|
|
24
|
+
| [spectral-and-weird.md](spectral-and-weird.md) | Granular, glitch, spectral, experimental | 40 (5 native + 35 M4L) | 714 |
|
|
25
|
+
| [eq-and-filtering.md](eq-and-filtering.md) | EQs, filters, resonators, vocoder | 13 (8 native + 5 M4L) | 402 |
|
|
26
|
+
|
|
27
|
+
### Sound Generation
|
|
28
|
+
|
|
29
|
+
| File | Scope | Devices | Lines |
|
|
30
|
+
|------|-------|---------|-------|
|
|
31
|
+
| [synths-native.md](synths-native.md) | All 11 Ableton instruments in depth | 11 native | 953 |
|
|
32
|
+
| [synths-m4l.md](synths-m4l.md) | Fors, Mutable Instruments, Sonus Dept, Spektro, etc. | 34 M4L | 730 |
|
|
33
|
+
| [plugins-synths.md](plugins-synths.md) | AU/VST plugin synths, samplers, drum machines, effects, MIDI tools | 49 entries (85+ plugins) | 1,300+ |
|
|
34
|
+
| [drums-and-percussion.md](drums-and-percussion.md) | Drum Rack, DS synths, kits by genre, M4L drum tools | 18 + 139 kits | 753 |
|
|
35
|
+
|
|
36
|
+
### MIDI & Composition
|
|
37
|
+
|
|
38
|
+
| File | Scope | Devices | Lines |
|
|
39
|
+
|------|-------|---------|-------|
|
|
40
|
+
| [midi-tools.md](midi-tools.md) | Arpeggiators, chord tools, sequencers, generative | 45 (13 native + 32 M4L) | 963 |
|
|
41
|
+
|
|
42
|
+
### Workflow & Utility
|
|
43
|
+
|
|
44
|
+
| File | Scope | Devices | Lines |
|
|
45
|
+
|------|-------|---------|-------|
|
|
46
|
+
| [utility-and-workflow.md](utility-and-workflow.md) | Meters, mapping, routing, QOL tools | 42 (3 native + 39 M4L) | 843 |
|
|
47
|
+
|
|
48
|
+
### Cross-References
|
|
49
|
+
|
|
50
|
+
| File | Scope | Lines |
|
|
51
|
+
|------|-------|-------|
|
|
52
|
+
| [samples-and-irs.md](samples-and-irs.md) | 3,889 samples + Encoder Audio Mojo IR guide | 597 |
|
|
53
|
+
| [presets-by-vibe.md](presets-by-vibe.md) | 14 vibe categories mapping natural language → devices/presets | 727 |
|
|
54
|
+
|
|
55
|
+
## Quick Routing Guide
|
|
56
|
+
|
|
57
|
+
**User says something about...** → **Load this file:**
|
|
58
|
+
|
|
59
|
+
| Request Pattern | Primary File | Secondary File |
|
|
60
|
+
|----------------|-------------|----------------|
|
|
61
|
+
| "make it punchier / harder / tighter" | dynamics-and-punch | distortion-and-character |
|
|
62
|
+
| "add warmth / grit / saturation / fuzz" | distortion-and-character | dynamics-and-punch |
|
|
63
|
+
| "more space / depth / reverb / delay / echo" | space-and-depth | — |
|
|
64
|
+
| "add movement / modulation / wobble / pulse" | movement-and-modulation | — |
|
|
65
|
+
| "glitch / granular / freeze / spectral / weird" | spectral-and-weird | — |
|
|
66
|
+
| "EQ / filter / tone / brighten / darken" | eq-and-filtering | — |
|
|
67
|
+
| "I need a synth / bass / pad / lead" | synths-native | synths-m4l, plugins-synths |
|
|
68
|
+
| "Moog / Drambo / granular / modular / DX7 / sampler plugin" | plugins-synths | — |
|
|
69
|
+
| "drums / beats / kick / snare / hat" | drums-and-percussion | — |
|
|
70
|
+
| "arpeggio / chord / sequence / generative / random" | midi-tools | — |
|
|
71
|
+
| "meter / gain / routing / utility / organize" | utility-and-workflow | — |
|
|
72
|
+
| "dark / ethereal / aggressive / lo-fi / cinematic" | presets-by-vibe | (then load the relevant device file) |
|
|
73
|
+
| "sample / one-shot / loop / IR / convolution" | samples-and-irs | — |
|
|
74
|
+
| "what M4L devices do I have for X" | (search relevant category) | utility-and-workflow |
|
|
75
|
+
|
|
76
|
+
## Scope Notes
|
|
77
|
+
|
|
78
|
+
- **[universal]** files: synths-native, eq-and-filtering (native sections), dynamics-and-punch (native sections), space-and-depth (native sections), movement-and-modulation (native sections)
|
|
79
|
+
- **[user-library]** files: All M4L device entries, drums-and-percussion (kit guide), samples-and-irs, presets-by-vibe, utility-and-workflow (M4L sections), synths-m4l, spectral-and-weird (M4L sections)
|
|
80
|
+
- Always `search_browser` to verify M4L device availability before attempting to load
|
|
81
|
+
- The atlas is a strong hint system, not a guarantee — when in doubt, discover via `get_device_parameters`
|
|
82
|
+
|
|
83
|
+
## M4L Collection Mapping
|
|
84
|
+
|
|
85
|
+
| Collection | Location in User Library | Atlas Coverage |
|
|
86
|
+
|-----------|------------------------|----------------|
|
|
87
|
+
| CLX_01 (QOL GUI) | MAX MONTY/_CLX_01 | utility-and-workflow |
|
|
88
|
+
| CLX_02 (FX) | MAX MONTY/_CLX_02 | dynamics, distortion, space, eq, movement |
|
|
89
|
+
| CLX_03 (MIDI) | MAX MONTY/_CLX_03 | midi-tools |
|
|
90
|
+
| CLX_04 (GEN) | MAX MONTY/_CLX_04 | spectral-and-weird, synths-m4l |
|
|
91
|
+
| CLX_05 (MOD) | MAX MONTY/_CLX_05 | movement-and-modulation |
|
|
92
|
+
| Fors | MAX MONTY/M4L_fors | synths-m4l, space-and-depth |
|
|
93
|
+
| Mutable Instruments | MAX MONTY/M4L_Mutable Instruments | synths-m4l, midi-tools |
|
|
94
|
+
| Sonus Dept | MAX MONTY/M4L_Sonus Dept | synths-m4l, spectral-and-weird |
|
|
95
|
+
| Confetti | MAX MONTY/M4L_Confetti | spectral-and-weird |
|
|
96
|
+
| J74 | MAX MONTY/M4L_J74 | midi-tools |
|
|
97
|
+
| Isotonik | MAX MONTY/M4L_Isotonik Studios | spectral-and-weird |
|
|
98
|
+
| Altar of Wisdom | MAX MONTY/M4L_Altar of Wisdom | spectral-and-weird |
|
|
99
|
+
| Oscilloscopemusic | MAX MONTY/M4L_Oscilloscopemusic | spectral-and-weird |
|
|
100
|
+
| Soundmanufacture | MAX MONTY/M4L_Soundmanufacture | midi-tools |
|
|
101
|
+
| Robert Henke | MAX MONTY/Robert Henke | utility-and-workflow, spectral-and-weird |
|
|
102
|
+
| Suzuki Kentaro | MAX MONTY/M4L_Suzuki Kentaro | utility-and-workflow |
|
|
103
|
+
| trnr | MAX MONTY/m4l_2024/_CLX_02/trnr | drums-and-percussion, distortion-and-character |
|
|
104
|
+
| pATCHES | MAX MONTY/M4L_pATCHES | utility-and-workflow |
|
|
105
|
+
| S8JFOU | MAX MONTY/M4L_S8JFOU | utility-and-workflow |
|
|
106
|
+
| alexkid | MAX MONTY/M4L_alexkid | utility-and-workflow |
|
|
107
|
+
| Slink | MAX MONTY/M4L_Slink Devices | movement-and-modulation |
|
|
108
|
+
| Iris | MAX MONTY/rem4llives | movement-and-modulation |
|
|
109
|
+
| All MIDI Tools | MAX MONTY/2024_august | midi-tools |
|
|
110
|
+
| Encoder Audio Mojo | MAX MONTY/_CLX_02/Encoder Audio Mojo | distortion-and-character, samples-and-irs |
|