livepilot 1.1.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.
- package/.claude/settings.local.json +10 -0
- package/.mcpregistry_github_token +1 -0
- package/.mcpregistry_registry_token +1 -0
- package/.playwright-mcp/console-2026-03-17T15-47-29-021Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-51-09-247Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-52-22-831Z.log +12 -0
- package/.playwright-mcp/console-2026-03-17T15-52-29-709Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-53-20-147Z.log +1 -0
- package/.playwright-mcp/glama-snapshot.md +2140 -0
- package/.playwright-mcp/page-2026-03-17T15-49-02-625Z.png +0 -0
- package/.playwright-mcp/page-2026-03-17T15-52-15-149Z.png +0 -0
- package/.playwright-mcp/page-2026-03-17T15-52-57-333Z.png +0 -0
- package/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +296 -0
- package/bin/livepilot.js +376 -0
- package/installer/install.js +95 -0
- package/installer/paths.js +79 -0
- package/mcp_server/__init__.py +2 -0
- package/mcp_server/__main__.py +5 -0
- package/mcp_server/connection.py +207 -0
- package/mcp_server/server.py +40 -0
- package/mcp_server/tools/__init__.py +1 -0
- package/mcp_server/tools/arrangement.py +399 -0
- package/mcp_server/tools/browser.py +78 -0
- package/mcp_server/tools/clips.py +187 -0
- package/mcp_server/tools/devices.py +238 -0
- package/mcp_server/tools/mixing.py +113 -0
- package/mcp_server/tools/notes.py +266 -0
- package/mcp_server/tools/scenes.py +63 -0
- package/mcp_server/tools/tracks.py +148 -0
- package/mcp_server/tools/transport.py +113 -0
- package/package.json +38 -0
- package/plugin/.mcp.json +8 -0
- package/plugin/agents/livepilot-producer/AGENT.md +61 -0
- package/plugin/commands/beat.md +18 -0
- package/plugin/commands/mix.md +15 -0
- package/plugin/commands/session.md +13 -0
- package/plugin/commands/sounddesign.md +16 -0
- package/plugin/plugin.json +18 -0
- package/plugin/skills/livepilot-core/SKILL.md +160 -0
- package/plugin/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
- package/plugin/skills/livepilot-core/references/m4l-devices.md +352 -0
- package/plugin/skills/livepilot-core/references/midi-recipes.md +402 -0
- package/plugin/skills/livepilot-core/references/mixing-patterns.md +578 -0
- package/plugin/skills/livepilot-core/references/overview.md +191 -0
- package/plugin/skills/livepilot-core/references/sound-design.md +392 -0
- package/remote_script/LivePilot/__init__.py +42 -0
- package/remote_script/LivePilot/arrangement.py +678 -0
- package/remote_script/LivePilot/browser.py +325 -0
- package/remote_script/LivePilot/clips.py +172 -0
- package/remote_script/LivePilot/devices.py +466 -0
- package/remote_script/LivePilot/diagnostics.py +198 -0
- package/remote_script/LivePilot/mixing.py +194 -0
- package/remote_script/LivePilot/notes.py +339 -0
- package/remote_script/LivePilot/router.py +74 -0
- package/remote_script/LivePilot/scenes.py +75 -0
- package/remote_script/LivePilot/server.py +286 -0
- package/remote_script/LivePilot/tracks.py +229 -0
- package/remote_script/LivePilot/transport.py +147 -0
- package/remote_script/LivePilot/utils.py +112 -0
- package/requirements.txt +2 -0
- package/server.json +20 -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.
|