The AMYboard Web editor UI presents many knobs that control predefined aspects of the AMY engine. Each knob can be associated with a MIDI ControlCode, with the CC range 0..127 mapping to the full rotation range of the knob. There's then a 4-parameter mapping (min, max, is_log, log_offset) from the rotation "angle" to a real parameter. Then, internally, each knob has a "wire string template" with placeholders for the instrument number and parameter value; on a knob move (or an incoming MIDI CC), the template has the placeholders substituted, then the wire command is sent to AMY. For instance, from tulip/amyboardweb/static/amy_parameters.js:
section: "Osc A",
display_name: "freq",
cc: "",
change_code: "i%iv" + OSCA_OSC + "f%v",
min_value: 50,
max_value: 2000,
knob_type: "log",
offset: 0,
.. which makes the knob send freq_coef[COEF_CONST] updates to the OSCA_OSC osc of the current synth, mapping the knob position from 50 to 2000 Hz logarithmically by sending wire commands like i1v2f440. This MIDI CC mapping is then installed in the AMY engine (e.g., on AMYboard) via the AMY I<SYNTH>ic<CC>,<LOG>,<MIN>,<MAX>,<OFFS>,<CMDTPLT> wire command.
Currently, you can only do this for parameters that have been baked-in to the AMYboard Web UI. However, if we exposed the change_code string (e.g., in the edit box that exposes cc, min_value, etc.), we could give power-users the ability to map MIDI CCs to parameters that are not currently supported in the UI, but which might be desirable e.g. parameters for nonstandard patch layouts, sequencer tempo, anything you can do with a single value in a wire command.
We could have a block of, say, 4 unassigned knobs in the interface that could be redeployed this way.
The AMYboard Web editor UI presents many knobs that control predefined aspects of the AMY engine. Each knob can be associated with a MIDI ControlCode, with the CC range 0..127 mapping to the full rotation range of the knob. There's then a 4-parameter mapping (min, max, is_log, log_offset) from the rotation "angle" to a real parameter. Then, internally, each knob has a "wire string template" with placeholders for the instrument number and parameter value; on a knob move (or an incoming MIDI CC), the template has the placeholders substituted, then the wire command is sent to AMY. For instance, from tulip/amyboardweb/static/amy_parameters.js:
.. which makes the knob send
freq_coef[COEF_CONST]updates to theOSCA_OSCosc of the current synth, mapping the knob position from 50 to 2000 Hz logarithmically by sending wire commands likei1v2f440. This MIDI CC mapping is then installed in the AMY engine (e.g., on AMYboard) via the AMYI<SYNTH>ic<CC>,<LOG>,<MIN>,<MAX>,<OFFS>,<CMDTPLT>wire command.Currently, you can only do this for parameters that have been baked-in to the AMYboard Web UI. However, if we exposed the
change_codestring (e.g., in the edit box that exposescc,min_value, etc.), we could give power-users the ability to map MIDI CCs to parameters that are not currently supported in the UI, but which might be desirable e.g. parameters for nonstandard patch layouts, sequencer tempo, anything you can do with a single value in a wire command.We could have a block of, say, 4 unassigned knobs in the interface that could be redeployed this way.