Calibrating the expression pedal ports is basically a manual task. Use the Raw ADC Value engine mode
to display the range of values that your pedal produces. Do full sweeps on the selected
pedal while watching the main display. Note the minimum and maximum values that are displayed (make
sure to release foot from pedal since you want to see the minimum and maximum values that occur
without requiring your foot to always be on the pedal).
In your .config.xml file, record the noted values in the
minimumAdcVal and
maximumAdcVal attributes of the
adc record for the port (specified by the
inputNumber attribute)
on which you did the full sweeps. You may want to give youself a cushion and record a slightly
higher number than the minimum for the minimum; and a slightly lower number than the maximum
for the maximum.
Disable any ADC port that is not in use by setting the
enable attribute to "0".
The selected ADC port must be enabled for the Raw ADC Value mode to be of value. If a port is
not enabled, the main display window will not display values after that port has been selected.
For best results, flash the board with
this modified monome firmware
(
AVR-JTAG programmer required).
[The original adc smoothing/filtering is based on the averaging of 16 reads. Even with the 16
buckets I still had to do some filtering in the app. The modification reduces the number of buckets
in the firmware to 4. The firmware does smoothing (based on averaging the contents of the buckets)
while the app does jitter filtering (based on hard compares to the last 3 values received).
It's a night and day difference in response when doing fast full-off to full-on pedal swings
(wah-wah style). Above a certain pedal speed, the 16 buckets meant that the extremes disappeared -
the extremes were averaged away. No more.]
Here is an annotated example of the complete
expression block.
The opening tag. Here,
port refers to the MIDI out port that the expression pedals
will transmit to.
<expression port="1">
Next are the
adc nodes where the four monome adcs are enabled and where the
pedals attached to each adc port are calibrated (each port is calibrated independently).
<adc inputNumber="1" enable="0" minimumAdcVal="10" maximumAdcVal="1015" />
<adc inputNumber="2" enable="0" minimumAdcVal="10" maximumAdcVal="1015" />
<adc inputNumber="3" enable="0" minimumAdcVal="10" maximumAdcVal="1015" />
<adc inputNumber="4" enable="0" minimumAdcVal="10" maximumAdcVal="1015" />
Next are the global MIDI assignments for each pedal (
inputNumber 1 - 4).
Each pedal can have up to two global assignments (
assignmentNumber 1 - 2).
Use two volume assignments where one is inverted to do a cross-fade.
The maximum value for the
max attribute is 127 for standard single byte
controllers and 16383 for double byte controllers (only available for controller
numbers 0 - 31 when the
doubleByte="1" attribute is specified). When
doubleByte="1", the MSB controller value is sent on the controller specifed
and the LSB value is sent on controller + 32. The minimum value for the
min
attribute is 0.
<globalExpr inputNumber="1" assignmentNumber="1" channel="7" controller="2"
min="0" max="127" invert="0" enable="1" />
<globalExpr inputNumber="1" assignmentNumber="2" channel="8" controller="2"
min="0" max="127" invert="1" enable="1" />
<globalExpr inputNumber="2" assignmentNumber="1" channel="4" controller="2"
min="0" max="127" invert="0" enable="1" />
<globalExpr inputNumber="2" assignmentNumber="2" channel="5" controller="2"
min="0" max="127" invert="1" enable="1" />
<globalExpr inputNumber="3" assignmentNumber="1" channel="11" controller="110"
min="0" max="127" invert="0" enable="1" />
<globalExpr inputNumber="3" assignmentNumber="2" channel="12" controller="110"
min="0" max="127" invert="1" enable="1" />
<globalExpr inputNumber="4" assignmentNumber="1" channel="12" controller="31"
min="0" max="16383" invert="0" enable="1" doubleByte="1" />
And finally, the section closing tag.
</expression>