Updated: 1/22/2014
Author: Adam Cook
The purpose of this document is to specify the Sysex MIDI messages that will be used to transfer data between Fractal Audio MIDI enabled product (referred to as Device) and a MIDI host or a MIDI footcontroller. The MIDI host is typically a host computer running either Fractal Audio editor software (i.e. Axe-Edit) or some sort of MIDI librarian tool (i.e. MIDI OX). It could also be an application running on a mobile device such as iPad or iPhone.
MIDI Sysex messages follow a general format:
The header for a Sysex message consists of 5 total bytes. They are:
0xF0 - This byte that indicates a SysEx message type
0x00 - Zero byte
Manufacturer ID MSB - Fractal Audio Manufacturer ID Most Significant Byte
Manufacturer ID LSB - Fractal Audio Manufacturer ID Least Significant Byte
Model ID Byte - Specific byte assigned to the Fractal Audio product
Example header for Axe-FX II:
0xF0
0x00
0x01
0x74
0x03
This is a byte indicating the type of message.
The following messages should be enumerated and/or #defined in MIDI.h of the Fractal Audio device firmware and host software. This table should be updated any time a new command is added in MIDI.h.
These are messages that are typically sent in within a SYSEX_STATUS_MSG response to a MIDI Sysex command indicating that an error has occurred processing the previous message.
The following messages should be enumerated and/or #defined in MIDI.h of the Fractal Audio device firmware and host software. This table should be updated any time a new command is added in MIDI.h.
This is the message payload. It will vary depending upon the value of the message type. Message payload contents are described in further detail in the message type descriptions.
The checksum is calculated over all the preceding bytes in the message and the MS bit then removed. For example:
checksum = 0
for(i = 0; i < N; i++)
{
checksum ^= data[i];
}
checksum &= 0x7f;
Message:
0x00 |
(Added in FW 13.03)
This message is sent by the host to the device in order to query the device’s model number. When sending this message, the device ID in Header must be set to 0x7F, which is used as the broadcast model ID.
If successful, the device will respond with a SYSEX_STATUS_MSG with the device correctly set in the header and a status of zero.
None
From host to device:
Header - As specified above except the Model ID Byte must be 0x7F
Message Type - 0x00
Checksum
0xF7
From Device to Host:
See SYSEX_STATUS_MSG.
Message:
SYSEX_PARAM_DUMP | 0x01 |
(Added in FW 11.00)
Message sent by the host to the device to request a dump of all parameters associated with a specified effect ID. Device will respond to the host with a SYSEX_MULTIMSG_START containing the number of parameters to follow. Then it will respond with one SYSEX_PARAM_DUMP message per parameter. Finally, a SYSEX_MULTIMSG_END signifying the end of the transmission.
None
From host to device:
Header - As specified Above
Message Type - 0x2B
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Checksum
0xF7
From Device to Host:
See SYSEX_MULTIMSG_START and SYSEX_MULTIMSG_END .
Each subsequent SYSEX_PARAM_DUMP message has the following form (similar to a SYSEX_PARAM_SET):
Header - As specified above
Message Type - 0x01
Effect ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter Value - 16 bit Int over 3 MIDI bytes (LSB) first
Knob Value - 1 MIDI byte, value 0-127
Parameter Limits (Integer types only, Log and Lin types return 0’s)-
Low Limit - 2 MIDI bytes (LSB) first
High Limit - 2 MIDI bytes (LSB) first
Null-Terminated Value String. Length equal to # of char’s in value string. 1 byte per char.
checksum
0xF7 (end)
SYSEX_PARAM_SET | 0x02 |
Sent by host to device to set or query a parameter value within an effects block. If successful, device will respond with SYSEX_PARAM_SET message containing updated values. If not successful, device will respond with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID - Invalid effect ID specified
MIDI_ERROR_INVALID_PARAMID - Invalid parameter ID specified
From Host to Device:
Header - As specified above
Message Type - 0x02
Effect ID - 14 bits over 2 MIDI bytes
Parameter ID - 14 bits over 2 MIDI bytes
Parameter Value - 16 bits over 3 MIDI bytes
Operation Byte -
0: Query - Query the current value
1: Set - Set the parameter value to the value specified
2: Default - Set the parameter value to its default
3: Increment - Increment by the minimum step size
4: Decrement - Decrement by the minimum step size
5: Coarse Increment - Increment by large step size determined by parameter
6: Coarse Decrement - Decrement by large step size determined by parameter
checksum
0xF7 (end)
From Device to Host:
Header - As specified above
Message Type - 0x02
Effect ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter Value - 16 bit Int over 3 MIDI bytes (LSB) first
Knob Value - 1 MIDI byte, value 0-127
Parameter Limits (Integer types only, Log and Lin types return 0’s)-
Low Limit - 2 MIDI bytes (LSB) first
High Limit - 2 MIDI bytes (LSB) first
Null-Terminated Value String. Length equal to # of char’s in value string. 1 byte per char.
checksum
0xF7 (end)
Axe-FX II, Effect ID Amp 1 Block. Param ID Drive, Query Param
F0 00 01 74 03 02 6A 00 01 00 00 00 00 00 5D F7
Response from Axe-FX II (Amp 1 Drive is set to 5.00):
F0 00 01 74 03 02 6A 00 01 00 7F 7F 01 3F 00 00 00 00 35 2E 30 30 00 4A F7
Axe-FX II, Effect ID Amp 1 Block. Param ID Drive, Set Param to 10.0
F0 00 01 74 03 02 6A 00 01 00 7F 7F 03 01 6D F7
Response from Axe-FX II (Amp 1 Drive is set to 10.00):
F0 00 01 74 03 02 6A 00 01 00 7E 7F 03 7F 00 00 00 00 31 30 2E 30 30 00 3D F7
Message:
SYSEX_PATCH_DUMP | 0x03 |
Message sent by Host to Device which requests a dump of the specified patch. The specified patch may be a patch in memory or it may be the current patch contained in the edit buffer. If successful, the device will respond with SYSEX_PATCH_START, SYSEX_PATCH_DATA, and SYSEX_PATCH_END sequence of messages which contains all of the details of the specified patch. If unsuccessful, the device will respond with SYSEX_STATUS_MSG containing an error code.
MIDI_ERROR_INVALID_PATCHNUM - Invalid Patch number specified
From host to device:
Header
Message Type - 0x03
Bank Number -
1 byte: 0x0, 0x1, 0x2, 0x7F for Edit Buffer, 0x7E for Edit buffer w/o globals
Patch Number - 1 byte: 0x0 - 0x7F, if Bank Number is 0x7F this is a “don’t care” byte
Checksum (7-bit)
0xF7 (end)
From device to host: See entries for SYSEX_PATCH_START, SYSEX_PATCH_DATA, and SYSEX_PATCH_END.
Example Message:
Device Axe-FX II, Bank 1, Patch 20
F0 00 01 74 03 03 01 14 10 F7
Message:
SYSEX_PATCH_RCV | 0x04 |
This message is not currently used. Reserved for future use.
Message:
SYSEX_PLACE_EFFECT | 0x05 |
Function:
Message sent by host to place a specified effect in a specified grid location. If there is a different effect already present at the location specified, it will be removed. Setting Effect ID to zero will remove any effect at the current position. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_BAD_GRID_POS - Invalid grid position specified
MIDI_ERROR_INVALID_FXID - Invalid Effect ID specified
MIDI_ERROR_FX_NOT_ROUTABLE - Specified effect is not a routable effect
MIDI_ERROR_DSP_OVERLOAD - Not enough CPU available to place the specified effect
From host to device:
Header - As specified above
Message Type - 0x05
Effect ID - 14 bits over two MIDI bytes
Position: Index into location in device’s grid or effects chain to place effect. 1 byte.
Checksum.
0xF7 (end)
Valid grid index locations:
AXE-FX II: 0 through 47
Grid index increments down by row and then across by column.
Example:
Column 1, Row 1 = Index 0
Column 1, Row 2 = Index 1
Column 2, Row 1 = Index 4
Column 3, Row 1 = Index 8
…
Column 12, Row 4 = Index 47
etc.
From host to Axe-FX II, place Rotary 2 effect into Column 1 Row 2 on Grid
F0 00 01 74 03 05 79 00 01 7B F7
Response from Axe-FX II to host:
F0 00 01 74 03 64 05 00 67 F7
Message:
SYSEX_CONNECT_EFFECT | 0x06 |
Function:
Message sent by host to connect (0) or disconnect (1) a source block and a destination block. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
Potential Error Codes:
MIDI_ERROR_BAD_GRID_POS - Either one or both of the specified block positions is invalid.
MIDI_ERROR_FUNCTION_FAIL - Connection process failed for unknown reason.
From host to device:
Header - As specified above
Message Type - 0x06
Source Position - 1 MIDI byte
Dest Position - 1 MIDI byte
Connect(1) or Disconnect(0)
Checksum
0xF7 (end)
Valid grid index locations:
AXE-FX II: 0 through 47
Grid index increments down by row and then across by column.
Example:
Column 1, Row 1 = Index 0
Column 1, Row 2 = Index 1
Column 2, Row 1 = Index 4
Column 3, Row 1 = Index 8
…
Column 12, Row 4 = Index 47
etc.
From host to Axe-FX II: Connect effect in Column 1 Row 1 with effect in Column 1 Row 2
F0 00 01 74 03 06 01 05 01 05 F7
Response from Axe-FX II to host:
F0 00 01 74 03 64 06 00 64 F7
Message:
0x07 |
Message sent by host to query or set a modifier parameter to a specific modifier value. I.e. Set modifier start parameter to a value of 10%. If successful, device will respond to host with SYSEX_MODIFIER_SET type message containing updated values. If unsuccessful, device will respond to host with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID - Invalid effect ID specified
MIDI_ERROR_INVALID_PARAMID - Invalid parameter ID specified
MIDI_ERROR_FX_NOT_IN_USE - The effect ID specified is not in use currently.
MIDI_ERROR_NO_MODIFIERS_LEFT - No modifiers left to use for connection.
From Host to Device:
Assuming a modifier is already connected, the following message can be then be sent:
Header - As specified above
Message Type - 0x07
Effect ID - 14 bits over two MIDI bytes (LSB first)
Effect param ID - 14 bits over two MIDI bytes (LSB first)
Modifier parameter - 14 bits over two MIDI bytes (LSB first)
Modifier value - 16 bits over three MIDI bytes (LSB first)
Operation Byte -
0: Query - Query the current value
1: Set - Set the modifier-parameter value to the value specified
2: Default - Set the modifier-parameter value to its default
3: Increment - Increment by the minimum step size
4: Decrement - Decrement by the minimum step size
5: Coarse Increment - Increment by large step size determined by parameter
6: Coarse Decrement - Decrement by large step size determined by parameter
Checksum
0xF7 (end)
Note: The modifier must first be connected to an effect parameter before this message will work properly. If a modifier is not connected, this message can be sent with Modifier Parameter value of MOD_CTRLID (0x0) and any value > 0x0 for the Modifier Value.
To connect a modifier automatically:
Header - As specified above
Message Type - 0x07
Effect ID - 14 bits over two MIDI bytes (LSB first)
Effect param ID - 14 bits over two MIDI bytes (LSB first)
Modifier parameter - 0x0 0x0 (MOD_CTRLID)
Modifier value - 0x1 0x00 0x00 (or greater)
Set - 0x1
Checksum
0xF7 (end)
To disconnect a modifier:
Note: The modifier must first be connected to an effect parameter before this message will work properly. If a modifier is not connected, this message can be sent with Modifier Parameter value of MOD_CTRLID (0x0) and any value > 0x0 for the Modifier Value.
To disconnect a modifier automatically:
Header - As specified above
Message Type - 0x07
Effect ID - 14 bits over two MIDI bytes (LSB first)
Effect param ID - 14 bits over two MIDI bytes (LSB first)
Modifier parameter - 0x0 0x0 (MOD_CTRLID)
Modifier value - 0x0 0x0 0x0
Set - 0x1
Checksum
0xF7 (end)
Response message from device to host:
Header - As specified above
Message Type - 0x07
Effect ID - 14 bits over two MIDI bytes (LSB first)
Effect param ID - 14 bits over two MIDI bytes (LSB first)
Modifier parameter - 14 bits over two MIDI bytes (LSB first)
Modifier value - 16 bits over three MIDI bytes (LSB first)
Null terminated Value String
Checksum
0xF7 (end)
From host to Axe-FX II, Connect modifier automatically to Delay 1, Effect Param Ratio
F0 00 01 74 03 07 70 00 03 00 00 00 01 00 00 01 72 F7
Response from Axe-FX II:
F0 00 01 74 03 07 70 00 03 00 00 00 01 00 00 4C 46 4F 20 31 41 00 66 F7 F0 00 01 74 03 21 27 F7
From host to Axe-FX II, Set modifier connected to Delay 1, Effect Param Ratio, Modifier Param Max, 50.5%
F0 00 01 74 03 07 70 00 03 00 02 00 7F 7F 01 01 70 F7
Response from Axe-FX II:
F0 00 01 74 03 07 70 00 03 00 02 00 7F 7F 01 35 30 2E 35 20 25 00 6A F7
From host to Axe-FX II, Disconnect modifier automatically from Delay 1, Effect Param Ratio
F0 00 01 74 03 07 70 00 03 00 00 00 00 00 00 01 73 F7
Response from Axe-FX II:
F0 00 01 74 03 07 70 00 03 00 00 00 00 00 00 4E 4F 4E 45 00 78 F7
Message:
SYSEX_QUERY_VERSION | 0x08 |
Used by host to query the firmware version of the device. Device will respond with SYSEX_QUERY_VERSION message containing the current firmware version as #defined in the project.
None
From host to device:
Header - As specified above
Message Type - 0x08
Checksum
0xF7
From device to host:
Header - As specified above
Message Type - 0x08
DSP Version Major 1 byte (i.e. integer value before decimal)
DSP Revision Minor 1 byte (i.e. hundreds value after decimal)
FPGA Revision - 1 Byte
Microcontroller Revision - 1 Byte
Product Version - 1 Byte
Hardware Revision - 1 Byte
Checksum
0xF7 (end)
From host to Axe-FX II:
F0 00 01 74 03 08 0E F7
From Axe-FX II to host, DSP firmware version 10.00, FPGA Rev 2, Micro Rev 0, Product Rev 1, Hardware Rev 0 :
F0 00 01 74 03 08 0A 00 02 00 01 00 07 F7
Message:
SYSEX_SET_NAME | 0x09 |
Used by host to set name of the preset in the current edit buffer of the device. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_BAD_MSG_LENGTH - Wrong number of characters in message.
From host to device:
Header - As specified above
Message Type - 0x09
Name: 32 MIDI bytes, 1 byte per char. (ASCII format, values must be less than 128).
Last char is null 0x0.
Checksum
0xF7
From host to Axe-FX II, Set patch name to “Plexi”
F0 00 01 74 03 09 50 6C 65 78 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 F7
Response from Axe-FX II:
F0 00 01 74 03 64 09 00 6B F7
Message:
SYSEX_CABIR_RCV | 0x0A |
Message:
SYSEX_CHECKSUM | 0x0B |
Message:
SYSEX_SET_GRID | 0x0C |
Used by the host to send preset grid info to the device. The grid info consists of the placement of the effects on the grid (i.e. which effect is placed in which slot). If the device is an Axe-FX type, it also contains connection info for the grid (i.e. effect A in slot Y is connected to effect B in slot X).
Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_BAD_MSG_LENGTH - Wrong size message received. Either corrupted message or incorrect data payload length.
From host to device:
Header - As specified above
Message Type - 0x0C
Data Payload -
Checksum
0xF7 (end)
The grid count starts in the top left corner. Then it proceeds down by row and then across by column. I.e. the top effect ID in the top row of the 2nd column would be the 5th grid entry.
Note: “If connected” byte contains 1 bit per row in the column immediately preceding the specified effect. Bit 0 = Row 1, Bit 1 = Row 2, Bit 2 = Row 3, Bit 3 = Row 4
Example: If effect ID is in Column 2, Row 2 and the effects in preceding Column 1 Row 1 and Column 1 Row 2 are connected to it then bits 0 and 1 would be set in the connected byte for a value of 0x03.
(This is a SYSEX_GET_GRID message. The same message could be used for SYSEX_SET_GRID with the message type changed to 0C and checksum recalculated)
F0 00 01 74 03 20 00 00 00 00 48 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 49 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4A 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 05 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 6A 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 6C 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4C 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4E 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4F 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 50 01 02 00 00 00 00 00 00 00 00 00 75 F7
Message:
SYSEX_TUNER | 0x0D |
Sends tuner data from the device. Data could be sent to a host application running on PC or a MIDI foot controller. No return message is expected since it is a non-critical status message.
Note: Tempo and Tuner messages do not have a checksum in order to minimize the size of the message.
None
From device to host:
Header - As specified above
Message Type - 0x0D
Note number (1 byte, 0 - 11) (0 = A, 1 = Bb, 2 = B, etc.).
String (1 byte, 0 - 5, 0 = low E)
Cents, offset binary (1 byte, 63 = 0, 62 = -1, 64 = +1, etc.)
0xF7 (end)
Axe-FX II Tuner, E6, +3 cents
F0 00 01 74 03 0D 06 00 42 F7
Message:
SYSEX_QUERY_STATES | 0x0E |
Used by the host to request the bypass states of all the effects in the currently active preset on the device. The device will respond with a SYSEX_QUERY_STATES message type containing the bypass state information and then a SYSEX_SET_SCENE message
None
Message from Host to Device:
Header - As specified above
Message Type - 0x0E
Checksum
0xF7
Response from Device to Host (note that there is NO checksum):
Header - As specified above
Message Type - 0x0E
The Effect ID, XY CC#, Bypass CC#, XY state and bypass state are encoded into one 32-bit word which is then sent as five 7-bit MIDI bytes.
n = effect_ID << 24 | xy_cc_num << 16 | fx_cc_num << 8 | state_flags;
(continue for all effects present in patch, including gate, output, control)...
0xF7
Header - As specified Above
Message Type - 0x28 (SYSEX_SET_SCENE)
Scene - 1 Data Byte specifying currently selected scene.
Checksum
0xF7
From host to device, Axe-FX II:
F0 00 01 74 03 0E 08 F7
Response from Axe-FX II (3 effects present in grid, current Scene is Scene 1):
F0 00 01 74 03 0E 03 4A 10 53 06 03 4E 18 63 06 02 62 30 2B 78 F7
F0 00 01 74 03 29 00 2F F7
:
Message:
SYSEX_QUERY_NAME | 0x0F |
Used by host to query the name of the currently selected preset in the device. The device will respond with a SYSEX_QUERY_NAME message type containing the name.
None
From host to device:
Header - As specified above
Message Type - 0x0F
Checksum
0xF7
From device to host:
Header - As specified above
Message Type - 0x0F
Name: 32 chars (1 ASCII byte per Char). Last char is “null” 0x0
Checksum
0xF7
From host to device: Axe-FX II
F0 00 01 74 03 0F 09 F7
From device to host (sending patch name “Cliffs of Dover”):
F0 00 01 74 03 0F 43 6C 69 66 66 73 20 6F 66 20 44 6F 76 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 5F F7
Message:
SYSEX_TEMPO | 0x10 |
Used by device to send outgoing message in sync with the tempo light on the device. There is no return message expected since it is just a non-critical status message.
Note: Tempo and Tuner messages do not have a checksum in order to minimize the size of the message.
None
Header - As specified above
Message Type - 0x10
0xF7
Axe-FX II sending tempo message
F0 00 01 74 03 10 F7
Message:
SYSEX_XY | 0x11 |
Message sent by host to select a desired parameter set (either set X or set Y) on the device for a specified effect. If successful, device will respond to host with SYSEX_XY type message informing the host whether set X or set Y is selected for the specified effect.
MIDI_ERROR_INVALID_FXID - The specified effect ID is not valid.
From host to device:
Header - As specified above
Message Type - 0x11
Effect ID - 14 bits over two MIDI bytes
Parameter set value (0x0 for X, 0x1 for Y)
Query (0x0) or set (0x1) value
Checksum
0xF7 (end)
From device to host:
Header - As specified above
Message Type - 0x11
Effect ID - 14 bits over two MIDI bytes
Parameter set value (0x0 for X, 0x1 for Y)
Checksum
0xF7 (end)
From host to device: Axe-FX II, Set Reverb 1 to Y param set.
F0 00 01 74 03 11 6E 00 01 01 79 F7
From device to host:
F0 00 01 74 03 11 6E 00 01 78 F7
Message:
SYSEX_CABNAME | 0x12 |
Message sent from host to device to request the cabinet name for a specified cabinet slot.
If the cabinet number is 0x3FFF, the device will respond to the host with a SYSEX_CABNAME_START containing the number of cab names to follow (1 SYSEX_CABNAME per cab) followed by the sequence of SYSEX_CABNAME type messages containing the cabinet name.
If the cabinet number is between 0 - 124 (inclusive), the device will respond with a SYSEX_CABNAME message with the given cabinet’s name.
None
“Cabinet Number” slot index guide:
Factory 1-74 = Cabinet numbers 0-73
User Cab 1-40 = Cabinet numbers 74-124
From host to device:
Header - As specified above
Message Type - 0x12
Cabinet Number - 2 MIDI bytes (LSB first). If 0x7F is sent for both bytes then the device will return ALL cabinet names (1 SYSEX_CABNAME per cabinet).
Checksum
0xF7
From device to host:
Header - As specified above
Message Type - 0x12
Cabinet Number - 2 MIDI bytes (LSB first).
Cabinet name sent as 32 Chars (1 MIDI byte per char)
Checksum
0xF7
From host to device: Axe-FX II, get name of Factory Cabinet 1:
F0 00 01 74 03 12 00 00 14 F7
From device to host (Factory Cab name is “1x6 Oval”):
F0 00 01 74 03 12 00 00 31 78 36 20 4F 56 41 4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5F F7
From host to device: Axe-FX II, get name of User Cab 3:
F0 00 01 74 03 12 4C 00 58 F7
From device to host (User cab 3 name is “Nice cab”):
F0 00 01 74 03 12 4C 00 4E 69 63 65 20 43 61 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 F7
Message:
SYSEX_CPU_LOAD | 0x13 |
Message sent from host to device to query the current CPU load. Device responds to host with SYSEX_CPU_LOAD message type containing the CPU load.
None
Header - As specified above
Message Type - 0x13
CPU Load - (1 MIDI byte) representing CPU load from 0-100%.
Checksum
0xF7
From host to device, Axe-FX II:
F0 00 01 74 03 13 15 F7
From device to host, CPU load of 54%.
F0 00 01 74 03 13 36 23 F7
Message:
SYSEX_PATCHNUM | 0x14 |
Message sent from host to device to request the currently selected patch/preset number. Device will respond with SYSEX_PATCHNUM type message containing this information.
Message is also sent from the device to the host when a patch is selected using the NAV or VALUE wheel in the Recall screen.
None
From host to device:
Header - As specified above
Message Type - 0x14
Checksum
0xF7
From device to host:
Header - As specified above
Message Type - 0x14
Bank number (1 MIDI byte)
Preset number (1 MIDI byte)
0xF7
From host to Axe-FX II:
F0 00 01 74 14 F7
From device to host (Preset 57):
F0 00 01 74 03 14 00 39 2B F7
Message:
SYSEX_QUERY_NAME_BY_NUM | 0x15 |
Message sent by host to device to request the the patch name for a given bank and preset number, or to receive all patch names in one dump.
If a single Patch Name Query is requested only one response will be sent by the device. If a Dump is requested, 384 complete responses will be sent by the device (each response will be a full SYSEX_QUERY_NAME_BY_NUM with the bank, patch num, and name set).
From host to device:
Header - As specified Above
Message Type - 0x15
Bank Number - 1 Midi byte.
0, 1, 2: request a patch from Bank A, B, or C
0x7F: (used with a Patch Num of 0x7F) get all patch names
Patch Number - 1 Midi byte
0 - 127: request the patch offset from the given bank
0x7F: (used with a Bank Num of 0x7F) get all patch names
Checksum
0xF7
From device to host:
Header - As specified above
Message Type - 0x15
Bank Num: 1 Midi byte
Patch Num: 1 Midi Byte
Name: 32 chars (1 ASCII byte per Char). Last char is “null” 0x0
Checksum
0xF7
Message:
SYSEX_GET_PARAM_INFO | 0x16 |
Message sent from host to device to query the parameter info for a specified effect and a specified parameter. Parameter info consists of the type, low-limit, high-limit, multiplier and resolution members of the parameter. The type is a 32-bit int, and the other low-limit, high-limit, multiplier, and resolution members are 32-bit floats. Each member is sent as 5 MIDI bytes of 7 bits each (LSB first).
If successful, device responds with parameter info. If unsuccessful, device will respond to host with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID - Invalid FX ID specified.
MIDI_ERROR_INVALID_PARAMID - Invalid parameter ID specified
From host to device:
Header - As specified Above
Message Type - 0x16
Effect ID - 14 bits over 2 MIDI bytes
Parameter ID - 14 bits over 2 MIDI bytes
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x16
Param Type - 32-bit int sent as 5 MIDI bytes of 7 bits each (LSB first)
Param Low-Limit - 32-bit float sent as 5 MIDI bytes of 7 bits each (LSB first)
Param High-Limit - 32-bit float sent as 5 MIDI bytes of 7 bits each (LSB first)
Param Multiplier - 32-bit float sent as 5 MIDI bytes of 7 bits each (LSB first)
Param Resolution - 32-bit float sent as 5 MIDI bytes of 7 bits each (LSB first)
Checksum
0xF7
From host to device: Axe-FX II, Chorus 1, Rate parameter
F0 00 01 74 03 16 74 00 02 00 66 F7
From device to host, Chorus 1 Rate parameter is set to 1.0Hz. :
F0 00 01 74 03 16 33 04 00 00 00 4D 19 33 6E 03 00 00 00 09 04 00 00 00 7C 03 00 00 00 00 00 5F F7
Message:
SYSEX_GET_MIDI_CHANNEL | 0x17 |
Message sent by host to device to query the current MIDI channel configured on the device. Device responds with current MIDI channel as configured in CONFIG structure.
None
From host to device:
Header - As specified Above
Message Type - 0x17
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x17
Config MIDI channel (1 MIDI byte) - Values 0-15 for MIDI Channels 1-16.
Checksum
0xF7
Axe-FX II, host to device:
F0 00 01 74 03 17 11 F7
Axe-FX II, device to host (MIDI Channel 1)::
F0 00 01 74 03 17 00 11 F7
Message:
SYSEX_GET_MODIFIER_INFO | 0x18 |
Message sent by host to device to query the connected effectId-paramId of the given modifier-Id. The device will respond with a SYSEX_GET_MODIFIER_INFO message containing these values.
MIDI_ERROR_INVALID_MODIFIER_ID - Invalid modifier ID specified
From host to device:
Header - As specified Above
Message Type - 0x18
Modifier ID - 2 MIDI bytes (LSB first).
Note: Modifier index starts at 100. (Modifier 1 = 0x64).
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x18
Modifier ID - 2 MIDI bytes (LSB first).
Controller ID - 2 MIDI bytes (LSB first).
Effect ID - 2 MIDI bytes (LSB first) - zero if no effect is connected.
Effect Parameter ID - 2 MIDI bytes (LSB first).
Checksum
0xF7
Message:
SYSEX_CAB_DUMP | 0x19 |
Message sent by host to request a dump of a specified user cab from device. If successful, device will respond with sequence of SYSEX_CABIR_START, SYSEX_CABIR_DATA, and SYSEX_CABIR_END messages containing cabinet data where the cabinet number has been stripped from the header and replaced with 0x7F. If unsuccessful, device will respond to host with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_CABNUM - Invalid cab number specified. Cab number must be greater than 0 and less than the number of user cabs on the device.
From host to device:
Header - As specified Above
Message Type - 0x19
Cabinet Number - 1 MIDI byte. Index starts at 0. (User Cab 1 = 0x0).
Checksum
0xF7 (end)
From device to host:
See entries for SYSEX_CABIR_START, SYSEX_CABIR_DATA, and SYSEX_CABIR_End.
Axe-FX II, Dump User Cab 11
F0 00 01 74 03 19 0A 15 F7
Response from Axe-FX II:
See entries for SYSEX_CABIR_START, SYSEX_CABIR_DATA, and SYSEX_CABIR_END.
Message:
SYSEX_GLOBAL_BLOCK_USED | 0x1A |
Message sent from host to device to query whether or not a global block is in use for a specified effect ID in a specified global preset. There are 10 global presets each containing every effect block. So for example to query if Delay 1 Global Block 5 is in use one would specify global preset 5.
If Global Preset is set to 0x7F, a successful response from the device will be 10 SYSEX_GLOBAL_BLOCK_USED messages, one for each index in the global memory for that Effect ID.
If Global Preset is not 0x7F, a successful response from the device will be only one SYSEX_GLOBAL_BLOCK_USED message for the given Global Preset index.
For any unsuccessful query, device will respond with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID - Invalid Effect ID specified.
MIDI_ERROR_INVALID_PATCHNUM - Invalid patch number specified.
From host to device:
Header - As specified Above
Message Type - 0x1A
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Global Preset - 2 MIDI bytes (0x7F search all global presets).
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x1A
Used (1) or Not used (0) byte
Checksum
0xF7
From host to device, Axe-FX II, Effect ID Comp 1, Global Preset 5:
F0 00 01 74 03 1A 64 00 05 7D F7
Message:
SYSEX_GLOBAL_PATCH | 0x1B |
Message sent by host to device to perform global preset operations. The device will return a SYSEX_STATUS_MSG containing either an error code or (0) if operation is successful.
MIDI_ERROR_INVALID_FXID - Invalid Effect ID specified.
MIDI_ERROR_INVALID_PATCHNUM - Invalid patch number specified
Header - As specified Above
Message Type - 0x1B
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Global Preset - 1 MIDI byte
Function - 1 MIDI byte with the following options:
0: Save effect to global preset and link with that preset
1: Load effect from global preset and link
2. Load from global preset and don’t link
3. Unlink effect
Checksum
0xF7
From host to Axe-FX II, Effect ID Chorus, Global preset 2, Load effect from global preset and link
F0 00 01 74 03 1B 74 00 02 01 6A F7
Response from Axe-FX II to host: Operation successful
F0 00 01 74 03 64 1B 00 79 F7
Message:
SYSEX_BANK_DUMP | 0x1C |
Message sent from host to device to request a dump of an entire bank (128 presets). If successful, device will respond with a sequence of SYSEX_PATCH_START, SYSEX_PATCH_DATA, and SYSEX_PATCH_END messages for each of the 128 presets in the bank. If unsuccessful, device will respond with SYSEX_STATUS message type containing error code.
MIDI_ERROR_INVALID_BANKNUM - Invalid bank number specified.
From host to device:
Header - As specified Above
Message Type - 0x1C
Bank Number - 1 MIDI byte. Valid numbers are 0x0 for Bank A, 0x1 for Bank B, 0x2 for Bank C and 0x3 for the System Bank.
Checksum
0xF7
From device to host:
See entries for SYSEX_PATCH_START, SYSEX_PATCH_DATA, and SYSEX_PATCH_END
From host to Axe-FX II, Request dump of bank 2 (bank C)
F0 00 01 74 03 1C 02 18 F7
Response from Axe-FX II:
See entries for SYSEX_PATCH_START, SYSEX_PATCH_DATA, and SYSEX_PATCH_END
Message:
SYSEX_SAVE_PATCH | 0x1D |
Message sent by host to device to tell device to save the contents of the edit buffer to the specified preset. Device will respond with SYSEX_STATUS_MSG with error code or (0) for success.
MIDI_ERROR_INVALID_BANKNUM - Invalid bank number specified
MIDI_ERROR_INVALID_PATCHNUM - Invaild preset number specified
From host to device:
Header - As specified Above
Message Type - 0x1D
Bank number - 1 MIDI byte
Preset number - 1 MIDI byte
Checksum
0xF7
Possible bank numbers are 0-2
Possible preset numbers are 0-127
From host to Axe-FX II, Save current edit buffer to Preset 10:
F0 00 01 74 03 1D 00 0A 11 F7
Response from Axe-FX II:
F0 00 01 74 03 64 1D 00 7F F7
Message:
SYSEX_SET_BYPASS | 0x1E |
Command sent by host to device to configure the bypass state of the device. Device will return a SYSEX_STATUS_MSG containing error code or (0) for success.
MIDI_ERROR_BAD_ARGUMENT - Invalid bypass argument specified
Header - As specified Above
Message Type - 0x1E
Bypass Argument - 1 MIDI byte
0 - Device is not bypassed or muted
1 - Device is set to bypass but globalMute is turned off
2 - Device is not bypassed but globalMute is turned on
Checksum
0xF7
Axe-FX II, turn on Bypass
F0 00 01 74 03 1E 01 19 F7
Response from Axe-FX II:
F0 00 01 74 03 64 1E 00 7C F7
Message:
SYSEX_GET_ALL_PARAMS | 0x1F |
Message sent by the host to the device to request ALL of the parameters for a specified effect ID in the current preset. If successful, the device will respond with a sequence of SYSEX_EFFECT_START, SYSEX_EFFECT_DATA, and SYSEX_EFFECT_END type messages containing all of the parameter information for the specified effect. If unsuccessful, the device will respond with a SYSEX_STATUS type message containing an error code.
MIDI_ERROR_INVALID_FXID - Invalid Effect ID specified.
From host to device:
Header - As specified Above
Message Type - 0x1F
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Checksum
0xF7
From device to host:
See entries for SYSEX_EFFECT_START, SYSEX_EFFECT_DATA, and SYSEX_EFFECT_END
Example Message:
From host to Axe-FX II, Effect ID Drive 1:
F0 00 01 74 03 1F 05 01 1D F7
Response from Axe-FX II:
F0 00 01 74 03 74 05 01 28 00 01 5F F7 F0 00 01 74 03 75 28 00 02 00 00 71 3B 01 53 46 02 71 25 01 7E 7F 03 00 00 00 00 00 00 00 00 00 0F 1A 03 7E 7F 03 00 00 00 32 06 02 7F 7F 01 7F 7F 01 1E 01 02 7F 7F 01 00 00 00 00 00 00 7F 7F 01 7E 7F 03 00 00 00 71 7F 01 7F 7F 01 7F 7F 01 7E 7F 03 00 00 00 24 74 01 00 00 00 12 7A 00 00 60 03 06 00 00 65 0C 02 7F 7F 01 7F 7F 01 1E 01 02 7F 7F 01 00 00 00 00 00 00 7F 7F 01 7E 7F 03 4A F7 F0 00 01 74 03 76 70 F7
Message:
SYSEX_GET_GRID | 0x20 |
Message sent by the host to the device to request the grid info for the present currently loaded in the edit buffer. Device will respond with a SYSEX_GET_GRID type message containing a data payload with all the current grid information. This consists of an effect ID and a connection bit for each grid location. The connection bit for a grid location is set if the prior columns row is connected.
None
From host to device:
Header - As specified Above
Message Type - 0x20
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x20
Data payload - For Axe-FX II: 48 grid locations * 2 variables per (ID and “if connected”) *
2 MIDI bytes per variable (LSB first) = 192 MIDI bytes
Checksum
0xF7
Note: “If connected” byte contains 1 bit per row in the column immediately preceding the specified effect. Bit 0 = Row 1, Bit 1 = Row 2, Bit 2 = Row 3, Bit 3 = Row 4
Example: If effect ID is in Column 2, Row 2 and the effects in preceding Column 1 Row 1 and Column 1 Row 2 are connected to it then bits 0 and 1 would be set in the connected byte for a value of 0x03.
From host to Axe-FX II:
F0 00 01 74 03 20 26 F7
Response from Axe-FX II:
F0 00 01 74 03 20 00 00 00 00 48 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 49 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4A 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 05 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 6A 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 6C 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4C 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4E 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 4F 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 50 01 02 00 00 00 00 00 00 00 00 00 75 F7
Message:
SYSEX_RESYNC | 0x21 |
Message sent by the device to the host if the user makes a change to the parameter of an effect via the front panel of the device. This allows the host to resync with the device (refreshing the parameters currently displayed on screen for example).
None
From device to host:
Header - As specified Above
Message Type - 0x21
Checksum
0xF7
From Axe-FX II to host:
F0 00 01 74 03 21 27 F7
Message:
SYSEX_SET_DEFAULTS | 0x22 |
Message sent by the host to the device to set all parameter values for the specified effect ID to their default values. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_INVALID_FXID - Invalid effect ID specified
From host to device:
Header - As specified Above
Message Type - 0x22
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Checksum
0xF7
From Axe-FX II to host: Set Amp 1 block to defaults:
F0 00 01 74 03 22 6A 00 4E F7
From Axe-FX II to host: Set Drive 1 block to defaults:
F0 00 01 74 03 22 06 01 23 F7
Response from host: Valid command received
F0 00 01 74 03 64 22 00 40 F7
Message:
SYSEX_LOOPER_STATE | 0x23 |
Message sent by the host to the device to toggle on/off the broadcast of the status of the looper state machine. Device will respond to the host with a continuous broadcast of this message containing the current status of the looper. When turning OFF broadcast, device will respond with a SYSEX_STATUS_MSG error code (0) implying broadcast was successfully turned off.
None
From device to host:
Header - As specified Above
Message Type - 0x23
Data byte - Toggle on (1) or off (0) broadcast of the Looper status.
Checksum
0xF7
From host to device:
When turned on:
Header - As specified Above
Message Type - 0x23
Looper Status - Two 7-bit MIDI bytes
Byte 1:
Bit 0: Looper Record
Bit 1: Looper Play
Bit 2: Looper Once
Bit 3: Looper Overdub
Bit 4: Looper Reverse
Bit 5: Looper Half
Bit 6: Looper Undo
Byte 2:
Looper Position (where 0 is start of loop and 127 is end of loop)
Checksum
0xF7
When turned off:
SYSEX_STATUS_MSG error code (0).
From host to Axe-FX II (turn on broadcast):
F0 00 01 74 03 23 01 24 F7
From host to Axe-FX II (turn off broadcast):
F0 00 01 74 03 23 00 25 F7
Response from Axe-FX II (looper recording, note looper position is fixed while recording):
F0 00 01 74 03 23 01 7F 5B F7
Response from Axe-FX II (looper playing, note looper position incrementing during playback):
F0 00 01 74 03 23 02 00 27 F7
F0 00 01 74 03 23 02 03 24 F7
F0 00 01 74 03 23 02 07 20 F7
Message:
SYSEX_MOVE_EFFECT | 0x24 |
Message sent by the host to the device to move a specified effect, row, or column on the grid for the preset currently loaded in the edit buffer.
Note: If a command is given to move an effect to a grid position that is already occupied, the around the Axe-FX II will SWAP the positions of the two effects.
MIDI_ERROR_BAD_ARGUMENT - Invalid move operation specified
MIDI_ERROR_BAD_GRID_POS - Invalid grid position specified
From device to host:
Header - As specified Above
Message Type - 0x24
Move Operation - 1 Data byte. Valid values are:
0 = Move Left
1 = Move Right
2 = Move Up
3 = Move Down
4 = Move Column Left
5 = Move Column Right
6 = Move Row Up
7 = Move Row Down
Count - Number of positions to move (1 Data byte)
Position - Position on the grid being moved (valid values are 0-47)
Checksum
0xF7
From Axe-FX II to host: Move effect currently located in Row 2 Column 2 (grid position 5) to the right by 2 counts.
F0 00 01 74 03 24 01 02 0D
Response from host: Valid command received
F0 00 01 74 03 64 24 00 46 F7
Message:
SYSEX_FW_UPDATE | 0x25 |
Message sent by the host to the device to arm the device for receiving a firmware update. This is the MIDI equivalent to using the front panel to navigate to the Firmware tab in the Utility menu and pressing enter. When valid command is received the device will display “Awaiting FW File” on front panel display and return a SYSEX_STATUS_MSG error code (0) indicating success.
MIDI_ERROR_NOT_RDY_FOR_FW_UPD - Device is already armed for FW update or unable to accept for some other reason.
Header - As specified Above
Message Type - 0x25
Checksum
0xF7
From host to Axe-FX II:
F0 00 01 74 03 25 23 F7
From Axe-FX II to host (valid command received):
F0 00 01 74 03 64 25 00 47 F7
Message:
SYSEX_FPGA_UPDATE | 0x26 |
Not currently used
Message:
SYSEX_MICRO_UPDATE | 0x27 |
Not currently used
Message:
SYSEX_GET_PARAM_STRINGS | 0x28 |
Message sent by the host to the device to request the parameter strings for a specified effect parameter. Example parameters with strings include Amp type, Cabinet type, etc.
A successful response from the device to the host will be a SYSEX_GET_PARAM_STRINGS message containing a listing of strings each separated by a NULL-terminator. Upon failure a SYSEX_STATUS_MSG will be sent with one of the following error codes.
MIDI_ERROR_INVALID_FXID
MIDI_ERROR_INVALID_PARAMID
MIDI_ERROR_NULL_DATA
From host to device:
Header - As specified Above
Message Type - 0x28
Effect ID - 14 bits over 2 MIDI bytes
Parameter ID - 14 bits over 2 MIDI bytes
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x28
Data Payload - 1 MIDI byte per char.
Total length = (Number of chars per string + 1 null) * number of types for
that parameter
Checksum
0xF7
From host to Axe-FX II (Get CABINET_MICL param String for Cabinet 1):
F0 00 01 74 03 28 6C 00 01 00 43 F7
From Axe-FX II to host:
F0 00 01 74 03 28 4E 4F 4E 45 00 35 37 20 44 59 4E 00 35 38 20 44 59 4E 00 34 32 31 20 44 59 4E 00 38 37 41 20 43 4F 4E 44 00 55 38 37 20 43 4F 4E 44 00 45 36 30 39 20 44 59 4E 00 52 45 31 36 20 44 59 4E 00 52 31 32 31 20 43 4F 4E 44 00 44 31 31 32 20 44 59 4E 00 36 37 20 43 4F 4E 44 00 75 F7
Message:
SYSEX_SET_SCENE | 0x29 |
Message sent by the host to the device to set the scene for the preset currently loaded in the edit buffer. Device will respond to host with a SYSEX_SET_SCENE message type specifying the currently selected scene.
None
From host to device:
Header - As specified Above
Message Type - 0x29
Scene - 1 Data Byte. Values of 0-7 select scenes 1-8. A value of 0x7F does not set a scene but returns the currently selected scene (for polling purposes).
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x28
Scene - 1 Data Byte specifying currently selected scene.
Checksum
0xF7
From host to Axe-FX II, set currently loaded Axe-FX II preset to Scene 4:
F0 00 01 74 03 29 03 4C F7
Response from Axe-FX II:
F0 00 01 74 03 29 03 2C F7
From host to Axe-FX II, request current scene:
F0 00 01 74 03 29 03 2C F7
Response from host (current scene is 8):
F0 00 01 74 03 29 07 28 F7
Message:
SYSEX_GET_FLAGS | 0x2A |
Message sent by the host to the device request various system flags. Device will respond to host with a SYSEX_GET_FLAGS message type containing these system flags.
None
From host to device:
Header - As specified Above
Message Type - 0x2A
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x2A
1 Data Byte with the following data bits:
Bit 0: Patch Edited (0 = no, 1 = yes)
Bit 1: Power Amp Bypass global setting (0 = off, 1 = on)
Bit 2: Cabinet Bypass global setting (0 = off, 1 = on)
Bit 3: Use tuner offset global setting (0 = off, 1 = on)
Checksum
0xF7
From host to Axe-FX II:
F0 00 01 74 03 2A 2C F7
From Axe-FX II to host (patch has been edited, cabinet bypass is turned ON)
F0 00 01 74 03 2A 05 29 F7
Message:
SYSEX_MODIFIER_DUMP | 0x2B |
Message sent by the host to the device to request a dump of all modifiers associated with a specified effect ID. Device will respond to the host with a SYSEX_MULTIMSG_START containing the number of modifiers to follow. Then it will respond with one SYSEX_MODIFIER message per modifier. Finally, a SYSEX_MULTIMSG_END signifying the end of the transmission.
None
From host to device:
Header - As specified Above
Message Type - 0x2B
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Checksum
0xF7
From device to host:
Header - As specified Above
Message Type - 0x2B
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Number of modifier parameters to follow - 1 MIDI Byte
Data payload:
Modifier Parameters - 21-bits per param sent as 3 MIDI bytes (LSB first)
Checksum
0xF7
Axe-FX II will also send “dummy” messages back to host where Effect ID is 0. These can be ignored.
From host to Axe-FX II (Request Mod Params for Wah 1):
F0 00 01 74 03 2B 7C 00 51 F7
From Axe-FX II to host (15 modifier params returned)
F0 00 01 74 03 2C 7C 00 0F 0A 00 00 00 00 00 7E 7F 03 00 00 00 7F 7F 01 7E 7F 03 7F 7F 01 0F 05 00 7C 00 00 05 00 00 02 00 00 00 00 00 00 00 00 7F 7F 01 7F 7F 01 22 F7
Message:
SYSEX_MODIFIER | 0x2C |
Message sent by the host to the device to set a modifier for a specified effect ID. The next free modifier will be set with the sent list of params.
These messages are of the same format as SYSEX_MODIFIER_DUMP so that modifiers dumped using the SYSEX_MODIFIER_DUMP method could then be set sending a SYSEX_MODIFIER from the host to the device.
Axe-FX II will respond with error message or null SYSEX_STATUS_MSG message indicating modifier was successfully set.
MIDI_ERROR_INVALID_FXID - Invalid Effect ID specified
MIDI_ERROR_FX_NOT_IN_USE - Effect ID specified is not currently in use
MIDI_ERROR_NO_MODIFIERS_LEFT - No free modifiers could be found
From host to device:
Header - As specified Above
Message Type - 0x2C
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Number of modifier parameters to follow - 1 MIDI Byte
Data payload:
Modifier Parameters - 21-bits per param sent as 3 MIDI bytes (LSB first)
Checksum
0xF7
From host to Axe-FX II (Set modifier 1 for Wah 1):
F0 00 01 74 03 2C 7C 00 0F 0A 00 00 00 00 00 7E 7F 03 00 00 00 7F 7F 01 7E 7F 03 7F 7F 01 0F 05 00 7C 00 00 05 00 00 02 00 00 00 00 00 00 00 00 7F 7F 01 7F 7F 01 22 F7
From Axe-FX II to host:
F0 00 01 74 03 64 2C 00 4E F7
Message:
SYSEX_SET_CAB_NAME | 0x2D |
This function has been deprecated as it will not be supported by Axe-FX XL.
Message sent by the host to the device to set the cab name for a specified user cab slot.
Axe-FX II will respond with error message or SYSEX_STATUS_MSG message indicating cab name was successfully set.
MIDI_ERROR_BAD_MSG_LENGTH - Message was illegal length
From host to device:
Header - As specified Above
Message Type - 0x2D
User Cab # - 1 MIDI byte (Value must be < # of user cab slots)
Name: 32 ASCII chars (1 MIDI byte per char). Last char should be null.
Checksum
0xF7
From host to Axe-FX II (User cab 3 to name “Nice Cab”):
F0 00 01 74 03 2D 02 4E 69 63 65 20 43 61 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 F7
From Axe-FX II to host:
F0 00 01 74 03 64 2D 00 4F F7
Message:
SYSEX_SET_PARAM_DIRECT | 0x2E |
Message sent by the host to the device to directly set the parameter value of a specified parameter for a specified effect ID. If successful, device will respond with a SYSEX_PARAM_SET message containing the actual param value and the param string. If not successful, device will respond with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID - Invalid effect ID specified
MIDI_ERROR_INVALID_PARAMID - Invalid parameter ID specified
From host to device:
Header - As specified Above
Message Type - 0x2E
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Param ID - 14 bits sent as 2 MIDI bytes (LSB first)
Param Value - 32 bits sent as 5 MIDI bytes (LSB first). Standard IEEE 32-bit format.
Checksum
0xF7
Note: Param value is entered based on displayed value for that particular parameter. For example, for an Amp Drive parameter the valid floating point values would be 0.0 to 10.0.
For Amp Comp valid values would be 0.0 to 100.0.
From Device to Host:
Header - As specified above
Message Type - 0x02 (SYSEX_PARAM_SET)
Effect ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter ID - 14 bits over 2 MIDI bytes (LSB) first
Parameter Value - 16 bit Int over 3 MIDI bytes (LSB) first
Knob Value - 1 MIDI byte, value 0-127
Parameter Limits (Integer types only, Log and Lin types return 0’s)-
Low Limit - 2 MIDI bytes (LSB) first
High Limit - 2 MIDI bytes (LSB) first
Null-Terminated Value String. Length equal to # of char’s in value string. 1 byte per char.
checksum
0xF7 (end)
From host to Axe-FX II, Amp 1 Set Drive to 6.0 (Floating point representation of 6.0 is 0x40C00000)
F0 00 01 74 03 2E 6A 00 01 00 00 00 00 06 04 41 F7
From Axe-FX II to host:
F0 00 01 74 03 02 6A 00 01 00 18 33 02 4C 00 00 00 00 36 2E 30 30 00 12 F7
Message:
SYSEX_BPM | 0x2F |
Message sent by the host to the device to query the current tempo (in bpm). Host will respond to the device with a SYSEX_BPM type message containing the current tempo.
None
From host to device:
Header - As specified Above
Message Type - 0x2F
Checksum
0x7F
From device to host:
Header - As specified Above
Message Type - 0x2F
Tempo - 14 bits sent as 2 MIDI bytes (LSB first)
Checksum
F7
Example Message:
From host to device:
F0 00 01 74 03 2F 29 F7
From device to host (Axe-FX II set to 138 bpm):
F0 00 01 74 03 2F 0A 01 22 F7
Message:
SYSEX_GET_GRAPH | 0x30 |
Message sent by the host to the device request the relevant graph data for the most recently polled effect. Device will respond with a SYSEX_GET_GRAPH type message containing a data payload with the graph.
None
From host to device:
Header - As specified Above
Message Type - 0x30
Checksum
0x7F
From device to host:
Header - As specified Above
Message Type - 0x30
Graph Data Payload - 128 graph points sent as 2 MIDI bytes (LSB first) per point.
Checksum
F7
Example Message:
From host to device:
F0 00 01 74 03 30 36 F7
From device to host:
F0 00 01 74 03 30 7F 00 7F 02 7F 04 7F 06 7F 08 7F 0A 7F 0C 7F 0E 7F 10 7F 12 7F 14 7F 16 7F 18 7F 1A 7F 1C 7F 1E 7F 20 7F 22 7F 24 7F 26 7F 28 7F 2A 7F 2C 7F 2E 7F 30 7F 32 7F 34 7F 36 7F 38 7F 3A 7F 3C 7F 3E 3F 3F 3F 3E 3F 3D 3F 3C 3F 3B 3F 3A 3F 39 3F 38 3F 37 3F 36 3F 35 3F 34 3F 33 3F 32 3F 31 3F 30 3F 2F 3F 2E 3F 2D 3F 2C 3F 2B 3F 2A 3F 29 3F 28 3F 27 3F 26 3F 25 3F 24 3F 23 3F 22 3F 21 3F 20 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 3F 1F 3F 1E 3F 1D 3F 1C 3F 1B 3F 1A 3F 19 3F 18 3F 17 3F 16 3F 15 3F 14 3F 13 3F 12 3F 11 3F 10 3F 0F 3F 0E 3F 0D 3F 0C 3F 0B 3F 0A 3F 09 3F 08 3F 07 3F 06 3F 05 3F 04 3F 03 3F 02 40 01 40 00 36 F7
Message:
SYSEX_TM_DATA | 0x31 |
When this message sent by the host to the device it will request a dump of the Tone Match data block. When this message is sent by the device to the host it will contain the Tone Match payload data. Payload data is sent as 8192 floating point words (5 MIDI bytes per 32-bit word).
None
From host to device:
Header - As specified Above
Message Type - 0x31
Checksum
0x7F
From device to host:
Header - As specified Above
Message Type - 0x31
Tone Match Data Payload - 5 MIDI bytes per word (LSB first) * 64 words per packet * 128 Packets = 40960 MIDI bytes
Checksum
0x7F
Example Message:
From host to device:
Message:
SYSEX_MULTIMSG_START | 0x32 |
Message sent by the device to the host as a predecessor to a series of other SYSEX messages. The purpose is to tell the host how many SYSEX messages of a specific type will follow. When a series of SYSEX messages is sent the format is:
SYSEX_MULTIMSG_START
Series of SYSEX messages
SYSEX_MULTIMSG_END
None
From host to device:
Header - As specified Above
Message Type - 0x31
Type of Sysex messages to follow (i.e. SYSEX_CABNAME)
Number of SYSEX messages to follow - 2 MIDI Bytes - 7 bits each (LSB first)
Checksum
0xF7
Example Message:
Message:
SYSEX_MULTIMSG_END | 0x33 |
Message sent by the device to the host as a conclusion to a series of other SYSEX messages. The purpose is to tell the host how many SYSEX messages of a specific type will follow. When a series of SYSEX messages is sent the format is:
SYSEX_MULTIMSG_START
Series of SYSEX messages
SYSEX_MULTIMSG_END
None
From host to device:
Header - As specified Above
Message Type - 0x33
Checksum
0xF7
Example Message:
Message:
SYSEX_ERASE_SECTOR | 0x34 |
Message:
SYSEX_GET_CONFIG | 0x35 |
(Added in Axe-Fx II FW 10.11)
Message sent by the host to the device to request the the value of a Configuration parameter by its offset. Device will respond with a SYSEX_GET_CONFIG type message containing the configuration parameter value.
None
From host to device:
Header - As specified Above
Message Type - 0x35
Parameter Offset - 2 MIDI Bytes
Checksum
0x7F
From device to host:
Header - As specified Above
Message Type - 0x35
Parameter Offset - 2 MIDI Bytes
Parameter Value - 3 MIDI Bytes
Checksum
F7
Message:
SYSEX_GET_GRAPHN | 0x36 |
(Added in Axe-Fx II FW 10.11)
Message sent by the host to the device to request the relevant graph data for the most recently polled effect via graph index. Device will respond with a SYSEX_GET_GRAPHN type message containing a data payload with the graph.
None
From host to device:
Header - As specified Above
Message Type - 0x36
Graph Index - 1 MIDI Byte
Checksum
0x7F
From device to host:
Header - As specified Above
Message Type - 0x36
Graph Data Payload - 128 graph points sent as 2 MIDI bytes (LSB first) per point.
Checksum
F7
Example Message:
From host to device:
F0 00 01 74 03 30 36 F7
From device to host:
F0 00 01 74 03 30 7F 00 7F 02 7F 04 7F 06 7F 08 7F 0A 7F 0C 7F 0E 7F 10 7F 12 7F 14 7F 16 7F 18 7F 1A 7F 1C 7F 1E 7F 20 7F 22 7F 24 7F 26 7F 28 7F 2A 7F 2C 7F 2E 7F 30 7F 32 7F 34 7F 36 7F 38 7F 3A 7F 3C 7F 3E 3F 3F 3F 3E 3F 3D 3F 3C 3F 3B 3F 3A 3F 39 3F 38 3F 37 3F 36 3F 35 3F 34 3F 33 3F 32 3F 31 3F 30 3F 2F 3F 2E 3F 2D 3F 2C 3F 2B 3F 2A 3F 29 3F 28 3F 27 3F 26 3F 25 3F 24 3F 23 3F 22 3F 21 3F 20 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 7F 1F 3F 1F 3F 1E 3F 1D 3F 1C 3F 1B 3F 1A 3F 19 3F 18 3F 17 3F 16 3F 15 3F 14 3F 13 3F 12 3F 11 3F 10 3F 0F 3F 0E 3F 0D 3F 0C 3F 0B 3F 0A 3F 09 3F 08 3F 07 3F 06 3F 05 3F 04 3F 03 3F 02 40 01 40 00 36 F7
Message:
SYSEX_EDIT_EFFECT | 0x37 |
(Added in Axe-Fx II FW 10.12)
Brings up the edit GUI for the specified effect ID (or control block). This is primarily intended to refresh the effect so that any graphs can be read. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_INVALID_FXID
From host to device:
Header - As specified Above
Message Type - 0x37
Effect ID - 14-bits sent as 2 MIDI bytes (LSB first)
Checksum
0xF7
Message:
0x38 |
(Added in Axe-Fx II FW 10.12)
Message sent by the host to the device to toggle on/off the broadcast of up to 16 modifier-connected parameter knob positions. Device will respond to the host with a continuous broadcast of this message containing up to 16 pairs of parameter Ids and knob position values (0-127) at a rate of 10 Hz. When turning broadcast ON or OFF, device will respond with a SYSEX_STATUS_MSG error code (0) implying broadcast state was successfully changed.
None
From device to host:
Header - As specified Above
Message Type - 0x38
Count - 1 Midi byte. Valid values are 0 - 16. Sending 0 disables the broadcast.
Parameter Ids - 2 Midi Bytes each. The message can contain up to 16 ids.
Checksum
0xF7
From host to device:
When turned on:
Header - As specified Above
Message Type - 0x38
Up to 16 pairs of:
Parameter Id - 2 Midi Bytes
Knob Position - 1 Midi Bytes
Checksum
0xF7
When turned on/off:
SYSEX_STATUS_MSG error code (0).
Message:
SYSEX_BROADCAST_MODIFIER | 0x39 |
(Added in Axe-Fx II FW 10.12)
Message sent by the host to the device to toggle on/off the broadcast of a given modifier’s LFO X position in the modifier graph . Device will respond to the host with a continuous broadcast of this message containing the current x-position at a rate of 10 Hz. When turning broadcast ON or OFF, device will respond with a SYSEX_STATUS_MSG error code (0) implying broadcast state was successfully changed.
None
From device to host:
Header - As specified Above
Message Type - 0x39
Enable - 1 Midi byte. Valid values are 0 (off) - 1 (on).
Modifier Id - 1 Midi Bytes. Valid values are 0 - 23.
Checksum
0xF7
From host to device:
When turned on:
Header - As specified Above
Message Type - 0x39
X Position - 1Midi Bytes.
Checksum
0xF7
When turned on/off:
SYSEX_STATUS_MSG error code (0).
Message:
SYSEX_GET_POSITION | 0x3A |
(Added in Axe-Fx II FW 11.00)
Message sent by the host to the device to query the currently selected position in the device grid. Device will respond with the position.
None
From device to host:
Header - As specified Above
Message Type - 0x3A
Checksum
0xF7
From host to device:
Header - As specified Above
Message Type - 0x3A
Position - 1 MIDI Bytes.
Checksum
0xF7
Message:
SYSEX_SET_MODPARAM_DIRECT | 0x3B |
(Added in Axe-Fx II FW 11.00)
Message sent by the host to the device to directly set the value of a specified modifier-parameter for a specified effect ID and effect-parameter. If successful, device will respond with a SYSEX_MODIFIER_SET message containing the actual param value and the param string. If not successful, device will respond with SYSEX_STATUS_MSG containing error code.
MIDI_ERROR_INVALID_FXID
MIDI_ERROR_INVALID_PARAMID
MIDI_ERROR_FX_NOT_IN_USE
MIDI_ERROR_NO_MODIFIERS_LEFT
From device to host:
Header - As specified Above
Message Type - 0x3B
Effect ID - 2 Midi Bytes
Effect-Parameter Id - 2 Midi Bytes
Modifier-Parameter Id - 2 Midi Bytes
Modifier-Parameter Value - 32 bits sent as 5 MIDI bytes (LSB first). Standard IEEE 32-bit format.
Checksum
0xF7
Note: Param value is entered based on displayed value for that particular parameter. For example, for an Amp Drive parameter the valid floating point values would be 0.0 to 10.0.
For Amp Comp valid values would be 0.0 to 100.0.
From Device to Host:
Header - As specified above
Message Type - 0x07 (SYSEX_MODIFIER_SET)
Effect ID - 14 bits over two MIDI bytes (LSB first)
Effect param ID - 14 bits over two MIDI bytes (LSB first)
Modifier parameter - 14 bits over two MIDI bytes (LSB first)
Modifier value - 16 bits over three MIDI bytes (LSB first)
Null terminated Value String
checksum
0xF7 (end)
Message:
SYSEX_RECALL_PATCH | 0x3C |
(Added in Axe-Fx II FW 11.00)
Message sent by the host to the device to load the given patch to avoid problems with PC when "Ignore redundant PC" is enabled. Device responds with a SYSEX_STATUS_MSG.
MIDI_ERROR_BAD_ARGUMENT
From device to host:
Header - As specified Above
Message Type - 0x3C
Bank - 1 Midi Byte
Patch - 1 Midi Byte
Checksum
0xF7
From host to device:
Header - As specified Above
Message Type - 0x3A
Position - 1 MIDI Bytes.
Checksum
0xF7
From host to device:
See SYSEX_STATUS_MSG.
Message:
SYSEX_FAILSAFE_FW_UPDATE | 0x3D |
(Axe-Fx II XL specific)
TBD
TDB
From device to host:
Header - As specified Above
Message Type - 0x3D
...
Checksum
0xF7
From host to device:
TBD
From host to device:
TBD.
Message:
SYSEX_MUTE | 0x3E |
(Added in Axe-Fx II FW 12.04)
Message sent by the host to the device to toggle the mute state of the outputs. Device responds with a SYSEX_STATUS_MSG.
MIDI_ERROR_BAD_ARGUMENT
From device to host:
Header - As specified Above
Message Type - 0x3E
Mute-State - 1 Midi Byte (0=all outputs off, 1=all outputs on) Uses negative logic.
Checksum
0xF7
From host to device:
Header - As specified Above
Message Type - 0x3A
Position - 1 MIDI Bytes.
Checksum
0xF7
From host to device:
See SYSEX_STATUS_MSG.
Message:
0x3F |
Used by host to set the name and location of the current IR Capture. Device will respond with SYSEX_STATUS_MSG indicating either success (0) or an error code.
MIDI_ERROR_BAD_MSG_LENGTH - Wrong number of characters in message.
From host to device:
Header - As specified above
Message Type - 0x09
User Cab Slot: 2 MIDI Bytes
Name: 32 MIDI bytes, 1 byte per char. (ASCII format, values must be less than 128).
Last char is null 0x0.
Checksum
0xF7
From device to host:
See SYSEX_STATUS_MSG.
Message:
SYSEX_CONTROL_IRCAP | 0x40 |
(Added in Axe-Fx II FW 13.00)
Message sent by the host to the device to remotely control the IR Capture. Device responds with a SYSEX_STATUS_MSG and, depending on the operation, additional data.
MIDI_ERROR_BAD_ARGUMENT
From device to host:
Header - As specified Above
Message Type - 0x3E
Operation- 1 Midi Byte
0: switch to the IR Capture GUI (must be called first)
1: Test
2: Capture
3: Save
4: Dump cab - Will additionally send a SYSEX_CABIR_START/DATA/END messages.
5: Dump raw - Will additionally send a SYSEX_RAWIR_START/DATA/END messages.
Checksum
0xF7
From device to host:
See SYSEX_STATUS_MSG.
See SYSEX_CABIR_START/DATA/END.
See SYSEX_RAWIR_START/DATA/END
Message:
SYSEX_DELETE_CABIR | 0x41 |
Message sent by device to host to request the cab IR at the given user slot be deleted. The host responds with a SYSEX_STATUS_MSG.
See table above for list of potential error codes.
Header - As specified above
Message Type - 0x41
User Cab Slot - 2 Midi Bytes
Checksum
0xF7
Message:
SYSEX_STATUS_MSG | 0x64 |
Message sent by device to host indicating a status update. Could be a periodic update message or could be a return error message.
See table above for list of potential error codes.
Header - As specified above
Message Type - 0x64
Input Sysex Message Type (when applicable)
Return Error
Checksum
0xF7
Message:
SYSEX_CABIR_START | 0x7a |
Message sent by device to indicate the start of a cabinet data transfer. No response message is expected.
None
Header - As specified above
Message Type - 0x7a
Cabinet Number - 1 MIDI byte. Cabinet Index starts at 0x0 and extends to 0x63 inclusive for 100 user slots (User Cab 1 = 0x0).
Special Cab Numbers:
Number of Image words in Payload (14 bits over 2 bytes, LSB first)
Checksum
0xF7 (end)
Header - As specified above
Message Type - 0x7a
Cabinet Number - 2 MIDI bytes. Cabinet Index starts at 0x0 and extends to 0x1FF inclusive for 512 user slots (User Cab 1 = 0x0).
Special Cab Numbers:
Number of Image words in Payload (14 bits over 2 bytes, LSB first)
Checksum
0xF7 (end)
Axe-FX II, dumping user cab 10, 2048 bytes in length
F0 00 01 74 03 7A 7F 00 10 CHECKSUM F7
Message:
SYSEX_CABIR_DATA | 0x7b |
Message sent by device containing payload data for a cabinet IR dump. Payload data is 32-bit words sent as 5 MIDI bytes (LSB first). No response message is expected.
None
Header - As specified above
Message Type - 0x7b
Words in Payload (14 bits over 2 bytes, LSB first)
Payload Data - 32 words (32 bits over 5 7-bit bytes, LSB first)
Checksum
0xF7 (end)
F0 00 01 74 05 7b 20 00 (PAYLOAD = 32 * 5 = 160 total bytes) CHECKSUM F7
Message:
SYSEX_CABIR_END | 0x7c |
Message sent by device to indicate the end of a cabinet transfer. No response message is expected.
None
Header - As specified above
Message Type - 0x7C
Image Checksum (32-bit word sent as 5 7-bit bytes, LSB first)
Checksum
0xF7 (end)
F0 00 01 74 05 7C IMAGE_CHECKSUM CHECKSUM F7
Message:
SYSEX_EFFECT_START | 0x74 |
Message sent by device to host or from host to device to indicate the start of an effect block data transfer. No response message is expected.
This message was modified on 1/14/2014 to include the 4-bits necessary to reference the 10 possible Global Block indices. To remain backward compatible, Bit 3 which was reserved is now bit 3 of the Global Block Index.
None
Header - As specified above
Message Type - 0x74
Effect ID - 14 bits sent as 2 MIDI bytes (LSB first)
Number of Params to follow - 14 bits sent as 2 MIDI bytes (LSB first)
General Effect Data Byte - 1 MIDI byte
Bit 0: number of alt settings
Bit 1: current alt setting
Bit 2: bypassed
Bit 3: bit 3 of the global block reference ( see note above )
Bit 4-6: bits 0 - 2 of the global block reference
Checksum
0xF7 (end)
Axe-FX II sending Drive 1:
F0 00 01 74 03 74 05 01 28 00 01 5F F7
Message:
SYSEX_EFFECT_DATA | 0x75 |
Message sent by device to host or from host to device containing the data payload for an effect block. No response is expected.
None
Header - As specified above
Message Type - 0x75
Count byte - Parameters in this payload (Up to 64)
Parameter Data - 21 bits per parameter sent as 3 MIDI bytes (LSB first)
Checksum
0xF7 (end)
Axe-FX II sending Drive 1:
F0 00 01 74 03 75 28 00 02 00 00 71 3B 01 53 46 02 71 25 01 7E 7F 03 00 00 00 00 00 00 00 00 00 0F 1A 03 7E 7F 03 00 00 00 32 06 02 7F 7F 01 7F 7F 01 1E 01 02 7F 7F 01 00 00 00 00 00 00 7F 7F 01 7E 7F 03 00 00 00 71 7F 01 7F 7F 01 7F 7F 01 7E 7F 03 00 00 00 24 74 01 00 00 00 12 7A 00 00 60 03 06 00 00 65 0C 02 7F 7F 01 7F 7F 01 1E 01 02 7F 7F 01 00 00 00 00 00 00 7F 7F 01 7E 7F 03 4A F7
Message:
SYSEX_EFFECT_END | 0x76 |
Message sent by device to host or from host to device indicating the end of an effect block transfer. No response is expected.
None
Header - As specified above
Message Type - 0x76
Checksum
0xF7 (end)
From Axe-FX II to host:
F0 00 01 74 03 76 70 F7
Message:
SYSEX_PATCH_START | 0x77 |
Message sent by device to host or from host to device to indicate the start of a patch data transfer. No response message is expected.
None
Header - As specified above
Message Type - 0x77
Bank Number (1 byte) - If 0x7F then preset # has been “stripped” and preset will be sent
directly to edit buffer.
Patch Number (1 byte) -
Number of Image words in entire preset Payload (14 bits over 2 bytes, LSB first).
Checksum
0xF7 (end)
Axe-FX II::
F0 00 01 74 03 77 7F 00 00 10 1E F7
Message:
SYSEX_PATCH_DATA | 0x78 |
Message sent by device to host or from host to device containing data payload for a patch dump. No response message is expected.
None
Header - As specified above
Message Type - 0x78
Words in Payload (14 bits over 2 7-bit bytes, LSB first)
Payload Data - 64 words (16 bits over 3 7-bit bytes, LSB first)
Checksum
0xF7 (end)
Axe-FX II:
(too long to paste here)
Message:
SYSEX_PATCH_END | 0x79 |
Message sent by device to host or from host to device to indicate the end of a patch data transfer. No response message is expected.
None
Header - As specified above
Message Type - 0x79
Checksum for entire Patch Dump (16 bits over 3 MIDI bytes, LSB first)
Checksum for message
0xF7 (end)
From Axe-FX II:
F0 00 01 74 03 79 15 6E 07 03 F7
Message:
SYSEX_FW_UPDATE_START | 0x7D |
Message sent by device to host indicate the start of a firmware data transfer. NAxe-FX II will respond with error message or null SYSEX_STATUS_MSG message indicating modifier was successfully set.
MIDI_ERROR_ILLEGAL_MSG
MIDI_ERROR_NOT_RDY_FOR_FW_UPD
Header - As specified above
Message Type - 0x7D
Number of image words to follow - 28 bits sent over 4 MIDI bytes (LSB first)
Checksum
0xF7 (end)
Axe-FX II:
F0 00 01 74 03 7D 7D 30 17 00 21 F7
Message:
SYSEX_FW_UPDATE_DATA | 0x7E |
Message sent by device to host containing a data payload portion of a firmware data transfer. Axe-FX II will respond with error message or null SYSEX_STATUS_MSG message indicating modifier was successfully set.
MIDI_ERROR_ILLEGAL_MSG
MIDI_ERROR_BAD_MSG_LENGTH
Header - As specified above
Message Type - 0x7E
Number of image words to follow - 14 bits sent over 2 MIDI bytes (LSB first)
Data payload - 32-bits per word over 5 MIDI bytes
Checksum
0xF7 (end)
Axe-FX II:
F0 00 01 74 03 7E 20 00 00 0C 62 5A 78 02 00 20 1E 7B 02 10 40 7E 7A 01 20 00 60 02 01 4A 01 40 78 01 4A 01 42 78 00 00 02 40 78 00 00 06 40 78 00 00 0A 40 78 00 00 0E 40 78 01 42 01 40 78 09 42 01 40 78 11 42 01 40 78 19 42 01 40 78 01 44 01 40 78 09 44 01 40 78 11 44 01 40 78 19 44 01 40 78 31 44 01 40 78 39 44 01 40 78 01 40 01 40 78 09 40 01 40 78 00 7E 00 60 78 3A 3E 00 4C 78 00 00 73 5F 00 00 7F 50 10 7B 4C 00 20 0C 7B 00 00 00 5F 7A 00 00 72 5F 78 40 00 20 18 7B 65 31 63 42 00 00 34 00 10 7B 38 F7
Message:
SYSEX_FW_UPDATE_END | 0x7F |
Message sent by device to host indicate the end of a firmware data transfer. Axe-FX II will respond with error message or null SYSEX_STATUS_MSG message indicating modifier was successfully set.
MIDI_ERROR_ILLEGAL_MSG
MIDI_ERROR_IMAGE_SIZE_INCORRECT
MIDI_ERROR_BAD_IMAGE_CHKSUM
Header - As specified above
Message Type - 0x7F
Checksum for entire firmware image - 32-bits sent over 5 MIDI bytes (LSB first)
Checksum
0xF7 (end)
Example Message:
Axe-FX II
F0 00 01 74 03 7F 55 35 39 3D 00 1D F7
Many MIDI commands require specifying an effect ID value to refer to a specific effect block. The following enumeration table is used to assign an effect ID value to each effect block in the Axe-FX II.
enum
{
ID_COMP1 = 100,
ID_COMP2,
ID_GRAPHEQ1,
ID_GRAPHEQ2,
ID_PARAEQ1,
ID_PARAEQ2,
ID_DISTORT1,
ID_DISTORT2,
ID_CAB1,
ID_CAB2,
ID_REVERB1,
ID_REVERB2,
ID_DELAY1,
ID_DELAY2,
ID_MULTITAP1,
ID_MULTITAP2,
ID_CHORUS1,
ID_CHORUS2,
ID_FLANGER1,
ID_FLANGER2,
ID_ROTARY1,
ID_ROTARY2,
ID_PHASER1,
ID_PHASER2,
ID_WAH1,
ID_WAH2,
ID_FORMANT1,
ID_VOLUME1,
ID_TREMOLO1,
ID_TREMOLO2,
ID_PITCH1,
ID_FILTER1,
ID_FILTER2,
ID_FUZZ1,
ID_FUZZ2,
ID_ENHANCER1,
ID_LOOP1,
ID_MIXER1,
ID_MIXER2,
ID_NOISEGATE1,
ID_OUT1,
ID_CONTROL,
ID_FBSEND,
ID_FBRETURN,
ID_SYNTH1,
ID_SYNTH2,
ID_VOCODER1,
ID_MEGATAP1,
ID_CROSSOVER1,
ID_CROSSOVER2,
ID_GATE1,
ID_GATE2,
ID_RINGMOD1,
ID_PITCH2,
ID_MULTICOMP1,
ID_MULTICOMP2,
ID_QUADCHORUS1,
ID_QUADCHORUS2,
ID_RESONATOR1,
ID_RESONATOR2,
ID_GRAPHEQ3,
ID_GRAPHEQ4,
ID_PARAEQ3,
ID_PARAEQ4,
ID_FILTER3,
ID_FILTER4,
ID_VOLUME2,
ID_VOLUME3,
ID_VOLUME4,
ID_LOOPER1,
ID_EQMATCH1
}
Parameter ID enumeration:
// Enumerated params for effects and other adjustable parameters
// The "CTRL" parameters start at 200. Since these values are not
// stored this allows future expansion of the stored parameters and
// consistency for the shared mixer control functions.
enum
{
GLOBAL_REVERBMIX,
GLOBAL_EFFECTSMIX,
GLOBAL_CABINETBYP,
GLOBAL_TUNINGREF,
GLOBAL_PWRAMPBYP,
GLOBAL_TUNERMUTE,
GLOBAL_DELAYSPILL,
GLOBAL_USETUNEOFFSETS,
GLOBAL_OFFSET1,
GLOBAL_OFFSET2,
GLOBAL_OFFSET3,
GLOBAL_OFFSET4,
GLOBAL_OFFSET5,
GLOBAL_OFFSET6,
GLOBAL_OUT1EQ1,
GLOBAL_OUT1EQ2,
GLOBAL_OUT1EQ3,
GLOBAL_OUT1EQ4,
GLOBAL_OUT1EQ5,
GLOBAL_OUT1EQ6,
GLOBAL_OUT1EQ7,
GLOBAL_OUT1EQ8,
GLOBAL_OUT1EQ9,
GLOBAL_OUT1EQ10,
GLOBAL_LEVEL1,
GLOBAL_OUT2EQ1,
GLOBAL_OUT2EQ2,
GLOBAL_OUT2EQ3,
GLOBAL_OUT2EQ4,
GLOBAL_OUT2EQ5,
GLOBAL_OUT2EQ6,
GLOBAL_OUT2EQ7,
GLOBAL_OUT2EQ8,
GLOBAL_OUT2EQ9,
GLOBAL_OUT2EQ10,
GLOBAL_LEVEL2,
GLOBAL_AMPGAIN,
GLOBAL_AMPRES,
GLOBAL_VERSION, // version to use for amp modeling
GLOBAL_AMPSORT, // when true use sort by name
GLOBAL_END,
};
enum
{
CONTROLLERS_LFO1TYPE,
CONTROLLERS_LFO1FREQ,
CONTROLLERS_LFO1DEPTH,
CONTROLLERS_LFO1DUTY,
CONTROLLERS_LFO1PHASE,
CONTROLLERS_LFO1TEMPO,
CONTROLLERS_LFO2TYPE,
CONTROLLERS_LFO2FREQ,
CONTROLLERS_LFO2DEPTH,
CONTROLLERS_LFO2DUTY,
CONTROLLERS_LFO2PHASE,
CONTROLLERS_LFO2TEMPO,
CONTROLLERS_ADSR1MODE,
CONTROLLERS_ADSR1RETRIG,
CONTROLLERS_ADSR1ATTACK,
CONTROLLERS_ADSR1DECAY,
CONTROLLERS_ADSR1SUSTAIN,
CONTROLLERS_ADSR1LEVEL,
CONTROLLERS_ADSR1RELEASE,
CONTROLLERS_ADSR1THRESH,
CONTROLLERS_ADSR2MODE,
CONTROLLERS_ADSR2RETRIG,
CONTROLLERS_ADSR2ATTACK,
CONTROLLERS_ADSR2DECAY,
CONTROLLERS_ADSR2SUSTAIN,
CONTROLLERS_ADSR2LEVEL,
CONTROLLERS_ADSR2RELEASE,
CONTROLLERS_ADSR2THRESH,
CONTROLLERS_ENVATTACK,
CONTROLLERS_ENVRELEASE,
CONTROLLERS_ENVSENS, // Envelope follower sensitivity
CONTROLLERS_ENVGAIN, // Envelope follower output gain
CONTROLLERS_TEMPO, // preset tempo
CONTROLLERS_TEMPOTOUSE, // which tempo to use, stored or global
CONTROLLERS_SEQFREQ,
CONTROLLERS_SEQTEMPO,
CONTROLLERS_SEQSTAGES,
CONTROLLERS_SEQ1,
CONTROLLERS_SEQ2,
CONTROLLERS_SEQ3,
CONTROLLERS_SEQ4,
CONTROLLERS_SEQ5,
CONTROLLERS_SEQ6,
CONTROLLERS_SEQ7,
CONTROLLERS_SEQ8,
CONTROLLERS_SEQ9,
CONTROLLERS_SEQ10,
CONTROLLERS_SEQ11,
CONTROLLERS_SEQ12,
CONTROLLERS_SEQ13,
CONTROLLERS_SEQ14,
CONTROLLERS_SEQ15,
CONTROLLERS_SEQ16,
CONTROLLERS_AUTODELAY, // when set tapping tempo unbypasses delay
CONTROLLERS_SEQRUN,
CONTROLLERS_KNOBA,
CONTROLLERS_KNOBB,
CONTROLLERS_KNOBC,
CONTROLLERS_KNOBD,
CONTROLLERS_SEQ17,
CONTROLLERS_SEQ18,
CONTROLLERS_SEQ19,
CONTROLLERS_SEQ20,
CONTROLLERS_SEQ21,
CONTROLLERS_SEQ22,
CONTROLLERS_SEQ23,
CONTROLLERS_SEQ24,
CONTROLLERS_SEQ25,
CONTROLLERS_SEQ26,
CONTROLLERS_SEQ27,
CONTROLLERS_SEQ28,
CONTROLLERS_SEQ29,
CONTROLLERS_SEQ30,
CONTROLLERS_SEQ31,
CONTROLLERS_SEQ32,
CONTROLLERS_LFO1RUNCTRL, // not exposed directly
CONTROLLERS_LFO2RUNCTRL,
CONTROLLERS_SEQRUNCTRL,
CONTROLLERS_END,
CONTROLLERS_METLEVEL,
CONTROLLERS_METONOFF,
};
enum
{
MOD_CTRTLID, // ID of input controller
MOD_MIN,
MOD_MAX,
MOD_STARTPT,
MOD_MIDPT,
MOD_ENDPT,
MOD_SLOPE,
MOD_DAMPING,
MOD_EFFECTID, // ID of effect being controlled
MOD_PARAM, // parameter being controlled
MOD_AUTOENGAGE,
MOD_PCRESET, // Reset on program change
MOD_OFFVAL, // auto-engage off value
MOD_SCALE,
MOD_OFFSET,
MOD_END,
};
enum
{
CABINET_TYPEL,
CABINET_MICL,
CABINET_TYPER,
CABINET_MICR,
CABINET_LINK,
CABINET_LEVELL,
CABINET_LEVELR,
CABINET_PANL,
CABINET_PANR,
CABINET_LEVEL,
CABINET_PAN,
CABINET_BYPASSMODE,
CABINET_MODE, // 0 = stereo normal res, 1 = mono hi-res, 2 = mono normal res
CABINET_BYPASS,
CABINET_DRIVEL,
CABINET_DRIVER,
CABINET_ROOMMIX,
CABINET_ROOMSIZE,
CABINET_MICSPACE,
CABINET_LOCUT,
CABINET_HICUT,
CABINET_WARP,
CABINET_PROXIMITYL,
CABINET_DIRECT, // lpf'ed direct level
CABINET_DYNAMICS,
CABINET_DIRECTFREQ,
CABINET_DELAYL,
CABINET_DELAYR,
CABINET_PROXIMITYR,
// CABINET_SMOOTH,
CABINET_END,
};
enum
{
EQMATCH_MODE,
EQMATCH_AMOUNT,
EQMATCH_SMOOTHING,
EQMATCH_CAPTUREREF, // turn on/off capture
EQMATCH_CAPTUREUSER,
EQMATCH_MATCH, // run matching function
EQMATCH_LEVEL,
EQMATCH_PAN,
EQMATCH_BYPASSMODE,
EQMATCH_BYPASS,
EQMATCH_SOURCE,
EQMATCH_TIME, // damping
EQMATCH_REFCHANNEL,
EQMATCH_USERCHANNEL,
EQMATCH_REFSOLO,
EQMATCH_RESOLUTION,
EQMATCH_TAPER,
EQMATCH_ACCUMULATE, // add results of last match to previous
EQMATCH_NORM1, // IR normalization value
EQMATCH_NORM2,
EQMATCH_LFMATCH,
EQMATCH_GAIN1,
EQMATCH_GAIN2,
EQMATCH_GAIN3,
EQMATCH_GAIN4,
EQMATCH_GAIN5,
EQMATCH_GAIN6,
EQMATCH_GAIN7,
EQMATCH_GAIN8,
EQMATCH_GAIN9,
EQMATCH_GAIN10,
EQMATCH_GAIN11,
EQMATCH_GAIN12,
EQMATCH_GAIN13,
EQMATCH_GAIN14,
EQMATCH_GAIN15,
EQMATCH_GAIN16,
EQMATCH_END,
EQMATCH_DATASTART = 40,
EQMATCH_DATAEND = 1024+40,
};
enum
{
COMP_THRESH,
COMP_RATIO,
COMP_ATTACK,
COMP_RELEASE,
COMP_LEVEL,
COMP_KNEE,
COMP_AUTO, // Auto makeup gain (on = 1)
COMP_PEAKRMS, // Peak/RMS select (peak = 1)
COMP_CONTOUR, // Engages Low freq rolloff on detector input
COMP_BYPASS,
COMP_SIDECHAIN,
COMP_MIX,
COMP_TYPE,
COMP_SUSTAIN, // For pedal type
COMP_BYPASSMODE,
COMP_DELAYTIME,
COMP_AUTOMODE,
COMP_EMPHASIS,
COMP_END,
};
enum
{
OUTPUT_LEVEL1,
OUTPUT_LEVEL2,
OUTPUT_LEVEL3,
OUTPUT_LEVEL4,
OUTPUT_PAN1,
OUTPUT_PAN2,
OUTPUT_PAN3,
OUTPUT_PAN4,
OUTPUT_MAIN1,
OUTPUT_MAIN2,
OUTPUT_MAIN3,
OUTPUT_MAIN4,
OUTPUT_MAIN5,
OUTPUT_MAIN6,
OUTPUT_MAIN7,
OUTPUT_MAIN8,
OUTPUT_LEVEL,
OUTPUT_PAN,
OUTPUT_BYPASSMODE,
OUTPUT_BYPASS,
OUTPUT_END,
};
enum
{
DISTORT_TYPE,
DISTORT_DRIVE,
DISTORT_BASS,
DISTORT_MID,
DISTORT_TREBLE,
DISTORT_MASTER,
DISTORT_HPFREQ, // input highpass freq
DISTORT_LPFREQ, // preamp output (second waveshaper) lowpass freq
DISTORT_TONEFREQ,
DISTORT_TONESPACE,
DISTORT_BRIGHTCAP,
DISTORT_WSLPF, // first waveshaper lowpass freq
DISTORT_XFHPF,
DISTORT_XFLPF,
DISTORT_TONELOC,
DISTORT_INPUTSELECT,
DISTORT_DEPTH,
DISTORT_OFFSET1,
DISTORT_CLIPTYPE2,
DISTORT_SUPPLYSAG,
DISTORT_PRESENCE,
DISTORT_LEVEL,
DISTORT_PAN,
DISTORT_BYPASSMODE,
DISTORT_BETA,
DISTORT_PRESFREQ,
DISTORT_SPKRFREQ,
DISTORT_SPKRGAIN,
DISTORT_BYPASS,
DISTORT_DEPTHFREQ,
DISTORT_HARDNESS1, // triode knee hardness
DISTORT_MVCAP,
DISTORT_WSHPF, // First waveshaper output highpass freq
DISTORT_STABILIZER, // When true bypass grid cap to increase phase margin
DISTORT_TONETYPE, // When true use vintage tone-stack
DISTORT_TIMECONST, // power supply time constant
DISTORT_BIAS, // power amp bias: 0 = Class B, 1 = Class A
DISTORT_FBTYPE,
DISTORT_SPKRGAIN2, // speaker hf response pole freq multiplier 0.2 - 2 (log)
DISTORT_BRIGHT, // bright switch
DISTORT_BOOST, // boost switch
DISTORT_SPKRQ,
DISTORT_OFFSET2,
DISTORT_SPKRHFREQ,
DISTORT_SPKRHGAIN,
DISTORT_SPKRHQ,
DISTORT_XDRIVE,
DISTORT_TRIM,
DISTORT_HARDNESS2, // triode knee hardness
DISTORT_MVPOSITION,
DISTORT_SPKRDRIVE,
DISTORT_GAINDIST, // power amp gain distribution
DISTORT_SCREENFREQ,
DISTORT_SCREENQ,
DISTORT_SATSWITCH,
DISTORT_EQ1,
DISTORT_EQ2,
DISTORT_EQ3,
DISTORT_EQ4,
DISTORT_EQ5,
DISTORT_EQ6,
DISTORT_EQ7,
DISTORT_EQ8,
DISTORT_BIASEXCURSION,
DISTORT_EXCURSIONTIME,
DISTORT_RECOVERYTIME,
DISTORT_FEEDFWDFREQ2, // triode2 feedforward filter freq
DISTORT_FEEDFWDFREQ1, // triode1 feedforward filter freq
DISTORT_TUBETYPE, // power tube type, 0 = tetrode, 1 = pentode
DISTORT_VOICING,
DISTORT_PALPFREQ,
DISTORT_PAHPFREQ,
// DISTORT_SPKRMFREQ, // mid-frequency resonance
// DISTORT_SPKRMQ,
DISTORT_HMFREQ, // homomorphic filters center freq
DISTORT_HMRATIO, // homomorphic filters ratio of pole/zero
DISTORT_SPKRMGAIN,
DISTORT_DYNAMICS, // dynamics processing in power amp
DISTORT_DYNTIME, // time constant of follower filter
DISTORT_MVTRIM,
DISTORT_FAT,
DISTORT_DEFINITION,
DISTORT_PREDYNAMICS, // dynamics processing in preamp
DISTORT_PREDYNTIME, // time constant of follower filter
DISTORT_USEMATCHING,
DISTORT_PICKATTACK,
DISTORT_DYNPRES,
DISTORT_DYNDEPTH,
DISTORT_SUPPLYTYPE, // select AC or DC power supply
DISTORY_LINEFREQ, // power supply frequency
DISTORT_THUNK,
DISTORT_TREMFREQ,
DISTORT_TREMDEPTH,
#ifdef DEBUG_MODE
DISTORT_SPARE1,
DISTORT_SPARE2,
DISTORT_NSPARE1,
DISTORT_NSPARE2,
#endif
// DISTORT_TRIM2,
// DISTORT_WSHPF_RATIO, // ratio of max freq to min freq between triodes
// DISTORT_CLIP1, // first triode clip value
// DISTORT_CLIP2, // second triode clip value
// DISTORT_FDBKGAIN, // power amp positive feedback
// DISTORT_FDBKFREQ, // positive feedback center freq
// DISTORT_FDBKQ,
// DISTORT_CLIPTYPE1,
DISTORT_END,
};
enum
{
FILTER_TYPE,
FILTER_FREQ,
FILTER_Q,
FILTER_GAIN,
FILTER_LEVEL,
FILTER_BAL,
FILTER_BYPASSMODE,
FILTER_ORDER,
FILTER_BYPASS,
FILTER_PANL,
FILTER_PANR,
FILTER_PHASE,
FILTER_LOWCUT,
FILTER_HICUT,
FILTER_END,
};
enum
{
REVERB_TYPE,
REVERB_TIME,
REVERB_HICUT,
REVERB_HFRATIO,
REVERB_DIFFUSION, // Amount of global feedback on comb filters
REVERB_SIZE,
REVERB_REVERBDELAY, // additional delay for reverb tail
REVERB_EARLYLEVEL,
REVERB_REVERBLEVEL,
REVERB_PREDELAY,
REVERB_LOWCUT,
REVERB_DEPTH, // modulation depth
REVERB_RATE, // modulation freq
REVERB_MIX,
REVERB_LEVEL,
REVERB_PAN,
REVERB_BYPASSMODE,
REVERB_GLOBALMIX,
REVERB_GAIN,
REVERB_DENSITY,
REVERB_INPDIFF, // Input to comb filters diffusion mix level
REVERB_INDIFFTIME, // Diffuser time
REVERB_BYPASS,
REVERB_NUMSPRINGS,
REVERB_TONE, // for spring mode
REVERB_WIDTH,
REVERB_FREQ1,
REVERB_FREQ2,
REVERB_Q1,
REVERB_Q2,
REVERB_GAIN1,
REVERB_GAIN2,
REVERB_DRIVE,
REVERB_LFTIME,
REVERB_LFXOVER,
REVERB_END,
};
enum
{
DELAY_MODEL,
DELAY_TYPE,
DELAY_TIME,
DELAY_RATIO,
DELAY_FEED,
DELAY_FEEDL,
DELAY_FEEDR,
DELAY_DELAYPAN,
DELAY_SPREAD,
DELAY_TEMPO,
DELAY_LOCUT,
DELAY_HICUT,
DELAY_RATE1,
DELAY_RATE2,
DELAY_DEPTH1,
DELAY_DEPTH2,
DELAY_DRIVE,
DELAY_MIX,
DELAY_LEVEL,
DELAY_PAN,
DELAY_BYPASSMODE,
DELAY_GLOBALMIX,
DELAY_BYPASS,
DELAY_GAIN, // Input gain
DELAY_LFO1TYPE,
DELAY_LFO2TYPE,
DELAY_TIMER, // For dual mode
DELAY_HOLD,
DELAY_MSTRFDBK, // For stereo and dual modes
DELAY_TEMPOR,
DELAY_FEEDLR,
DELAY_FEEDRL,
DELAY_LEVELL,
DELAY_LEVELR,
DELAY_PANL,
DELAY_PANR,
DELAY_LFO1PHASE,
DELAY_LFO2PHASE,
DELAY_SPLICETIME,
DELAY_RUN,
DELAY_MODE, // trig restart
DELAY_FILTORDER, // filter order
DELAY_ATTEN,
DELAY_THRESH,
DELAY_RELEASE,
DELAY_DIFFUSE,
DELAY_DIFFTIME,
DELAY_PHASEREV,
DELAY_LFO1TARGET,
DELAY_LFO2TARGET,
DELAY_LFO1TEMPO,
DELAY_LFO2TEMPO,
DELAY_RATE3,
DELAY_LFO3TYPE,
DELAY_LFO3PHASE,
DELAY_LFO3TEMPO,
DELAY_FSTART,
DELAY_FSTOP,
DELAY_Q, // sweep delay filter Q
DELAY_FILTERQ, // filters Q
DELAY_BITREDUCE,
DELAY_FREQ1,
DELAY_FREQ2,
DELAY_Q1,
DELAY_Q2,
DELAY_GAIN1,
DELAY_GAIN2,
DELAY_MAXDEPTH,
DELAY_SPEED,
DELAY_OFFSET,
DELAY_END,
};
enum
{
LOOPER_MIX,
LOOPER_LEVEL,
LOOPER_PAN,
LOOPER_BYPASSMODE,
LOOPER_BYPASS,
LOOPER_OVERDUBMIX,
LOOPER_THRESH,
LOOPER_THRESHLEV,
LOOPER_MODE,
LOOPER_QUANTIZE,
LOOPER_STOP,
LOOPER_START,
LOOPER_PLAYIMMEDIATE,
LOOPER_END,
LOOPER_RECORD, // control parameters, not stored with preset
LOOPER_PLAY,
LOOPER_ONCE,
LOOPER_DUB,
LOOPER_UNDO,
LOOPER_REVERSE,
LOOPER_HALFSPEED,
LOOPER_END2,
};
enum
{
ENHANCER_WIDTH,
ENHANCER_DEPTH,
ENHANCER_LOWCUT,
ENHANCER_HICUT,
ENHANCER_LEVEL,
ENHANCER_BYPASS,
ENHANCER_TYPE,
ENHANCER_PHASE,
ENHANCER_PANL,
ENHANCER_PANR,
ENHANCER_PAN,
ENHANCER_END,
};
enum
{
MULTITAP_TIME1,
MULTITAP_TIME2,
MULTITAP_TIME3,
MULTITAP_TIME4,
MULTITAP_TEMPO1,
MULTITAP_TEMPO2,
MULTITAP_TEMPO3,
MULTITAP_TEMPO4,
MULTITAP_LEVEL1,
MULTITAP_LEVEL2,
MULTITAP_LEVEL3,
MULTITAP_LEVEL4,
MULTITAP_FEEDBACK1,
MULTITAP_FEEDBACK2,
MULTITAP_FEEDBACK3,
MULTITAP_FEEDBACK4,
MULTITAP_PAN1,
MULTITAP_PAN2,
MULTITAP_PAN3,
MULTITAP_PAN4,
MULTITAP_RATE1, // LFO rates
MULTITAP_RATE2,
MULTITAP_RATE3,
MULTITAP_RATE4,
MULTITAP_LFOTEMPO1, // LFO tempos
MULTITAP_LFOTEMPO2,
MULTITAP_LFOTEMPO3,
MULTITAP_LFOTEMPO4,
MULTITAP_MIX,
MULTITAP_LEVEL,
MULTITAP_PAN,
MULTITAP_BYPASSMODE,
MULTITAP_GLOBALMIX,
MULTITAP_INGAIN,
MULTITAP_BYPASS,
MULTITAP_TYPE,
MULTITAP_DECAY, // t60 for plex mode
MULTITAP_DIFFUSION, // feedback amount for plex types
MULTITAP_DIFFMIX, // For diffuser (not the same as MULTITAP_DIFFUSION)
MULTITAP_DIFFTIME,
MULTITAP_THRESH, // ducker threshold
MULTITAP_SPLICE, // Splice time for detuners
MULTITAP_MSTRTIME, // Scales all delay times
MULTITAP_MSTRLVL, // Master echo level
MULTITAP_MSTRPAN, // Master echo pan
MULTITAP_MSTRFREQ, // Master freq
MULTITAP_MSTRQ, // Master q
MULTITAP_MSTRFDBK,
MULTITAP_MSTRPITCH, // Scales all shifts for shifters
MULTITAP_MSTRDTN, // Master detune, scales all detune values
MULTITAP_DETUNE1,
MULTITAP_DETUNE2,
MULTITAP_DETUNE3,
MULTITAP_DETUNE4,
MULTITAP_SHIFT1,
MULTITAP_SHIFT2,
MULTITAP_SHIFT3,
MULTITAP_SHIFT4,
MULTITAP_FREQ1, // For banddelays, set f0 of filters
MULTITAP_FREQ2,
MULTITAP_FREQ3,
MULTITAP_FREQ4,
MULTITAP_Q1, // Sets Q for banddelay filters
MULTITAP_Q2,
MULTITAP_Q3,
MULTITAP_Q4,
MULTITAP_MSTRRATE, // Master LFO rate
MULTITAP_ATTEN, // ducker attenuation
MULTITAP_MSTRDEPTH, // Master LFO depth
MULTITAP_DIRECTION, // For shifter
MULTITAP_SPEED,
MULTITAP_DEPTH1, // LFO depths
MULTITAP_DEPTH2,
MULTITAP_DEPTH3,
MULTITAP_DEPTH4,
MULTITAP_LFOLOCK, // locks all lfo's to lfo1
MULTITAP_FBKSEND, // feedback send point for quad-series delay
MULTITAP_FBKRET, // feedback return point
MULTITAP_STEREO, // mono / stereo
MULTITAP_TIMEM, // time between taps in straight mode
MULTITAP_SUBDIV, // basic subdivision (1/8th note, 1/4 note, etc)
MULTITAP_QUANTIZE, // quantize tap times to subdivision
MULTITAP_RDECAY, // tap decay in straight mode
MULTITAP_DECAYSTYLE, // rhythm mode decay style, normal or stepped pattern
MULTITAP_NUMTAPS, // number of taps
MULTITAP_SHUFFLE, // add shuffle feel to repeats, every other repeat offset by this amount
MULTITAP_RTEMPO,
MULTITAP_SPREAD, // controls spread in stereo mode
MULTITAP_PANSHAPE, // controls pan shape in mono mode
MULTITAP_PANALPHA,
MULTITAP_LOWCUT,
MULTITAP_HIGHCUT,
MULTITAP_OFFSET,
MULTITAP_FEEDBACK,
MULTITAP_TIME1M,
MULTITAP_TIME2M,
MULTITAP_TIME3M,
MULTITAP_TIME4M,
MULTITAP_TIME5M,
MULTITAP_TIME6M,
MULTITAP_TIME7M,
MULTITAP_TIME8M,
MULTITAP_TIME9M,
MULTITAP_TIME10M,
MULTITAP_RLEVEL1,
MULTITAP_RLEVEL2,
MULTITAP_RLEVEL3,
MULTITAP_RLEVEL4,
MULTITAP_RLEVEL5,
MULTITAP_RLEVEL6,
MULTITAP_RLEVEL7,
MULTITAP_RLEVEL8,
MULTITAP_RLEVEL9,
MULTITAP_RLEVEL10,
MULTITAP_REFTEMPO, // Tempo that was set during tap entry
MULTITAP_TRACKTEMPO, // If true taps track tempo when quantize is true
MULTITAP_RELEASE, // ducker release time
MULTITAP_END,
};
enum
{
CHORUS_TYPE,
CHORUS_VOICES,
CHORUS_RATE,
CHORUS_TEMPO,
CHORUS_DEPTH,
CHORUS_HICUT,
CHORUS_DELAYTIME,
CHORUS_LFOPHASE,
CHORUS_LFOTYPE,
CHORUS_AUTO,
CHORUS_MIX,
CHORUS_LEVEL,
CHORUS_PAN,
CHORUS_BYPASSMODE,
CHORUS_GLOBALMIX,
CHORUS_BYPASS,
CHORUS_PHASEREV,
CHORUS_WIDTH,
CHORUS_LF02RATE,
CHORUS_LFO2DEPTH,
CHORUS_DRIVE,
CHORUS_LOWCUT,
CHORUS_SPREAD,
CHORUS_END,
};
enum
{
FLANGER_TYPE,
FLANGER_RATE,
FLANGER_TEMPO,
FLANGER_DEPTH,
FLANGER_FEEDBACK,
FLANGER_DELAYTIME,
FLANGER_MANUAL,
FLANGER_LFOPHASE,
FLANGER_LFOTYPE,
FLANGER_LFOFILTER,
FLANGER_AUTO,
FLANGER_MIX,
FLANGER_LEVEL,
FLANGER_PAN,
FLANGER_BYPASSMODE,
FLANGER_GLOBALMIX,
FLANGER_BYPASS,
FLANGER_PHASEREV,
FLANGER_THRUZERO,
FLANGER_HICUT,
FLANGER_DRIVE,
FLANGER_LOWCUT,
FLANGER_SPREAD,
FLANGER_END,
};
enum
{
FORMANT_FSTART,
FORMANT_FMID,
FORMANT_FEND,
FORMANT_Q,
FORMANT_CTRL,
FORMANT_MIX,
FORMANT_LEVEL,
FORMANT_PAN,
FORMANT_BYPASSMODE,
FORMANT_GLOBALMIX,
FORMANT_SPARE,
FORMANT_BYPASS,
FORMANT_END,
};
enum
{
GEQ_GAIN1,
GEQ_GAIN2,
GEQ_GAIN3,
GEQ_GAIN4,
GEQ_GAIN5,
GEQ_GAIN6,
GEQ_GAIN7,
GEQ_GAIN8,
GEQ_GAIN9,
GEQ_GAIN10,
GEQ_MIX,
GEQ_LEVEL,
GEQ_PAN,
GEQ_BYPASSMODE,
GEQ_GLOBALMIX,
GEQ_SPARE1,
GEQ_SPARE2,
GEQ_SPARE3,
GEQ_BYPASS,
GEQ_END,
};
enum
{
PEQ_FREQ1,
PEQ_FREQ2,
PEQ_FREQ3,
PEQ_FREQ4,
PEQ_FREQ5,
PEQ_Q1,
PEQ_Q2,
PEQ_Q3,
PEQ_Q4,
PEQ_Q5,
PEQ_GAIN1,
PEQ_GAIN2,
PEQ_GAIN3,
PEQ_GAIN4,
PEQ_GAIN5,
PEQ_LFTYPE,
PEQ_HFTYPE,
PEQ_SPARE3,
PEQ_MIX,
PEQ_LEVEL,
PEQ_PAN,
PEQ_BYPASSMODE,
PEQ_GLOBALMIX,
PEQ_BYPASS,
PEQ_END,
};
enum
{
PHASER_TYPE,
PHASER_ORDER,
PHASER_RATE,
PHASER_LFOTYPE,
PHASER_TEMPO,
PHASER_DEPTH,
PHASER_FEEDBACK,
PHASER_FSTART,
PHASER_FSPAN,
PHASER_LFOPHASE,
PHASER_BIAS,
PHASER_MIX,
PHASER_LEVEL,
PHASER_PAN,
PHASER_BYPASSMODE,
PHASER_GLOBALMIX,
PHASER_BYPASS,
PHASER_MODE, // selects phaser or vibe mode
PHASER_FBTAP, // where to feedback to (0, 1)
PHASER_TONE,
PHASER_END,
};
enum
{
NOISEGATE_THRESH,
NOISEGATE_RATIO,
NOISEGATE_RELEASE,
NOISEGATE_ATTACK,
NOISEGATE_Z, // Match-Z is done in noisegate block
NOISEGATE_END,
};
enum
{
PITCH_TYPE,
PITCH_PITCHMODE, // Whammy mode, 1 = down, 0 = up
PITCH_CTRL,
PITCH_UCTRL,
PITCH_HARM1,
PITCH_HARM2,
PITCH_KEY,
PITCH_SCALE,
PITCH_MODE,
PITCH_DETUNE1,
PITCH_DETUNE2,
PITCH_SHIFT1,
PITCH_SHIFT2,
PITCH_LEVEL1,
PITCH_LEVEL2,
PITCH_PAN1,
PITCH_PAN2,
PITCH_DELAY1,
PITCH_DELAY2,
PITCH_FEEDBACK1,
PITCH_FEEDBACK2,
PITCH_TRACKMODE, // select between algorithms
PITCH_TRACKING, // delay length for fixed
PITCH_MIX,
PITCH_LEVEL,
PITCH_PAN,
PITCH_BYPASSMODE,
PITCH_GLOBALMIX,
PITCH_GAIN,
PITCH_BYPASS,
PITCH_XFADE,
PITCH_SPLICE1, // splice length in seconds
PITCH_SPLICE2,
PITCH_DTEMPO1, // delay time tempo
PITCH_DTEMPO2,
PITCH_STEMPO1, // splice time tempo
PITCH_STEMPO2,
PITCH_FBTYPE, // feedback type, dual, both, cross
PITCH_DIRECTION, // pointer read direction
PITCH_LPFREQ,
PITCH_GLIDE, // glide time between harmonies
PITCH_MDELAY, // Masters
PITCH_MFDBK,
PITCH_MPAN,
PITCH_MLEVEL,
PITCH_CUSTOMNOTES, // number of notes in custom scale
PITCH_NOTE2,
PITCH_NOTE3,
PITCH_NOTE4,
PITCH_NOTE5,
PITCH_NOTE6,
PITCH_NOTE7,
PITCH_NOTE8,
PITCH_CUSTOMSCALE1, // For custom shifter which scale for voice1
PITCH_CUSTOMSCALE2, // For custom shifter which scale for voice2
PITCH_NUMSTEPS,
PITCH_NUMREPEATS,
PITCH_ARPRUN, // When true arpeggiator runs, when false resets
PITCH_TEMPO,
PITCH_STEP1, // Arpeggiator stuff
PITCH_STEP2,
PITCH_STEP3,
PITCH_STEP4,
PITCH_STEP5,
PITCH_STEP6,
PITCH_STEP7,
PITCH_STEP8,
PITCH_STEP9,
PITCH_STEP10,
PITCH_STEP11,
PITCH_STEP12,
PITCH_STEP13,
PITCH_STEP14,
PITCH_STEP15,
PITCH_STEP16,
PITCH_AMPSHAPE,
PITCH_AMPALPHA,
PITCH_PANSHAPE,
PITCH_PANALPHA,
PITCH_TIME1, // Delay times in detune mode
PITCH_TIME2,
PITCH_SOURCE, // pitch source, 0 = global, 1 = local
PITCH_INMODE, // 0 = mono, 1 = stereo
PITCH_LEARN,
PITCH_HPFREQ,
PITCH_END,
};
enum
{
ROTARY_RATE,
ROTARY_LFDEPTH,
ROTARY_HFDEPTH,
ROTARY_HFLEVEL,
ROTARY_TEMPO,
ROTARY_MIX,
ROTARY_LEVEL,
ROTARY_PAN,
ROTARY_BYPASSMODE,
ROTARY_GLOBALMIX,
ROTARY_HFLENGTH,
ROTARY_BYPASS,
ROTARY_WIDTH,
ROTARY_LOWRATE, // relative to rate
ROTARY_LOWTIME, // time constants
ROTARY_HIGHTIME,
ROTARY_LFWIDTH,
ROTARY_DRIVE,
ROTARY_END,
};
enum
{
TREMOLO_TYPE,
TREMOLO_LFOTYPE,
TREMOLO_RATE,
TREMOLO_DEPTH,
TREMOLO_DUTY,
TREMOLO_TEMPO,
TREMOLO_MIX,
TREMOLO_LEVEL,
TREMOLO_PAN,
TREMOLO_BYPASSMODE,
TREMOLO_GLOBALMIX,
TREMOLO_PHASE,
TREMOLO_WIDTH,
TREMOLO_CENTER,
TREMOLO_BYPASS,
TREMOLO_END,
};
enum
{
WAH_TYPE,
WAH_FSTART,
WAH_FSTOP,
WAH_Q,
WAH_TRACK,
WAH_CONTROL,
WAH_LEVEL,
WAH_PAN,
WAH_BYPASSMODE,
WAH_MIX, // "clean" mix
WAH_DRIVE,
WAH_TAPER,
WAH_BYPASS,
WAH_END,
WAH_HPF,
WAH_LPF,
WAH_END2,
};
enum
{
FUZZ_TYPE,
FUZZ_DRIVE,
FUZZ_TONE,
FUZZ_LEVEL,
FUZZ_MIX,
FUZZ_BYPASSMODE,
FUZZ_SLEW,
FUZZ_BYPASS,
FUZZ_LOCUT,
FUZZ_HICUT,
FUZZ_CLIPTYPE,
FUZZ_BIAS,
FUZZ_BASS,
FUZZ_MID,
FUZZ_MIDFREQ,
FUZZ_TREBLE,
FUZZ_BITREDUCE,
FUZZ_INPUTSELECT,
FUZZ_PAN,
FUZZ_RESAMPLE,
FUZZ_END,
};
enum
{
MIXER_GAIN1,
MIXER_GAIN2,
MIXER_GAIN3,
MIXER_GAIN4,
MIXER_PAN1,
MIXER_PAN2,
MIXER_PAN3,
MIXER_PAN4,
MIXER_MASTER,
MIXER_MODE,
MIXER_END,
};
enum
{
FDBKSEND_SENDLEVEL,
FDBKSEND_OUTLEVEL,
FDBKSEND_END,
};
enum
{
FDBKRET_MIX,
FDBKRET_LEVEL,
FDBKRET_PAN,
FDBKRET_BYPASSMODE,
FDBKRET_GLOBALMIX, // Not used
FDBKRET_BYPASS,
FDBKRET_END,
};
enum
{
SYNTH_TYPE1,
SYNTH_FREQ1,
SYNTH_TRACK1, // 1 = on = track input freq
SYNTH_SHIFT1, // Pitch shift amount in semi-tones
SYNTH_DETUNE1,
SYNTH_DUTY1,
SYNTH_LEVEL1,
SYNTH_PAN1,
SYNTH_ATTACK1,
SYNTH_HICUT1,
SYNTH_Q1,
SYNTH_TYPE2,
SYNTH_FREQ2,
SYNTH_TRACK2,
SYNTH_SHIFT2,
SYNTH_DETUNE2,
SYNTH_DUTY2,
SYNTH_LEVEL2,
SYNTH_PAN2,
SYNTH_ATTACK2,
SYNTH_HICUT2,
SYNTH_Q2,
SYNTH_SPARE1,
SYNTH_MIX,
SYNTH_LEVEL,
SYNTH_PAN,
SYNTH_BYPASSMODE,
SYNTH_GLOBALMIX,
SYNTH_BYPASS,
SYNTH_TYPE3,
SYNTH_FREQ3,
SYNTH_TRACK3,
SYNTH_SHIFT3,
SYNTH_DETUNE3,
SYNTH_DUTY3,
SYNTH_LEVEL3,
SYNTH_PAN3,
SYNTH_ATTACK3,
SYNTH_HICUT3,
SYNTH_Q3,
SYNTH_END,
};
enum
{
VOCODER_INSOURCE, // Selects L/R as carrier channel
VOCODER_NUMBANDS,
VOCODER_FREQSTART, // frequency of lowest filter
VOCODER_FREQSTOP, // frequency of highest filter
VOCODER_CSHIFT, // shifts freqs of carrier (synthesis) filters
VOCODER_FREEZE,
VOCODER_MASTERLVL,
VOCODER_MASTERPAN,
VOCODER_RES, // Increases or decreases Q of synthesis filters from optimum value
VOCODER_ATTACK,
VOCODER_RELEASE,
VOCODER_HPMIX,
VOCODER_MIX,
VOCODER_LEVEL,
VOCODER_PAN,
VOCODER_BYPASSMODE,
VOCODER_GLOBALMIX,
VOCODER_LEVEL1,
VOCODER_LEVEL2,
VOCODER_LEVEL3,
VOCODER_LEVEL4,
VOCODER_LEVEL5,
VOCODER_LEVEL6,
VOCODER_LEVEL7,
VOCODER_LEVEL8,
VOCODER_LEVEL9,
VOCODER_LEVEL10,
VOCODER_LEVEL11,
VOCODER_LEVEL12,
VOCODER_LEVEL13,
VOCODER_LEVEL14,
VOCODER_LEVEL15,
VOCODER_LEVEL16,
VOCODER_PAN1,
VOCODER_PAN2,
VOCODER_PAN3,
VOCODER_PAN4,
VOCODER_PAN5,
VOCODER_PAN6,
VOCODER_PAN7,
VOCODER_PAN8,
VOCODER_PAN9,
VOCODER_PAN10,
VOCODER_PAN11,
VOCODER_PAN12,
VOCODER_PAN13,
VOCODER_PAN14,
VOCODER_PAN15,
VOCODER_PAN16,
VOCODER_BYPASS,
VOCODER_END,
};
enum
{
MEGATAP_INGAIN,
MEGATAP_MASTERLVL,
MEGATAP_TIME,
MEGATAP_NUMTAPS,
MEGATAP_TIMESHAPE,
MEGATAP_TIMEALPHA,
MEGATAP_AMPSHAPE,
MEGATAP_AMPALPHA,
MEGATAP_PANSHAPE,
MEGATAP_PANALPHA,
MEGATAP_RANDOM,
MEGATAP_MIX,
MEGATAP_LEVEL,
MEGATAP_PAN,
MEGATAP_BYPASSMODE,
MEGATAP_GLOBALMIX,
MEGATAP_BYPASS,
MEGATAP_END,
};
enum
{
CROSSOVER_FREQ,
CROSSOVER_FREQRANGE,
CROSSOVER_LOWGAINL,
CROSSOVER_HIGAINL,
CROSSOVER_LOWGAINR,
CROSSOVER_HIGAINR,
CROSSOVER_LOWPANL,
CROSSOVER_HIPANL,
CROSSOVER_LOWPANR,
CROSSOVER_HIPANR,
CROSSOVER_MIX,
CROSSOVER_LEVEL,
CROSSOVER_PAN,
CROSSOVER_BYPASSMODE,
CROSSOVER_BYPASS,
CROSSOVER_END,
};
enum
{
GATE_THRESH,
GATE_ATTACK,
GATE_HOLD,
GATE_RELEASE,
GATE_RATIO,
GATE_KEY,
GATE_LOWCUT,
GATE_HICUT,
GATE_MIX,
GATE_LEVEL,
GATE_PAN,
GATE_BYPASSMODE,
GATE_BYPASS,
GATE_END,
};
enum
{
RINGMOD_COARSE,
RINGMOD_FINE,
RINGMOD_TRACK,
RINGMOD_HICUT,
RINGMOD_MIX,
RINGMOD_LEVEL,
RINGMOD_PAN,
RINGMOD_BYPASSMODE,
RINGMOD_GLOBALMIX,
RINGMOD_BYPASS,
RINGMOD_END,
};
enum
{
MULTICOMP_FREQ1,
MULTICOMP_FREQ2,
MULTICOMP_THRESH1,
MULTICOMP_RATIO1,
MULTICOMP_ATTACK1,
MULTICOMP_RELEASE1,
MULTICOMP_LEVEL1,
MULTICOMP_DETECT1, // peak or rms
MULTICOMP_MUTE1, // Normal, solo, mute
MULTICOMP_THRESH2,
MULTICOMP_RATIO2,
MULTICOMP_ATTACK2,
MULTICOMP_RELEASE2,
MULTICOMP_LEVEL2,
MULTICOMP_DETECT2,
MULTICOMP_MUTE2,
MULTICOMP_THRESH3,
MULTICOMP_RATIO3,
MULTICOMP_ATTACK3,
MULTICOMP_RELEASE3,
MULTICOMP_LEVEL3,
MULTICOMP_DETECT3,
MULTICOMP_MUTE3,
MULTICOMP_MIX,
MULTICOMP_LEVEL,
MULTICOMP_PAN,
MULTICOMP_BYPASSMODE,
MULTICOMP_BYPASS,
MULTICOMP_END,
};
enum
{
QUADCHO_MASTERTIME,
QUADCHO_MASTERLVL,
QUADCHO_MASTERPAN,
QUADCHO_MASTERRATE,
QUADCHO_MASTERDEPTH,
QUADCHO_MASTERFDBK,
QUADCHO_TIME1, // pre-delay times
QUADCHO_TIME2,
QUADCHO_TIME3,
QUADCHO_TIME4,
QUADCHO_LEVEL1,
QUADCHO_LEVEL2,
QUADCHO_LEVEL3,
QUADCHO_LEVEL4,
QUADCHO_PAN1,
QUADCHO_PAN2,
QUADCHO_PAN3,
QUADCHO_PAN4,
QUADCHO_DEPTH1,
QUADCHO_DEPTH2,
QUADCHO_DEPTH3,
QUADCHO_DEPTH4,
QUADCHO_MORPH1, // morphs between the four lfo's for each delay line
QUADCHO_MORPH2,
QUADCHO_MORPH3,
QUADCHO_MORPH4,
QUADCHO_TYPE1, // LFO types
QUADCHO_TYPE2,
QUADCHO_TYPE3,
QUADCHO_TYPE4,
QUADCHO_RATE1, // LFO rate multipliers
QUADCHO_RATE2,
QUADCHO_RATE3,
QUADCHO_RATE4,
QUADCHO_MDEPTH, // Depth of main LFO (LFO 4)
QUADCHO_MODE,
QUADCHO_LFOLOCK, // Lock lfo's 2 and 3 to 1
QUADCHO_WIDE,
QUADCHO_PHASE, // Phase difference for main LFO
QUADCHO_MIX,
QUADCHO_LEVEL,
QUADCHO_PAN,
QUADCHO_BYPASSMODE,
QUADCHO_GLOBALMIX,
QUADCHO_BYPASS,
QUADCHO_HICUT,
QUADCHO_END,
};
enum
{
RESONATOR_MODE,
RESONATOR_CHORD,
RESONATOR_INGAIN,
RESONATOR_FREQ, // Frequency for chord mode
RESONATOR_MASTERFREQ,
RESONATOR_MASTERLVL,
RESONATOR_MASTERPAN,
RESONATOR_MASTERFDBK,
RESONATOR_MASTERQ,
RESONATOR_FREQ1,
RESONATOR_FREQ2,
RESONATOR_FREQ3,
RESONATOR_FREQ4,
RESONATOR_FDBK1,
RESONATOR_FDBK2,
RESONATOR_FDBK3,
RESONATOR_FDBK4,
RESONATOR_LOC1,
RESONATOR_LOC2,
RESONATOR_LOC3,
RESONATOR_LOC4,
RESONATOR_Q1,
RESONATOR_Q2,
RESONATOR_Q3,
RESONATOR_Q4,
RESONATOR_LEVEL1,
RESONATOR_LEVEL2,
RESONATOR_LEVEL3,
RESONATOR_LEVEL4,
RESONATOR_PAN1,
RESONATOR_PAN2,
RESONATOR_PAN3,
RESONATOR_PAN4,
RESONATOR_MIX,
RESONATOR_LEVEL,
RESONATOR_PAN,
RESONATOR_BYPASSMODE,
RESONATOR_GLOBALMIX,
RESONATOR_BYPASS,
RESONATOR_INPUTMODE,
RESONATOR_END,
};
enum
{
VOLUME_GAIN,
VOLUME_BAL,
VOLUME_TAPER,
VOLUME_BYPASS,
VOLUME_PANL,
VOLUME_PANR,
VOLUME_LEVEL,
VOLUME_BYPASSMODE,
VOLUME_INPUTSELECT,
VOLUME_END,
};
enum
{
B_SKIP, // don't call setParam()
B_INT,
B_INTXL, // accelerate
B_LIN,
B_LOG,
B_LOGLOG,
B_MIX,
B_LEVEL,
B_PAN,
B_BYP1,
B_BYP2,
B_BYP3,
B_GMIX,
B_DUMMY, // don't call setParam() but report range to editor
};
enum
{
B_NONE,
B_DB,
B_HZ,
B_SEC,
B_MSEC,
B_PRC,
B_DEG,
B_CENTS,
};
typedef struct
{
int offset; // offset of member value
int type; // value type OR'd with unit type: linear, log, etc.
float lowlimit; // min value
float hilimit; // max value
float mult; // display multiplier (value * mult = displayed)
float res; // parameter resolution
char **str; // for int types points to string pointers
} PARAMINFO;
// Similar to above but for SetMember...() stuff
typedef struct
{
int offset; // offset of member value
int type; // value type OR'd with unit type: linear, log, etc.
float lowlimit; // min value
float hilimit; // max value
} MEMBERINFO;
// The data type, unit string and precision are combined into one word
// to save memory. B_xxxxx is the base value. The base value is left
// shifted in the structure.
#define SKIP (B_SKIP << 4)
#define INT (B_INT << 4)
#define INTXL (B_INTXL << 4)
#define LIN (B_LIN << 4)
#define LOG (B_LOG << 4)
#define LOGLOG (B_LOGLOG << 4)
#define MIX (B_MIX << 4)
#define LEVEL (B_LEVEL << 4)
#define PAN (B_PAN << 4)
#define BYP1 (B_BYP1 << 4)
#define BYP2 (B_BYP2 << 4)
#define BYP3 (B_BYP3 << 4)
#define GMIX (B_GMIX << 4)
#define DUMMY (B_DUMMY << 4)
#define NONE (B_NONE << 8)
#define DB (B_DB << 8)
#define HZ (B_HZ << 8)
#define SEC (B_SEC << 8)
#define MSEC (B_MSEC << 8)
#define PRC (B_PRC << 8)
#define DEG (B_DEG << 8)
#define CENTS (B_CENTS << 8)