livepilot 1.16.0 → 1.16.1

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +75 -5
  2. package/README.md +11 -11
  3. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  4. package/m4l_device/livepilot_bridge.js +1 -1
  5. package/mcp_server/__init__.py +1 -1
  6. package/mcp_server/atlas/enrichments/audio_effects/pitch_hack.yaml +61 -0
  7. package/mcp_server/atlas/enrichments/audio_effects/pitchloop89.yaml +111 -0
  8. package/mcp_server/atlas/enrichments/audio_effects/re_enveloper.yaml +51 -0
  9. package/mcp_server/atlas/enrichments/audio_effects/snipper.yaml +36 -0
  10. package/mcp_server/atlas/enrichments/audio_effects/spectral_blur.yaml +64 -0
  11. package/mcp_server/atlas/enrichments/instruments/bell_tower.yaml +37 -0
  12. package/mcp_server/atlas/enrichments/instruments/granulator_iii.yaml +124 -0
  13. package/mcp_server/atlas/enrichments/instruments/harmonic_drone_generator.yaml +83 -0
  14. package/mcp_server/atlas/enrichments/instruments/impulse.yaml +47 -0
  15. package/mcp_server/atlas/enrichments/instruments/sting_iftah.yaml +44 -0
  16. package/mcp_server/atlas/enrichments/midi_effects/expressive_chords.yaml +38 -0
  17. package/mcp_server/atlas/enrichments/midi_effects/filler.yaml +32 -0
  18. package/mcp_server/atlas/enrichments/midi_effects/microtuner.yaml +83 -0
  19. package/mcp_server/atlas/enrichments/midi_effects/patterns_iftah.yaml +38 -0
  20. package/mcp_server/atlas/enrichments/midi_effects/phase_pattern.yaml +51 -0
  21. package/mcp_server/atlas/enrichments/midi_effects/polyrhythm.yaml +46 -0
  22. package/mcp_server/atlas/enrichments/midi_effects/retrigger.yaml +40 -0
  23. package/mcp_server/atlas/enrichments/midi_effects/slice_shuffler.yaml +39 -0
  24. package/mcp_server/atlas/enrichments/midi_effects/sq_sequencer.yaml +39 -0
  25. package/mcp_server/atlas/enrichments/midi_effects/stages.yaml +38 -0
  26. package/mcp_server/atlas/enrichments/utility/arrangement_looper.yaml +31 -0
  27. package/mcp_server/atlas/enrichments/utility/cv_clock_in.yaml +25 -0
  28. package/mcp_server/atlas/enrichments/utility/cv_clock_out.yaml +25 -0
  29. package/mcp_server/atlas/enrichments/utility/cv_envelope_follower.yaml +38 -0
  30. package/mcp_server/atlas/enrichments/utility/cv_in.yaml +26 -0
  31. package/mcp_server/atlas/enrichments/utility/cv_instrument.yaml +34 -0
  32. package/mcp_server/atlas/enrichments/utility/cv_lfo.yaml +38 -0
  33. package/mcp_server/atlas/enrichments/utility/cv_shaper.yaml +35 -0
  34. package/mcp_server/atlas/enrichments/utility/cv_triggers.yaml +26 -0
  35. package/mcp_server/atlas/enrichments/utility/cv_utility.yaml +37 -0
  36. package/mcp_server/atlas/enrichments/utility/performer.yaml +36 -0
  37. package/mcp_server/atlas/enrichments/utility/prearranger.yaml +36 -0
  38. package/mcp_server/atlas/enrichments/utility/rotating_rhythm_generator.yaml +35 -0
  39. package/mcp_server/atlas/enrichments/utility/surround_panner.yaml +40 -0
  40. package/mcp_server/atlas/enrichments/utility/variations.yaml +40 -0
  41. package/mcp_server/atlas/enrichments/utility/vector_map.yaml +36 -0
  42. package/mcp_server/sample_engine/tools.py +50 -4
  43. package/mcp_server/server.py +18 -6
  44. package/mcp_server/splice_client/client.py +90 -18
  45. package/mcp_server/splice_client/http_bridge.py +101 -28
  46. package/mcp_server/splice_client/models.py +12 -0
  47. package/mcp_server/tools/analyzer.py +150 -1
  48. package/package.json +2 -2
  49. package/remote_script/LivePilot/__init__.py +1 -1
  50. package/server.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,10 +1,80 @@
1
1
  # Changelog
2
2
 
