-
Notifications
You must be signed in to change notification settings - Fork 48
Description
Currently the AMYboarweb editor has a single freq knob for each oscillator that sets the constant part of the oscillator frequency calculation, between 50 and 2000 Hz. This maps directly to the AMY command, but it's not a convenient user interface - it's hard to get precise tuning, and it's hard to get small detunings, as are often desirable for synth patches.
A more conventional synth UI would be a selection list for octave (e.g. 2', 4', 8', 16', 32'), and a separate detune knob to take it +/- 1 octave only (maybe only for OSC B). Or we could have an integer semitones "knob" (quantized), plus a +/- 1 or 2 semitones detune knob.
This would break the simple mapping from knob to AMY wire command, since each control would now need to combine itself with the value of the other to generate the wire command, e.g.
section: "OSC B",
display_name: "b_detune",
default_value: 0,
min_value: -2,
max_value: 2,
onChange: function(value) {
mapped_value = amy_knob_current_value("b_freq") * Math.exp(value * Math.log(2) / 12);
amy_add_message("i1v1f" + mapped_value);
}
It feels like it would be better to define a update_osc_b_freq() function that accessed amy_knob_current_value for both b_freq and b_detune, then was used as the onChange setting for both controls.