livepilot 1.0.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 (64) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +409 -0
  4. package/bin/livepilot.js +390 -0
  5. package/installer/install.js +95 -0
  6. package/installer/paths.js +79 -0
  7. package/mcp_server/__init__.py +2 -0
  8. package/mcp_server/__main__.py +5 -0
  9. package/mcp_server/connection.py +210 -0
  10. package/mcp_server/memory/__init__.py +5 -0
  11. package/mcp_server/memory/technique_store.py +296 -0
  12. package/mcp_server/server.py +87 -0
  13. package/mcp_server/tools/__init__.py +1 -0
  14. package/mcp_server/tools/arrangement.py +407 -0
  15. package/mcp_server/tools/browser.py +86 -0
  16. package/mcp_server/tools/clips.py +218 -0
  17. package/mcp_server/tools/devices.py +256 -0
  18. package/mcp_server/tools/memory.py +198 -0
  19. package/mcp_server/tools/mixing.py +121 -0
  20. package/mcp_server/tools/notes.py +269 -0
  21. package/mcp_server/tools/scenes.py +89 -0
  22. package/mcp_server/tools/tracks.py +175 -0
  23. package/mcp_server/tools/transport.py +117 -0
  24. package/package.json +37 -0
  25. package/plugin/agents/livepilot-producer/AGENT.md +62 -0
  26. package/plugin/commands/beat.md +18 -0
  27. package/plugin/commands/memory.md +22 -0
  28. package/plugin/commands/mix.md +15 -0
  29. package/plugin/commands/session.md +13 -0
  30. package/plugin/commands/sounddesign.md +16 -0
  31. package/plugin/plugin.json +19 -0
  32. package/plugin/skills/livepilot-core/SKILL.md +208 -0
  33. package/plugin/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
  34. package/plugin/skills/livepilot-core/references/device-atlas/00-index.md +110 -0
  35. package/plugin/skills/livepilot-core/references/device-atlas/distortion-and-character.md +687 -0
  36. package/plugin/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +753 -0
  37. package/plugin/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +525 -0
  38. package/plugin/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +402 -0
  39. package/plugin/skills/livepilot-core/references/device-atlas/midi-tools.md +963 -0
  40. package/plugin/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +874 -0
  41. package/plugin/skills/livepilot-core/references/device-atlas/space-and-depth.md +571 -0
  42. package/plugin/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +714 -0
  43. package/plugin/skills/livepilot-core/references/device-atlas/synths-native.md +953 -0
  44. package/plugin/skills/livepilot-core/references/m4l-devices.md +352 -0
  45. package/plugin/skills/livepilot-core/references/memory-guide.md +107 -0
  46. package/plugin/skills/livepilot-core/references/midi-recipes.md +402 -0
  47. package/plugin/skills/livepilot-core/references/mixing-patterns.md +578 -0
  48. package/plugin/skills/livepilot-core/references/overview.md +209 -0
  49. package/plugin/skills/livepilot-core/references/sound-design.md +392 -0
  50. package/remote_script/LivePilot/__init__.py +42 -0
  51. package/remote_script/LivePilot/arrangement.py +693 -0
  52. package/remote_script/LivePilot/browser.py +424 -0
  53. package/remote_script/LivePilot/clips.py +211 -0
  54. package/remote_script/LivePilot/devices.py +596 -0
  55. package/remote_script/LivePilot/diagnostics.py +198 -0
  56. package/remote_script/LivePilot/mixing.py +194 -0
  57. package/remote_script/LivePilot/notes.py +339 -0
  58. package/remote_script/LivePilot/router.py +74 -0
  59. package/remote_script/LivePilot/scenes.py +99 -0
  60. package/remote_script/LivePilot/server.py +293 -0
  61. package/remote_script/LivePilot/tracks.py +268 -0
  62. package/remote_script/LivePilot/transport.py +151 -0
  63. package/remote_script/LivePilot/utils.py +123 -0
  64. package/requirements.txt +2 -0