3
- ## 1.16.0Villalobos session bug batch + Splice plan model (April 22 2026)
3
+ ## 1.16.1Post-publish live-verification bug sweep (April 22 2026)
4
+
5
+ Three rounds of live verification after 1.16.0 shipped caught five
6
+ runtime bugs that unit tests missed. All unit-test-clean paths that
7
+ failed on first live invocation against a running Splice desktop +
8
+ Ableton 12.4 are now both fixed and guarded by source-grep regression
9
+ tests. Plus one new tool and two observations addressed.
10
+
11
+ **Tool count**: 421 → 422 (+1: `verify_all_devices_health` —
12
+ session-wide silent-track detector).
13
+ **Domain count**: unchanged at 52.
14
+ **Tests**: 2627 → 2644 (+17 new regression guards). No regressions.
15
+
16
+ ### Live-verified bugs fixed
17
+
18
+ - `add_drum_rack_pad` crashed with `ImportError` on first invocation
19
+ — inline `from .._analyzer_engine.sample import ...` resolved to
20
+ `mcp_server._analyzer_engine` (nonexistent; the real package is
21
+ `mcp_server.tools._analyzer_engine`). The helper is already imported
22
+ at module scope on line 29; inline form removed.
23
+ - `splice_preview_sample` returned "No preview URL available" for
24
+ un-downloaded catalog samples. `SampleInfo` RPC only carries
25
+ `PreviewURL` for downloaded/purchased items. Now falls back to
26
+ `SearchSamples(FileHash=...)` which always has catalog metadata.
27
+ - `splice_pack_info` crashed with
28
+ `AttributeError: 'AppStub' object has no attribute 'SamplePackInfo'`.
29
+ The `SamplePackInfoRequest/Response` messages exist in the proto
30
+ descriptor but no RPC on the `App` service binds them. Rewrote to
31
+ paginate `ListSamplePacks` + client-side UUID match. Limitation
32
+ documented: only finds packs the user has engaged with.
33
+ - `splice_pack_info` on an OWNED pack with an extended-format UUID
34
+ (43 chars, e.g. `...887a0dd7f26bf5a3951`) failed because the first
35
+ fix aggressively truncated to `[:36]`, discarding legitimate bytes.
36
+ Correct behavior: Splice uses both UUID formats; build a `targets`
37
+ set of the submitted form AND its canonical truncation, match each
38
+ server-returned UUID in both forms.
39
+ - Startup warning `STARTUP SELF-TEST WARNING — returned 385 tools,
40
+ expects 422`. `_get_all_tools()` took the first non-empty probe,
41
+ which could be a stale `_tool_manager._tools` view lagging behind
42
+ the authoritative `_local_provider._components`. Now takes the
43
+ largest view across all probes.
44
+ - Startup `RuntimeWarning: coroutine 'FastMCP.list_tools' was never
45
+ awaited` on every server import. The `list_tools` probe wrapped an
46
+ async coroutine in `list()` without awaiting. Removed with an
47
+ explanatory comment.
48
+
49
+ ### Added
50
+
51
+ - `verify_all_devices_health(test_midi_note=60, skip_audio_tracks=True,
52
+ skip_empty_tracks=True, threshold=0.005)` — session-wide silent-
53
+ track detector. Fires a test note on every eligible track and reports
54
+ alive / dead / skipped with per-track peak-level evidence.
55
+ - `~/.livepilot/splice.json` config key `plan_kind_override` — pin
56
+ the Splice plan_kind when the gRPC classifier lands on a safe
57
+ default (e.g. `sounds_plan_id=6` with empty `features` map is
58
+ classified as SOUNDS_PLUS but may actually be any of several tiers).
59
+ Values: `ableton_live`, `sounds_plus`, `creator`, `creator_plus`,
60
+ `free`. `get_splice_credits` response now includes
61
+ `plan_kind_override: <value|null>`.
62
+
63
+ ### Internal
64
+
65
+ - M4L bridge source (`livepilot_bridge.js`) ping version drift
66
+ `1.14.1 → 1.16.1` (source had been stale; binary had already been
67
+ patched in a prior release).
68
+ - `SpliceGRPCClient.get_pack_info` return signature changed from
69
+ `Optional[SplicePack]` to `tuple[Optional[SplicePack], Optional[str]]`.
70
+ Callers now receive a structured error message when the lookup
71
+ fails, instead of `None` swallowing the cause.
72
+
73
+ ## 1.16.0 — Minimal-techno session bug batch + Splice plan model (April 22 2026)
4
74
 
5
75
  Hardens the 1.15.0 beta into a full release. Resolves 18 of the 19 bugs
6
76
  catalogued in `docs/2026-04-22-bugs-discovered.md` during an end-to-end
7
- Villalobos-style production session, ships a plan-aware Splice download
77
+ minimal-techno production session, ships a plan-aware Splice download
8
78
  model, adds drum-rack pad-by-pad construction, and lands clip-length +
9
79
  note-range invariants so programmatic workflows stop corrupting
10
80
  arrangement timing.
