+Midi_control_function_value_change::to_string () const
+{
+ // MIDI control function information. A MIDI control function may have one
+ // or two assigned control numbers depending on whether it supports coarse
+ // (7-bit) or fine (14-bit) resolution. If the control function supports
+ // fine resolution, the first (respectively, second) member of the structure
+ // represents the control number for setting the most (least) significant 7
+ // bits of the control function's value.
+ struct Control_function
+ {
+ int msb_control_number_;
+ int lsb_control_number_;
+ };
+
+ // Mapping from supported control functions (enumeration values defined in
+ // Audio_controller_value_change::Control) to the corresponding MIDI control
+ // numbers.
+ static const Control_function control_functions[] =
+ {
+ // When adding support for new control functions, please note the
+ // following:
+ // - The order of the control number definitions should be kept
+ // consistent with the order of the enumeration values defined in
+ // Audio_control_function_value_change::Control.
+ // - If the control function has only coarse resolution, the function's
+ // control number should be stored in the MSB member of the array
+ // element, and the LSB member should be set to a negative value.
+
+ { 8, 40 }, // balance
+ { 10, 42 }, // pan position
+ { 11, 43 }, // expression
+ { 91, -1 }, // reverb level (only coarse resolution available)
+ { 93, -1 } // chorus level (only coarse resolution available)
+ };