livepilot 1.16.0 → 1.17.0

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 (86) hide show
  1. package/CHANGELOG.md +344 -5
  2. package/README.md +16 -15
  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/__init__.py +85 -0
  7. package/mcp_server/atlas/device_atlas.json +3183 -382
  8. package/mcp_server/atlas/device_techniques_index.json +1510 -0
  9. package/mcp_server/atlas/enrichments/__init__.py +1 -0
  10. package/mcp_server/atlas/enrichments/audio_effects/amp.yaml +112 -0
  11. package/mcp_server/atlas/enrichments/audio_effects/audio_effect_rack.yaml +77 -0
  12. package/mcp_server/atlas/enrichments/audio_effects/cabinet.yaml +81 -0
  13. package/mcp_server/atlas/enrichments/audio_effects/corpus.yaml +128 -0
  14. package/mcp_server/atlas/enrichments/audio_effects/envelope_follower.yaml +99 -0
  15. package/mcp_server/atlas/enrichments/audio_effects/external_audio_effect.yaml +64 -0
  16. package/mcp_server/atlas/enrichments/audio_effects/looper.yaml +85 -0
  17. package/mcp_server/atlas/enrichments/audio_effects/pitch_hack.yaml +61 -0
  18. package/mcp_server/atlas/enrichments/audio_effects/pitchloop89.yaml +111 -0
  19. package/mcp_server/atlas/enrichments/audio_effects/re_enveloper.yaml +51 -0
  20. package/mcp_server/atlas/enrichments/audio_effects/resonators.yaml +121 -0
  21. package/mcp_server/atlas/enrichments/audio_effects/snipper.yaml +53 -0
  22. package/mcp_server/atlas/enrichments/audio_effects/spectral_blur.yaml +64 -0
  23. package/mcp_server/atlas/enrichments/audio_effects/spectrum.yaml +61 -0
  24. package/mcp_server/atlas/enrichments/audio_effects/tuner.yaml +43 -0
  25. package/mcp_server/atlas/enrichments/audio_effects/utility.yaml +118 -0
  26. package/mcp_server/atlas/enrichments/audio_effects/vocoder.yaml +94 -0
  27. package/mcp_server/atlas/enrichments/instruments/analog.yaml +11 -0
  28. package/mcp_server/atlas/enrichments/instruments/bass.yaml +11 -0
  29. package/mcp_server/atlas/enrichments/instruments/bell_tower.yaml +75 -0
  30. package/mcp_server/atlas/enrichments/instruments/collision.yaml +11 -0
  31. package/mcp_server/atlas/enrichments/instruments/drift.yaml +11 -0
  32. package/mcp_server/atlas/enrichments/instruments/drum_rack.yaml +142 -0
  33. package/mcp_server/atlas/enrichments/instruments/electric.yaml +11 -0
  34. package/mcp_server/atlas/enrichments/instruments/emit.yaml +11 -0
  35. package/mcp_server/atlas/enrichments/instruments/granulator_iii.yaml +124 -0
  36. package/mcp_server/atlas/enrichments/instruments/harmonic_drone_generator.yaml +83 -0
  37. package/mcp_server/atlas/enrichments/instruments/impulse.yaml +47 -0
  38. package/mcp_server/atlas/enrichments/instruments/meld.yaml +11 -0
  39. package/mcp_server/atlas/enrichments/instruments/operator.yaml +11 -0
  40. package/mcp_server/atlas/enrichments/instruments/poli.yaml +11 -0
  41. package/mcp_server/atlas/enrichments/instruments/sampler.yaml +12 -0
  42. package/mcp_server/atlas/enrichments/instruments/simpler.yaml +15 -0
  43. package/mcp_server/atlas/enrichments/instruments/sting_iftah.yaml +44 -0
  44. package/mcp_server/atlas/enrichments/instruments/tension.yaml +11 -0
  45. package/mcp_server/atlas/enrichments/instruments/vector_fm.yaml +11 -0
  46. package/mcp_server/atlas/enrichments/instruments/vector_grain.yaml +11 -0
  47. package/mcp_server/atlas/enrichments/instruments/wavetable.yaml +11 -0
  48. package/mcp_server/atlas/enrichments/midi_effects/expressive_chords.yaml +38 -0
  49. package/mcp_server/atlas/enrichments/midi_effects/filler.yaml +49 -0
  50. package/mcp_server/atlas/enrichments/midi_effects/microtuner.yaml +83 -0
  51. package/mcp_server/atlas/enrichments/midi_effects/patterns_iftah.yaml +38 -0
  52. package/mcp_server/atlas/enrichments/midi_effects/phase_pattern.yaml +51 -0
  53. package/mcp_server/atlas/enrichments/midi_effects/polyrhythm.yaml +46 -0
  54. package/mcp_server/atlas/enrichments/midi_effects/retrigger.yaml +40 -0
  55. package/mcp_server/atlas/enrichments/midi_effects/slice_shuffler.yaml +39 -0
  56. package/mcp_server/atlas/enrichments/midi_effects/sq_sequencer.yaml +39 -0
  57. package/mcp_server/atlas/enrichments/midi_effects/stages.yaml +38 -0
  58. package/mcp_server/atlas/enrichments/utility/arrangement_looper.yaml +31 -0
  59. package/mcp_server/atlas/enrichments/utility/cv_clock_in.yaml +25 -0
  60. package/mcp_server/atlas/enrichments/utility/cv_clock_out.yaml +25 -0
  61. package/mcp_server/atlas/enrichments/utility/cv_envelope_follower.yaml +38 -0
  62. package/mcp_server/atlas/enrichments/utility/cv_in.yaml +26 -0
  63. package/mcp_server/atlas/enrichments/utility/cv_instrument.yaml +34 -0
  64. package/mcp_server/atlas/enrichments/utility/cv_lfo.yaml +38 -0
  65. package/mcp_server/atlas/enrichments/utility/cv_shaper.yaml +35 -0
  66. package/mcp_server/atlas/enrichments/utility/cv_triggers.yaml +26 -0
  67. package/mcp_server/atlas/enrichments/utility/cv_utility.yaml +37 -0
  68. package/mcp_server/atlas/enrichments/utility/performer.yaml +51 -0
  69. package/mcp_server/atlas/enrichments/utility/prearranger.yaml +36 -0
  70. package/mcp_server/atlas/enrichments/utility/rotating_rhythm_generator.yaml +35 -0
  71. package/mcp_server/atlas/enrichments/utility/surround_panner.yaml +40 -0
  72. package/mcp_server/atlas/enrichments/utility/variations.yaml +40 -0
  73. package/mcp_server/atlas/enrichments/utility/vector_map.yaml +57 -0
  74. package/mcp_server/atlas/tools.py +291 -0
  75. package/mcp_server/m4l_bridge.py +19 -2
  76. package/mcp_server/sample_engine/tools.py +190 -72
  77. package/mcp_server/server.py +18 -6
  78. package/mcp_server/splice_client/client.py +90 -18
  79. package/mcp_server/splice_client/http_bridge.py +414 -138
  80. package/mcp_server/splice_client/models.py +12 -0
  81. package/mcp_server/tools/analyzer.py +150 -1
  82. package/mcp_server/tools/automation.py +168 -0
  83. package/package.json +2 -2
  84. package/remote_script/LivePilot/__init__.py +1 -1
  85. package/remote_script/LivePilot/arrangement.py +216 -1
  86. package/server.json +3 -3