@@ -525,7 +595,7 @@ every bug now has a named regression guard in the test suite.
525
595
  ## 1.12.1 — Silent-failure fixes + slice classifier (April 18 2026)
526
596
 
527
597
  Reconciles the "separate git stash" called out under v1.12.0's Known
528
- limitations — the 2026-04-18 Villalobos-groove session surfaced four
598
+ limitations — the 2026-04-18 minimal-groove session surfaced four
529
599
  silent-failure bugs and the need for a drum-slice spectral classifier.
530
600
 
531
601
  **+1 tool (397 → 398): `classify_simpler_slices`.** +43 regression
@@ -561,7 +631,7 @@ guards (pure-Python, run without a live Ableton).
561
631
  FFT-based spectral analysis on a Simpler's slice boundaries, returns
562
632
  each slice labeled as KICK / SNARE / HAT / ghost plus feature
563
633
  breakdown (peak, rms, band %). Validated thresholds from the
564
- 2026-04-18 Villalobos-groove session on "Break Ghosts 90 bpm":
634
+ 2026-04-18 minimal-groove session on "Break Ghosts 90 bpm":
565
635
  - KICK: sub+low ≥ 45%, high < 40%
566
636
  - HAT: high ≥ 70% AND mid < 25%
567
637
  - SNARE: mid ≥ 25% AND high ≥ 40% AND peak ≥ 0.6
@@ -578,7 +648,7 @@ guards (pure-Python, run without a live Ableton).
578
648
 
579
649
  ### Documented bug entries
580
650
 
581
- - `BUGS.md` gains a new **"F. 2026-04-18 Villalobos-groove creative
651
+ - `BUGS.md` gains a new **"F. 2026-04-18 minimal-groove creative
582
652
  session"** section: F1-F4 fixed here, F5-F7 scoped to v1.13+, F8
583
653
  wontfix (workaround documented).
584
654
 
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  <p align="center">
19
19
  An agentic production system for Ableton Live 12.<br>
20
- 421 tools. 52 domains. Device atlas. Splice integration. Auto-composition. Spectral perception. Technique memory.
20
+ 422 tools. 52 domains. Device atlas. Plan-aware Splice integration. Auto-composition. Spectral perception. Technique memory. Drum-rack pad builder. Live dead-device detection.
21
21
  </p>
22
22
 
23
23
  <br>
@@ -38,8 +38,8 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
38
38
  | Layer | What it provides |
39
39
  |-------|-----------------|
40
40
  | **Deterministic Tools** | Direct control: transport, tracks, clips, notes, devices, scenes, mixing, arrangement, browser, automation |
41
- | **Device Atlas** | Knowledge of every device in Ableton's library — 1305 devices indexed by name, URI, category, tag, and genre. 71 enriched with sonic intelligence. 683 drum kits mapped |
42
- | **Sample Engine** | Three-source sample intelligence — searches Ableton's browser, your filesystem, and Splice's catalog simultaneously. 6 fitness critics score every result. 29 processing techniques |
41
+ | **Device Atlas** | Knowledge of every device in Ableton's library — 1305 devices indexed by name, URI, category, tag, and genre. 107 enriched with sonic intelligence. 683 drum kits mapped |
42
+ | **Sample Engine** | Three-source sample intelligence — Ableton's browser, your filesystem, and Splice's catalog (plan-aware: Ableton Live plan uses daily quota, Sounds+/Creator uses credits, free samples bypass both). 6 fitness critics. 29 processing techniques. Collections, presets, preview-URL audition, HTTPS bridge scaffolding for Describe-a-Sound + Variations |
43
43
  | **Spectral Perception** | Real-time ears via M4L — 8-band FFT, RMS/peak metering, Krumhansl-Schmuckler key detection, pitch tracking. Closes the feedback loop so the AI hears its own changes |
44
44
  | **Technique Memory** | Persistent library of production decisions. Save a beat pattern, device chain, or mix template. Recall by mood, genre, or texture across sessions |
45
45
  | **Creative Intelligence** | 12 engines that understand song identity, learn your taste, diagnose stuck sessions, generate creative options, and evaluate results before claiming success |
@@ -58,7 +58,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
58
58
  │ │
59
59
  │ Device Atlas 8-band FFT recall by mood, │
60
60
  │ 1305 devices RMS / peak genre, texture │
61
- 71 enriched pitch tracking 29 techniques │
61
+ 107 enriched pitch tracking 29 techniques │
62
62
  │ 683 drum kits key detection replay into session │
63
63
  │ │
64
64
  │ Sample Engine Corpus Intelligence Taste Graph │
@@ -79,7 +79,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
79
79
  │ └─────────────────┼──────────────────┘ │
80
80
  │ ▼ │
81
81
  │ ┌─────────────────┐ │
82
- │ │ 421 MCP Tools │ │
82
+ │ │ 422 MCP Tools │ │
83
83
  │ │ 52 domains │ │
