Nice!baconpaul wrote: Sat Feb 28, 2026 6:57 pm Right the short version is an opcode x has a partner opcode x_onCCn which maps the midi control and a curveccN which makes it uni or bipolar
So for instance ampeg_attack=1.3 ampeg_attack_onCC41=0.5 means as you move cc41 from 0…127 the attack moves from 1.3 to 1.8
(Shortcircuit doesn’t support these opcodes today but sforzando and sfizz and others do)
The sfz format team has been doing a good job keeping the documentation improving at sfzformat.com and is very open to questions and suggestions on their GitHub and discord. Here’s the doc for oncc https://sfzformat.com/modulations/midi_ccs/
I have a cunning plan to import all the oncc opcodes into short circuit mod matrix rows too. But I want to do it in a way which refactors and shares the code among formats a smidge more. I started some of that with the fixes in the beta this week
I started reading about AI last night, and then tried my hand at making an AI assisted template with the things I want. I’ll have to research and test for accuracy, but I think my prompts and corrections and AI’s idiot savant-like intelligence made a pretty good team. It’s formatted for a full page, so it won’t look great copied to a forum post, but this is what we came up with after an hour:
; ============================================================
; INSTRUMENT BUILDER REFERENCE
; ============================================================
; MIDI CC Mapping:
; CC1 -> Mod Wheel Vibrato Depth
; CC5 -> Optional Glide Depth
; CC7 -> Main Volume
; CC10 -> Pan
; CC11 -> Expression
; CC64 -> Sustain Pedal
; CC71 -> Filter Resonance (Q)
; CC74 -> Filter Cutoff
;
; Pitch Wheel: ±12 semitones
; Velocity Layers:
; 0–42 -> Soft
; 43–85 -> Medium
; 86–127 -> Loud
; Round-Robin: 3 samples per layer
; Mono/Poly & Portamento: global
; Vibrato: global, CC1 = mod wheel
; ============================================================
<control>
default_path=samples/
<global>
; --------------------------
; Amplitude Envelope
; --------------------------
ampeg_attack=0.01
ampeg_decay=0.2
ampeg_sustain=100
ampeg_release=0.3
ampeg_attack_cc74=1.0
ampeg_release_cc71=3.0
; --------------------------
; Volume & Pan
; --------------------------
volume_cc7=100
pan_cc10=100
; --------------------------
; Filter
; --------------------------
cutoff=12000
cutoff_cc74=8000
resonance_cc71=500
; --------------------------
; Pitch Wheel
; --------------------------
pitch_bend=12
; --------------------------
; Mono/Poly & Portamento
; --------------------------
polyphony=1
glide=1
glide_time=0.2
; --------------------------
; Global Vibrato
; --------------------------
lfo1_type=sine
lfo1_freq=5
lfo1_depth=0.5
lfo1_target=pitch
lfo1_cc1=1
; ============================================================
; VELOCITY LAYER 1: Soft (0–42)
; ============================================================
<group>
lovel=0
hivel=42
seq_length=3 ; 3 round-robin samples per note
; --------------------------
; OCTAVE 2 (C2–B2)
; --------------------------
<region> sample=Strings_C2_soft_1.wav key=36 pitch_keycenter=36 seq_position=1
<region> sample=Strings_C2_soft_2.wav key=36 pitch_keycenter=36 seq_position=2
<region> sample=Strings_C2_soft_3.wav key=36 pitch_keycenter=36 seq_position=3
<region> sample=Strings_Cs2_soft_1.wav key=37 pitch_keycenter=37 seq_position=1
<region> sample=Strings_Cs2_soft_2.wav key=37 pitch_keycenter=37 seq_position=2
<region> sample=Strings_Cs2_soft_3.wav key=37 pitch_keycenter=37 seq_position=3
<region> sample=Strings_D2_soft_1.wav key=38 pitch_keycenter=38 seq_position=1
<region> sample=Strings_D2_soft_2.wav key=38 pitch_keycenter=38 seq_position=2
<region> sample=Strings_D2_soft_3.wav key=38 pitch_keycenter=38 seq_position=3
<region> sample=Strings_Ds2_soft_1.wav key=39 pitch_keycenter=39 seq_position=1
<region> sample=Strings_Ds2_soft_2.wav key=39 pitch_keycenter=39 seq_position=2
<region> sample=Strings_Ds2_soft_3.wav key=39 pitch_keycenter=39 seq_position=3
<region> sample=Strings_E2_soft_1.wav key=40 pitch_keycenter=40 seq_position=1
<region> sample=Strings_E2_soft_2.wav key=40 pitch_keycenter=40 seq_position=2
<region> sample=Strings_E2_soft_3.wav key=40 pitch_keycenter=40 seq_position=3
<region> sample=Strings_F2_soft_1.wav key=41 pitch_keycenter=41 seq_position=1
<region> sample=Strings_F2_soft_2.wav key=41 pitch_keycenter=41 seq_position=2
<region> sample=Strings_F2_soft_3.wav key=41 pitch_keycenter=41 seq_position=3
<region> sample=Strings_Fs2_soft_1.wav key=42 pitch_keycenter=42 seq_position=1
<region> sample=Strings_Fs2_soft_2.wav key=42 pitch_keycenter=42 seq_position=2
<region> sample=Strings_Fs2_soft_3.wav key=42 pitch_keycenter=42 seq_position=3
<region> sample=Strings_G2_soft_1.wav key=43 pitch_keycenter=43 seq_position=1
<region> sample=Strings_G2_soft_2.wav key=43 pitch_keycenter=43 seq_position=2
<region> sample=Strings_G2_soft_3.wav key=43 pitch_keycenter=43 seq_position=3
<region> sample=Strings_Gs2_soft_1.wav key=44 pitch_keycenter=44 seq_position=1
<region> sample=Strings_Gs2_soft_2.wav key=44 pitch_keycenter=44 seq_position=2
<region> sample=Strings_Gs2_soft_3.wav key=44 pitch_keycenter=44 seq_position=3
<region> sample=Strings_A2_soft_1.wav key=45 pitch_keycenter=45 seq_position=1
<region> sample=Strings_A2_soft_2.wav key=45 pitch_keycenter=45 seq_position=2
<region> sample=Strings_A2_soft_3.wav key=45 pitch_keycenter=45 seq_position=3
<region> sample=Strings_As2_soft_1.wav key=46 pitch_keycenter=46 seq_position=1
<region> sample=Strings_As2_soft_2.wav key=46 pitch_keycenter=46 seq_position=2
<region> sample=Strings_As2_soft_3.wav key=46 pitch_keycenter=46 seq_position=3
<region> sample=Strings_B2_soft_1.wav key=47 pitch_keycenter=47 seq_position=1
<region> sample=Strings_B2_soft_2.wav key=47 pitch_keycenter=47 seq_position=2
<region> sample=Strings_B2_soft_3.wav key=47 pitch_keycenter=47 seq_position=3
; --------------------------
; OCTAVE 3 (C3–B3)
; --------------------------
<region> sample=Strings_C3_soft_1.wav key=48 pitch_keycenter=48 seq_position=1
<region> sample=Strings_C3_soft_2.wav key=48 pitch_keycenter=48 seq_position=2
<region> sample=Strings_C3_soft_3.wav key=48 pitch_keycenter=48 seq_position=3
<region> sample=Strings_Cs3_soft_1.wav key=49 pitch_keycenter=49 seq_position=1
<region> sample=Strings_Cs3_soft_2.wav key=49 pitch_keycenter=49 seq_position=2
<region> sample=Strings_Cs3_soft_3.wav key=49 pitch_keycenter=49 seq_position=3
; ... continue same pattern through B3, then C4–B4, C5–B5, C6 ...
Anyone can use this if they want to.
It looks much nicer in a full page text editor. I see some mistakes in it, and I’m sure that there are mistakes I don’t even know about. But over all, I was impressed at what AI was able to do.
