livepilot 1.9.23 → 1.10.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 (191) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/AGENTS.md +3 -3
  3. package/CHANGELOG.md +119 -0
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +144 -13
  6. package/bin/livepilot.js +87 -0
  7. package/installer/codex.js +147 -0
  8. package/livepilot/.Codex-plugin/plugin.json +2 -2
  9. package/livepilot/.claude-plugin/plugin.json +2 -2
  10. package/livepilot/skills/livepilot-core/SKILL.md +21 -4
  11. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +34 -0
  12. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +204 -0
  13. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +173 -0
  14. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +211 -0
  15. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +188 -0
  16. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +162 -0
  17. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +229 -0
  18. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +243 -0
  19. package/livepilot/skills/livepilot-core/references/overview.md +13 -9
  20. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +724 -0
  21. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +140 -0
  22. package/livepilot/skills/livepilot-devices/SKILL.md +16 -2
  23. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +1 -1
  24. package/livepilot/skills/livepilot-release/SKILL.md +19 -5
  25. package/livepilot/skills/livepilot-sample-engine/SKILL.md +104 -0
  26. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +87 -0
  27. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +51 -0
  28. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +131 -0
  29. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +45 -0
  30. package/livepilot/skills/livepilot-wonder/SKILL.md +15 -0
  31. package/livepilot.mcpb +0 -0
  32. package/m4l_device/livepilot_bridge.js +1 -1
  33. package/manifest.json +2 -2
  34. package/mcp_server/__init__.py +1 -1
  35. package/mcp_server/atlas/__init__.py +357 -0
  36. package/mcp_server/atlas/device_atlas.json +44067 -0
  37. package/mcp_server/atlas/enrichments/__init__.py +111 -0
  38. package/mcp_server/atlas/enrichments/audio_effects/auto_filter.yaml +162 -0
  39. package/mcp_server/atlas/enrichments/audio_effects/beat_repeat.yaml +183 -0
  40. package/mcp_server/atlas/enrichments/audio_effects/channel_eq.yaml +126 -0
  41. package/mcp_server/atlas/enrichments/audio_effects/chorus_ensemble.yaml +149 -0
  42. package/mcp_server/atlas/enrichments/audio_effects/color_limiter.yaml +109 -0
  43. package/mcp_server/atlas/enrichments/audio_effects/compressor.yaml +159 -0
  44. package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb.yaml +143 -0
  45. package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb_pro.yaml +178 -0
  46. package/mcp_server/atlas/enrichments/audio_effects/delay.yaml +151 -0
  47. package/mcp_server/atlas/enrichments/audio_effects/drum_buss.yaml +142 -0
  48. package/mcp_server/atlas/enrichments/audio_effects/dynamic_tube.yaml +147 -0
  49. package/mcp_server/atlas/enrichments/audio_effects/echo.yaml +167 -0
  50. package/mcp_server/atlas/enrichments/audio_effects/eq_eight.yaml +148 -0
  51. package/mcp_server/atlas/enrichments/audio_effects/eq_three.yaml +121 -0
  52. package/mcp_server/atlas/enrichments/audio_effects/erosion.yaml +103 -0
  53. package/mcp_server/atlas/enrichments/audio_effects/filter_delay.yaml +173 -0
  54. package/mcp_server/atlas/enrichments/audio_effects/gate.yaml +130 -0
  55. package/mcp_server/atlas/enrichments/audio_effects/gated_delay.yaml +133 -0
  56. package/mcp_server/atlas/enrichments/audio_effects/glue_compressor.yaml +142 -0
  57. package/mcp_server/atlas/enrichments/audio_effects/grain_delay.yaml +141 -0
  58. package/mcp_server/atlas/enrichments/audio_effects/hybrid_reverb.yaml +160 -0
  59. package/mcp_server/atlas/enrichments/audio_effects/limiter.yaml +97 -0
  60. package/mcp_server/atlas/enrichments/audio_effects/multiband_dynamics.yaml +174 -0
  61. package/mcp_server/atlas/enrichments/audio_effects/overdrive.yaml +119 -0
  62. package/mcp_server/atlas/enrichments/audio_effects/pedal.yaml +145 -0
  63. package/mcp_server/atlas/enrichments/audio_effects/phaser_flanger.yaml +161 -0
  64. package/mcp_server/atlas/enrichments/audio_effects/redux.yaml +114 -0
  65. package/mcp_server/atlas/enrichments/audio_effects/reverb.yaml +190 -0
  66. package/mcp_server/atlas/enrichments/audio_effects/roar.yaml +159 -0
  67. package/mcp_server/atlas/enrichments/audio_effects/saturator.yaml +146 -0
  68. package/mcp_server/atlas/enrichments/audio_effects/shifter.yaml +154 -0
  69. package/mcp_server/atlas/enrichments/audio_effects/spectral_resonator.yaml +141 -0
  70. package/mcp_server/atlas/enrichments/audio_effects/spectral_time.yaml +164 -0
  71. package/mcp_server/atlas/enrichments/audio_effects/vector_delay.yaml +140 -0
  72. package/mcp_server/atlas/enrichments/audio_effects/vinyl_distortion.yaml +141 -0
  73. package/mcp_server/atlas/enrichments/instruments/analog.yaml +222 -0
  74. package/mcp_server/atlas/enrichments/instruments/bass.yaml +202 -0
  75. package/mcp_server/atlas/enrichments/instruments/collision.yaml +150 -0
  76. package/mcp_server/atlas/enrichments/instruments/drift.yaml +167 -0
  77. package/mcp_server/atlas/enrichments/instruments/electric.yaml +137 -0
  78. package/mcp_server/atlas/enrichments/instruments/emit.yaml +163 -0
  79. package/mcp_server/atlas/enrichments/instruments/meld.yaml +164 -0
  80. package/mcp_server/atlas/enrichments/instruments/operator.yaml +197 -0
  81. package/mcp_server/atlas/enrichments/instruments/poli.yaml +192 -0
  82. package/mcp_server/atlas/enrichments/instruments/sampler.yaml +218 -0
  83. package/mcp_server/atlas/enrichments/instruments/simpler.yaml +217 -0
  84. package/mcp_server/atlas/enrichments/instruments/tension.yaml +156 -0
  85. package/mcp_server/atlas/enrichments/instruments/tree_tone.yaml +162 -0
  86. package/mcp_server/atlas/enrichments/instruments/vector_fm.yaml +165 -0
  87. package/mcp_server/atlas/enrichments/instruments/vector_grain.yaml +166 -0
  88. package/mcp_server/atlas/enrichments/instruments/wavetable.yaml +162 -0
  89. package/mcp_server/atlas/enrichments/midi_effects/arpeggiator.yaml +156 -0
  90. package/mcp_server/atlas/enrichments/midi_effects/bouncy_notes.yaml +93 -0
  91. package/mcp_server/atlas/enrichments/midi_effects/chord.yaml +147 -0
  92. package/mcp_server/atlas/enrichments/midi_effects/melodic_steps.yaml +97 -0
  93. package/mcp_server/atlas/enrichments/midi_effects/note_echo.yaml +108 -0
  94. package/mcp_server/atlas/enrichments/midi_effects/note_length.yaml +97 -0
  95. package/mcp_server/atlas/enrichments/midi_effects/pitch.yaml +76 -0
  96. package/mcp_server/atlas/enrichments/midi_effects/random.yaml +117 -0
  97. package/mcp_server/atlas/enrichments/midi_effects/rhythmic_steps.yaml +103 -0
  98. package/mcp_server/atlas/enrichments/midi_effects/scale.yaml +83 -0
  99. package/mcp_server/atlas/enrichments/midi_effects/step_arp.yaml +112 -0
  100. package/mcp_server/atlas/enrichments/midi_effects/velocity.yaml +119 -0
  101. package/mcp_server/atlas/enrichments/utility/amp.yaml +159 -0
  102. package/mcp_server/atlas/enrichments/utility/cabinet.yaml +109 -0
  103. package/mcp_server/atlas/enrichments/utility/corpus.yaml +150 -0
  104. package/mcp_server/atlas/enrichments/utility/resonators.yaml +131 -0
  105. package/mcp_server/atlas/enrichments/utility/spectrum.yaml +63 -0
  106. package/mcp_server/atlas/enrichments/utility/tuner.yaml +51 -0
  107. package/mcp_server/atlas/enrichments/utility/utility.yaml +136 -0
  108. package/mcp_server/atlas/enrichments/utility/vocoder.yaml +160 -0
  109. package/mcp_server/atlas/scanner.py +236 -0
  110. package/mcp_server/atlas/tools.py +224 -0
  111. package/mcp_server/composer/__init__.py +1 -0
  112. package/mcp_server/composer/engine.py +452 -0
  113. package/mcp_server/composer/layer_planner.py +427 -0
  114. package/mcp_server/composer/prompt_parser.py +329 -0
  115. package/mcp_server/composer/tools.py +201 -0
  116. package/mcp_server/connection.py +53 -8
  117. package/mcp_server/corpus/__init__.py +377 -0
  118. package/mcp_server/device_forge/__init__.py +1 -0
  119. package/mcp_server/device_forge/builder.py +377 -0
  120. package/mcp_server/device_forge/models.py +142 -0
  121. package/mcp_server/device_forge/templates.py +483 -0
  122. package/mcp_server/device_forge/tools.py +162 -0
  123. package/mcp_server/hook_hunter/analyzer.py +23 -0
  124. package/mcp_server/hook_hunter/models.py +1 -0
  125. package/mcp_server/hook_hunter/tools.py +4 -2
  126. package/mcp_server/m4l_bridge.py +1 -0
  127. package/mcp_server/memory/taste_graph.py +68 -1
  128. package/mcp_server/memory/tools.py +15 -4
  129. package/mcp_server/musical_intelligence/detectors.py +14 -1
  130. package/mcp_server/musical_intelligence/tools.py +11 -8
  131. package/mcp_server/persistence/__init__.py +1 -0
  132. package/mcp_server/persistence/base_store.py +82 -0
  133. package/mcp_server/persistence/project_store.py +106 -0
  134. package/mcp_server/persistence/taste_store.py +122 -0
  135. package/mcp_server/preview_studio/models.py +1 -0
  136. package/mcp_server/preview_studio/tools.py +56 -13
  137. package/mcp_server/runtime/capability.py +66 -0
  138. package/mcp_server/runtime/capability_probe.py +137 -0
  139. package/mcp_server/runtime/execution_router.py +143 -0
  140. package/mcp_server/runtime/live_version.py +102 -0
  141. package/mcp_server/runtime/remote_commands.py +87 -0
  142. package/mcp_server/runtime/tools.py +18 -4
  143. package/mcp_server/sample_engine/__init__.py +1 -0
  144. package/mcp_server/sample_engine/analyzer.py +216 -0
  145. package/mcp_server/sample_engine/critics.py +390 -0
  146. package/mcp_server/sample_engine/models.py +193 -0
  147. package/mcp_server/sample_engine/moves.py +127 -0
  148. package/mcp_server/sample_engine/planner.py +186 -0
  149. package/mcp_server/sample_engine/sources.py +540 -0
  150. package/mcp_server/sample_engine/techniques.py +908 -0
  151. package/mcp_server/sample_engine/tools.py +442 -0
  152. package/mcp_server/semantic_moves/__init__.py +3 -0
  153. package/mcp_server/semantic_moves/device_creation_moves.py +237 -0
  154. package/mcp_server/semantic_moves/mix_moves.py +41 -41
  155. package/mcp_server/semantic_moves/performance_moves.py +13 -13
  156. package/mcp_server/semantic_moves/sample_compilers.py +372 -0
  157. package/mcp_server/semantic_moves/sound_design_moves.py +15 -15
  158. package/mcp_server/semantic_moves/tools.py +18 -17
  159. package/mcp_server/semantic_moves/transition_moves.py +16 -16
  160. package/mcp_server/server.py +51 -0
  161. package/mcp_server/services/__init__.py +1 -0
  162. package/mcp_server/services/motif_service.py +67 -0
  163. package/mcp_server/session_continuity/tracker.py +29 -1
  164. package/mcp_server/song_brain/builder.py +28 -1
  165. package/mcp_server/song_brain/models.py +4 -0
  166. package/mcp_server/song_brain/tools.py +20 -2
  167. package/mcp_server/sound_design/critics.py +89 -1
  168. package/mcp_server/splice_client/__init__.py +1 -0
  169. package/mcp_server/splice_client/client.py +347 -0
  170. package/mcp_server/splice_client/models.py +96 -0
  171. package/mcp_server/splice_client/protos/__init__.py +1 -0
  172. package/mcp_server/splice_client/protos/app_pb2.py +319 -0
  173. package/mcp_server/splice_client/protos/app_pb2.pyi +1153 -0
  174. package/mcp_server/splice_client/protos/app_pb2_grpc.py +1946 -0
  175. package/mcp_server/tools/arrangement.py +69 -0
  176. package/mcp_server/tools/automation.py +15 -2
  177. package/mcp_server/tools/devices.py +117 -6
  178. package/mcp_server/tools/notes.py +37 -4
  179. package/mcp_server/wonder_mode/diagnosis.py +5 -0
  180. package/mcp_server/wonder_mode/engine.py +85 -1
  181. package/mcp_server/wonder_mode/tools.py +6 -1
  182. package/package.json +12 -2
  183. package/remote_script/LivePilot/__init__.py +8 -1
  184. package/remote_script/LivePilot/arrangement.py +114 -0
  185. package/remote_script/LivePilot/browser.py +56 -1
  186. package/remote_script/LivePilot/devices.py +236 -6
  187. package/remote_script/LivePilot/mixing.py +8 -3
  188. package/remote_script/LivePilot/server.py +5 -1
  189. package/remote_script/LivePilot/transport.py +3 -0
  190. package/remote_script/LivePilot/version_detect.py +78 -0
  191. package/scripts/sync_metadata.py +132 -0
