livepilot 1.9.24 → 1.10.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.
- package/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +3 -3
- package/CHANGELOG.md +223 -0
- package/CONTRIBUTING.md +2 -2
- package/LICENSE +62 -21
- package/README.md +291 -276
- package/bin/livepilot.js +87 -0
- package/installer/codex.js +147 -0
- package/livepilot/.Codex-plugin/plugin.json +2 -2
- package/livepilot/.claude-plugin/plugin.json +2 -2
- package/livepilot/skills/livepilot-arrangement/SKILL.md +18 -1
- package/livepilot/skills/livepilot-core/SKILL.md +22 -5
- package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +34 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +204 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +173 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +211 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +188 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +162 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +229 -0
- package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +243 -0
- package/livepilot/skills/livepilot-core/references/overview.md +13 -9
- package/livepilot/skills/livepilot-core/references/sample-manipulation.md +724 -0
- package/livepilot/skills/livepilot-core/references/sound-design-deep.md +140 -0
- package/livepilot/skills/livepilot-devices/SKILL.md +39 -4
- package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +1 -1
- package/livepilot/skills/livepilot-release/SKILL.md +23 -19
- package/livepilot/skills/livepilot-sample-engine/SKILL.md +105 -0
- package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +87 -0
- package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +51 -0
- package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +131 -0
- package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +45 -0
- package/livepilot/skills/livepilot-wonder/SKILL.md +17 -0
- package/livepilot.mcpb +0 -0
- package/m4l_device/livepilot_bridge.js +1 -1
- package/manifest.json +4 -4
- package/mcp_server/__init__.py +1 -1
- package/mcp_server/atlas/__init__.py +357 -0
- package/mcp_server/atlas/device_atlas.json +44067 -0
- package/mcp_server/atlas/enrichments/__init__.py +111 -0
- package/mcp_server/atlas/enrichments/audio_effects/auto_filter.yaml +162 -0
- package/mcp_server/atlas/enrichments/audio_effects/beat_repeat.yaml +183 -0
- package/mcp_server/atlas/enrichments/audio_effects/channel_eq.yaml +126 -0
- package/mcp_server/atlas/enrichments/audio_effects/chorus_ensemble.yaml +149 -0
- package/mcp_server/atlas/enrichments/audio_effects/color_limiter.yaml +109 -0
- package/mcp_server/atlas/enrichments/audio_effects/compressor.yaml +159 -0
- package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb.yaml +143 -0
- package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb_pro.yaml +178 -0
- package/mcp_server/atlas/enrichments/audio_effects/delay.yaml +151 -0
- package/mcp_server/atlas/enrichments/audio_effects/drum_buss.yaml +142 -0
- package/mcp_server/atlas/enrichments/audio_effects/dynamic_tube.yaml +147 -0
- package/mcp_server/atlas/enrichments/audio_effects/echo.yaml +167 -0
- package/mcp_server/atlas/enrichments/audio_effects/eq_eight.yaml +148 -0
- package/mcp_server/atlas/enrichments/audio_effects/eq_three.yaml +121 -0
- package/mcp_server/atlas/enrichments/audio_effects/erosion.yaml +103 -0
- package/mcp_server/atlas/enrichments/audio_effects/filter_delay.yaml +173 -0
- package/mcp_server/atlas/enrichments/audio_effects/gate.yaml +130 -0
- package/mcp_server/atlas/enrichments/audio_effects/gated_delay.yaml +133 -0
- package/mcp_server/atlas/enrichments/audio_effects/glue_compressor.yaml +142 -0
- package/mcp_server/atlas/enrichments/audio_effects/grain_delay.yaml +141 -0
- package/mcp_server/atlas/enrichments/audio_effects/hybrid_reverb.yaml +160 -0
- package/mcp_server/atlas/enrichments/audio_effects/limiter.yaml +97 -0
- package/mcp_server/atlas/enrichments/audio_effects/multiband_dynamics.yaml +174 -0
- package/mcp_server/atlas/enrichments/audio_effects/overdrive.yaml +119 -0
- package/mcp_server/atlas/enrichments/audio_effects/pedal.yaml +145 -0
- package/mcp_server/atlas/enrichments/audio_effects/phaser_flanger.yaml +161 -0
- package/mcp_server/atlas/enrichments/audio_effects/redux.yaml +114 -0
- package/mcp_server/atlas/enrichments/audio_effects/reverb.yaml +190 -0
- package/mcp_server/atlas/enrichments/audio_effects/roar.yaml +159 -0
- package/mcp_server/atlas/enrichments/audio_effects/saturator.yaml +146 -0
- package/mcp_server/atlas/enrichments/audio_effects/shifter.yaml +154 -0
- package/mcp_server/atlas/enrichments/audio_effects/spectral_resonator.yaml +141 -0
- package/mcp_server/atlas/enrichments/audio_effects/spectral_time.yaml +164 -0
- package/mcp_server/atlas/enrichments/audio_effects/vector_delay.yaml +140 -0
- package/mcp_server/atlas/enrichments/audio_effects/vinyl_distortion.yaml +141 -0
- package/mcp_server/atlas/enrichments/instruments/analog.yaml +222 -0
- package/mcp_server/atlas/enrichments/instruments/bass.yaml +202 -0
- package/mcp_server/atlas/enrichments/instruments/collision.yaml +150 -0
- package/mcp_server/atlas/enrichments/instruments/drift.yaml +167 -0
- package/mcp_server/atlas/enrichments/instruments/electric.yaml +137 -0
- package/mcp_server/atlas/enrichments/instruments/emit.yaml +163 -0
- package/mcp_server/atlas/enrichments/instruments/meld.yaml +164 -0
- package/mcp_server/atlas/enrichments/instruments/operator.yaml +197 -0
- package/mcp_server/atlas/enrichments/instruments/poli.yaml +192 -0
- package/mcp_server/atlas/enrichments/instruments/sampler.yaml +218 -0
- package/mcp_server/atlas/enrichments/instruments/simpler.yaml +217 -0
- package/mcp_server/atlas/enrichments/instruments/tension.yaml +156 -0
- package/mcp_server/atlas/enrichments/instruments/tree_tone.yaml +162 -0
- package/mcp_server/atlas/enrichments/instruments/vector_fm.yaml +165 -0
- package/mcp_server/atlas/enrichments/instruments/vector_grain.yaml +166 -0
- package/mcp_server/atlas/enrichments/instruments/wavetable.yaml +162 -0
- package/mcp_server/atlas/enrichments/midi_effects/arpeggiator.yaml +156 -0
- package/mcp_server/atlas/enrichments/midi_effects/bouncy_notes.yaml +93 -0
- package/mcp_server/atlas/enrichments/midi_effects/chord.yaml +147 -0
- package/mcp_server/atlas/enrichments/midi_effects/melodic_steps.yaml +97 -0
- package/mcp_server/atlas/enrichments/midi_effects/note_echo.yaml +108 -0
- package/mcp_server/atlas/enrichments/midi_effects/note_length.yaml +97 -0
- package/mcp_server/atlas/enrichments/midi_effects/pitch.yaml +76 -0
- package/mcp_server/atlas/enrichments/midi_effects/random.yaml +117 -0
- package/mcp_server/atlas/enrichments/midi_effects/rhythmic_steps.yaml +103 -0
- package/mcp_server/atlas/enrichments/midi_effects/scale.yaml +83 -0
- package/mcp_server/atlas/enrichments/midi_effects/step_arp.yaml +112 -0
- package/mcp_server/atlas/enrichments/midi_effects/velocity.yaml +119 -0
- package/mcp_server/atlas/enrichments/utility/amp.yaml +159 -0
- package/mcp_server/atlas/enrichments/utility/cabinet.yaml +109 -0
- package/mcp_server/atlas/enrichments/utility/corpus.yaml +150 -0
- package/mcp_server/atlas/enrichments/utility/resonators.yaml +131 -0
- package/mcp_server/atlas/enrichments/utility/spectrum.yaml +63 -0
- package/mcp_server/atlas/enrichments/utility/tuner.yaml +51 -0
- package/mcp_server/atlas/enrichments/utility/utility.yaml +136 -0
- package/mcp_server/atlas/enrichments/utility/vocoder.yaml +160 -0
- package/mcp_server/atlas/scanner.py +236 -0
- package/mcp_server/atlas/tools.py +224 -0
- package/mcp_server/composer/__init__.py +1 -0
- package/mcp_server/composer/engine.py +532 -0
- package/mcp_server/composer/layer_planner.py +427 -0
- package/mcp_server/composer/prompt_parser.py +329 -0
- package/mcp_server/composer/sample_resolver.py +153 -0
- package/mcp_server/composer/tools.py +211 -0
- package/mcp_server/connection.py +53 -8
- package/mcp_server/corpus/__init__.py +377 -0
- package/mcp_server/device_forge/__init__.py +1 -0
- package/mcp_server/device_forge/builder.py +377 -0
- package/mcp_server/device_forge/models.py +142 -0
- package/mcp_server/device_forge/templates.py +483 -0
- package/mcp_server/device_forge/tools.py +162 -0
- package/mcp_server/m4l_bridge.py +1 -0
- package/mcp_server/memory/taste_accessors.py +47 -0
- package/mcp_server/preview_studio/engine.py +9 -2
- package/mcp_server/preview_studio/tools.py +78 -35
- package/mcp_server/project_brain/tools.py +34 -0
- package/mcp_server/runtime/capability_probe.py +21 -2
- package/mcp_server/runtime/execution_router.py +184 -38
- package/mcp_server/runtime/live_version.py +102 -0
- package/mcp_server/runtime/mcp_dispatch.py +46 -0
- package/mcp_server/runtime/remote_commands.py +13 -5
- package/mcp_server/runtime/tools.py +66 -29
- package/mcp_server/sample_engine/__init__.py +1 -0
- package/mcp_server/sample_engine/analyzer.py +216 -0
- package/mcp_server/sample_engine/critics.py +390 -0
- package/mcp_server/sample_engine/models.py +193 -0
- package/mcp_server/sample_engine/moves.py +127 -0
- package/mcp_server/sample_engine/planner.py +186 -0
- package/mcp_server/sample_engine/slice_workflow.py +190 -0
- package/mcp_server/sample_engine/sources.py +540 -0
- package/mcp_server/sample_engine/techniques.py +908 -0
- package/mcp_server/sample_engine/tools.py +545 -0
- package/mcp_server/semantic_moves/__init__.py +3 -0
- package/mcp_server/semantic_moves/device_creation_moves.py +237 -0
- package/mcp_server/semantic_moves/mix_moves.py +8 -8
- package/mcp_server/semantic_moves/models.py +7 -7
- package/mcp_server/semantic_moves/performance_moves.py +4 -4
- package/mcp_server/semantic_moves/sample_compilers.py +377 -0
- package/mcp_server/semantic_moves/sound_design_moves.py +4 -4
- package/mcp_server/semantic_moves/tools.py +63 -10
- package/mcp_server/semantic_moves/transition_moves.py +4 -4
- package/mcp_server/server.py +71 -1
- package/mcp_server/session_continuity/tracker.py +4 -1
- package/mcp_server/sound_design/critics.py +89 -1
- package/mcp_server/splice_client/__init__.py +1 -0
- package/mcp_server/splice_client/client.py +347 -0
- package/mcp_server/splice_client/models.py +96 -0
- package/mcp_server/splice_client/protos/__init__.py +1 -0
- package/mcp_server/splice_client/protos/app_pb2.py +319 -0
- package/mcp_server/splice_client/protos/app_pb2.pyi +1153 -0
- package/mcp_server/splice_client/protos/app_pb2_grpc.py +1946 -0
- package/mcp_server/tools/_conductor.py +16 -0
- package/mcp_server/tools/_planner_engine.py +24 -0
- package/mcp_server/tools/analyzer.py +2 -0
- package/mcp_server/tools/arrangement.py +69 -0
- package/mcp_server/tools/automation.py +15 -2
- package/mcp_server/tools/devices.py +117 -6
- package/mcp_server/tools/notes.py +37 -4
- package/mcp_server/tools/planner.py +3 -0
- package/mcp_server/wonder_mode/diagnosis.py +5 -0
- package/mcp_server/wonder_mode/engine.py +144 -14
- package/mcp_server/wonder_mode/tools.py +33 -1
- package/package.json +14 -4
- package/remote_script/LivePilot/__init__.py +8 -1
- package/remote_script/LivePilot/arrangement.py +114 -0
- package/remote_script/LivePilot/browser.py +56 -1
- package/remote_script/LivePilot/devices.py +246 -6
- package/remote_script/LivePilot/mixing.py +8 -3
- package/remote_script/LivePilot/server.py +5 -1
- package/remote_script/LivePilot/transport.py +3 -0
- package/remote_script/LivePilot/version_detect.py +78 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Deep Sound Design — Techniques from the Masters
|
|
2
|
+
|
|
3
|
+
This is a reference for creative sound design thinking, not a recipe book. These are principles and techniques drawn from deep minimal, dub techno, and experimental electronic production. Use them as inspiration — adapt, combine, subvert.
|
|
4
|
+
|
|
5
|
+
## Philosophy: Sound Design IS Composition
|
|
6
|
+
|
|
7
|
+
In minimal and experimental electronic music, sound design and composition are the same thing. A filter sweep IS the melody. A reverb tail IS the harmony. Modulation IS the arrangement. The producer's job is not to write notes — it's to sculpt evolving textures.
|
|
8
|
+
|
|
9
|
+
**Villalobos principle:** A single sound source, properly modulated, IS a complete piece. The trick is making one thing do the work of ten.
|
|
10
|
+
|
|
11
|
+
**Basic Channel principle:** Space is an instrument. Delay and reverb are not effects — they are the composition itself.
|
|
12
|
+
|
|
13
|
+
**Richie Hawtin principle:** Subtraction is more powerful than addition. Remove one thing and the remaining elements become louder without touching a fader.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Technique Library
|
|
18
|
+
|
|
19
|
+
### 1. Micro-Modulation (Making Things Breathe)
|
|
20
|
+
|
|
21
|
+
The difference between "sounds like a computer" and "sounds alive" is modulation that operates below conscious perception.
|
|
22
|
+
|
|
23
|
+
**Filter breathing:** Assign an LFO at 0.1-0.5 Hz to a lowpass filter cutoff with a depth of 5-15%. The filter opens and closes like breathing. The listener doesn't hear "filter modulation" — they feel "organic movement."
|
|
24
|
+
|
|
25
|
+
**Oscillator drift:** Detune oscillators by 1-3 cents with slow LFO modulation (0.05-0.2 Hz). This creates the warmth of analog — tiny pitch instabilities that prevent digital sterility.
|
|
26
|
+
|
|
27
|
+
**Amplitude micro-variation:** Automate track volume with perlin/brownian noise at very low depth (±1-3 dB). Every bar sounds slightly different even with identical notes.
|
|
28
|
+
|
|
29
|
+
**Key insight:** If the listener can consciously hear the modulation, it's too much. The best modulation is felt, not heard.
|
|
30
|
+
|
|
31
|
+
### 2. Space as Composition (Dub Techniques)
|
|
32
|
+
|
|
33
|
+
In dub techno, reverb and delay are not decorations — they generate the harmonic and melodic content.
|
|
34
|
+
|
|
35
|
+
**The dub chord:** A short, dry chord stab fed into long delay (70-80% feedback) with a filter on the delay return. The delay tail becomes the pad. The filter on the return shapes the "melody" — slowly opening the filter on the delay return makes the chord brighten over time while the source stays dark.
|
|
36
|
+
|
|
37
|
+
**Reverb as harmony:** A single note hit fed into a reverb with 5-10s decay. The reverb tail becomes a drone that carries harmonic information. Modulating the reverb's pre-delay and diffusion creates the impression of harmonic movement.
|
|
38
|
+
|
|
39
|
+
**Delay throws:** Normally sends are set to a fixed level. A "throw" is a momentary spike — send level goes from 0 to 60-80% for half a beat, then back to 0. The element echoes into space and the echo fills the gap. Use this on snare, hats, vocal fragments. The throw IS the composition — it creates rhythmic space events.
|
|
40
|
+
|
|
41
|
+
**Feedback modulation:** Set delay feedback to 75-85% (near self-oscillation). Then modulate the delay time by ±5-10%. The pitch shifts create eerie, warped echoes — the signature Basic Channel sound.
|
|
42
|
+
|
|
43
|
+
### 3. Creative Sidechain (Beyond Pump)
|
|
44
|
+
|
|
45
|
+
Sidechain compression is not just for the kick-bass pump. It's a modulation source.
|
|
46
|
+
|
|
47
|
+
**Sidechain reverb from drums:** Route the dry drum signal to trigger sidechain compression on the reverb return. When drums hit, the reverb ducks. When drums are silent, the reverb fills the space. This creates rhythmic breathing in the entire reverb field — the room "pulses" with the groove.
|
|
48
|
+
|
|
49
|
+
**Sidechain everything from a ghost kick:** Create a muted kick track (no audio output). Use it as a sidechain source for pads, textures, atmospheres. This creates rhythmic ducking on elements that have no rhythmic content — they pulse with a phantom groove.
|
|
50
|
+
|
|
51
|
+
**Sidechain filter instead of volume:** Instead of ducking volume, use an envelope follower (from the kick) to modulate a filter cutoff on the pad. When the kick hits, the pad filter closes. When the kick releases, the pad opens. Subtler than volume ducking — the pad "brightens" between kicks instead of getting quieter.
|
|
52
|
+
|
|
53
|
+
**Multiband sidechain:** Only duck the low frequencies of a pad from the kick. The high frequencies stay constant — shimmer remains while the sub clears for the kick. Use Multiband Dynamics or an EQ before the compressor.
|
|
54
|
+
|
|
55
|
+
### 4. Textural Layering (Villalobos Method)
|
|
56
|
+
|
|
57
|
+
Villalobos builds textures by layering tiny, filtered, processed fragments — each one barely audible alone, together they create a living fabric.
|
|
58
|
+
|
|
59
|
+
**Grain technique:** Take a single percussion hit. Duplicate it 3-4 times. Process each copy differently — one through bit reduction, one through heavy reverb, one through a bandpass filter, one pitch-shifted. Pan them across the stereo field. Mix each at 15-25% of the original. The result: one "hit" that has depth, width, and organic irregularity.
|
|
60
|
+
|
|
61
|
+
**Noise sculpting:** White noise through a tight bandpass filter with slow LFO on the center frequency creates a "breathing" texture. Add this at -20dB under your main elements. It's the "air" in the room. Modulate the filter Q for moments of focus.
|
|
62
|
+
|
|
63
|
+
**Sample mangling:** Take a melodic sample. Time-stretch it to 200-400% length. This reveals the granular structure — artifacts become texture. Filter the result aggressively. Use what remains as an atmospheric layer.
|
|
64
|
+
|
|
65
|
+
### 5. Frequency Domain Thinking
|
|
66
|
+
|
|
67
|
+
Don't think about tracks — think about frequency bands. Each band is a voice in the mix.
|
|
68
|
+
|
|
69
|
+
**Sub (20-60 Hz):** One element only. Kick or bass, never both at the same time. Sidechain or frequency split to ensure they alternate.
|
|
70
|
+
|
|
71
|
+
**Low (60-200 Hz):** Bass body and kick impact. Keep this mono. This is where groove lives.
|
|
72
|
+
|
|
73
|
+
**Low-mid (200-500 Hz):** The "warmth" zone but also the "mud" zone. Be selective — only one or two elements should occupy this space at any time.
|
|
74
|
+
|
|
75
|
+
**Mid (500-2kHz):** Where most melodic/harmonic content sits. Filter pads to stay below 2kHz for depth. Bright melodic elements (leads) sit above 1kHz.
|
|
76
|
+
|
|
77
|
+
**High-mid (2-6kHz):** Presence and attack. Hi-hats, percussion transients, vocal presence. This is what makes things "cut through."
|
|
78
|
+
|
|
79
|
+
**High/Air (6-20kHz):** Shimmer and sparkle. Reverb tails, noise textures, cymbal sustain. Subtle modulation here creates "life."
|
|
80
|
+
|
|
81
|
+
**The frequency dance:** At any given moment, each frequency band should have one primary element. When the chord opens its filter into the highs, pull the hi-hat back. When the bass drops, the kick shortens. This is mix engineering as composition.
|
|
82
|
+
|
|
83
|
+
### 6. Organic Automation Shapes
|
|
84
|
+
|
|
85
|
+
Real producers don't draw straight lines or perfect curves. Their automation reflects human movement.
|
|
86
|
+
|
|
87
|
+
**Perlin noise:** Smooth, natural-looking randomness. Perfect for filter cutoff drift, send level breathing, oscillator detune. Sounds like "a hand on a knob."
|
|
88
|
+
|
|
89
|
+
**Brownian motion:** Random walk — each value is close to the previous one. Good for very slow parameter drift over 16-32 bars. Creates the feeling of gradual transformation.
|
|
90
|
+
|
|
91
|
+
**Exponential curves:** For build-ups and filter sweeps. Energy accumulates slowly at first, then accelerates. This is how tension works in music — the last 4 bars contain more change than the first 12.
|
|
92
|
+
|
|
93
|
+
**Asymmetric envelopes:** Fast attack, slow release on send throws. The element stabs into the reverb quickly, but the tail fades slowly. This is more musical than symmetric curves.
|
|
94
|
+
|
|
95
|
+
**Anti-quantize:** After drawing automation, add tiny random offsets (±0.05 beats) to the breakpoints. This prevents the automation from sounding "gridded."
|
|
96
|
+
|
|
97
|
+
### 7. The WTF Moment
|
|
98
|
+
|
|
99
|
+
Every great minimal track has 2-3 moments where something unexpected happens — a sound that doesn't belong, a brief disruption that breaks the hypnosis just enough to deepen it.
|
|
100
|
+
|
|
101
|
+
**Techniques:**
|
|
102
|
+
- Reverse a percussion hit for 1 bar before a section change
|
|
103
|
+
- Pitch-shift the entire master bus by ±2 semitones for 2 beats
|
|
104
|
+
- Suddenly remove ALL reverb for 4 beats — the room "dries up"
|
|
105
|
+
- Send one element to 100% delay feedback for 1 beat, creating a momentary pitch spiral
|
|
106
|
+
- Drop the tempo by 0.5 BPM for 16 bars, then return — subconscious tension
|
|
107
|
+
- Insert 1 bar of silence (mute master) — the most powerful "effect"
|
|
108
|
+
|
|
109
|
+
**Rules:**
|
|
110
|
+
- Maximum 3 WTF moments per 8-minute track
|
|
111
|
+
- Never repeat the same trick
|
|
112
|
+
- The WTF moment should last 2-8 beats — any longer and it becomes a section, not a moment
|
|
113
|
+
- After the WTF, return to exactly where you were — the contrast is what makes it powerful
|
|
114
|
+
|
|
115
|
+
### 8. Effects as Instruments
|
|
116
|
+
|
|
117
|
+
In experimental electronic music, effects chains ARE instruments.
|
|
118
|
+
|
|
119
|
+
**Self-oscillating filter:** Push a filter's resonance to the point where it starts ringing. Play notes by changing the cutoff frequency. The filter becomes a sine oscillator with natural overtones.
|
|
120
|
+
|
|
121
|
+
**Feedback loop instrument:** Route a track's output back to its own input through effects. Add a compressor to prevent runaway feedback. What you get is a living, evolving texture that responds to its own output. Add a gate to control when it speaks.
|
|
122
|
+
|
|
123
|
+
**Granular reverb:** Very short reverb (0.1-0.3s) with high diffusion on percussive sounds. The reverb doesn't add "space" — it smears the transient into a tonal cloud. The pitch of the cloud is determined by the reverb size.
|
|
124
|
+
|
|
125
|
+
**Convolution as synthesis:** Load a non-impulse-response file into a convolution reverb — a speech recording, a drum break, a synth pad. The "reverb" imprints the spectral character of that source onto whatever passes through it. A kick drum through a vocal convolution gains speech-like formants.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Application Principles
|
|
130
|
+
|
|
131
|
+
When working on any track, think about these layers:
|
|
132
|
+
|
|
133
|
+
1. **Foundation:** What is the one element that defines this track? Protect it.
|
|
134
|
+
2. **Modulation:** What is moving? If nothing is moving, the track is dead.
|
|
135
|
+
3. **Space:** Where are things in the stereo field? What reverb/delay creates the "room"?
|
|
136
|
+
4. **Frequency balance:** At any moment, is every frequency band occupied by exactly one primary element?
|
|
137
|
+
5. **Surprise:** Where are the 2-3 WTF moments that break the hypnosis?
|
|
138
|
+
6. **Evolution:** Over 8 minutes, what changes? Not clip changes — parameter changes. The filter that opened 5% in the first minute is at 70% by minute 6.
|
|
139
|
+
|
|
140
|
+
**The test:** Mute any single track. If the track sounds empty, that element is doing too much. If the track sounds the same, that element isn't doing enough. Each element should be missed when removed but not dominant when present.
|
|
@@ -7,9 +7,23 @@ description: This skill should be used when the user asks to "load a device", "a
|
|
|
7
7
|
|
|
8
8
|
Load instruments, effects, and plugins into Ableton Live tracks. Every device operation follows one discipline: search first, verify after.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Primary Workflow — Atlas-Driven
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
The device atlas contains 1,305 devices with sonic descriptions, recipes, and recommendations. Always start here:
|
|
13
|
+
|
|
14
|
+
1. **Discover:** `atlas_search(query)` — find devices by name, sound character, or genre
|
|
15
|
+
2. **Learn:** `atlas_device_info(device_id)` — full parameters, recipes, gotchas, pairings
|
|
16
|
+
3. **Suggest:** `atlas_suggest(intent, genre)` — "I need a warm pad" → ranked device+recipe combos
|
|
17
|
+
4. **Chain:** `atlas_chain_suggest(role, genre)` — full device chain for a track role (instrument + effects)
|
|
18
|
+
5. **Load:** Use the URI from atlas results → `load_browser_item(uri)` or `find_and_load_device(name)`
|
|
19
|
+
6. **Recipe:** Apply starter recipe params → `batch_set_parameters(params)` from the atlas entry
|
|
20
|
+
7. **Verify:** `get_device_info(track_index, device_index)` — check health flags
|
|
21
|
+
|
|
22
|
+
If the atlas doesn't have a device (newly installed plugin, user sample), fall back to the browser workflow below.
|
|
23
|
+
|
|
24
|
+
## Browser Workflow — The Fallback Path
|
|
25
|
+
|
|
26
|
+
Use the browser workflow when the atlas doesn't have what you need:
|
|
13
27
|
|
|
14
28
|
1. **Search:** `search_browser(path, name_filter)` — returns a list of matching items with exact URIs
|
|
15
29
|
2. **Inspect:** Read the results. Confirm the item name, type, and path match what you need
|
|
@@ -106,9 +120,30 @@ For Simpler devices that already have samples loaded:
|
|
|
106
120
|
- `crop_simpler(track_index, device_index)` — trim sample to current start/end points
|
|
107
121
|
- `reverse_simpler(track_index, device_index)` — reverse the loaded sample
|
|
108
122
|
- `get_simpler_slices(track_index, device_index)` — retrieve auto-detected slice points (Slice mode)
|
|
109
|
-
- `set_simpler_playback_mode(track_index, device_index,
|
|
123
|
+
- `set_simpler_playback_mode(track_index, device_index, playback_mode)` — switch modes: 0=Classic, 1=One-Shot, 2=Slice. Optional: `slice_by` (0=Transient, 1=Beat, 2=Region, 3=Manual), `sensitivity` (0.0-1.0, Transient only)
|
|
124
|
+
- `warp_simpler(track_index, device_index, beats)` — warp sample to fit N beats
|
|
125
|
+
|
|
126
|
+
### Slice Workflow
|
|
127
|
+
|
|
128
|
+
For slice-based production, use `plan_slice_workflow`:
|
|
129
|
+
1. `plan_slice_workflow(file_path=..., intent="rhythm")` — generates a complete workflow with Simpler setup, slice mapping, and MIDI notes
|
|
130
|
+
2. Intents: `rhythm`, `hook`, `texture`, `percussion`, `melodic`
|
|
131
|
+
3. The tool returns a step-by-step plan — execute each tool call in sequence
|
|
132
|
+
|
|
133
|
+
Manual slice workflow: load sample → `set_simpler_playback_mode(playback_mode=2)` → `get_simpler_slices` → program MIDI notes targeting slice indices (C3 = slice 0, C#3 = slice 1, etc.)
|
|
134
|
+
|
|
135
|
+
### New Device Operations (12.3+)
|
|
136
|
+
|
|
137
|
+
- `insert_device(track_index, device_name)` — insert native device by name (10x faster than browser, 12.3+)
|
|
138
|
+
- `insert_rack_chain(track_index, device_index)` — add chain to Instrument/Audio/Drum Rack
|
|
139
|
+
- `set_drum_chain_note(track_index, device_index, chain_index, note)` — assign MIDI note to Drum Rack chain
|
|
140
|
+
- `move_device(track_index, device_index, new_index)` — reorder devices on a track
|
|
141
|
+
|
|
142
|
+
### Plugin Deep Control
|
|
110
143
|
|
|
111
|
-
|
|
144
|
+
- `get_plugin_parameters(track_index, device_index)` — all AU/VST plugin parameters
|
|
145
|
+
- `map_plugin_parameter(track_index, device_index, parameter_index)` — map for automation
|
|
146
|
+
- `get_plugin_presets(track_index, device_index)` — list plugin presets
|
|
112
147
|
|
|
113
148
|
## Effect Chain Best Practices
|
|
114
149
|
|
|
@@ -104,7 +104,7 @@ Call `get_capability_state` at the start of any evaluation session. The response
|
|
|
104
104
|
{
|
|
105
105
|
"mode": "normal",
|
|
106
106
|
"analyzer_connected": true,
|
|
107
|
-
"bridge_version": "1.
|
|
107
|
+
"bridge_version": "1.10.1",
|
|
108
108
|
"spectral_cache_age_ms": 1200,
|
|
109
109
|
"flucoma_available": false,
|
|
110
110
|
"session_connected": true
|
|
@@ -28,38 +28,42 @@ Run this checklist EVERY time the user says "update everything", "push", "releas
|
|
|
28
28
|
|
|
29
29
|
## 2. Tool Count (must ALL match)
|
|
30
30
|
|
|
31
|
-
Current: **
|
|
32
|
-
Core (no M4L): **
|
|
31
|
+
Current: **317 tools across 43 domains**.
|
|
32
|
+
Core (no M4L): **286**. Bridge (M4L): **30** (backed by 28 bridge commands).
|
|
33
33
|
|
|
34
34
|
Verify: `grep -rc "@mcp.tool" mcp_server/tools/ | grep -v ":0" | awk -F: '{sum+=$2} END{print sum}'`
|
|
35
35
|
|
|
36
36
|
Files that reference tool count:
|
|
37
|
-
- [ ] `README.md` — header
|
|
38
|
-
- [ ] `package.json` → `"description"`
|
|
37
|
+
- [ ] `README.md` — header ("317 tools. 43 domains"), bridge section ("286 core...30 bridge")
|
|
38
|
+
- [ ] `package.json` → `"description"`
|
|
39
39
|
- [ ] `server.json` → `"description"`
|
|
40
|
+
- [ ] `manifest.json` → `"description"`
|
|
40
41
|
- [ ] `livepilot/.Codex-plugin/plugin.json` → `"description"` (primary Codex manifest)
|
|
41
42
|
- [ ] `livepilot/.claude-plugin/plugin.json` → `"description"` (must match Codex plugin)
|
|
42
43
|
- [ ] `.claude-plugin/marketplace.json` → `"description"`
|
|
43
|
-
- [ ] `CLAUDE.md` → "
|
|
44
|
-
- [ ] `
|
|
45
|
-
- [ ] `livepilot/skills/livepilot-core/
|
|
46
|
-
- [ ] `
|
|
47
|
-
- [ ] `docs/manual/
|
|
44
|
+
- [ ] `CLAUDE.md` → "317 tools across 43 domains"
|
|
45
|
+
- [ ] `CONTRIBUTING.md` → tool count in intro
|
|
46
|
+
- [ ] `livepilot/skills/livepilot-core/SKILL.md` — tool/domain count
|
|
47
|
+
- [ ] `livepilot/skills/livepilot-core/references/overview.md` — tool/domain count
|
|
48
|
+
- [ ] `docs/manual/index.md` — domain table with correct per-domain counts
|
|
49
|
+
- [ ] `docs/manual/getting-started.md` — "286 core tools...30 bridge"
|
|
48
50
|
- [ ] `docs/manual/tool-reference.md` — all domains present with correct counts
|
|
49
|
-
- [ ] `docs/
|
|
50
|
-
- [ ] `docs/
|
|
51
|
+
- [ ] `docs/manual/tool-catalog.md` — all tools present (CI-tested)
|
|
52
|
+
- [ ] `docs/manual/tool-catalog-generated.md` — regenerated from source
|
|
53
|
+
- [ ] `docs/TOOL_REFERENCE.md` — all domains present with correct counts
|
|
54
|
+
- [ ] `docs/M4L_BRIDGE.md` — "286 core tools...30 bridge"
|
|
51
55
|
- [ ] `docs/social-banner.html`
|
|
52
|
-
- [ ] `mcp_server/tools/analyzer.py` → module docstring
|
|
53
56
|
- [ ] `tests/test_tools_contract.py` → expected total count
|
|
57
|
+
- [ ] `tests/test_skill_contracts.py` → catalog sync test passes
|
|
54
58
|
|
|
55
59
|
**How to check:** `grep -rn "168\|139\|135\|127\|115\|107" --include="*.md" --include="*.json" --include="*.py" --include="*.html" . | grep -v node_modules | grep -v .git | grep -v __pycache__ | grep -v CHANGELOG`
|
|
56
60
|
|
|
57
61
|
## 3. Domain Count
|
|
58
62
|
|
|
59
|
-
Current: **
|
|
63
|
+
Current: **43 domains**: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, midi_io, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, performance_engine, song_brain, preview_studio, hook_hunter, stuckness_detector, wonder_mode, session_continuity, creative_constraints, device_forge, sample_engine, atlas, composer, experiment, musical_intelligence.
|
|
60
64
|
|
|
61
|
-
- [ ] All files that mention domain count say "
|
|
62
|
-
- [ ] Domain lists include ALL
|
|
65
|
+
- [ ] All files that mention domain count say "43 domains"
|
|
66
|
+
- [ ] Domain lists include ALL 43 (especially newer domains — they're the most often omitted)
|
|
63
67
|
|
|
64
68
|
## 4. npm Registry
|
|
65
69
|
|
|
@@ -89,9 +93,9 @@ Current: **39 domains**: transport, tracks, clips, notes, devices, scenes, mixin
|
|
|
89
93
|
|
|
90
94
|
- [ ] `README.md` — features match current capabilities, "Coming" section is accurate
|
|
91
95
|
- [ ] `docs/manual/getting-started.md` — install instructions current
|
|
92
|
-
- [ ] `docs/manual/tool-reference.md` — all
|
|
93
|
-
- [ ] `docs/TOOL_REFERENCE.md` — all
|
|
94
|
-
- [ ] `docs/M4L_BRIDGE.md` — architecture accurate, core
|
|
96
|
+
- [ ] `docs/manual/tool-reference.md` — all 43 domains listed, all 317 tools present
|
|
97
|
+
- [ ] `docs/TOOL_REFERENCE.md` — all 43 domains present with correct counts
|
|
98
|
+
- [ ] `docs/M4L_BRIDGE.md` — architecture accurate, core/bridge counts correct
|
|
95
99
|
|
|
96
100
|
## 9. Derived Artifacts
|
|
97
101
|
|
|
@@ -122,5 +126,5 @@ Current: **39 domains**: transport, tracks, clips, notes, devices, scenes, mixin
|
|
|
122
126
|
## Quick Verify Command
|
|
123
127
|
|
|
124
128
|
```bash
|
|
125
|
-
echo "=== Versions ===" && grep -h '"version"' package.json server.json livepilot/.Codex-plugin/plugin.json livepilot/.claude-plugin/plugin.json .claude-plugin/marketplace.json | head -
|
|
129
|
+
echo "=== Versions ===" && grep -h '"version"' package.json server.json manifest.json livepilot/.Codex-plugin/plugin.json livepilot/.claude-plugin/plugin.json .claude-plugin/marketplace.json | head -8 && grep __version__ mcp_server/__init__.py remote_script/LivePilot/__init__.py && echo "=== Tool count ===" && grep -rc "@mcp.tool" mcp_server/ | grep -v ":0" | awk -F: '{sum+=$2} END{print "Total:", sum}' && echo "=== Tests ===" && python3 -m pytest tests/ -q 2>&1 | tail -1
|
|
126
130
|
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: livepilot-sample-engine
|
|
3
|
+
description: >
|
|
4
|
+
This skill should be used when the user asks to "sample", "chop",
|
|
5
|
+
"slice a loop", "find me a sample", "load a sample", "flip this",
|
|
6
|
+
"resample", "vocal chop", "found sound", "texture from", "turn this into",
|
|
7
|
+
"break", "one-shot", "load into Simpler", or when get_sample_opportunities
|
|
8
|
+
finds gaps in the song's sample usage.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Sample Engine — AI Sample Manipulation for Ableton Live
|
|
12
|
+
|
|
13
|
+
The Sample Engine is LivePilot's intelligence layer for sample discovery,
|
|
14
|
+
analysis, critique, and creative manipulation. It turns raw samples into
|
|
15
|
+
musical elements through 29 techniques drawn from Dilla, Burial, Amon Tobin,
|
|
16
|
+
Four Tet, and DJ Premier.
|
|
17
|
+
|
|
18
|
+
## Philosophy: Surgeon vs Alchemist
|
|
19
|
+
|
|
20
|
+
Every sample workflow is guided by one of two philosophies:
|
|
21
|
+
|
|
22
|
+
- **Surgeon** — Precision. Match key, align tempo, carve frequencies, blend
|
|
23
|
+
seamlessly. The sample should sound like it was always part of the track.
|
|
24
|
+
- **Alchemist** — Transformation. Reverse, stretch, destroy, rebuild.
|
|
25
|
+
The original creator shouldn't recognize their sample.
|
|
26
|
+
- **Auto** (default) — Context decides. Building a clean layer? Surgeon.
|
|
27
|
+
Stuck and need surprise? Alchemist. The critics and intent determine which.
|
|
28
|
+
|
|
29
|
+
## 6 MCP Tools
|
|
30
|
+
|
|
31
|
+
| Tool | Purpose |
|
|
32
|
+
|------|---------|
|
|
33
|
+
| `analyze_sample` | Build SampleProfile — material type, key, BPM, recommendations |
|
|
34
|
+
| `evaluate_sample_fit` | 6-critic battery — key, tempo, frequency, role, vibe, intent fit |
|
|
35
|
+
| `search_samples` | Search Splice library, Ableton browser, and local filesystem |
|
|
36
|
+
| `suggest_sample_technique` | Recommend techniques from the 29-recipe library |
|
|
37
|
+
| `plan_sample_workflow` | End-to-end plan: analyze + critique + technique + compiled steps |
|
|
38
|
+
| `get_sample_opportunities` | Analyze song for where samples could improve it |
|
|
39
|
+
|
|
40
|
+
## Workflow Modes
|
|
41
|
+
|
|
42
|
+
### Direct Request
|
|
43
|
+
User asks to do something specific with a sample:
|
|
44
|
+
```
|
|
45
|
+
"Chop this vocal into a rhythm"
|
|
46
|
+
-> analyze_sample -> evaluate_sample_fit(intent="rhythm")
|
|
47
|
+
-> suggest_sample_technique -> execute
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Discovery Mode
|
|
51
|
+
User wants to find and use a sample:
|
|
52
|
+
```
|
|
53
|
+
"Find me a dark vocal for this track"
|
|
54
|
+
-> search_samples(query="dark vocal") -> present candidates
|
|
55
|
+
-> user picks -> analyze -> critique -> plan -> execute
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Wonder Mode Integration
|
|
59
|
+
When stuck, Wonder Mode can suggest sample-based variants:
|
|
60
|
+
- 6 sample-domain semantic moves in the registry
|
|
61
|
+
- Compiled plans require agent to supply `file_path` from prior `search_samples` results
|
|
62
|
+
- Diagnosis detects: no_organic_texture, stale_drums, dense_but_static
|
|
63
|
+
- Note: Wonder does not yet auto-call `search_samples` — the agent must chain the calls
|
|
64
|
+
|
|
65
|
+
## Golden Rules
|
|
66
|
+
|
|
67
|
+
1. **Always analyze before loading** — `analyze_sample` tells you what
|
|
68
|
+
the material is before you commit to a technique
|
|
69
|
+
2. **Always critique before executing** — `evaluate_sample_fit` catches
|
|
70
|
+
key clashes, tempo mismatches, and frequency masking before they happen
|
|
71
|
+
3. **Respect the intent** — "rhythm" and "texture" need different approaches
|
|
72
|
+
even for the same sample
|
|
73
|
+
4. **Start from the nearest technique** — don't improvise a workflow when
|
|
74
|
+
a proven recipe exists in the library
|
|
75
|
+
5. **Present both plans** — surgeon and alchemist. Let the user choose.
|
|
76
|
+
|
|
77
|
+
## Material Types
|
|
78
|
+
|
|
79
|
+
| Type | Detection | Best Simpler Mode | Best Warp Mode |
|
|
80
|
+
|------|-----------|-------------------|----------------|
|
|
81
|
+
| vocal | "vocal", "vox", "voice" in name | Slice (Region) | Complex Pro |
|
|
82
|
+
| drum_loop | "drum", "break", "beat" in name | Slice (Transient) | Beats |
|
|
83
|
+
| instrument_loop | "guitar", "piano", "synth" | Slice (Beat) | Complex Pro |
|
|
84
|
+
| one_shot | "kick", "snare", "clap", short | Classic | Complex |
|
|
85
|
+
| texture | "ambient", "pad", "drone" | Classic | Texture |
|
|
86
|
+
| foley | "foley", "field", "recording" | Classic | Texture |
|
|
87
|
+
| fx | "fx", "riser", "sweep" | Classic | Complex |
|
|
88
|
+
| full_mix | full mix, long duration | Slice (Beat) | Complex Pro |
|
|
89
|
+
|
|
90
|
+
## 6 Sample Critics
|
|
91
|
+
|
|
92
|
+
Each scores 0.0-1.0 on one dimension of fitness:
|
|
93
|
+
|
|
94
|
+
1. **Key Fit** — Circle-of-fifths distance from song key
|
|
95
|
+
2. **Tempo Fit** — BPM match including half/double time
|
|
96
|
+
3. **Frequency Fit** — Spectral overlap with existing mix
|
|
97
|
+
4. **Role Fit** — Does this fill a missing role in the song?
|
|
98
|
+
5. **Vibe Fit** — Taste graph alignment (if evidence exists)
|
|
99
|
+
6. **Intent Fit** — Does the material serve the stated goal?
|
|
100
|
+
|
|
101
|
+
## Reference Docs
|
|
102
|
+
|
|
103
|
+
- `references/sample-techniques.md` — Full 29-technique catalog
|
|
104
|
+
- `references/sample-critics.md` — Critic scoring details
|
|
105
|
+
- `references/sample-philosophy.md` — Surgeon vs Alchemist guide
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Sample Critics — Scoring Reference
|
|
2
|
+
|
|
3
|
+
## Key Fit Critic
|
|
4
|
+
|
|
5
|
+
Uses circle-of-fifths distance between sample key and song key.
|
|
6
|
+
|
|
7
|
+
| Distance | Score | Relationship | Action |
|
|
8
|
+
|----------|-------|-------------|--------|
|
|
9
|
+
| 0 fifths | 1.0 | Same key | Load directly |
|
|
10
|
+
| 1 fifth | 0.85 | Relative major/minor, dominant/subdominant | Layer with care |
|
|
11
|
+
| 2 fifths | 0.7 | Closely related | Works for most intents |
|
|
12
|
+
| 3 fifths | 0.55 | Moderately distant | Transpose or use as texture |
|
|
13
|
+
| 4 fifths | 0.4 | Distant | Heavy filtering needed |
|
|
14
|
+
| 5+ fifths | 0.25-0.3 | Chromatic clash | Intentional tension only |
|
|
15
|
+
| Unknown | 0.0 | Key not detected | Verify by ear |
|
|
16
|
+
|
|
17
|
+
**Weight adjustment:** For "texture" intent, key_fit weight drops 50% (pitch matters less).
|
|
18
|
+
|
|
19
|
+
## Tempo Fit Critic
|
|
20
|
+
|
|
21
|
+
Compares sample BPM against session tempo including half/double time relationships.
|
|
22
|
+
|
|
23
|
+
| Deviation | Score | Action |
|
|
24
|
+
|-----------|-------|--------|
|
|
25
|
+
| <1% | 1.0 | Exact match, no warping |
|
|
26
|
+
| <2% | 0.95 | Near-exact, minimal warp |
|
|
27
|
+
| <5% | 0.8 | Light warp, quality preserved |
|
|
28
|
+
| <10% | 0.6 | Moderate warp, choose mode carefully |
|
|
29
|
+
| <15% | 0.4 | Significant — use Texture mode for ambient |
|
|
30
|
+
| >15% | 0.2 | Extreme — texture use only |
|
|
31
|
+
| Half time | 0.9 | Set warp to half-time |
|
|
32
|
+
| Double time | 0.9 | Set warp to double-time |
|
|
33
|
+
| Unknown | 0.0 | Estimate from onsets or verify |
|
|
34
|
+
|
|
35
|
+
## Frequency Fit Critic
|
|
36
|
+
|
|
37
|
+
Requires M4L bridge spectral data. Without it, returns neutral 0.5.
|
|
38
|
+
|
|
39
|
+
| Situation | Score | Action |
|
|
40
|
+
|-----------|-------|--------|
|
|
41
|
+
| Fills empty frequency gap | 1.0 | Perfect complement |
|
|
42
|
+
| Partial overlap, manageable | 0.7 | Suggest EQ carving |
|
|
43
|
+
| Heavy masking | 0.3 | Aggressive filtering or texture use |
|
|
44
|
+
| Full spectrum into dense mix | 0.1 | Transformation source only |
|
|
45
|
+
|
|
46
|
+
## Role Fit Critic
|
|
47
|
+
|
|
48
|
+
Cross-references material_type against existing track names/roles.
|
|
49
|
+
|
|
50
|
+
| Situation | Score | Action |
|
|
51
|
+
|-----------|-------|--------|
|
|
52
|
+
| Fills missing role | 1.0 | "No percussion texture — this fills the gap" |
|
|
53
|
+
| Complements existing | 0.7 | "Adds variety to palette" |
|
|
54
|
+
| Redundant | 0.3 | "Already 3 synth layers — use as texture" |
|
|
55
|
+
|
|
56
|
+
## Vibe Fit Critic
|
|
57
|
+
|
|
58
|
+
Uses TasteGraph when evidence exists (>0 entries). Otherwise neutral 0.5.
|
|
59
|
+
|
|
60
|
+
Compares brightness, density, complexity of sample against user's taste profile.
|
|
61
|
+
|
|
62
|
+
## Intent Fit Critic
|
|
63
|
+
|
|
64
|
+
Compatibility matrix — how well the material serves the stated intent:
|
|
65
|
+
|
|
66
|
+
| Material \ Intent | rhythm | texture | layer | melody | vocal | atmosphere | transform |
|
|
67
|
+
|-------------------|--------|---------|-------|--------|-------|------------|-----------|
|
|
68
|
+
| vocal | 0.6 | 0.6 | 0.8 | 0.9 | 1.0 | 0.5 | 0.9 |
|
|
69
|
+
| drum_loop | 1.0 | 0.5 | 0.6 | 0.2 | — | 0.3 | 0.9 |
|
|
70
|
+
| instrument_loop | 0.5 | 0.6 | 1.0 | 1.0 | 0.3 | 0.5 | 0.9 |
|
|
71
|
+
| one_shot | 0.9 | 0.4 | 0.3 | 0.5 | — | 0.3 | 0.8 |
|
|
72
|
+
| texture | 0.2 | 1.0 | 0.7 | 0.3 | 0.2 | 1.0 | 0.8 |
|
|
73
|
+
| foley | 0.5 | 0.8 | 0.4 | — | — | 0.9 | 0.8 |
|
|
74
|
+
| fx | 0.3 | 0.7 | 0.3 | — | — | 0.8 | 0.7 |
|
|
75
|
+
|
|
76
|
+
## Composite Score
|
|
77
|
+
|
|
78
|
+
Default weights:
|
|
79
|
+
```
|
|
80
|
+
overall = key_fit(0.20) + tempo_fit(0.20) + frequency_fit(0.20)
|
|
81
|
+
+ role_fit(0.15) + vibe_fit(0.10) + intent_fit(0.15)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Weights shift by intent:
|
|
85
|
+
- **texture/atmosphere:** key_fit 0.10, tempo_fit 0.10, frequency_fit 0.25
|
|
86
|
+
- **rhythm:** tempo_fit 0.25, key_fit 0.10
|
|
87
|
+
- **melody:** key_fit 0.30, intent_fit 0.20
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Surgeon vs Alchemist — The Dual Philosophy
|
|
2
|
+
|
|
3
|
+
## When to be a Surgeon
|
|
4
|
+
|
|
5
|
+
The sample should serve the song without drawing attention to itself.
|
|
6
|
+
|
|
7
|
+
- **Building a clean layer** — matching key, tempo, frequency
|
|
8
|
+
- **Adding percussion variety** — break layering under existing drums
|
|
9
|
+
- **Key-matched melodic layers** — transpose and blend
|
|
10
|
+
- **Chord stab extraction** — isolate and retrigger cleanly
|
|
11
|
+
- **User says:** "blend", "layer", "match", "fit", "complement"
|
|
12
|
+
|
|
13
|
+
**Surgeon priorities:** Key accuracy > tempo precision > frequency carving > volume balance
|
|
14
|
+
|
|
15
|
+
## When to be an Alchemist
|
|
16
|
+
|
|
17
|
+
The sample is raw material for transformation. The result should surprise.
|
|
18
|
+
|
|
19
|
+
- **Stuck on a boring section** — inject chaos via destruction
|
|
20
|
+
- **Need organic texture** — reverse, stretch, scatter
|
|
21
|
+
- **Vocal as instrument** — chop syllables into rhythm
|
|
22
|
+
- **One-sample challenge** — constraint breeds creativity
|
|
23
|
+
- **User says:** "flip", "destroy", "mangle", "transform", "surprise me"
|
|
24
|
+
|
|
25
|
+
**Alchemist priorities:** Novelty > texture > emotion > originality
|
|
26
|
+
|
|
27
|
+
## Auto Mode Decision Tree
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
User said "blend/layer/match/fit"? -> Surgeon
|
|
31
|
+
User said "flip/destroy/mangle/weird"? -> Alchemist
|
|
32
|
+
Wonder Mode (stuck rescue)? -> Alchemist
|
|
33
|
+
Intent is "texture" or "atmosphere"? -> Alchemist
|
|
34
|
+
Intent is "layer" or "melody"? -> Surgeon
|
|
35
|
+
Intent is "rhythm"? -> Both available, lean Surgeon for drums, Alchemist for vocals
|
|
36
|
+
Intent is "transform" or "challenge"? -> Alchemist
|
|
37
|
+
No clear signal? -> Present both, let user choose
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## The Masters
|
|
41
|
+
|
|
42
|
+
| Producer | Philosophy | Signature |
|
|
43
|
+
|----------|-----------|-----------|
|
|
44
|
+
| J Dilla | Both | Surgical chop points, alchemical timing/swing |
|
|
45
|
+
| Burial | Alchemist | Ghostly vocal fragments, vinyl crackle as instrument |
|
|
46
|
+
| Amon Tobin | Alchemist | 80+ samples per track, serial destruction |
|
|
47
|
+
| Four Tet | Alchemist | Found-sound countermelody, collage composition |
|
|
48
|
+
| DJ Premier | Surgeon | Perfect stab isolation, rhythmic precision |
|
|
49
|
+
| Madlib | Alchemist | Blind crate digging, cross-genre flipping |
|
|
50
|
+
| RZA | Both | Cinematic soul sampling with dialogue and detuning |
|
|
51
|
+
| Bon Iver | Surgeon | Pitch-shifted vocal stacks, harmonic layering |
|