@@ -84,6 +84,7 @@ _ENRICHMENT_FIELDS = frozenset({
84
84
  "health_flags",
85
85
  "introduced_in",
86
86
  "signal_type",
87
+ "pack",
87
88
  })
88
89
 
89
90
 
@@ -0,0 +1,112 @@
1
+ id: amp
2
+ name: Amp
3
+ sonic_description: >
4
+ Guitar/bass amplifier emulation — 7 amp types (Clean/Boost/Blues/Rock/
5
+ Lead/Heavy/Bass), each with their own character of clean-to-overdriven
6
+ harmonic generation. Intended to be paired with Cabinet for the full
7
+ speaker-cabinet response, or run standalone for a direct-injection style.
8
+ effect_type: amp_simulation
9
+ character_tags: [guitar, distorted, saturated, warm, tube_character]
10
+ use_cases:
11
+ - electric_guitar_tone_shaping
12
+ - bass_direct_with_amp_character
13
+ - synth_through_guitar_amp_for_grit
14
+ - drums_through_rock_amp_for_aggression
15
+ genre_affinity:
16
+ primary: [rock, blues, metal, indie]
17
+ secondary: [experimental, synthwave, dub]
18
+ complexity: intermediate
19
+ self_contained: true
20
+ introduced_in: "9.0"
21
+ pack: Core Library
22
+
23
+ key_parameters:
24
+ - name: "Amp Type"
25
+ description: "Which amplifier model — each has a distinct harmonic/compression signature"
26
+ range: ["Clean", "Boost", "Blues", "Rock", "Lead", "Heavy", "Bass"]
27
+ type: enum
28
+ sweet_spots:
29
+ clean_warmth: "Clean"
30
+ edge_of_break: "Blues"
31
+ crunch: "Rock"
32
+ distortion: "Lead"
33
+ modern_metal: "Heavy"
34
+ bass_body: "Bass"
35
+
36
+ - name: "Gain"
37
+ description: "Preamp drive — the key saturation control"
38
+ range: [0.0, 10.0]
39
+ type: float
40
+ sweet_spots:
41
+ clean: 2.0
42
+ edge: 4.5
43
+ overdriven: 7.0
44
+ full_crunch: 9.0
45
+
46
+ - name: "Bass"
47
+ description: "Low-frequency EQ"
48
+ range: [0.0, 10.0]
49
+ type: float
50
+
51
+ - name: "Mid"
52
+ description: "Midrange EQ"
53
+ range: [0.0, 10.0]
54
+ type: float
55
+
56
+ - name: "Treble"
57
+ description: "High-frequency EQ"
58
+ range: [0.0, 10.0]
59
+ type: float
60
+
61
+ - name: "Presence"
62
+ description: "High-end airiness (post-EQ shimmer)"
63
+ range: [0.0, 10.0]
64
+ type: float
65
+
66
+ - name: "Volume"
67
+ description: "Output level — compensate for gain-induced level changes"
68
+ range: [0.0, 10.0]
69
+ type: float
70
+
71
+ - name: "Dual Mono"
72
+ description: "Run two independent amps for L and R for stereo width"
73
+ range: [0, 1]
74
+ type: int
75
+
76
+ pairs_well_with:
77
+ - device: "Cabinet"
78
+ reason: "The canonical pair — Amp is the preamp, Cabinet is the speaker. Use both unless going for a direct-injection sound"
79
+ - device: "Pedal"
80
+ reason: "Stomp-box overdrive in front of Amp for stacked saturation"
81
+ - device: "Compressor"
82
+ reason: "Compressor before Amp evens dynamics; after Amp, it glues the distorted signal"
83
+ - device: "EQ Eight"
84
+ reason: "Post-Amp, pre-Cabinet for specific harmonic shaping the amp's 3-band can't hit"
85
+
86
+ starter_recipes:
87
+ - name: "Classic Crunch Rhythm"
88
+ description: "Rock amp at the edge of breakup"
89
+ genre: rock
90
+ params:
91
+ "Amp Type": "Rock"
92
+ "Gain": 5.0
93
+ "Bass": 5.0
94
+ "Mid": 6.0
95
+ "Treble": 6.0
96
+ "Presence": 4.0
97
+
98
+ - name: "Synth Grit"
99
+ description: "Run a clean synth pad through a lead amp for harmonic dirt"
100
+ genre: synthwave
101
+ params:
102
+ "Amp Type": "Lead"
103
+ "Gain": 6.0
104
+ "Bass": 3.0
105
+ "Mid": 5.0
106
+ "Treble": 4.0
107
+
108
+ gotchas:
109
+ - "Amp alone sounds unnatural — the preamp without the speaker cabinet is harsh. Pair with Cabinet unless you specifically want that tone"
110
+ - "Gain and Volume are different — Gain creates saturation, Volume is makeup. Set Gain first, then compensate"
111
+ - "Dual Mono doubles CPU — leave off unless you need stereo independence"
112
+ - "Heavy and Lead amps at low Gain still sound 'amped' — the EQ character persists. For clean tone, use Clean or Blues"
@@ -0,0 +1,77 @@
1
+ id: audio_effect_rack
2
+ name: Audio Effect Rack
3
+ sonic_description: >
4
+ Container for audio effects with up to 8 macro knobs mapped to any
5
+ parameters across any chain. Parallel chains, chain selector, A/B
6
+ morphing via Rack Variations. Not an effect itself — the infrastructure
7
+ that makes complex effect sculpting macro-addressable. Essential for
8
+ building "signature chains" you can reuse, and for Akufen-style
9
+ parallel-chain routing.
10
+ effect_type: container
11
+ character_tags: [container, macro, chain, parallel, infrastructure]
12
+ use_cases:
13
+ - parallel_effect_processing
14
+ - macro_controlled_effect_chain
15
+ - signature_reusable_chain_presets
16
+ - chain_selector_a_b_swap
17
+ - preset_friendly_complex_effect_setup
18
+ genre_affinity:
19
+ primary: [all]
20
+ secondary: []
21
+ complexity: intermediate
22
+ self_contained: false
23
+ introduced_in: "4.0"
24
+ pack: Core Library
25
+ is_container: true
26
+ chain_model: parallel_and_serial
27
+
28
+ key_parameters:
29
+ - name: "Macro 1-8"
30
+ description: "Rack macros — map each to parameter(s) in any chain. Most-mapped rack knob is a performance gesture"
31
+ range: [0.0, 127.0]
32
+ type: float
33
+
34
+ - name: "Chain Volume (per chain)"
35
+ description: "Per-chain output level for parallel blending"
36
+ range: [-70.0, 6.0]
37
+ unit: "dB"
38
+ type: float
39
+
40
+ - name: "Chain Solo/Mute"
41
+ description: "Isolate one chain or disable it"
42
+ range: [0, 1]
43
+ type: int
44
+
45
+ - name: "Chain Selector"
46
+ description: "Gate chains based on a zone — useful for 'only chain A plays in zone 0-63, only chain B plays in 64-127'"
47
+ range: [0, 127]
48
+ type: int
49
+
50
+ pairs_well_with:
51
+ - device: "Any audio effect"
52
+ reason: "Drop any effect into a chain — Rack is just the scaffolding"
53
+
54
+ starter_recipes:
55
+ - name: "Signature Vocal Chain"
56
+ description: "EQ → De-esser → Compressor → Reverb send, with Macro 1 = reverb amount"
57
+ genre: all
58
+ steps:
59
+ - "Create Audio Effect Rack on vocal track"
60
+ - "Chain 1: EQ Eight → Multiband Dynamics (de-esser) → Compressor → Reverb"
61
+ - "Map Macro 1 to Reverb Dry/Wet"
62
+ - "Map Macro 2 to Compressor Threshold"
63
+
64
+ - name: "Parallel Saturation"
65
+ description: "Two chains — clean and heavily saturated — blended via macro"
66
+ genre: rock
67
+ steps:
68
+ - "Chain 1: clean pass-through"
69
+ - "Chain 2: Saturator (warm) + Limiter"
70
+ - "Map Macro 1 to Chain 2 Volume — sweep from clean to dirty"
71
+
72
+ gotchas:
73
+ - "Chains are PARALLEL by default — all chains receive the input and sum to the output. Don't confuse with serial"
74
+ - "Chain output level is post-chain-effects — you can saturate heavily and then pull Chain Volume down to keep master level sane"
75
+ - "Rack Variations (store_rack_variation / recall_rack_variation) capture the full state for A/B swap — essential for workflow"
76
+ - "Macros don't auto-map — use add_rack_macro + map_plugin_parameter explicitly. Naming macros after mapping is also worth the extra call"
77
+ - "For MIDI-effect containers use Instrument Rack or MIDI Effect Rack — this rack is audio-only"
@@ -0,0 +1,81 @@
1
+ id: cabinet
2
+ name: Cabinet
3
+ sonic_description: >
4
+ Speaker cabinet emulation — 5 cabinet types (1x12", 2x12", 4x12" Open,
5
+ 4x12" Closed, 4x10" Bass) with selectable mic type (Dynamic / Condenser
6
+ / Off-axis) and position. Creates the "speaker in a room" response that
7
+ makes amp simulations sound like real amps, or runs standalone on any
8
+ signal for a subtle coloration.
9
+ effect_type: cabinet_simulation
10
+ character_tags: [speaker_response, coloration, space, guitar, bass]
11
+ use_cases:
12
+ - post_amp_speaker_response
13
+ - standalone_synth_coloration
14
+ - drums_through_guitar_cab_for_character
15
+ - bass_DI_to_cabinet_sound
16
+ genre_affinity:
17
+ primary: [rock, blues, metal, indie]
18
+ secondary: [experimental, synthwave, hip_hop]
19
+ complexity: intermediate
20
+ self_contained: true
21
+ introduced_in: "9.0"
22
+ pack: Core Library
23
+
24
+ key_parameters:
25
+ - name: "Cabinet Type"
26
+ description: "Speaker configuration — changes size, mid character, low-end extension"
27
+ range: ["1x12", "2x12", "4x12 Open", "4x12 Closed", "4x10 Bass"]
28
+ type: enum
29
+ sweet_spots:
30
+ small_warm: "1x12"
31
+ medium_balanced: "2x12"
32
+ open_airy: "4x12 Open"
33
+ tight_punchy: "4x12 Closed"
34
+ bass_body: "4x10 Bass"
35
+
36
+ - name: "Microphone Type"
37
+ description: "Mic character — Dynamic is midrange-forward, Condenser is airy, Off-axis softens highs"
38
+ range: ["Dynamic", "Condenser", "Off-axis"]
39
+ type: enum
40
+
41
+ - name: "Microphone Position"
42
+ description: "On-axis vs edge-of-speaker position"
43
+ range: [0.0, 1.0]
44
+ type: float
45
+ sweet_spots:
46
+ on_axis_bright: 0.0
47
+ edge_mellow: 1.0
48
+
49
+ - name: "Dry/Wet"
50
+ description: "Blend with dry (bypassed) signal"
51
+ range: [0.0, 1.0]
52
+ type: float
53
+
54
+ pairs_well_with:
55
+ - device: "Amp"
56
+ reason: "The canonical pair — Amp + Cabinet = full guitar rig emulation"
57
+ - device: "EQ Eight"
58
+ reason: "Post-cabinet EQ fixes honkiness or dullness from the specific cabinet type"
59
+
60
+ starter_recipes:
61
+ - name: "Classic Rock Rig"
62
+ description: "4x12 Closed with dynamic mic on-axis"
63
+ genre: rock
64
+ params:
65
+ "Cabinet Type": "4x12 Closed"
66
+ "Microphone Type": "Dynamic"
67
+ "Microphone Position": 0.2
68
+
69
+ - name: "Airy Indie Guitar"
70
+ description: "1x12 Open with condenser off-axis for softer highs"
71
+ genre: indie
72
+ params:
73
+ "Cabinet Type": "1x12"
74
+ "Microphone Type": "Condenser"
75
+ "Microphone Position": 0.6
76
+
77
+ gotchas:
78
+ - "Cabinet without Amp sounds thin — not standalone-useful for guitar. For synths it adds subtle character on its own"
79
+ - "4x12 Closed has the deepest low end; 4x12 Open sounds more 'air around' and is less mixable"
80
+ - "Off-axis mic position was used historically to tame bright speakers — don't default to on-axis, listen first"
81
+ - "For IR-based cabinet simulation with more precision, use Convolution Reverb with cabinet IRs — Cabinet is the fast path, not the ultimate one"
@@ -0,0 +1,128 @@
1
+ id: corpus
2
+ name: Corpus
3
+ sonic_description: >
4
+ Physical modeling resonator — takes an incoming audio signal and runs it
5
+ through a simulated resonant body (string, beam, membrane, plate, tube,
6
+ pipe). Transforms drums into mallets, white noise into bowed textures,
7
+ speech into sung tones. Signature of experimental/minimal/dub aesthetics
8
+ when used sparingly as a send on a return track.
9
+ effect_type: resonator
10
+ character_tags: [physical, resonant, tonal, pitched, experimental]
11
+ use_cases:
12
+ - drum_to_pitched_percussion
13
+ - noise_to_bowed_texture
14
+ - excite_tuned_resonance_from_any_source
15
+ - speech_to_sung_formant
16
+ - atonal_to_harmonic_transformation
17
+ genre_affinity:
18
+ primary: [experimental, ambient, minimal, idm, sound_design]
19
+ secondary: [techno, dub, cinematic]
20
+ complexity: advanced
21
+ self_contained: true
22
+ introduced_in: "8.0"
23
+ pack: Core Library
24
+
25
+ key_parameters:
26
+ - name: "Resonance Type"
27
+ description: "Physical model — different bodies have different harmonic signatures"
28
+ range: ["Beam", "Marimba", "String", "Membrane", "Plate", "Pipe", "Tube"]
29
+ type: enum
30
+ sweet_spots:
31
+ mallet_excitation: "Marimba"
32
+ bowed_texture: "String"
33
+ thin_resonance: "Beam"
34
+ metallic_plate: "Plate"
35
+ organ_pipe: "Pipe"
36
+
37
+ - name: "Decay"
38
+ description: "How long the resonance sustains after excitation"
39
+ range: [0.0, 1.0]
40
+ type: float
41
+ sweet_spots:
42
+ short_pluck: 0.2
43
+ natural: 0.5
44
+ infinite_drone: 0.95
45
+
46
+ - name: "Tune"
47
+ description: "Fundamental pitch of the resonator"
48
+ range: [20.0, 12543.0]
49
+ unit: "Hz"
50
+ type: float
51
+
52
+ - name: "MIDI Note Tracking"
53
+ description: "Follow incoming MIDI (via a dummy track) to set tune"
54
+ range: [0, 1]
55
+ type: int
56
+
57
+ - name: "Brightness"
58
+ description: "High-frequency content of the resonance"
59
+ range: [0.0, 1.0]
60
+ type: float
61
+
62
+ - name: "Inharmonics"
63
+ description: "Detune of higher modes — 0 is perfect harmonic, positive is stretched (like piano)"
64
+ range: [-1.0, 1.0]
65
+ type: float
66
+ sweet_spots:
67
+ pure_tone: 0.0
68
+ piano_stretch: 0.2
69
+ metallic_bell: 0.5
70
+
71
+ - name: "Pos"
72
+ description: "Excitation position on the resonator — 0 is edge, 0.5 is middle. Changes which modes are excited"
73
+ range: [0.0, 0.5]
74
+ type: float
75
+
76
+ - name: "Dry/Wet"
77
+ description: "Mix of original vs resonated signal"
78
+ range: [0.0, 1.0]
79
+ type: float
80
+ sweet_spots:
81
+ subtle_ring: 0.25
82
+ balanced: 0.5
83
+ full_resonator: 1.0
84
+
85
+ pairs_well_with:
86
+ - device: "Reverb"
87
+ reason: "Corpus followed by long reverb = infinite tonal drone from any excitation"
88
+ - device: "Gate"
89
+ reason: "Gate in front of Corpus to control exactly when it excites"
90
+ - device: "Compressor"
91
+ reason: "After Corpus to even out the ringing resonances"
92
+ - device: "Auto Filter"
93
+ reason: "Modulate the resonance brightness for evolving tonal texture"
94
+
95
+ starter_recipes:
96
+ - name: "Drum to Mallet"
97
+ description: "Convert a kick or snare hit into a tuned mallet note"
98
+ genre: minimal
99
+ params:
100
+ "Resonance Type": "Marimba"
101
+ "Decay": 0.7
102
+ "Brightness": 0.5
103
+ "Dry/Wet": 0.9
104
+
105
+ - name: "Noise Bow"
106
+ description: "Excite String resonator with white noise for bowed texture"
107
+ genre: experimental
108
+ params:
109
+ "Resonance Type": "String"
110
+ "Decay": 0.9
111
+ "Inharmonics": 0.0
112
+ "Dry/Wet": 1.0
113
+
114
+ - name: "Speech Formant"
115
+ description: "Route voice through Pipe for sung-tone character"
116
+ genre: ambient
117
+ params:
118
+ "Resonance Type": "Pipe"
119
+ "Decay": 0.4
120
+ "Tune": 220.0
121
+ "Dry/Wet": 0.6
122
+
123
+ gotchas:
124
+ - "Corpus is pitched — an atonal source through Corpus becomes a pitched drone on the fundamental. Tune carefully or the track will sit in the wrong key"
125
+ - "High Decay values can self-resonate and build up infinite feedback — always monitor peak level"
126
+ - "Pos at 0 excites all modes equally, 0.5 excites only odd harmonics — big tonal difference"
127
+ - "String and Beam types are very sensitive to input level — quiet signals barely resonate, loud ones clip"
128
+ - "MIDI Note Tracking requires routing MIDI to the track hosting Corpus (audio-from routing) — not obvious from the UI"
@@ -0,0 +1,99 @@
1
+ id: envelope_follower
2
+ name: Envelope Follower
3
+ sonic_description: >
4
+ M4L modulator — extracts the amplitude envelope of an incoming audio
5
+ signal and maps it to ANY parameter anywhere in the live set via
6
+ Map mode. The key device for audio-rate modulation: use a kick drum
7
+ to open a filter on a pad, use a snare to close a reverb send on
8
+ the vocal, use a sidechain key to drive automation depth on macros.
9
+ Critical infrastructure for minimal/dub ducking not done via
10
+ Compressor sidechain.
11
+ effect_type: modulator
12
+ character_tags: [modulation, sidechain, follower, routing, audio_reactive]
13
+ use_cases:
14
+ - audio_reactive_filter_opening
15
+ - alternative_to_compressor_sidechain_ducking
16
+ - amplitude_to_any_parameter_mapping
17
+ - kick_drives_pad_filter_cutoff
18
+ - dynamic_send_modulation_per_hit
19
+ genre_affinity:
20
+ primary: [techno, minimal, dub, electronic]
21
+ secondary: [ambient, experimental, house]
22
+ complexity: intermediate
23
+ self_contained: false
24
+ introduced_in: "10.0"
25
+ pack: Core Library
26
+
27
+ key_parameters:
28
+ - name: "Gain"
29
+ description: "Input level — scales the detected amplitude before envelope follows"
30
+ range: [-35.0, 35.0]
31
+ unit: "dB"
32
+ type: float
33
+
34
+ - name: "Attack"
35
+ description: "Envelope rise time"
36
+ range: [0.1, 1000.0]
37
+ unit: "ms"
38
+ type: float
39
+ sweet_spots:
40
+ instant: 0.1
41
+ smooth: 30.0
42
+ slow: 200.0
43
+
44
+ - name: "Release"
45
+ description: "Envelope fall time"
46
+ range: [0.1, 10000.0]
47
+ unit: "ms"
48
+ type: float
49
+ sweet_spots:
50
+ tight: 50.0
51
+ musical: 200.0
52
+ long_tail: 800.0
53
+
54
+ - name: "Min"
55
+ description: "Minimum output value (modulation offset)"
56
+ range: [0.0, 1.0]
57
+ type: float
58
+
59
+ - name: "Max"
60
+ description: "Maximum output value (modulation ceiling)"
61
+ range: [0.0, 1.0]
62
+ type: float
63
+
64
+ - name: "Rise/Fall Shape"
65
+ description: "Curvature of attack/release — linear vs exponential"
66
+ range: ["Linear", "Exponential"]
67
+ type: enum
68
+
69
+ pairs_well_with:
70
+ - device: "Auto Filter"
71
+ reason: "Envelope Follower mapped to Auto Filter cutoff on the same track — audio-reactive filter without sidechaining"
72
+ - device: "Compressor"
73
+ reason: "Alternative or complement to sidechain compression — follower gives more control over the curve shape"
74
+
75
+ starter_recipes:
76
+ - name: "Kick-Ducked Pad Filter"
77
+ description: "Send kick as audio-from, follow its envelope, map to pad's filter cutoff"
78
+ genre: techno
79
+ params:
80
+ "Attack": 1.0
81
+ "Release": 300.0
82
+ "Min": 0.3
83
+ "Max": 1.0
84
+
85
+ - name: "Snare-Triggered Reverb Swell"
86
+ description: "Snare hits open the reverb send momentarily — rhythmic ambient texture"
87
+ genre: experimental
88
+ params:
89
+ "Attack": 5.0
90
+ "Release": 500.0
91
+ "Min": 0.0
92
+ "Max": 0.8
93
+
94
+ gotchas:
95
+ - "Envelope Follower does NOT process audio — it outputs a CV-like value that must be Map-assigned to another parameter. Without a mapping, it does nothing audible"
96
+ - "Requires audio-from routing from a different track OR placement on the track whose envelope you want to follow — easy to mis-route"
97
+ - "Attack of 0.1ms tracks transients exactly; >10ms smooths and loses transient precision. Pick based on what you're mapping to"
98
+ - "Min/Max define the output range — if you want full modulation, Min=0 Max=1. For subtle modulation, narrow the range (Min=0.4 Max=0.6)"
99
+ - "For programmatic automation-like behavior without audio input, use LFO instead"
@@ -0,0 +1,64 @@
1
+ id: external_audio_effect
2
+ name: External Audio Effect
3
+ sonic_description: >
4
+ Infrastructure device for routing audio OUT to external hardware (a
5
+ guitar pedal, an outboard compressor, a hardware synth's audio-through
6
+ path) and back IN. Essential for hybrid hardware/DAW setups. Handles
7
+ audio delay compensation automatically via send-receive round-trip
8
+ timing.
9
+ effect_type: hardware_insert
10
+ character_tags: [hardware, routing, infrastructure, insert, hybrid_rig]
11
+ use_cases:
12
+ - outboard_compressor_insert
13
+ - hardware_pedal_through_daw
14
+ - re_amping_via_hardware_amp
15
+ - send_to_synth_audio_through
16
+ genre_affinity:
17
+ primary: [all]
18
+ secondary: []
19
+ complexity: intermediate
20
+ self_contained: false
21
+ introduced_in: "8.0"
22
+ pack: Core Library
23
+ requires_hardware: true
24
+
25
+ key_parameters:
26
+ - name: "Audio To"
27
+ description: "Output audio port — the physical output sent to hardware"
28
+ range: ["Ext Out 1", "Ext Out 2", "..."]
29
+ type: enum
30
+
31
+ - name: "Audio From"
32
+ description: "Input audio port — the physical return from hardware"
33
+ range: ["Ext In 1", "Ext In 2", "..."]
34
+ type: enum
35
+
36
+ - name: "Gain"
37
+ description: "Make-up gain for the returning signal"
38
+ range: [-35.0, 35.0]
39
+ unit: "dB"
40
+ type: float
41
+
42
+ - name: "Hardware Latency"
43
+ description: "Measured round-trip latency for delay compensation — auto-detected"
44
+ range: [0.0, 1000.0]
45
+ unit: "ms"
46
+ type: float
47
+
48
+ - name: "Dry/Wet"
49
+ description: "Blend processed return with dry"
50
+ range: [0.0, 1.0]
51
+ type: float
52
+
53
+ pairs_well_with:
54
+ - device: "Utility"
55
+ reason: "Utility before External effect for gain staging into the hardware, after for final trim"
56
+ - device: "Compressor"
57
+ reason: "Tracking compressor in DAW for safety, hardware compressor in External for character"
58
+
59
+ gotchas:
60
+ - "Requires multi-channel audio interface with at least one unused input/output pair"
61
+ - "Hardware Latency must be correct or everything downstream will be phase-wrong — use Auto-Detect and trust it unless you hear smearing"
62
+ - "Don't bypass — the audio signal is physically leaving the DAW. Bypass stops the round-trip but doesn't mute your hardware"
63
+ - "For pure hardware synth MIDI → audio return, External Instrument is more appropriate than External Audio Effect"
64
+ - "Running multiple External Audio Effects on different tracks can easily saturate interface I/O — check channel availability"
@@ -0,0 +1,85 @@
1
+ id: looper
2
+ name: Looper
3
+ sonic_description: >
4
+ Real-time audio looper — captures a segment of audio and layers
5
+ overdubs. Built around performance rather than mixing. Records at the
6
+ current tempo, optional tempo detection from length, variable feedback
7
+ on overdubs. Used live for build-a-song-on-stage sets (Ed Sheeran,
8
+ KT Tunstall style), in studio as a creative "sample yourself" tool,
9
+ or for dub-style tape-loop emulation.
10
+ effect_type: looper
11
+ character_tags: [performance, overdub, live, tape_loop, experimental]
12
+ use_cases:
13
+ - live_performance_looping
14
+ - studio_experiment_sample_yourself
15
+ - dub_style_tape_loop_emulation
16
+ - generative_composition_from_single_source
17
+ genre_affinity:
18
+ primary: [indie, folk, experimental, dub]
19
+ secondary: [ambient, live_performance, electronic]
20
+ complexity: intermediate
21
+ self_contained: true
22
+ introduced_in: "7.0"
23
+ pack: Core Library
24
+
25
+ key_parameters:
26
+ - name: "State"
27
+ description: "Current state — Stop / Record / Play / Overdub"
28
+ range: ["Stop", "Record", "Play", "Overdub"]
29
+ type: enum
30
+
31
+ - name: "Tempo Mode"
32
+ description: "How Looper handles tempo — Set and Follow, None, Set Song, Follow Song"
33
+ range: ["None", "Set Song", "Follow Song"]
34
+ type: enum
35
+
36
+ - name: "Quantization"
37
+ description: "Quantize loop start/overdub to beat grid"
38
+ range: ["None", "1/4", "1/2", "1 bar", "2 bars", "4 bars", "8 bars"]
39
+ type: enum
40
+
41
+ - name: "Feedback"
42
+ description: "Overdub feedback — <100% fades old layers over time"
43
+ range: [0.0, 1.0]
44
+ type: float
45
+ sweet_spots:
46
+ infinite_layer: 1.0
47
+ tape_style_fade: 0.85
48
+ fast_fade: 0.5
49
+
50
+ - name: "Record Dry/Wet"
51
+ description: "Record dry input, wet loop, or blend"
52
+ range: [0.0, 1.0]
53
+ type: float
54
+
55
+ pairs_well_with:
56
+ - device: "Reverb"
57
+ reason: "Post-looper reverb creates ambient soundscapes from single notes"
58
+ - device: "Auto Filter"
59
+ reason: "Modulate looper output with LFO for evolving loop texture"
60
+ - device: "Pedal"
61
+ reason: "Stomp-box feedback into Looper for dubby layered grit"
62
+
63
+ starter_recipes:
64
+ - name: "Live Performance Loop"
65
+ description: "4-bar loop with infinite feedback for overdub layering"
66
+ genre: indie
67
+ params:
68
+ "Tempo Mode": "Set Song"
69
+ "Quantization": "4 bars"
70
+ "Feedback": 1.0
71
+
72
+ - name: "Tape-Loop Decay"
73
+ description: "Dub-style decaying loop that fades over bars"
74
+ genre: dub
75
+ params:
76
+ "Tempo Mode": "Set Song"
77
+ "Quantization": "2 bars"
78
+ "Feedback": 0.8
79
+
80
+ gotchas:
81
+ - "Looper is performance-focused — programming it fully via MCP is awkward. Use live triggering (foot-pedal / MIDI) for real-time control"
82
+ - "Feedback at 1.0 means infinite layering — overdubs never fade. Feedback at 0.9 or below is more musical for tape-style use"
83
+ - "Record Dry/Wet affects what's captured, not what's heard — raise the track's return to verify what's going into the loop"
84
+ - "Tempo Mode Set Song locks Looper to current session tempo; None lets Looper fall behind/ahead if tempo changes"
85
+ - "Unlike Live 11 drag-to-export, audio capture from Looper for further processing requires re-recording to an audio track"