Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 93 additions & 19 deletions synths/moog_minitaur.yaml
Original file line number Diff line number Diff line change
@@ -1,30 +1,104 @@
name: Minitaur
manufacturer: Moog
midi_channel: 2
midi_channel: 16
cc_map:
# Oscillators
vco1_level:
cc: 15
vco2_level:
cc: 16
vco2_frequency:
cc: 17
notes: "64=center/unison"
vco2_beat:
cc: 18
notes: "64=center, fine detune"
vco1_wave:
cc: 70
notes: "0-63=saw, 64-127=square"
vco2_wave:
cc: 71
notes: "0-63=saw, 64-127=square"
hard_sync:
cc: 80
notes: "0-63=off, 64-127=on"

# Filter
filter_cutoff:
cc: 22
cc: 19
filter_resonance:
cc: 23
cc: 21
filter_eg_amount:
cc: 22
filter_kb_tracking:
cc: 20
notes: "default 32 (~50%)"

# Filter envelope
vcf_attack:
cc: 23
vcf_decay:
cc: 24
osc2_frequency:
cc: 18
osc_mix:
cc: 15
notes: "shared decay/release"
vcf_sustain:
cc: 25

# Amp envelope
vca_attack:
cc: 28
vca_decay:
cc: 29
notes: "shared decay/release"
vca_sustain:
cc: 30

# Amp
vca_volume:
cc: 7
eg_attack:
cc: 105
eg_decay:
cc: 106
eg_sustain:
cc: 107
eg_release:
cc: 108

# LFO
lfo_rate:
cc: 3
lfo_vcf_amount:
cc: 12
lfo_vco_amount:
cc: 13
lfo_shape:
cc: 85
notes: "0-25=tri, 26-51=sq, 52-76=saw, 77-101=s&h, 102-127=filter_eg"
lfo_midi_sync:
cc: 87
notes: "0-63=internal, 64-127=midi clock"
lfo_key_trigger:
cc: 82
notes: "0-63=off, 64-127=on"
lfo_vco2_only:
cc: 112
notes: "0-63=off, 64-127=on"

# Performance
glide_rate:
cc: 5
legato_mode:
cc: 114
value_range: [0, 127]
notes: "0=off, 127=on"
glide_switch:
cc: 65
notes: "0-63=off, 64-127=on"
glide_type:
cc: 92
notes: "0-42=linear, 43-85=time, 86-127=exponential"
glide_legato:
cc: 83
notes: "0-63=always, 64-127=legato only"
eg_trigger_mode:
cc: 73
notes: "0-42=legato, 43-85=off, 86-127=reset"
release_switch:
cc: 72
notes: "0-63=off, 64-127=on"

# Velocity
filter_vel_sens:
cc: 89
notes: "default 64 (~50%)"
vca_vel_sens:
cc: 90
notes: "default 64 (~50%)"
93 changes: 93 additions & 0 deletions synths/roland_s1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: S-1
manufacturer: Roland
midi_channel: 1
cc_map:
# Oscillator
osc_range:
cc: 14
osc_range_fine_tune:
cc: 76
osc_square_level:
cc: 19
osc_saw_level:
cc: 20
osc_sub_level:
cc: 21
osc_sub_octave_type:
cc: 22
osc_noise_level:
cc: 23
osc_square_pw:
cc: 15
osc_pwm_source:
cc: 16
osc_pitch_bend_sens:
cc: 18
noise_mode:
cc: 78

# Filter
filter_cutoff:
cc: 74
filter_resonance:
cc: 71
filter_env_depth:
cc: 24
filter_lfo_depth:
cc: 25
filter_kb_follow:
cc: 26
filter_bend_sens:
cc: 27

# Envelope
env_attack:
cc: 73
env_decay:
cc: 75
env_sustain:
cc: 30
env_release:
cc: 72
env_mode:
cc: 28
env_trigger_mode:
cc: 29

# LFO
lfo_rate:
cc: 3
lfo_waveform:
cc: 12
lfo_pitch_depth:
cc: 13
lfo_mod_depth:
cc: 17
lfo_key_trigger:
cc: 105
lfo_sync_mode:
cc: 106

# Performance
portamento_time:
cc: 5
portamento_mode:
cc: 31
portamento_switch:
cc: 65
polyphony_mode:
cc: 80
keyboard_transpose:
cc: 77

# Effects
reverb_time:
cc: 89
reverb_level:
cc: 91
delay_time:
cc: 90
delay_level:
cc: 92
chorus_type:
cc: 93
2 changes: 1 addition & 1 deletion synths/roland_tb03.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: TB-03
manufacturer: Roland
midi_channel: 3
midi_channel: 14
cc_map:
tuning:
cc: 104
Expand Down
16 changes: 13 additions & 3 deletions tests/test_synth_yamls.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,31 @@ def test_minitaur_yaml_loads():
synth = SynthDefinition(**data)
assert synth.name == "Minitaur"
assert synth.manufacturer == "Moog"
assert synth.midi_channel == 2
assert synth.midi_channel == 16
assert "filter_cutoff" in synth.cc_map
assert synth.cc_map["filter_cutoff"].cc == 22
assert synth.cc_map["filter_cutoff"].cc == 19


def test_tb03_yaml_loads():
data = yaml.safe_load((SYNTHS_DIR / "roland_tb03.yaml").read_text())
synth = SynthDefinition(**data)
assert synth.name == "TB-03"
assert synth.manufacturer == "Roland"
assert synth.midi_channel == 3
assert synth.midi_channel == 14
assert "cutoff" in synth.cc_map
assert synth.cc_map["cutoff"].cc == 74


def test_s1_yaml_loads():
data = yaml.safe_load((SYNTHS_DIR / "roland_s1.yaml").read_text())
synth = SynthDefinition(**data)
assert synth.name == "S-1"
assert synth.manufacturer == "Roland"
assert synth.midi_channel == 1
assert "filter_cutoff" in synth.cc_map
assert synth.cc_map["filter_cutoff"].cc == 74


def test_all_synth_yamls_valid():
yaml_files = list(SYNTHS_DIR.glob("*.yaml")) + list(SYNTHS_DIR.glob("*.yml"))
assert len(yaml_files) > 0, "No synth YAML files found"
Expand Down