@@ -0,0 +1,402 @@
1
+ # MIDI Recipes — Patterns, Mappings & Techniques
2
+
3
+ Timeless MIDI programming knowledge for LivePilot. These patterns work across any version of Ableton Live and any genre. Use them as starting points — adapt to context, never apply rigidly.
4
+
5
+ ## Drum Rack MIDI Mapping (General MIDI + Ableton Standard)
6
+
7
+ Ableton's Drum Rack maps MIDI notes to pads. The default layout (and General MIDI standard):
8
+
9
+ | Note | MIDI # | Element | Common Use |
10
+ |------|--------|---------|------------|
11
+ | C1 | 36 | Kick | Main kick drum |
12
+ | C#1 | 37 | Rim/Side Stick | Accent, Latin percussion |
13
+ | D1 | 38 | Snare | Main snare |
14
+ | D#1 | 39 | Clap | Layer with snare, upbeats |
15
+ | E1 | 40 | Snare (alt) | Ghost notes, rolls |
16
+ | F1 | 41 | Low Tom | Fills |
17
+ | F#1 | 42 | Closed Hi-Hat | Groove backbone |
18
+ | G1 | 43 | Mid Tom | Fills |
19
+ | G#1 | 44 | Pedal Hi-Hat | Foot splash |
20
+ | A1 | 45 | High Tom | Fills |
21
+ | A#1 | 46 | Open Hi-Hat | Off-beats, accents |
22
+ | B1 | 47 | Mid Tom (alt) | Fills |
23
+ | C2 | 48 | High Tom (alt) | Fills |
24
+ | C#2 | 49 | Crash | Accents, section starts |
25
+ | D2 | 50 | High Tom 2 | Fills |
26
+ | D#2 | 51 | Ride | Ride patterns |
27
+ | E2 | 52 | China | Effect crashes |
28
+ | F2 | 53 | Ride Bell | Accent ride |
29
+ | F#2 | 54 | Tambourine | Texture layer |
30
+ | G2 | 55 | Splash | Quick crashes |
31
+ | G#2 | 56 | Cowbell | Latin, accent |
32
+ | A2 | 57 | Crash 2 | Variety |
33
+ | B2 | 59 | Ride 2 | Variety |
34
+
35
+ **Ableton 808/electronic kits** often remap — always check `get_device_parameters` after loading a Drum Rack.
36
+
37
+ ## Quantize Grid Values
38
+
39
+ The `quantize_clip` tool uses a `grid` parameter in beats:
40
+
41
+ | Grid | Value | Musical division |
42
+ |------|-------|-----------------|
43
+ | 1 bar | 4.0 | Whole note (at 4/4) |
44
+ | 1/2 | 2.0 | Half note |
45
+ | 1/4 | 1.0 | Quarter note |
46
+ | 1/8 | 0.5 | Eighth note |
47
+ | 1/16 | 0.25 | Sixteenth note |
48
+ | 1/32 | 0.125 | Thirty-second note |
49
+ | 1/4T | 0.667 | Quarter triplet |
50
+ | 1/8T | 0.333 | Eighth triplet |
51
+ | 1/16T | 0.167 | Sixteenth triplet |
52
+ | 1/4D | 1.5 | Dotted quarter |
53
+ | 1/8D | 0.75 | Dotted eighth |
54
+
55
+ `amount` controls how far notes snap toward the grid (0.0 = no change, 1.0 = full snap). Use 0.5-0.75 to tighten timing while keeping human feel.
56
+
57
+ ## Beat Length Math (4/4 time)
58
+
59
+ | Bars | Beats | Typical use |
60
+ |------|-------|------------|
61
+ | 1 | 4.0 | Single pattern |
62
+ | 2 | 8.0 | Standard loop |
63
+ | 4 | 16.0 | Verse/chorus section |
64
+ | 8 | 32.0 | Extended section |
65
+ | 16 | 64.0 | Full arrangement section |
66
+
67
+ For other time signatures: bars × numerator = beats (e.g., 3/4 time: 4 bars = 12 beats).
68
+
69
+ ## Genre Drum Patterns
70
+
71
+ ### Four-on-the-floor (House, Techno, Disco)
72
+ ```
73
+ Beat: 1 . . . 2 . . . 3 . . . 4 . . .
74
+ Kick: X . . . X . . . X . . . X . . .
75
+ Snare: . . . . X . . . . . . . X . . .
76
+ CHH: X . X . X . X . X . X . X . X .
77
+ OHH: . . . . . . . . . . . . . . . .
78
+ ```
79
+ Notes (1 bar = 4.0 beats, 16th grid = 0.25):
80
+ - Kick: 36 at 0.0, 1.0, 2.0, 3.0 — vel 100-127
81
+ - Snare: 38 at 1.0, 3.0 — vel 100-120
82
+ - CHH: 42 at 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5 — vel 80-100
83
+
84
+ ### Boom Bap (Hip-Hop)
85
+ ```
86
+ Beat: 1 . . . 2 . . . 3 . . . 4 . . .
87
+ Kick: X . . . . . X . . . . . . . . .
88
+ Snare: . . . . X . . . . . . . X . . .
89
+ CHH: X . X . X . X . X . X . X . X .
90
+ ```
91
+ Notes:
92
+ - Kick: 36 at 0.0, 1.5 — vel 110-127
93
+ - Snare: 38 at 1.0, 3.0 — vel 100-120
94
+ - CHH: 42 on eighth notes — vel 70-90, accent on beats
95
+
96
+ ### Trap
97
+ ```
98
+ Beat: 1 . . . 2 . . . 3 . . . 4 . . .
99
+ Kick: X . . . . . X X . . . . . . X .
100
+ Snare: . . . . X . . . . . . . X . . .
101
+ CHH: XxXxXxXxXxXxXxXx (rapid 16ths/32nds with velocity rolls)
102
+ ```
103
+ Notes:
104
+ - Kick: 36 at 0.0, 1.5, 1.75, 3.5 — vel 110-127
105
+ - Snare/clap: 38+39 layered at 1.0, 3.0 — vel 100-127
106
+ - CHH: 42 on every 16th or 32nd — velocity ramps create rolls (see hi-hat section)
107
+
108
+ ### Breakbeat (Drum & Bass, Jungle)
109
+ ```
110
+ Beat: 1 . . . 2 . . . 3 . . . 4 . . .
111
+ Kick: X . . . . . . . . . X . . . . .
112
+ Snare: . . . . X . . . . . . . . . X .
113
+ CHH: X . X . X . X . X . X . X . X .
114
+ ```
115
+ Notes (at 170 BPM for DnB):
116
+ - Kick: 36 at 0.0, 2.5 — vel 110-127
117
+ - Snare: 38 at 1.0, 3.5 — vel 100-120
118
+ - CHH: 42 on eighths — vel 70-90
119
+
120
+ ### Reggaeton / Dembow
121
+ ```
122
+ Beat: 1 . . . 2 . . . 3 . . . 4 . . .
123
+ Kick: X . . . . . X . X . . . . . X .
124
+ Snare: . . . X . . . X . . . X . . . X
125
+ CHH: X . X . X . X . X . X . X . X .
126
+ ```
127
+
128
+ ## Hi-Hat Techniques
129
+
130
+ ### Velocity Rolls (Trap Style)
131
+ Create a ramp from low to high velocity over rapid notes:
132
+ ```python
133
+ # 32nd note hi-hat roll building up over 1 beat
134
+ notes = []
135
+ for i in range(8): # 8 x 32nd notes = 1 beat
136
+ notes.append({
137
+ "pitch": 42,
138
+ "start_time": start + (i * 0.125),
139
+ "duration": 0.1,
140
+ "velocity": 40 + int(i * 11), # 40 → 117 ramp
141
+ })
142
+ ```
143
+
144
+ ### Open/Closed Alternation
145
+ Open hi-hat (46) and closed (42) alternate — in a real Drum Rack, they're in a choke group so open cuts when closed hits:
146
+ ```
147
+ CHH: X . X . X . X .
148
+ OHH: . . . . . . . X (open on the "and" of 4)
149
+ ```
150
+ - Closed: vel 70-90, duration 0.1 (short)
151
+ - Open: vel 90-110, duration 0.25-0.5 (longer, ring out)
152
+
153
+ ### Swing / Shuffle
154
+ Delay every other 16th note by a small amount (0.02-0.04 beats):
155
+ ```python
156
+ for i in range(16):
157
+ offset = 0.02 if i % 2 == 1 else 0.0 # swing the offbeats
158
+ notes.append({
159
+ "pitch": 42,
160
+ "start_time": (i * 0.25) + offset,
161
+ "duration": 0.1,
162
+ "velocity": 90 if i % 4 == 0 else 70, # accent downbeats
163
+ })
164
+ ```
165
+
166
+ ## Ghost Notes
167
+
168
+ Quiet notes that add groove texture. Typically snare ghosts on 16th notes adjacent to main hits:
169
+
170
+ ```python
171
+ # Ghost notes around main snare hits at beats 2 and 4
172
+ ghost_notes = [
173
+ {"pitch": 40, "start_time": 0.75, "duration": 0.15, "velocity": 30}, # before beat 2
174
+ {"pitch": 40, "start_time": 1.25, "duration": 0.15, "velocity": 25}, # after beat 2
175
+ {"pitch": 40, "start_time": 2.75, "duration": 0.15, "velocity": 30}, # before beat 4
176
+ {"pitch": 40, "start_time": 3.25, "duration": 0.15, "velocity": 25}, # after beat 4
177
+ ]
178
+ ```
179
+
180
+ Key principles:
181
+ - Velocity 20-50 (much quieter than main hits at 100-127)
182
+ - Use alternate snare sound (pitch 40) or same snare (38) at low velocity
183
+ - Place on 16th notes before/after main hits
184
+ - Uneven velocities feel more natural
185
+
186
+ ## Humanization
187
+
188
+ ### Velocity Variation
189
+ Add subtle randomness to velocity (±5-15 from base):
190
+ ```python
191
+ import random
192
+ base_vel = 100
193
+ velocity = base_vel + random.randint(-10, 10)
194
+ velocity = max(1, min(127, velocity))
195
+ ```
196
+
197
+ ### Timing Micro-shifts
198
+ Shift note start times slightly off-grid (±0.005-0.02 beats):
199
+ - Drag kicks slightly early (-0.005) for urgency
200
+ - Delay snares slightly (+0.01) for laid-back feel
201
+ - Keep hi-hats on grid as rhythmic anchor
202
+
203
+ ### Per-Note Probability (Live 12)
204
+ Use `modify_notes` to set probability < 1.0:
205
+ - Hi-hat fills: probability 0.5-0.7 (sometimes play, sometimes don't)
206
+ - Ghost notes: probability 0.3-0.6 (sparse, evolving)
207
+ - Main hits: probability 1.0 (always play)
208
+ - Generative beats: mix probabilities across the pattern for evolving grooves
209
+
210
+ ## Chord Voicings (MIDI Pitch Values)
211
+
212
+ Middle C = MIDI 60 (C3). Each semitone = +1.
213
+
214
+ ### Basic Triads (root position, root = C3/60)
215
+ | Chord | Notes | MIDI pitches |
216
+ |-------|-------|-------------|
217
+ | C major | C E G | 60, 64, 67 |
218
+ | C minor | C Eb G | 60, 63, 67 |
219
+ | C diminished | C Eb Gb | 60, 63, 66 |
220
+ | C augmented | C E G# | 60, 64, 68 |
221
+ | C sus2 | C D G | 60, 62, 67 |
222
+ | C sus4 | C F G | 60, 65, 67 |
223
+
224
+ ### Seventh Chords
225
+ | Chord | Notes | Intervals from root |
226
+ |-------|-------|-------------------|
227
+ | Major 7 | 1 3 5 7 | +0, +4, +7, +11 |
228
+ | Minor 7 | 1 b3 5 b7 | +0, +3, +7, +10 |
229
+ | Dominant 7 | 1 3 5 b7 | +0, +4, +7, +10 |
230
+ | Diminished 7 | 1 b3 b5 bb7 | +0, +3, +6, +9 |
231
+ | Half-dim 7 | 1 b3 b5 b7 | +0, +3, +6, +10 |
232
+
233
+ ### Extended Chords
234
+ | Chord | Intervals from root |
235
+ |-------|-------------------|
236
+ | Major 9 | +0, +4, +7, +11, +14 |
237
+ | Minor 9 | +0, +3, +7, +10, +14 |
238
+ | Dominant 9 | +0, +4, +7, +10, +14 |
239
+ | Add 9 | +0, +4, +7, +14 |
240
+ | 11th | +0, +4, +7, +10, +14, +17 |
241
+ | 13th | +0, +4, +7, +10, +14, +21 |
242
+
243
+ ### Interval Quick Reference
244
+ | Interval | Semitones | Example (from C) |
245
+ |----------|-----------|------------------|
246
+ | Minor 2nd | 1 | C → C# |
247
+ | Major 2nd | 2 | C → D |
248
+ | Minor 3rd | 3 | C → Eb |
249
+ | Major 3rd | 4 | C → E |
250
+ | Perfect 4th | 5 | C → F |
251
+ | Tritone | 6 | C → F# |
252
+ | Perfect 5th | 7 | C → G |
253
+ | Minor 6th | 8 | C → Ab |
254
+ | Major 6th | 9 | C → A |
255
+ | Minor 7th | 10 | C → Bb |
256
+ | Major 7th | 11 | C → B |
257
+ | Octave | 12 | C → C |
258
+
259
+ ### Voicing Strategies
260
+ - **Pads**: Spread voicings — wide intervals, notes across 2+ octaves. Start root low (C2/48), spread 3rd and 5th up.
261
+ - **Stabs**: Tight voicings — notes within one octave, rhythmic impact.
262
+ - **Bass + chord**: Root note on bass track (low octave), chord on separate track (mid octave).
263
+ - **Inversions**: Move lowest note up an octave. 1st inversion = 3-5-1, 2nd inversion = 5-1-3. Smoother voice leading between chords.
264
+
265
+ ### Common Progressions (intervals from scale root)
266
+
267
+ | Name | Chords | Feel |
268
+ |------|--------|------|
269
+ | I-V-vi-IV | C G Am F | Pop, uplifting |
270
+ | ii-V-I | Dm7 G7 Cmaj7 | Jazz, sophisticated |
271
+ | i-iv-VII-III | Am Dm G C | Minor, emotional |
272
+ | I-vi-IV-V | C Am F G | Classic pop |
273
+ | vi-IV-I-V | Am F C G | Modern pop/EDM |
274
+ | i-III-VII-VI | Am C G F | Dark, driving |
275
+ | I-IV | C F | Dance, house |
276
+ | i-VII | Am G | Dark minimal |
277
+
278
+ To transpose: add semitones to all MIDI values. E.g., C major → D major: add 2 to every pitch.
279
+
280
+ ## Bass Patterns
281
+
282
+ ### Sub Bass (sustained)
283
+ ```python
284
+ # One note per bar, low octave
285
+ {"pitch": 36, "start_time": 0.0, "duration": 3.75, "velocity": 100}
286
+ ```
287
+
288
+ ### Octave Bass (dance)
289
+ ```python
290
+ # Alternating root and octave
291
+ notes = [
292
+ {"pitch": 36, "start_time": 0.0, "duration": 0.4, "velocity": 110},
293
+ {"pitch": 48, "start_time": 0.5, "duration": 0.4, "velocity": 90},
294
+ {"pitch": 36, "start_time": 1.0, "duration": 0.4, "velocity": 110},
295
+ {"pitch": 48, "start_time": 1.5, "duration": 0.4, "velocity": 90},
296
+ ]
297
+ ```
298
+
299
+ ### Walking Bass
300
+ Move through chord tones: root → 3rd → 5th → octave (or chromatic approach notes).
301
+
302
+ ### Staccato vs Legato
303
+ - **Staccato**: duration 0.1-0.2 (tight, percussive)
304
+ - **Legato**: duration fills gap to next note (smooth, flowing)
305
+ - **Portamento**: overlapping notes (duration extends past next note start) — triggers glide on monophonic synths
306
+
307
+ ## Polymetric Patterns
308
+
309
+ Create two clips with different lengths — they cycle at different rates creating evolving patterns:
310
+
311
+ | Ratio | Clip A (beats) | Clip B (beats) | Realigns after |
312
+ |-------|---------------|---------------|----------------|
313
+ | 3:4 | 3.0 | 4.0 | 12 beats |
314
+ | 5:4 | 5.0 | 4.0 | 20 beats |
315
+ | 7:8 | 3.5 | 4.0 | 28 beats |
316
+ | 3:2 | 3.0 | 2.0 | 6 beats |
317
+
318
+ Create clips with `create_clip` using these lengths — Ableton loops them independently per track.
319
+
320
+ ## Scale Patterns
321
+
322
+ ### Common scales as semitone intervals from root
323
+ | Scale | Pattern | Notes (from C) |
324
+ |-------|---------|----------------|
325
+ | Major | 0,2,4,5,7,9,11 | C D E F G A B |
326
+ | Natural Minor | 0,2,3,5,7,8,10 | C D Eb F G Ab Bb |
327
+ | Harmonic Minor | 0,2,3,5,7,8,11 | C D Eb F G Ab B |
328
+ | Melodic Minor | 0,2,3,5,7,9,11 | C D Eb F G A B |
329
+ | Dorian | 0,2,3,5,7,9,10 | C D Eb F G A Bb |
330
+ | Mixolydian | 0,2,4,5,7,9,10 | C D E F G A Bb |
331
+ | Pentatonic Major | 0,2,4,7,9 | C D E G A |
332
+ | Pentatonic Minor | 0,3,5,7,10 | C Eb F G Bb |
333
+ | Blues | 0,3,5,6,7,10 | C Eb F F# G Bb |
334
+ | Whole Tone | 0,2,4,6,8,10 | C D E F# G# A# |
335
+ | Chromatic | 0-11 | All notes |
336
+
337
+ To generate notes in a scale: take root MIDI note + interval offsets, transpose to desired octave.
338
+
339
+ ## Arpeggio Patterns
340
+
341
+ ### Up pattern (C major triad)
342
+ ```python
343
+ # 16th notes ascending
344
+ root = 60 # C3
345
+ intervals = [0, 4, 7, 12] # root, 3rd, 5th, octave
346
+ for i, interval in enumerate(intervals):
347
+ notes.append({
348
+ "pitch": root + interval,
349
+ "start_time": i * 0.25,
350
+ "duration": 0.2,
351
+ "velocity": 100 - (i * 5), # slight decay
352
+ })
353
+ ```
354
+
355
+ ### Common arpeggio styles
356
+ - **Up**: 1 → 3 → 5 → 8
357
+ - **Down**: 8 → 5 → 3 → 1
358
+ - **Up-Down**: 1 → 3 → 5 → 8 → 5 → 3
359
+ - **Random**: random order (use probability for generative)
360
+ - **Chord**: all notes simultaneously (stab)
361
+
362
+ Rate determines speed: 1/8 = 0.5 beat spacing, 1/16 = 0.25 beat spacing.
363
+
364
+ ## Euclidean Rhythms
365
+
366
+ Distribute `k` notes as evenly as possible across `n` steps. These are found in music traditions worldwide and create compelling grooves.
367
+
368
+ | Notation | Steps | Hits | Pattern (x=hit, .=rest) | Association |
369
+ |----------|-------|------|------------------------|-------------|
370
+ | E(3,8) | 8 | 3 | x..x..x. | Cuban tresillo |
371
+ | E(5,8) | 8 | 5 | x.xx.xx. | West African bell |
372
+ | E(7,12) | 12 | 7 | x.xx.x.xx.x. | West African 12/8 |
373
+ | E(5,16) | 16 | 5 | x..x..x..x..x.. | Bossa nova |
374
+ | E(3,16) | 16 | 3 | x.....x.....x... | Sparse, ambient |
375
+ | E(4,12) | 12 | 4 | x..x..x..x.. | Triplet groove |
376
+ | E(7,16) | 16 | 7 | x.x.x.xx.x.x.xx | Complex groove |
377
+
378
+ To convert to beat times: `step * (clip_length / total_steps)`. For a 4-beat clip with 16 steps, each step = 0.25 beats.
379
+
380
+ ## Live 12 MIDI Tools (Built-in Generators & Transformations)
381
+
382
+ Live 12 includes powerful built-in MIDI tools accessible via the clip editor. These are relevant context for understanding what users may have already applied to their clips.
383
+
384
+ ### Generators
385
+ - **Rhythm** — Up to 16 steps, density control, split probability (steps divide in half)
386
+ - **Euclidean** — Up to 4 voices, per-voice pitch/velocity, rotation and density sliders
387
+ - **Seed** — Random generator with pitch range, duration range, velocity range, voice count
388
+ - **Shape** — Notes follow drawn shapes with pitch range, rate, tie probability
389
+ - **Stacks** — Chord generator using Tonnetz visualization, scale-aware
390
+
391
+ ### Transformations
392
+ - **Quantize** — Grid + triplet, amount 0-100% (partial quantize)
393
+ - **Arpeggiate** — 18 styles, transposition by scale degrees or semitones
394
+ - **Span** — Legato/tenuto/staccato articulation
395
+ - **Chop** — Divide notes into up to 64 parts with gap patterns
396
+ - **Strum** — Chord timing with low/high strum and tension
397
+ - **Ornament** — Flam and grace notes
398
+ - **Recombine** — Shuffle/mirror/rotate position, pitch, duration, or velocity
399
+ - **Time Warp** — Accelerando/ritardando speed curves
400
+ - **Humanize** — Variation up to 1/4 of grid division
401
+
402
+ These tools operate on existing clip data — LivePilot's `add_notes`, `modify_notes`, and `quantize_clip` tools complement them for programmatic MIDI manipulation.