You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+148Lines changed: 148 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -153,6 +153,154 @@ build/release/synth # run the release build
153
153
154
154
The application will open a window with the synthesizer GUI.
155
155
156
+
## MIDI CC Control Mapping
157
+
158
+
This synthesizer supports comprehensive MIDI CC (Continuous Controller) mapping for real-time parameter control. All MIDI CC messages are automatically scaled from MIDI range (0-127) to the appropriate parameter ranges.
159
+
160
+
### Oscillator Parameters (CC 0-60)
161
+
162
+
**Oscillator 1 (CC 0-7)**
163
+
- CC 0: Pitch (-24.0 to +24.0 semitones)
164
+
- CC 1: Detune (-1.0 to +1.0 cents)
165
+
- CC 2: Gain (0.0 to 1.0)
166
+
- CC 3: Phase (0.0 to 1.0)
167
+
- CC 4: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
168
+
- CC 5: Pulse Width (0.0 to 1.0)
169
+
- CC 6: Unison Voices (1 to 8 voices)
170
+
- CC 7: Unison Detune (0.0 to 1.0)
171
+
172
+
**Oscillator 2 (CC 8-15)**
173
+
- CC 8: Pitch (-24.0 to +24.0 semitones)
174
+
- CC 9: Detune (-1.0 to +1.0 cents)
175
+
- CC 10: Gain (0.0 to 1.0)
176
+
- CC 11: Phase (0.0 to 1.0)
177
+
- CC 12: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
178
+
- CC 13: Pulse Width (0.0 to 1.0)
179
+
- CC 14: Unison Voices (1 to 8 voices)
180
+
- CC 15: Unison Detune (0.0 to 1.0)
181
+
182
+
**Oscillator 3 (CC 16-23)**
183
+
- CC 16: Pitch (-24.0 to +24.0 semitones)
184
+
- CC 17: Detune (-1.0 to +1.0 cents)
185
+
- CC 18: Gain (0.0 to 1.0)
186
+
- CC 19: Phase (0.0 to 1.0)
187
+
- CC 20: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
188
+
- CC 21: Pulse Width (0.0 to 1.0)
189
+
- CC 22: Unison Voices (1 to 8 voices)
190
+
- CC 23: Unison Detune (0.0 to 1.0)
191
+
192
+
**Oscillator 4 (CC 24-31)**
193
+
- CC 24: Pitch (-24.0 to +24.0 semitones)
194
+
- CC 25: Detune (-1.0 to +1.0 cents)
195
+
- CC 26: Gain (0.0 to 1.0)
196
+
- CC 27: Phase (0.0 to 1.0)
197
+
- CC 28: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
198
+
- CC 29: Pulse Width (0.0 to 1.0)
199
+
- CC 30: Unison Voices (1 to 8 voices)
200
+
- CC 31: Unison Detune (0.0 to 1.0)
201
+
202
+
**Oscillator 5 - Bass (CC 53-60)**
203
+
- CC 53: Pitch (-24.0 to +24.0 semitones)
204
+
- CC 54: Detune (-1.0 to +1.0 cents)
205
+
- CC 55: Gain (0.0 to 1.0)
206
+
- CC 56: Phase (0.0 to 1.0)
207
+
- CC 57: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
208
+
- CC 58: Pulse Width (0.0 to 1.0)
209
+
- CC 59: Unison Voices (1 to 8 voices)
210
+
- CC 60: Unison Detune (0.0 to 1.0)
211
+
212
+
**Oscillator 6 - Percussion (CC 61-68)**
213
+
- CC 61: Pitch (-24.0 to +24.0 semitones)
214
+
- CC 62: Detune (-1.0 to +1.0 cents)
215
+
- CC 63: Gain (0.0 to 1.0)
216
+
- CC 64: Phase (0.0 to 1.0)
217
+
- CC 65: Waveform (0=SINE, 1=SAW, 2=SQUARE, 3=TRI, 4=NOISE)
-**CC Resolution**: 7-bit MIDI CC scaled to float parameter ranges
270
+
-**Real-time Response**: All parameter changes are applied immediately
271
+
-**Preset Compatibility**: All MIDI CC mappings work with saved/loaded presets
272
+
273
+
## Usage Examples
274
+
275
+
### Basic Performance Setup
276
+
```
277
+
MIDI Controller → CC Mapping
278
+
Modulation Wheel → CC 1 (OSC 1 Detune)
279
+
Expression Pedal → CC 2 (OSC 1 Gain)
280
+
Sustain Pedal → CC 92 (Arpeggiator Hold)
281
+
Foot Controller 1 → CC 83 (Master Volume)
282
+
Foot Controller 2 → CC 89 (Arpeggiator Tempo)
283
+
```
284
+
285
+
### Studio Production Workflow
286
+
```
287
+
Track 1 (Lead): CC 8-15 → OSC 2 controls
288
+
Track 2 (Bass): CC 53-60 → OSC 5 controls
289
+
Track 3 (Pads): CC 24-31 → OSC 3 controls
290
+
Track 4 (FX): CC 69-76 → Effects automation
291
+
Track 5 (Mix): CC 77-88 → Mixer levels and dynamics
292
+
```
293
+
294
+
### Live Performance Control
295
+
```
296
+
Hands-free control: Assign commonly used parameters to accessible CC numbers
297
+
Filter sweeps: Map filter cutoff to CC for real-time sweeps
298
+
Dynamic effects: Use CC 69-76 for effect parameter automation
299
+
Layer mixing: Use individual OSC gain CCs for live mixing
300
+
```
301
+
302
+
This comprehensive MIDI CC implementation provides studio-level control over all synthesizer parameters, enabling both live performance and production automation workflows.
303
+
156
304
## Notes
157
305
158
306
- MIDI input is mapped to numerous parameters (see `src/midi.c` for mapping).
0 commit comments