Skip to content

Commit b8fab45

Browse files
committed
misc
1 parent 05b0e84 commit b8fab45

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed

README.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,154 @@ build/release/synth # run the release build
153153

154154
The application will open a window with the synthesizer GUI.
155155

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)
218+
- CC 66: Pulse Width (0.0 to 1.0)
219+
- CC 67: Unison Voices (1 to 8 voices)
220+
- CC 68: Unison Detune (0.0 to 1.0)
221+
222+
### Mixer Parameters (CC 69-88)
223+
224+
**Individual Oscillator Gains (CC 77-82)**
225+
- CC 77: OSC 1 Gain (0.0 to 1.0)
226+
- CC 78: OSC 2 Gain (0.0 to 1.0)
227+
- CC 79: OSC 3 Gain (0.0 to 1.0)
228+
- CC 80: OSC 4 Gain (0.0 to 1.0)
229+
- CC 81: OSC 5 Gain (0.0 to 1.0)
230+
- CC 82: OSC 6 Gain (0.0 to 1.0)
231+
232+
**Master Mixer Controls (CC 83-88)**
233+
- CC 83: Master Volume (0.0 to 2.0)
234+
- CC 84: Compressor Threshold (-24.0 to 0.0 dB)
235+
- CC 85: Compressor Ratio (1.0 to 10.0:1)
236+
- CC 86: Compressor Attack (1.0 to 100.0 ms)
237+
- CC 87: Compressor Release (10.0 to 1000.0 ms)
238+
- CC 88: Compressor Makeup Gain (0.0 to 12.0 dB)
239+
240+
### Arpeggiator Parameters (CC 89-94)
241+
242+
- CC 89: Tempo (60.0 to 240.0 BPM)
243+
- CC 90: Enable/Disable (0=OFF, 1=ON)
244+
- CC 91: Mode (0=OFF, 1=CHORD, 2=UP, 3=DOWN, 4=UP/DOWN, 5=PENDULUM, 6=CONVERGE, 7=DIVERGE, 8=LEAPFROG, 9=THUMB-UP, 10=THUMB-DOWN, 11=PINKY-UP, 12=PINKY-DOWN, 13=REPEAT, 14=RANDOM, 15=RANDOM WALK, 16=SHUFFLE, 17=ORDER)
245+
- CC 92: Hold Function (0=OFF, 1=ON)
246+
- CC 93: Base Octave (0 to 4 octaves above played note)
247+
- CC 94: Octaves Spread (1 to 6 octaves of arpeggiated output)
248+
249+
### Effects Parameters (CC 69-76)
250+
251+
**Flanger Effects**
252+
- CC 72: Flanger Depth (0.0 to 1.0)
253+
- CC 73: Flanger Rate (0.0 to 5.0 Hz)
254+
- CC 74: Flanger Feedback (0.0 to 1.0)
255+
256+
**Delay Effects**
257+
- CC 69: Delay Mix (0.0 to 1.0)
258+
- CC 70: Delay Feedback (0.0 to 1.0)
259+
- CC 71: Delay Time (0.0 to 1.0 seconds)
260+
261+
**Reverb Effects**
262+
- CC 75: Reverb Size (0.0 to 1.0)
263+
- CC 76: Reverb Mix (0.0 to 1.0)
264+
265+
## MIDI Implementation Details
266+
267+
- **MIDI Channel**: Omnitone reception on all channels (1-16)
268+
- **Velocity Sensitivity**: Note velocity maps to amplitude (0/127 = silent, 127/127 = maximum)
269+
- **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+
156304
## Notes
157305

158306
- MIDI input is mapped to numerous parameters (see `src/midi.c` for mapping).

0 commit comments

Comments
 (0)