84
84
  │ └────────┬────────┘ │
85
85
  │ │ │
@@ -102,7 +102,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
102
102
 
103
103
  **M4L Bridge** (`m4l_device/`) — Optional Max for Live Audio Effect on the master track. Provides deep LOM access through Max's LiveAPI that the ControlSurface API can't reach. UDP 9880 (M4L to server) carries spectral data and LiveAPI responses. OSC 9881 (server to M4L) sends commands. The 32 spectral/analyzer tools strictly require the bridge; device and sample tools that call the bridge also have graceful fallbacks, so core functionality works without it. Backed by 30 bridge commands for hidden parameters, Simpler internals, warp markers, display values, and Simpler warp / Compressor sidechain writes that live on child objects Python can't reach.
104
104
 
105
- **Device Atlas** (`mcp_server/atlas/`) — In-memory indexed JSON database. 1305 devices with browser URIs, 71 enriched with YAML sonic intelligence profiles (mood, genre, texture, recommended chains). 6 indexes: by_id, by_name, by_uri, by_category, by_tag, by_genre. The AI never hallucinates a device name or preset — it always resolves against the atlas first.
105
+ **Device Atlas** (`mcp_server/atlas/`) — In-memory indexed JSON database. 1305 devices with browser URIs, 107 enriched with YAML sonic intelligence profiles (mood, genre, texture, recommended chains). 6 indexes: by_id, by_name, by_uri, by_category, by_tag, by_genre. The AI never hallucinates a device name or preset — it always resolves against the atlas first.
106
106
 