@@ -0,0 +1,111 @@
1
+ """
2
+ Enrichment loader — reads YAML files from subdirectories and merges them
3
+ into scanned device entries.
4
+
5
+ Directory layout::
6
+
7
+ enrichments/
8
+ instruments/
9
+ analog.yaml
10
+ wavetable.yaml
11
+ audio_effects/
12
+ compressor.yaml
13
+ eq_eight.yaml
14
+ _templates/ # skipped (leading underscore)
15
+ ...
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ import os
21
+ from pathlib import Path
22
+ from typing import Any
23
+
24
+
25
+ def load_enrichments(enrichments_dir: str | Path) -> dict[str, dict[str, Any]]:
26
+ """Walk *enrichments_dir* and load every YAML file into a dict.
27
+
28
+ Files whose name starts with ``_`` are skipped (convention for templates
29
+ or drafts). Each file must be named ``<device_id>.yaml`` and contain a
30
+ mapping of enrichment fields.
31
+
32
+ Returns
33
+ -------
34
+ dict[str, dict]
35
+ ``{device_id: enrichment_data}``
36
+ """
37
+ try:
38
+ import yaml # type: ignore[import-untyped]
39
+ except ImportError:
40
+ # PyYAML not installed — return empty gracefully
41
+ return {}
42
+
43
+ enrichments_path = Path(enrichments_dir)
44
+ result: dict[str, dict[str, Any]] = {}
45
+
46
+ if not enrichments_path.is_dir():
47
+ return result
48
+
49
+ for root, _dirs, files in os.walk(enrichments_path):
50
+ # Skip directories whose name starts with _
51
+ root_name = os.path.basename(root)
52
+ if root_name.startswith("_"):
53
+ continue
54
+ for fname in sorted(files):
55
+ if fname.startswith("_"):
56
+ continue
57
+ if not fname.endswith((".yaml", ".yml")):
58
+ continue
59
+ device_id = fname.rsplit(".", 1)[0]
60
+ filepath = os.path.join(root, fname)
61
+ with open(filepath, "r", encoding="utf-8") as fh:
62
+ data = yaml.safe_load(fh)
63
+ if isinstance(data, dict):
64
+ result[device_id] = data
65
+
66
+ return result
67
+
68
+
69
+ # Fields that enrichment data can overwrite on a device entry
70
+ _ENRICHMENT_FIELDS = frozenset({
71
+ "sonic_description",
72
+ "synthesis_type",
73
+ "effect_type",
74
+ "character_tags",
75
+ "use_cases",
76
+ "genre_affinity",
77
+ "complexity",
78
+ "self_contained",
79
+ "mcp_controllable",
80
+ "key_parameters",
81
+ "pairs_well_with",
82
+ "starter_recipes",
83
+ "gotchas",
84
+ "health_flags",
85
+ "introduced_in",
86
+ "signal_type",
87
+ })
88
+
89
+
90
+ def merge_enrichments(
91
+ devices: list[dict[str, Any]],
92
+ enrichments: dict[str, dict[str, Any]],
93
+ ) -> list[dict[str, Any]]:
94
+ """Merge enrichment data into device entries **in place** and return the list.
95
+
96
+ Only fields in ``_ENRICHMENT_FIELDS`` are written. Sets ``enriched=True``
97
+ on every device that receives at least one enrichment field.
98
+ """
99
+ for device in devices:
100
+ device_id = device.get("id", "")
101
+ if device_id not in enrichments:
102
+ continue
103
+ enrich = enrichments[device_id]
104
+ touched = False
105
+ for field in _ENRICHMENT_FIELDS:
106
+ if field in enrich:
107
+ device[field] = enrich[field]
108
+ touched = True
109
+ if touched:
110
+ device["enriched"] = True
111
+ return devices
@@ -0,0 +1,162 @@
1
+ id: auto_filter
2
+ name: Auto Filter
3
+ sonic_description: >
4
+ Versatile resonant filter with built-in envelope follower, LFO, and sidechain input.
5
+ Creates everything from classic acid sweeps to rhythmic wobbles and auto-wah effects.
6
+ The morph filter type smoothly blends between low-pass and high-pass for evolving textures.
7
+ effect_type: filter
8
+ character_tags: [dynamic, resonant, expressive, rhythmic, acid]
9
+ use_cases: [filter_sweeps, acid_bass, auto_wah, rhythmic_filter, wobble, sidechain_filter]
10
+ genre_affinity:
11
+ primary: [techno, house, dubstep, electronic]
12
+ secondary: [funk, pop, ambient]
13
+ complexity: intermediate
14
+ signal_type: audio
15
+ introduced_in: "1.0"
16
+
17
+ key_parameters:
18
+ - name: "Filter Type"
19
+ description: "Filter topology — LP, HP, BP, Notch, or Morph (blends between types)"
20
+ range: ["LP 12", "LP 24", "HP 12", "HP 24", "BP 6", "BP 12", "Notch", "Morph"]
21
+ type: enum
22
+ sweet_spots:
23
+ acid: "LP 24"
24
+ wah: "BP 12"
25
+ sweep: "Morph"
26
+
27
+ - name: "Frequency"
28
+ description: "Filter cutoff frequency"
29
+ range: [20.0, 20000.0]
30
+ unit: Hz
31
+ type: float
32
+ sweet_spots:
33
+ dark: 200.0
34
+ warm: 800.0
35
+ bright: 4000.0
36
+ open: 12000.0
37
+
38
+ - name: "Resonance"
39
+ description: "Filter resonance — adds emphasis at cutoff frequency"
40
+ range: [0.0, 1.25]
41
+ type: float
42
+ sweet_spots:
43
+ clean: 0.0
44
+ warm: 0.3
45
+ squelchy: 0.6
46
+ screaming: 1.0
47
+
48
+ - name: "Env Amount"
49
+ description: "How much the envelope follower modulates the filter cutoff"
50
+ range: [-100.0, 100.0]
51
+ unit: "%"
52
+ type: float
53
+ sweet_spots:
54
+ subtle: 20.0
55
+ auto_wah: 50.0
56
+ aggressive: 80.0
57
+
58
+ - name: "Env Attack"
59
+ description: "Envelope follower attack time"
60
+ range: [0.1, 100.0]
61
+ unit: ms
62
+ type: float
63
+ sweet_spots:
64
+ fast: 1.0
65
+ medium: 10.0
66
+ slow: 50.0
67
+
68
+ - name: "Env Release"
69
+ description: "Envelope follower release time"
70
+ range: [1.0, 3000.0]
71
+ unit: ms
72
+ type: float
73
+ sweet_spots:
74
+ fast: 20.0
75
+ medium: 100.0
76
+ slow: 500.0
77
+
78
+ - name: "LFO Amount"
79
+ description: "How much the LFO modulates the filter cutoff"
80
+ range: [0.0, 100.0]
81
+ unit: "%"
82
+ type: float
83
+ sweet_spots:
84
+ subtle: 10.0
85
+ moderate: 30.0
86
+ heavy: 60.0
87
+ extreme: 100.0
88
+
89
+ - name: "LFO Rate"
90
+ description: "LFO speed — can be free or synced to tempo"
91
+ range: [0.01, 30.0]
92
+ unit: Hz
93
+ type: float
94
+ sweet_spots:
95
+ slow_sweep: 0.1
96
+ moderate: 1.0
97
+ wobble: 4.0
98
+ fast: 8.0
99
+
100
+ - name: "LFO Shape"
101
+ description: "LFO waveform shape"
102
+ range: ["Sine", "Square", "Triangle", "Saw Up", "Saw Down", "Random"]
103
+ type: enum
104
+ sweet_spots:
105
+ smooth: "Sine"
106
+ choppy: "Square"
107
+ ramp: "Saw Up"
108
+
109
+ - name: "Sidechain"
110
+ description: "External sidechain input for envelope follower"
111
+ type: toggle
112
+ range: [0, 1]
113
+
114
+ pairs_well_with:
115
+ - device: "Saturator"
116
+ reason: "Distortion before filter for classic acid sound"
117
+ - device: "Delay"
118
+ reason: "Filtered delays for dub-style effects"
119
+ - device: "Reverb"
120
+ reason: "Filter sweep into reverb for dramatic transitions"
121
+ - device: "Compressor"
122
+ reason: "Tame dynamics after resonant filter sweeps"
123
+
124
+ starter_recipes:
125
+ - name: "Acid Filter Sweep"
126
+ description: "Classic acid house resonant filter with LFO movement"
127
+ genre: techno
128
+ params:
129
+ "Filter Type": "LP 24"
130
+ Frequency: 400.0
131
+ Resonance: 0.7
132
+ "LFO Amount": 50.0
133
+ "LFO Rate": 2.0
134
+ "LFO Shape": "Saw Up"
135
+
136
+ - name: "Auto-Wah"
137
+ description: "Dynamic filter that opens with playing intensity"
138
+ genre: funk
139
+ params:
140
+ "Filter Type": "BP 12"
141
+ Frequency: 500.0
142
+ Resonance: 0.5
143
+ "Env Amount": 60.0
144
+ "Env Attack": 2.0
145
+ "Env Release": 80.0
146
+
147
+ - name: "Rhythmic Filter"
148
+ description: "Tempo-synced choppy filter for rhythmic textures"
149
+ genre: house
150
+ params:
151
+ "Filter Type": "LP 24"
152
+ Frequency: 600.0
153
+ Resonance: 0.4
154
+ "LFO Amount": 70.0
155
+ "LFO Shape": "Square"
156
+
157
+ gotchas:
158
+ - "Resonance above 1.0 causes self-oscillation — the filter will ring/whistle on its own"
159
+ - "LFO Rate can be free-running (Hz) or tempo-synced — check which mode is active"
160
+ - "Env Amount can be negative — inverts the envelope follower direction (filter closes when input is loud)"
161
+ - "Morph filter type smoothly blends between LP and HP — great for automated sweeps"
162
+ - "High resonance + low frequency + loud input can produce very loud output — watch levels"
@@ -0,0 +1,183 @@
1
+ id: beat_repeat
2
+ name: Beat Repeat
3
+ sonic_description: >
4
+ Rhythmic audio repeater and glitch machine that captures and stutters incoming audio
5
+ at controllable intervals. Creates fills, builds, and glitch effects by grabbing a
6
+ slice of audio and repeating it at various grid divisions with pitch decay and filtering.
7
+ effect_type: delay
8
+ character_tags: [glitchy, rhythmic, stuttered, creative, performable]
9
+ use_cases: [fill_builder, glitch_stutter, dj_style, beat_mangle, transition, live_performance]
10
+ genre_affinity:
11
+ primary: [electronic, glitch, idm, hip_hop]
12
+ secondary: [dnb, house, experimental]
13
+ complexity: intermediate
14
+ signal_type: audio
15
+ introduced_in: "5.0"
16
+
17
+ key_parameters:
18
+ - name: "Interval"
19
+ description: "How often Beat Repeat activates — the repetition cycle"
20
+ range: ["1/32", "1/16", "1/8", "1/4", "1/2", "1 Bar", "2 Bars", "4 Bars"]
21
+ type: enum
22
+ sweet_spots:
23
+ every_beat: "1/4"
24
+ every_bar: "1 Bar"
25
+ every_2_bars: "2 Bars"
26
+
27
+ - name: "Offset"
28
+ description: "Shifts the activation point within the Interval"
29
+ range: [0, 16]
30
+ type: int
31
+ sweet_spots:
32
+ start: 0
33
+ half: 8
34
+
35
+ - name: "Grid"
36
+ description: "Size of the repeated slice — determines the repeat rhythm"
37
+ range: ["1/32", "1/16", "1/8", "1/4", "1/2", "1 Bar"]
38
+ type: enum
39
+ sweet_spots:
40
+ fast_stutter: "1/32"
41
+ sixteenth: "1/16"
42
+ eighth: "1/8"
43
+ quarter: "1/4"
44
+
45
+ - name: "Variation"
46
+ description: "Adds rhythmic variation to the grid size over time"
47
+ range: [0, 100]
48
+ unit: "%"
49
+ type: int
50
+ sweet_spots:
51
+ locked: 0
52
+ subtle: 20
53
+ wild: 60
54
+
55
+ - name: "Chance"
56
+ description: "Probability that Beat Repeat activates each interval"
57
+ range: [0, 100]
58
+ unit: "%"
59
+ type: int
60
+ sweet_spots:
61
+ always: 100
62
+ occasional: 50
63
+ rare: 20
64
+
65
+ - name: "Gate"
66
+ description: "How long the repeat effect runs before passing through"
67
+ range: ["1/32", "1/16", "1/8", "1/4", "1/2", "1 Bar", "2 Bars", "4 Bars"]
68
+ type: enum
69
+ sweet_spots:
70
+ short: "1/4"
71
+ medium: "1 Bar"
72
+ long: "2 Bars"
73
+
74
+ - name: "Pitch"
75
+ description: "Pitch decay — repeats descend in pitch over time"
76
+ range: [0, 100]
77
+ unit: "%"
78
+ type: int
79
+ sweet_spots:
80
+ off: 0
81
+ subtle: 20
82
+ heavy: 60
83
+
84
+ - name: "Pitch Decay"
85
+ description: "Rate at which pitch drops during the repeat"
86
+ range: [0, 100]
87
+ unit: "%"
88
+ type: int
89
+ sweet_spots:
90
+ slow: 20
91
+ medium: 50
92
+ fast: 80
93
+
94
+ - name: "Filter Freq"
95
+ description: "Low-pass filter on the repeated signal"
96
+ range: [20.0, 20000.0]
97
+ unit: Hz
98
+ type: float
99
+ sweet_spots:
100
+ dark: 2000.0
101
+ warm: 5000.0
102
+ open: 15000.0
103
+
104
+ - name: "Volume"
105
+ description: "Output volume of the repeated signal"
106
+ range: [-inf, 6.0]
107
+ unit: dB
108
+ type: float
109
+ sweet_spots:
110
+ unity: 0.0
111
+ quiet: -6.0
112
+
113
+ - name: "Decay"
114
+ description: "Volume decay of repeats over time"
115
+ range: [0, 100]
116
+ unit: "%"
117
+ type: int
118
+ sweet_spots:
119
+ constant: 0
120
+ gentle: 30
121
+ rapid: 70
122
+
123
+ - name: "Mix Mode"
124
+ description: "Insert (replaces audio) or Mix (layers with original)"
125
+ range: ["Insert", "Mix"]
126
+ type: enum
127
+ sweet_spots:
128
+ replace: "Insert"
129
+ layer: "Mix"
130
+
131
+ pairs_well_with:
132
+ - device: "Auto Filter"
133
+ reason: "Dynamic filter movement on the repeated audio"
134
+ - device: "Reverb"
135
+ reason: "Smear the stutters with reverb for dramatic builds"
136
+ - device: "Redux"
137
+ reason: "Bitcrush the repeats for extra lo-fi glitch character"
138
+ - device: "Saturator"
139
+ reason: "Drive the stuttered audio for aggressive texture"
140
+
141
+ starter_recipes:
142
+ - name: "Fill Builder"
143
+ description: "Rhythmic fill that activates every 2 bars with accelerating stutter"
144
+ genre: electronic
145
+ params:
146
+ Interval: "2 Bars"
147
+ Grid: "1/8"
148
+ Variation: 40
149
+ Chance: 100
150
+ Gate: "1 Bar"
151
+ Pitch: 0
152
+ Decay: 20
153
+
154
+ - name: "Glitch Stutter"
155
+ description: "Random glitch bursts for experimental textures"
156
+ genre: idm
157
+ params:
158
+ Interval: "1/4"
159
+ Grid: "1/32"
160
+ Variation: 60
161
+ Chance: 30
162
+ Gate: "1/4"
163
+ Pitch: 30
164
+ "Pitch Decay": 50
165
+
166
+ - name: "DJ-Style Beat Mangle"
167
+ description: "Performance-ready beat repeat for live manipulation"
168
+ genre: dj
169
+ params:
170
+ Interval: "1 Bar"
171
+ Grid: "1/16"
172
+ Variation: 20
173
+ Chance: 100
174
+ Gate: "1/2"
175
+ "Mix Mode": "Insert"
176
+
177
+ gotchas:
178
+ - "Insert mode replaces the original audio — Mix mode layers repeats on top"
179
+ - "Chance at 100% means it always triggers — lower values create unpredictable fills"
180
+ - "Variation adds randomness to grid size — starts musical but can get chaotic at high values"
181
+ - "Pitch decay creates a classic turntable-slowdown effect — set Pitch and Pitch Decay together"
182
+ - "Gate controls duration, not whether it triggers — Chance controls probability"
183
+ - "Map Grid to a MIDI controller for real-time stutter size changes during performance"
@@ -0,0 +1,126 @@
1
+ id: channel_eq
2
+ name: Channel EQ
3
+ sonic_description: >
4
+ Streamlined channel strip EQ with fixed low, sweepable mid, and fixed high bands plus
5
+ a built-in spectrum analyzer. Designed for fast tonal shaping with minimal controls,
6
+ perfect for quick adjustments when EQ Eight feels like overkill.
7
+ effect_type: eq
8
+ character_tags: [simple, quick, clean, channel_strip]
9
+ use_cases: [quick_tonal_shaping, channel_strip, vocal_brightening, bass_warmth]
10
+ genre_affinity:
11
+ primary: [all]
12
+ secondary: []
13
+ complexity: beginner
14
+ signal_type: audio
15
+ introduced_in: "10.0"
16
+
17
+ key_parameters:
18
+ - name: "Low Gain"
19
+ description: "Low shelf gain for bass control"
20
+ range: [-15.0, 15.0]
21
+ unit: dB
22
+ type: float
23
+ sweet_spots:
24
+ warmth: 2.0
25
+ thin_out: -3.0
26
+ bass_boost: 4.0
27
+
28
+ - name: "Mid Gain"
29
+ description: "Mid bell gain for body/presence control"
30
+ range: [-15.0, 15.0]
31
+ unit: dB
32
+ type: float
33
+ sweet_spots:
34
+ presence: 2.0
35
+ scoop: -3.0
36
+ body: 3.0
37
+
38
+ - name: "Mid Freq"
39
+ description: "Sweepable mid frequency — target the problem or sweet spot"
40
+ range: [120.0, 7500.0]
41
+ unit: Hz
42
+ type: float
43
+ sweet_spots:
44
+ mud: 350.0
45
+ body: 800.0
46
+ presence: 3000.0
47
+ clarity: 5000.0
48
+
49
+ - name: "High Gain"
50
+ description: "High shelf gain for brightness control"
51
+ range: [-15.0, 15.0]
52
+ unit: dB
53
+ type: float
54
+ sweet_spots:
55
+ air: 2.0
56
+ darken: -3.0
57
+ bright: 4.0
58
+
59
+ - name: "HP On"
60
+ description: "Enable the built-in high-pass filter"
61
+ type: toggle
62
+ range: [0, 1]
63
+
64
+ - name: "HP Freq"
65
+ description: "High-pass filter cutoff frequency"
66
+ range: [20.0, 500.0]
67
+ unit: Hz
68
+ type: float
69
+ sweet_spots:
70
+ rumble: 30.0
71
+ vocal: 80.0
72
+ thin: 200.0
73
+
74
+ - name: "Output"
75
+ description: "Output gain for level matching"
76
+ range: [-15.0, 15.0]
77
+ unit: dB
78
+ type: float
79
+ sweet_spots:
80
+ unity: 0.0
81
+
82
+ pairs_well_with:
83
+ - device: "Compressor"
84
+ reason: "Quick EQ shaping before dynamics processing"
85
+ - device: "Utility"
86
+ reason: "Channel EQ for tone, Utility for level and width"
87
+ - device: "Saturator"
88
+ reason: "Tone shaping before saturation for controlled harmonic content"
89
+
90
+ starter_recipes:
91
+ - name: "Quick Vocal Brightening"
92
+ description: "Add air and presence to a vocal with one device"
93
+ genre: all
94
+ params:
95
+ "Low Gain": -1.0
96
+ "Mid Gain": 1.5
97
+ "Mid Freq": 3000.0
98
+ "High Gain": 2.5
99
+ "HP On": 1
100
+ "HP Freq": 80.0
101
+
102
+ - name: "Bass Warmth"
103
+ description: "Warm up a bass track with low boost and mud cut"
104
+ genre: all
105
+ params:
106
+ "Low Gain": 3.0
107
+ "Mid Gain": -2.0
108
+ "Mid Freq": 400.0
109
+ "High Gain": 0.0
110
+
111
+ - name: "General Cleanup"
112
+ description: "High-pass and slight presence boost for most sources"
113
+ genre: all
114
+ params:
115
+ "HP On": 1
116
+ "HP Freq": 40.0
117
+ "Low Gain": 0.0
118
+ "Mid Gain": 1.0
119
+ "Mid Freq": 2500.0
120
+ "High Gain": 1.0
121
+
122
+ gotchas:
123
+ - "Only one mid band with fixed Q — for surgical work, use EQ Eight instead"
124
+ - "The built-in spectrum analyzer is useful for visual feedback but adds slight CPU overhead"
125
+ - "High-pass filter has a fixed slope — less control than EQ Eight's HP options"
126
+ - "Good enough for 80% of EQ tasks — save EQ Eight for complex multi-band needs"