107
107
  **Sample Engine** (`mcp_server/sample_engine/`) — Searches three sources simultaneously: BrowserSource (Ableton's library), SpliceSource (local Splice catalog via SQLite), FilesystemSource (user directories). Every result passes through a 6-critic fitness battery (key, tempo, spectral, genre, mood, technical). 29 processing techniques (Surgeon precision vs. Alchemist experimentation). Builds complete sample processing plans with warp, slice, and effect recommendations.
108
108
 
@@ -120,7 +120,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
120
120
 
121
121
  ## The Intelligence Layer
122
122
 
123
- 12 engines sit on top of the 421 tools. They give the AI musical judgment, not just musical execution.
123
+ 12 engines sit on top of the 422 tools. They give the AI musical judgment, not just musical execution.
124
124
 
125
125
  ### SongBrain — What the Song Is
126
126
 
@@ -172,7 +172,7 @@ Every engine follows: **measure before → act → measure after → compare**.
172
172
 
173
173
  ## Tools
174
174
 
175
- 421 tools across 52 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
175
+ 422 tools across 52 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
176
176
 
177
177
  <br>
178
178
 
@@ -232,7 +232,7 @@ The atlas is an in-memory indexed database of Ableton's entire device library.
232
232
 
233
233
  ```
234
234
  1305 devices total
235
- 71 enriched with sonic intelligence (mood, genre, texture, chains)
235
+ 107 enriched with sonic intelligence (mood, genre, texture, chains)
236
236
  683 drum kits mapped with note assignments
237
237
  6 indexes: by_id, by_name, by_uri, by_category, by_tag, by_genre
238
238
  ```
@@ -360,7 +360,7 @@ The V2 intelligence layer. These tools analyze, diagnose, plan, evaluate, and le
360
360
  | Creative Constraints | 5 | constraint activation, reference-inspired variants |
361
361
  | Preview Studio | 5 | variant creation, preview rendering, comparison, commit |
362
362
 
363
- > **[View all 421 tools →](docs/manual/tool-catalog.md)**
363
+ > **[View all 422 tools →](docs/manual/tool-catalog.md)**
364
364
 
365
365
  <br>
366
366
 
@@ -587,7 +587,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture details, code guidelines
587
587
 
588
588
  | Document | What's inside |
589
589
  |----------|---------------|
590
- | [Manual](docs/manual/index.md) | Complete reference: architecture, all 421 tools, workflows |
590
+ | [Manual](docs/manual/index.md) | Complete reference: architecture, all 422 tools, workflows |
591
591
  | [Intelligence Layer](docs/manual/intelligence.md) | How the 12 engines connect — conductor, moves, preview, evaluation |
592
592
  | [Device Atlas](docs/manual/device-atlas.md) | 1305 devices indexed — search, suggest, chain building |
593
593
  | [Samples & Slicing](docs/manual/samples.md) | 3-source search, fitness critics, slice workflows |
Binary file
@@ -95,7 +95,7 @@ function anything() {
95
95
  function dispatch(cmd, args) {
96
96
  switch(cmd) {
97
97
  case "ping":
98
- send_response({"ok": true, "version": "1.14.1"});
98
+ send_response({"ok": true, "version": "1.16.1"});
99
99
  break;
100
100
  case "get_params":
101
101
  cmd_get_params(args);
@@ -1,2 +1,2 @@
1
1
  """LivePilot MCP Server — bridges MCP protocol to Ableton Live."""
2
- __version__ = "1.16.0"
2
+ __version__ = "1.16.1"
@@ -0,0 +1,61 @@
1
+ id: pitch_hack
2
+ name: Pitch Hack
3
+ sonic_description: >
4
+ Versatile pitch-shifting delay for Creative Extensions. Combines
5
+ transposition, reverse, feedback, and randomization on a single delay
6
+ line. Lighter-weight companion to PitchLoop89 — less of a spatial
7
+ architect, more of a per-sound treatment for pitched echoes and random
8
+ reversal textures. The go-to for Akufen-style micro-stutter on hats and
9
+ the random-reverse pitched ghosts that Villalobos uses on every track.
10
+ category: pitch_delay
11
+ character_tags: [pitched, glitchy, reversed, randomized, micro_stutter]
12
+ use_cases: [akufen_stutter, pitched_ghost, reverse_echo, textural_delay]
13
+ genre_affinity:
14
+ primary: [microhouse, deep_minimal, idm, experimental]
15
+ secondary: [dub_techno, electronica]
16
+ complexity: beginner
17
+ introduced_in: "10.0"
18
+ pack: Creative Extensions
19
+ creator: Ableton + Amazing Noises
20
+ class_name: PluginDevice
21
+
22
+ key_parameters:
23
+ - name: "Transpose"
24
+ description: "Pitch shift in semitones + cents on the delayed signal."
25
+ range: [-24, 24]
26
+ unit: "st"
27
+ type: int
28
+ - name: "Delay Time"
29
+ description: "Delay in ms or tempo-synced subdivisions."
30
+ - name: "Feedback"
31
+ description: "Pitched echo feedback. Cascading when transpose is non-zero."
32
+ range: [0.0, 1.0]
33
+ type: float
34
+ - name: "Reverse"
35
+ description: "Reverse-plays the delay buffer."
36
+ type: boolean
37
+ - name: "Randomize"
38
+ description: "Randomizes pitch and/or reverse per repeat. The Villalobos-texture parameter."
39
+ range: [0.0, 1.0]
40
+ type: float
41
+
42
+ signature_techniques:
43
+ - name: "Akufen micro-stutter on hats"
44
+ description: "Short delay (~50ms), Feedback 0.4, Randomize 0.6 → every hi-hat hit gets 2-3 unpredictable pitched ghost echoes."
45
+ aesthetic: [microhouse]
46
+ - name: "Ghost chord tails"
47
+ description: "Chord stab → Reverse on, Transpose +3st, Feedback 0.5 → pitched reverse ghost trails fade out after each stab."
48
+ aesthetic: [deep_minimal]
49
+ - name: "Random pitched percussion"
50
+ description: "Put on a clave or click → Randomize full → each hit decays into a different pitched echo pattern."
51
+ aesthetic: [microhouse, idm]
52
+
53
+ pairings:
54
+ - device: spectral_blur
55
+ rationale: "Feed Pitch Hack's random-pitched output into Spectral Blur's halo for ghost atmospheres under the kick."
56
+
57
+ gotchas:
58
+ - "Randomize above 0.8 can produce notes wildly out of key — gate with key-detection first if harmony matters."
59
+
60
+ learn_more:
61
+ official: "https://www.ableton.com/en/packs/creative-extensions/"
@@ -0,0 +1,111 @@
1
+ id: pitchloop89
2
+ name: PitchLoop89
3
+ sonic_description: >
4
+ Robert Henke's emulation of the 1979 Publison DHM 89 B2 pitch-shifting delay.
5
+ Two independent pitch-shifting delay voices per stereo channel, each with
6
+ their own pitch (±24 semitones), fine detune (±1 semitone), feedback, pan,
7
+ and reverse capability. Sample rate selection, hold function, vibrato LFO
8
+ (sine/square), position modulation LFO with 7 waveforms. THE tool for
9
+ Monolake-style detuned delay clouds, Basic Channel spatial signatures,
10
+ and Arpiar-adjacent shimmered stabs.
11
+ category: pitch_delay
12
+ character_tags: [detuned, shimmering, glitchy, spatial, pitched, experimental, vintage_digital]
13
+ use_cases: [stab_shimmer, detuned_echo, reverse_tail, infinite_feedback, glitched_texture]
14
+ genre_affinity:
15
+ primary: [deep_minimal, dub_techno, ambient, experimental]
16
+ secondary: [microhouse, idm, drone, cinematic]
17
+ complexity: intermediate
18
+ introduced_in: "11.0"
19
+ pack: PitchLoop89
20
+ creator: Robert Henke
21
+ class_name: PluginDevice
22
+
23
+ key_parameters:
24
+ - name: "Pitch A / Pitch B"
25
+ description: "Coarse pitch shift per voice, in semitones. Two voices mean you can split: one +0.05 cents shimmer, one -0.07 cents detune for dual-detune clouds."
26
+ range: [-24, 24]
27
+ unit: "st"
28
+ type: int
29
+ sweet_spots:
30
+ dual_detune_cloud: "+0.05 / -0.07 cents"
31
+ octave_shimmer: "+12 / +0"
32
+ reverse_ambience: "+0 / +0 with reverse on"
33
+
34
+ - name: "Fine A / Fine B"
35
+ description: "Fine detune per voice in cents (±100)."
36
+ range: [-100, 100]
37
+ unit: "cents"
38
+ type: int
39
+ sweet_spots:
40
+ shimmer: "+5 / -7"
41
+ chorus_thick: "+15 / -15"
42
+
43
+ - name: "Feedback A / Feedback B"
44
+ description: "Per-voice feedback. High values (80-95%) produce infinite-ascending or descending pitch spirals. Shepard-tone territory."
45
+ range: [0.0, 1.0]
46
+ type: float
47
+ sweet_spots:
48
+ subtle_echo: 0.35
49
+ pitched_spiral: 0.85
50
+ near_infinite: 0.97
51
+
52
+ - name: "Reverse"
53
+ description: "Per-voice reverse playback. Reverses the delay buffer before pitch shift — creates 'reverse swell' tails from any transient."
54
+ type: boolean
55
+ sweet_spots:
56
+ chord_swell_in: true
57
+
58
+ - name: "Mode"
59
+ description: "Signal routing: L/R (independent), Sum (both voices sum to mono), Cross (voice A to R out, voice B to L out, stereo ping-pong at different pitches)."
60
+ range: ["L/R", "Sum", "Cross"]
61
+ type: enum
62
+ sweet_spots:
63
+ stereo_ping_pong: "Cross"
64
+ mono_layer: "Sum"
65
+
66
+ - name: "Sample Rate"
67
+ description: "Buffer sample rate reduction. Lower values add characterful lo-fi grit — emulates the original Publison's digital artifacts."
68
+ range: [1, 44100]
69
+ unit: "Hz"
70
+ type: int
71
+ sweet_spots:
72
+ vintage_89: 12000
73
+ heavy_lofi: 4000
74
+
75
+ - name: "Vibrato LFO"
76
+ description: "Modulates pitch over time. Sine or square waveform; rate in Hz."
77
+ type: composite
78
+
79
+ - name: "Position LFO"
80
+ description: "Modulates the read position in the delay buffer. Seven waveforms including random. The source of the 'shuddering glitch' and 'fractured rhythm' textures Henke uses."
81
+ type: composite
82
+
83
+ signature_techniques:
84
+ - name: "Shimmer on any stab"
85
+ description: "Put on a chord stab → Pitch A=0, Fine A=+5, Pitch B=0, Fine B=-7, Feedback both at 0.4 → instant detuned shimmer cloud that hangs after the stab."
86
+ aesthetic: [arpiar, microhouse, dub_techno]
87
+ - name: "Reverse-in on chords"
88
+ description: "Enable Reverse on both voices, short delay time → chord swells backwards in before the downbeat. Haunting Monolake effect."
89
+ aesthetic: [dub_techno, cinematic]
90
+ - name: "Infinite Shepard on clicks"
91
+ description: "Feed a single click → Feedback ~0.92, Pitch A=+12, Pitch B=0 → infinite ascending cascade. Classic Henke."
92
+ aesthetic: [experimental, idm]
93
+ - name: "Pitched ghost delay"
94
+ description: "Slow Position LFO with random waveform → delay buffer warps around, producing organic pitched ghosts that never repeat."
95
+ aesthetic: [deep_minimal, experimental]
96
+
97
+ pairings:
98
+ - device: convolution_reverb
99
+ rationale: "PitchLoop89 feeding Convolution Reverb's Farfisa Spring IR = the Basic Channel / Monolake spatial chain."
100
+ - device: granulator_iii
101
+ rationale: "Layer after Granulator for detuned shimmer on top of grain clouds."
102
+ - device: utility
103
+ rationale: "Send a short-decay copy of the source to PitchLoop89 via a return track — leaves the original dry while the pitched tail trails."
104
+
105
+ gotchas:
106
+ - "Feedback above 0.95 can self-oscillate into runaway loop — keep a hand on the mute"
107
+ - "Reverse mode introduces latency equal to the buffer length — sync-critical material needs delay compensation"
108
+ - "Sample Rate very low (<2000Hz) aliases heavily; character, not hi-fi"
109
+
110
+ learn_more:
111
+ official: "https://www.ableton.com/en/packs/pitchloop89/"
@@ -0,0 +1,51 @@
1
+ id: re_enveloper
2
+ name: Re-Enveloper
3
+ sonic_description: >
4
+ Multiband envelope processor with three adjustable frequency bands. Unlike
5
+ compression (which reduces amplitude when over threshold), Re-Enveloper
6
+ reshapes envelope character itself — attack, sustain, decay — independently
7
+ per band. The right tool for 'shorten the decay of this sustained sound so
8
+ it behaves like a stab' or 'expand the transient on the highs only'.
9
+ category: dynamics
10
+ character_tags: [multiband, envelope_shaping, transient, sculpted]
11
+ use_cases: [transient_shape, decay_control, per_band_dynamics, micro_stab]
12
+ genre_affinity:
13
+ primary: [minimal, dub_techno, electronica]
14
+ secondary: [all_genres]
15
+ complexity: intermediate
16
+ introduced_in: "10.0"
17
+ pack: Creative Extensions
18
+ creator: Ableton + Amazing Noises
19
+ class_name: PluginDevice
20
+
21
+ key_parameters:
22
+ - name: "Band Split Frequencies"
23
+ description: "Low/Mid and Mid/High crossover points in Hz."
24
+ range: [20, 20000]
25
+ unit: "Hz"
26
+ type: float
27
+ - name: "C/E Factor (per band)"
28
+ description: "Compression (positive) or Expansion (negative) factor per band."
29
+ range: [-5.0, 5.0]
30
+ type: float
31
+ sweet_spots:
32
+ subtle_expand: 1.5
33
+ aggressive_stab: 3.0
34
+ decay_tightening: -2.0
35
+ - name: "Attack / Release (per band)"
36
+ description: "Envelope-shape time constants for each band independently."
37
+
38
+ signature_techniques:
39
+ - name: "Turn sustained chord into stab"
40
+ description: "Low + mid bands at -3.0 C/E (expansion toward short decay), short release → 4-bar pad becomes punchy 1/4-note stab."
41
+ aesthetic: [deep_minimal]
42
+ - name: "Expand only the snare transient"
43
+ description: "High band 2.5 expansion, slow release → snare crack pops out without affecting kick or toms."
44
+ aesthetic: [all]
45
+
46
+ gotchas:
47
+ - "Expansion factors above 4.0 can cause clipping — compensate output gain."
48
+ - "Crossover bands overlap by ~6dB — not a surgical splitter."
49
+
50
+ learn_more:
51
+ official: "https://www.ableton.com/en/packs/creative-extensions/"
@@ -0,0 +1,36 @@
1
+ id: snipper
2
+ name: Snipper
3
+ sonic_description: >
4
+ Audio snippet replayer with pitch modulation (Building Max Devices
5
+ tutorial pack). Re-plays snippets of incoming audio at modulated
6
+ pitches. Small tool, surprisingly aesthetic-critical for microhouse —
7
+ the 'replay this hat with a slightly different pitch each bar' pattern.
8
+ category: audio_rearranger
9
+ character_tags: [replay, pitched, micro_chop, glitch]
10
+ use_cases: [micro_chop, pitched_replay, vocal_stutter]
11
+ genre_affinity:
12
+ primary: [microhouse, deep_minimal, glitch]
13
+ secondary: [idm]
14
+ complexity: intermediate
15
+ introduced_in: "11.0"
16
+ pack: Building Max Devices
17
+ creator: Ableton
18
+ class_name: PluginDevice
19
+
20
+ key_parameters:
21
+ - name: "Snippet Length"
22
+ description: "Duration of the captured snippet."
23
+ - name: "Replay Rate"
24
+ description: "How often the snippet re-triggers."
25
+ - name: "Pitch Modulation"
26
+ description: "Per-replay pitch shift."
27
+ - name: "Randomize"
28
+ description: "Random variation on pitch/replay timing."
29
+
30
+ signature_techniques:
31
+ - name: "Vocal micro-chop"
32
+ description: "Route vocal → Snipper → short snippet, fast replay, pitch mod → instant Akufen-adjacent micro-vocal pattern."
33
+ aesthetic: [microhouse]
34
+
35
+ learn_more:
36
+ pack: "Building Max Devices"
@@ -0,0 +1,64 @@
1
+ id: spectral_blur
2
+ name: Spectral Blur
3
+ sonic_description: >
4
+ Spectral halo/reverb hybrid. Creates reverb-like textures by blurring
5
+ user-defined frequency ranges into dense clouds of delayed/smeared
6
+ harmonic content. Not a real reverb — no IR — but the result behaves
7
+ like one, with more control over which frequency ranges get haloed.
8
+ Freeze button holds the current spectral content indefinitely. The
9
+ tool for ethereal pads from sparse sources and alien textures that
10
+ don't sound like rooms.
11
+ category: spectral_fx
12
+ character_tags: [spectral, halo, reverb_like, ethereal, frozen, frequency_selective]
13
+ use_cases: [halo_pad, ghost_atmosphere, frozen_texture, spectral_bed]
14
+ genre_affinity:
15
+ primary: [ambient, deep_minimal, experimental, drone]
16
+ secondary: [dub_techno, cinematic]
17
+ complexity: intermediate
18
+ introduced_in: "10.0"
19
+ pack: Creative Extensions
20
+ creator: Ableton + Amazing Noises
21
+ class_name: PluginDevice
22
+
23
+ key_parameters:
24
+ - name: "Frequency Range"
25
+ description: "Low and high cutoff of the blurred band. Narrow ranges produce pitched halos; wide ranges produce reverb-like wash."
26
+ - name: "Halo (Grain Length)"
27
+ description: "How long each spectral grain lingers. Short = shimmer; long = sustained bed."
28
+ range: [50, 5000]
29
+ unit: "ms"
30
+ type: float
31
+ sweet_spots:
32
+ subtle_shimmer: 200
33
+ sustained_bed: 2000
34
+ - name: "Residual"
35
+ description: "Amount of dry signal that passes through. 0 = fully wet halo, 1 = hear the source clearly."
36
+ range: [0.0, 1.0]
37
+ type: float
38
+ - name: "Freeze"
39
+ description: "Holds the current spectral content. Manual or MIDI-triggered."
40
+ type: boolean
41
+
42
+ signature_techniques:
43
+ - name: "Ghost atmosphere under the kick"
44
+ description: "Very short source (click), narrow mid band, Halo 3000ms, Residual 0 → continuous ghost bed at -30dB."
45
+ aesthetic: [deep_minimal, ambient]
46
+ - name: "Freeze-and-move"
47
+ description: "Play a chord → hit Freeze → automate frequency-range low/high up the spectrum → harmonic cloud morphs in pitch-space."
48
+ aesthetic: [experimental, drone]
49
+ - name: "Reverse reverb alternative"
50
+ description: "Apply to a short stab with long Halo → get reverse-reverb-like build-in without needing to flip the audio."
51
+ aesthetic: [cinematic, deep_minimal]
52
+
53
+ pairings:
54
+ - device: pitchloop89
55
+ rationale: "PitchLoop89 feeding Spectral Blur = Basic Channel / Monolake ethereal space"
56
+ - device: convolution_reverb
57
+ rationale: "Spectral Blur before Conv Rev compounds the halo with real-space acoustics"
58
+
59
+ gotchas:
60
+ - "Halo times above 3000ms accumulate CPU — freeze the track after print"
61
+ - "Narrow frequency ranges at high levels self-oscillate — keep Residual > 0 or compress"
62
+
63
+ learn_more:
64
+ official: "https://www.ableton.com/en/packs/creative-extensions/"
@@ -0,0 +1,37 @@
1
+ id: bell_tower
2
+ name: Bell Tower
3
+ sonic_description: >
4
+ FM bell synthesis M4L example device from the Building Max Devices pack.
5
+ Designed as a tutorial but produces genuinely usable bell/mallet timbres
6
+ via simple FM synthesis. Through Convolution Reverb = thin Arpiar bell
7
+ stab territory.
8
+ synthesis_type: fm_bell
9
+ character_tags: [bell, fm, metallic, percussive]
10
+ use_cases: [bell_stab, pluck, atmospheric_bell]
11
+ genre_affinity:
12
+ primary: [ambient, deep_minimal, arpiar]
13
+ secondary: [experimental, cinematic]
14
+ complexity: beginner
15
+ self_contained: true
16
+ introduced_in: "11.0"
17
+ pack: Building Max Devices
18
+ creator: Ableton
19
+ class_name: PluginDevice
20
+
21
+ key_parameters:
22
+ - name: "Carrier Freq"
23
+ description: "Base pitch."
24
+ - name: "Modulator Ratio"
25
+ description: "Ratio of modulator to carrier — inharmonic ratios give bells, integer ratios give pluck tones."
26
+ - name: "Modulator Depth"
27
+ description: "FM index — brightness/metallic character."
28
+ - name: "Decay"
29
+ description: "Bell decay time."
30
+
31
+ signature_techniques:
32
+ - name: "Arpiar bell through Convolution Reverb"
33
+ description: "Short decay, subtle modulator depth, single hit per bar, through a long cathedral IR → the thin bell stab that recurs in Arpiar tracks."
34
+ aesthetic: [arpiar, deep_minimal]
35
+
36
+ learn_more:
37
+ pack: "Building Max Devices"