|
|
(154 intermediate revisions by 7 users not shown) |
Line 1: |
Line 1: |
− | ''The information on this page supplements the official manuals.''
| |
| __TOC__ | | __TOC__ |
| + | =System Exclusive messages= |
| | | |
− | [[image:MIDI.png|link=]]
| + | If you're a MIDI expert, you can use SysEx messages (MIDI System Exclusive) to control Fractal Audio devices. |
| | | |
− | =MIDI SysEx: System Exclusive messages=
| + | [http://electronicmusic.wikia.com/wiki/System_exclusive Learn more about SysEx] |
− | * If you're a MIDI expert, you can use SysEx messages (MIDI System Exclusive) to control the Axe-Fx II.
| |
− | * To learn more about MIDI, [http://en.wikipedia.org/wiki/MIDI read this article].
| |
− | * To learn more about SysEx, [http://electronicmusic.wikia.com/wiki/System_exclusive read this article].
| |
| | | |
− | =MIDI SysEx: Standard/Ultra=
| + | [http://forum.fractalaudio.com/threads/sysex-0x02-midi_get_parameter.123480/ Discussion about Fractal Audio's SysEx implementation] |
− | * Ultra-specific SysEx information has been accurately acquired and organized by forum member GM Arts: [http://www.gmarts.org/html/axefx_ultra_sysex_1005.html here].
| |
− | * Information about SysEx commands for retrieving Preset/Effect bypass states is [http://forum.fractalaudio.com/other-midi-controllers/39161-using-sysex-recall-present-effect-bypass-status-info-available.html here].
| |
| | | |
− | =MIDI SysEx: SysEx Model number per device=
| + | Firmware Ares and later provides MIDI support for 3rd-party devices to set and/or get scene, channel, bypass, scene names, preset names, tuner data, tempo data, via System Exclusive messages. |
− | * 0x00 (0) Axe FX Standard
| |
− | * 0x01 (1) Axe FX Ultra
| |
− | * 0x02 (2) MFC101
| |
− | * 0x03 (3) Axe FX II
| |
− | * 0x04 (4) MFC101 mk3
| |
− | * 0x05 (5) FX8
| |
− | * 0x06 (6) Axe FX II XL
| |
− | * 0x07 (7) Axe FX II XL+
| |
− | * 0x08 (8) AX8
| |
| | | |
− | =MIDI SysEx: Axe-Fx II=
| + | Read this: [http://www.fractalaudio.com/downloads/misc/Axe-Fx%20III%20MIDI%20for%203rd%20Party%20Devices.pdf Axe-Fx III MIDI for Third-Party Devices] |
− | * Many Axe-Fx II SysEx messages are similar to Standard/Ultra messages documented [http://wiki.fractalaudio.com/index.php?title=Axe-Fx_SysEx_Documentation here].
| |
− | * Model ID is 3. XL+ Model ID is 7. Note, examples on this page are using 3 for the ID.
| |
− | * All messages must be sent with checksums.
| |
− | * Responses for some key messages are different. Information about SysEx commands for retrieving Preset names and Preset/Effect bypass states is [http://forum.fractalaudio.com/other-midi-controllers/44824-what-sysex-message-get_preset_name-axe2.html here].
| |
− | * All Axe-Fx II SysEx messages have the same header as follows:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model # (Axe-Fx II = 0x03, Axe-Fx II XL+ = 0x07)
| |
− | :0xdd Function ID
| |
− | </tt>
| |
| | | |
− | {| border="1" cellpadding="20" cellspacing="0" width="500"
| + | [[image:MIDI.png|link=]] |
− | |+ align="bottom" style="color:#e76700;" |''Function IDs''
| |
− | |-
| |
− | ! Function ID
| |
− | ! Function Name
| |
− | |-
| |
− | |0x02
| |
− | |[[#MIDI_GET_PARAMETER, MIDI_SET_PARAMETER|MIDI_GET_PARAMETER, MIDI_SET_PARAMETER]]
| |
− | |-
| |
− | |0x07
| |
− | |[[#MIDI_GET_MODIFIER, MIDI_SET_MODIFIER|MIDI_GET_MODIFIER, MIDI_SET_MODIFIER]]
| |
− | |-
| |
− | |0x08
| |
− | |[[#MIDI_GET_FIRMWARE_VERSION|MIDI_GET_FIRMWARE_VERSION]]
| |
− | |-
| |
− | |0x0D
| |
− | |[[#MIDI_TUNER_INFO|MIDI_TUNER_INFO]]
| |
− | |-
| |
− | |0x0E
| |
− | |[[#MIDI_GET_PRESET_EFFECT_BLOCKS_AND_CC_AND_BYPASS_STATE|MIDI_GET_PRESET_EFFECT_BLOCKS_AND_CC_AND_BYPASS_STATE]]
| |
− | |-
| |
− | |0x0F
| |
− | |[[#MIDI_GET_PRESET_NAME|MIDI_GET_PRESET_NAME]]
| |
− | |-
| |
− | |0x10
| |
− | |[[#MIDI_TEMPO_BEAT|MIDI_TEMPO_BEAT]]
| |
− | |-
| |
− | |0x14
| |
− | |[[#MIDI_GET_PRESET_NUMBER|MIDI_GET_PRESET_NUMBER]]
| |
− | |-
| |
− | |0x20
| |
− | |[[#MIDI_GET_ROUTING_GRID_LAYOUT|MIDI_GET_ROUTING_GRID_LAYOUT]]
| |
− | |-
| |
− | |0x23
| |
− | |[[#MIDI_LOOPER_STATUS_ENABLE, MIDI_LOOPER_STATUS|MIDI_LOOPER_STATUS_ENABLE, MIDI_LOOPER_STATUS]]
| |
− | |-
| |
− | |0x29
| |
− | |[[#MIDI_SET_SCENE_NUMBER|MIDI_SET_SCENE_NUMBER]]
| |
− | |-
| |
− | |0x01
| |
− | |[[#GET_BLOCK_PARAMETERS_LIST|GET_BLOCK_PARAMETERS_LIST]]
| |
− | |-
| |
− | |0x32
| |
− | |[[#BATCH_LIST_REQUEST_STARTING|BATCH_LIST_REQUEST_STARTING]]
| |
− | |-
| |
− | |0x33
| |
− | |[[#BATCH_LIST_REQUEST_COMPLETE|BATCH_LIST_REQUEST_COMPLETE]]
| |
− | |-
| |
− | |0x64
| |
− | |[[#ACTION_ACKNOWLEDGEMENT|ACTION_ACKNOWLEDGEMENT]]
| |
− | |-
| |
− | |0x21
| |
− | |[[#FRONT_PANEL_CHANGE_DETECTED|FRONT_PANEL_CHANGE_DETECTED]]
| |
− | |-
| |
− | |0x42
| |
− | |[[#DISCONNECT_FROM_APP|DISCONNECT_FROM_APP]]
| |
− | |-
| |
− | |0x11
| |
− | |[[#GET_BLOCK_XY, SET_BLOCK_XY|GET_BLOCK_XY, SET_BLOCK_XY]]
| |
− | |-
| |
− | |0x17
| |
− | |[[#GET_MIDI_CHANNEL|GET_MIDI_CHANNEL]]
| |
− | |-
| |
− | |0x13
| |
− | |[[#GET_CPU_USAGE_NUMBER|GET_CPU_USAGE_NUMBER]]
| |
− | |-
| |
− | |0x2A
| |
− | |[[#GET_PRESET_EDITED_STATUS|GET_PRESET_EDITED_STATUS]]
| |
− | |-
| |
− | |0x3C
| |
− | |[[#MIDI_SET_PRESET_NUMBER|MIDI_SET_PRESET_NUMBER]]
| |
− | |}
| |
− | | |
− | ==MIDI_GET_PARAMETER, MIDI_SET_PARAMETER==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x02 Function ID (2)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd parameter ID bits 6-0
| |
− | :0xdd parameter ID bits 13-7
| |
− | :0xdd parameter value bits 6-0
| |
− | :0xdd parameter value bits 13-7
| |
− | :0xdd parameter value bits 15-14
| |
− | :0x00 0=query value, 1=set value
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x02 Function ID (2)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd parameter ID bits 6-0
| |
− | :0xdd parameter ID bits 13-7
| |
− | :0xdd parameter value bits 6-0
| |
− | :0xdd parameter value bits 13-7
| |
− | :0xdd parameter value bits 15-14
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd null-terminated string byte0
| |
− | :0xdd byte1
| |
− | :...
| |
− | :0x00 null character
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_MODIFIER, MIDI_SET_MODIFIER==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x07 Function ID (7)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd parameter ID bits 6-0
| |
− | :0xdd parameter ID bits 13-7
| |
− | :0xdd modifier parameter selector ID bits 6-0
| |
− | :0xdd 0
| |
− | :0xdd modifier value bits 6-0
| |
− | :0xdd modifier value bits 13-7
| |
− | :0xdd modifier value bits 15-14
| |
− | :0x00 0=query value, 1=set value
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x02 Function ID (2)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd parameter ID bits 6-0
| |
− | :0xdd parameter ID bits 13-7
| |
− | :0xdd modifier parameter selector ID bits 6-0
| |
− | :0xdd 0
| |
− | :0xdd modifier value bits 6-0
| |
− | :0xdd modifier value bits 13-7
| |
− | :0xdd modifier value bits 15-14
| |
− | :0xdd null-terminated string byte0
| |
− | :0xdd byte1
| |
− | :...
| |
− | :0x00 null character
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Modifier Parameter Selector IDs:
| |
− | <tt>
| |
− | :0x0 modifier source
| |
− | :0x1 min
| |
− | :0x2 max
| |
− | :0x3 start
| |
− | :0x4 mid
| |
− | :0x5 end
| |
− | :0x6 slope
| |
− | :0x7 damping
| |
− | :0x8 ?
| |
− | :0x9 ?
| |
− | :0xA auto engage
| |
− | :0xB pc reset
| |
− | :0xC off val
| |
− | :0xD scale
| |
− | :0xE offset
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_FIRMWARE_VERSION==
| |
− | This message responds with the firmware version, also this acts as a "Greeting" message, only after the Axe FX II has received a firmware version request it will start sending message 0x21 (FRONT_PANEL_CHANGE_DETECTED), if you're writing an app or foot controller that will need to be in sync then the first thing you want to do is request the firmware version so that message 0x21 is sent when changes happen on the front panel. Keep in mind, if you do this you will need to "Disconnect" from the hardware when your app closes by sending message 0x42 (DISCONNECT_FROM_APP)
| |
− | | |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x08 Function ID (8)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x08 Function ID (8)
| |
− | :0xdd Firmware Version major number
| |
− | :0xdd Firmware Version minor number
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_TUNER_INFO==
| |
− | This message is broadcast when the Tuner enabled. Note that the Axe-FX II does not include the checksum byte in this message:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x0D Function ID (0x0D)
| |
− | :0xdd Note (0=A; 1=Bb; 2=B; etc.)
| |
− | :0xdd String number (0=high E string; 5=low E string)
| |
− | :0xdd Tuner data (value of 63 indicates 'perfectly in tune')
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_PRESET_EFFECT_BLOCKS_AND_CC_AND_BYPASS_STATE==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x0E Function ID (0x0E)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x0E Function ID (0x0E)
| |
− | :Information about each effect block in preset follows, using 5 bytes for each effect block in the preset
| |
− | :0xdd Status Bits
| |
− | ::Bit 0: 0=Bypassed, 1=Enabled
| |
− | ::Bit 1: 0=Y, 1=X
| |
− | ::Bit 2:
| |
− | ::Bit 3:
| |
− | ::Bit 4:
| |
− | ::Bit 5:
| |
− | ::Bit 6:
| |
− | :0xdd IA CC Number LSB
| |
− | ::Bit 0:
| |
− | ::Bit 1: IA_CC_Number Bit 0
| |
− | ::Bit 2: IA_CC_Number Bit 1
| |
− | ::Bit 3: IA_CC_Number Bit 2
| |
− | ::Bit 4: IA_CC_Number Bit 3
| |
− | ::Bit 5: IA_CC_Number Bit 4
| |
− | ::Bit 6: IA_CC_Number Bit 5
| |
− | :0xdd IA CC Number MSB
| |
− | ::Bit 0: IA_CC_Number Bit 6
| |
− | ::Bit 1: IA_CC_Number Bit 7
| |
− | ::Bit 2:
| |
− | ::Bit 3:
| |
− | ::Bit 4:
| |
− | ::Bit 5:
| |
− | ::Bit 6:
| |
− | :0xdd Effect ID LSB
| |
− | ::Bit 0:
| |
− | ::Bit 1:
| |
− | ::Bit 2:
| |
− | ::Bit 3: Effect_ID Bit 0
| |
− | ::Bit 4: Effect_ID Bit 1
| |
− | ::Bit 5: Effect_ID Bit 2
| |
− | ::Bit 6: Effect_ID Bit 3
| |
− | :0xdd Effect ID MSB
| |
− | ::Bit 0: Effect_ID Bit 4
| |
− | ::Bit 1: Effect_ID Bit 5
| |
− | ::Bit 2: Effect_ID Bit 6
| |
− | ::Bit 3: Effect_ID Bit 7
| |
− | ::Bit 4:
| |
− | ::Bit 5:
| |
− | ::Bit 6:
| |
− | :... (Additional 5-byte chunks, one for each block in the preset)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_PRESET_NAME==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x0F Function ID (0x0F)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x0F Function ID (0x0F)
| |
− | :0xdd null-terminated string byte0
| |
− | :0xdd byte1
| |
− | :...
| |
− | :0x00 null character
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_TEMPO_BEAT==
| |
− | Tempo beat or 'pulse' message sent by Axe-FX II. Note that the Axe-FX II does not include the checksum byte in this message:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x10 Function ID (0x10)
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_PRESET_NUMBER==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x14 Function ID (0x14)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x14 Function ID (0x14)
| |
− | :0xdd Preset Number bits 6-0
| |
− | :0xdd Preset Number bits 13-7
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_GET_ROUTING_GRID_LAYOUT==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x20 Function ID (0x20)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x20 Function ID (0x20)
| |
− | :Information about each grid location follows. The first 4-byte chunk corresponds to the top-left grid location (column 1, row 1). The next four-byte chunk corresponds to the grid location at column 1, row 2. Following this pattern, each of the 48 grid locations are described.
| |
− | ::0xdd effect ID bits 6-0
| |
− | ::0xdd effect ID bits 13-7
| |
− | ::0xdd routing flags
| |
− | :::Bit 0: connect row 1 to effect input
| |
− | :::Bit 1: connect row 2 to effect input
| |
− | :::Bit 2: connect row 3 to effect input
| |
− | :::Bit 3: connect row 4 to effect input
| |
− | :::Bit 4:
| |
− | :::Bit 5:
| |
− | :::Bit 6:
| |
− | ::0xdd (unused?)
| |
− | :... (47 additional four-byte chunks)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_LOOPER_STATUS_ENABLE, MIDI_LOOPER_STATUS==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x23 Function ID (0x23)
| |
− | :0xdd 0=Disable looper status messages, 1=Enable looper status messages
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x23 Function ID (0x23)
| |
− | :0xdd Looper Status Bits
| |
− | ::Bit 0: Record
| |
− | ::Bit 1: Play
| |
− | ::Bit 2: Once
| |
− | ::Bit 3: Overdub
| |
− | ::Bit 4: Reverse
| |
− | ::Bit 5: Half
| |
− | ::Bit 6: Undo
| |
− | :0xdd Looper Position (range: 0 to 99)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_SET_SCENE_NUMBER==
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x29 Function ID (0x29)
| |
− | :0xdd Scene Number (range: 0 to 7)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | Response format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0x03 Model #
| |
− | :0x29 Function ID (0x29)
| |
− | :0xdd Scene Number (range: 0 to 7)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_SET_PRESET==
| |
− | :Function number: 14
| |
− | :Example: F0 0 1 74 3 14 0 1 13 0 FF --> to set the current preset (edit buffer) to preset 0 (1 if DISPLAY OFFSET activated)
| |
− | :F0 0 1 74 3 14 1 0 13 0 FF --> to set the current preset (edit buffer) to preset 128 (129 if DISPLAY OFFSET activated)
| |
− | :Send from AXE-FX to AXE-EDIT and MFC-101
| |
− | | |
− | ==GET_BLOCK_PARAMETERS_LIST==
| |
− | This function will get you a list of all the parameters values of a specified block, this message responds in 3 parts
| |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x01 Function ID (0x01)
| |
− | :0xdd block ID bits 6-0
| |
− | :0xdd block ID bits 13-7
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Responses
| |
− | | |
− | Part #1, when the hardware receives this message it will respond with message 0x32 confirming that it's about to send you a numbered set of messages,
| |
− | Message format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x32 Function ID (0x32 BATCH_LIST_REQUEST_STARTING)
| |
− | :0xdd ID of function that it's replying to (in this case 0x01)
| |
− | :0xdd Response Length bits 6-0
| |
− | :0xdd Response Length bits 13-7
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Part # 2, after you receive message 0x32 you will receive a batch of messages with function ID 0x01 (the quantity of messages is determined by the "Response Length" bytes), each message represents a parameter for that block, the format of each one is identical to message 0x02 except for the Function ID.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x01 Function ID (0x01)
| |
− | :0xdd block ID bits 6-0
| |
− | :0xdd block ID bits 13-7
| |
− | :0xdd parameter ID bits 6-0
| |
− | :0xdd parameter ID bits 13-7
| |
− | :0xdd parameter value bits 6-0
| |
− | :0xdd parameter value bits 13-7
| |
− | :0xdd parameter value bits 15-14
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd
| |
− | :0xdd null-terminated string byte0
| |
− | :0xdd byte1
| |
− | ...
| |
− | :0x00 null character
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | The string bytes after the parameter value bits is the label that is displayed for the knob, as you should know by now all parameter values range from 0 to 65534, the Axe FX II and AX8 editors don't display that instead they display labels like for example for rate of a modulation "345 ms", the string on this message is that label.
| |
− | | |
− | Part # 3, once all the 0x01 messages have been sent by the hardware, you will receive another message (0x33) which confirms that all parameters available for editing where sent to you.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x33 Function ID (0x33 BATCH_LIST_REQUEST_COMPLETE)
| |
− | :0xdd ID of function that it's replying to (in this case it will be 0x02 even tho you sent function 0x01)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==BATCH_LIST_REQUEST_STARTING==
| |
− | This message is sent to you when you request a list of certain items, this includes when you request a list of parameteres of a block (GET_BLOCK_PARAMETERS_LIST) or when you request a list of factory/user cab names, you can treat this message as confirmation that those parameters are about to be sent to you. The "Response Length" below represents how many items will be sent as part of that batch.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x32 Function ID (0x32)
| |
− | :0xdd ID of function that it's replying to
| |
− | :0xdd Response Length bits 6-0
| |
− | :0xdd Response Length bits 13-7
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==BATCH_LIST_REQUEST_COMPLETE==
| |
− | This message is sent to you after a batch of messages you requested was sent to you and it's complete. For Example if you request GET_BLOCK_PARAMETERS_LIST, this message will reply confirming that the request has been complete.
| |
− | | |
− | The "ID of function that it's replying to" is the ID of the function that requested the list, in the case of GET_BLOCK_PARAMETERS_LIST which is function 0x01 it will show this byte as 0x02.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x33 Function ID (0x33)
| |
− | :0xdd ID of function that it's replying to
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==ACTION_ACKNOWLEDGEMENT==
| |
− | This message is sent by the hardware as a confirmtaion of an certain action or if the message sent to the hardware has an error. For example if you change the preset using "MIDI_SET_PRESET_NUMBER (0x3C)" the hardware will reply with this function the 6th byte will be 0x3C or the id of the function that it's replying to, the 7th byte represents if there is an error, 0 if there is no error completing that action or 1 if there's an error. A bad checksum will also trigger this message.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x64 Function ID (0x64)
| |
− | :0xdd Function being ackknowledged
| |
− | :0xdd 0 = No Error, 1 = Has Error
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==FRONT_PANEL_CHANGE_DETECTED==
| |
− | This message is sent when to notify you that something may have changed on the Hardware, this is the message that causes Axe-Edit/AX8-Edit to "Pause Communication". This message is sent to notify the editor that something has changed and that it should reload the data for that preset, hence why you get the PAUSE overlay on the editor, when you click that overlay the Editor will re-request all the preset data it needs to keep the editor in sync with the hardware.
| |
− | | |
− | For example if you select a block on the Axe FX II say the Filter block and you change the gain, then Axe FX will then send this message.
| |
− | | |
− | This message is sent about 400ms after the action was complete.
| |
− | | |
− | Another example, on the AX8 if you use the Amp Controls on the front panel to change the Gain then you will receive this message. This message is also sent if you press a footswitch that changes a scene/preset/block bypass/XY.
| |
− | | |
− | This message is only sent by the hardware if you requested the Firmware version, Read more about this on the "MIDI SysEx: MIDI_GET_FIRMWARE_VERSION" section
| |
− | | |
− | Message format:
| |
− | <tt>
| |
− | | |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x21 Function ID (0x21)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==DISCONNECT_FROM_APP==
| |
− | This message should be sent when you quit an app connected to the Hardware if your app sent the MIDI_GET_FIRMWARE_VERSION message, see the MIDI_GET_FIRMWARE_VERSION section for more info
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x42 Function ID (0x42)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==GET_BLOCK_XY, SET_BLOCK_XY==
| |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x11 Function ID (0x11)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd 0 = set to X, 1 = set to Y
| |
− | :0xdd 0 = query value, 1 = set value
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Response format:
| |
− | <tt>
| |
− | | |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x11 Function ID (0x11)
| |
− | :0xdd effect ID bits 6-0
| |
− | :0xdd effect ID bits 13-7
| |
− | :0xdd 0 = effect is X, 1 = effect is Y
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==GET_MIDI_CHANNEL==
| |
− | This message message replies with the midi channel set under SETUP > I/O > MIDI > MIDI CHANNEL
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x17)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Response format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x17)
| |
− | :0xdd Midi Channel (single byte)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==GET_CPU_USAGE_NUMBER==
| |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x13)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Response format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x13)
| |
− | :0xdd CURRENT CPU USAGE (single byte from 0 to 100)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==GET_PRESET_EDITED_STATUS==
| |
− | The Axe FX and AX8 both have an LED on the front panel labeled EDITED, this LED goes on whenever you make any changes to your preset that have not been saved. This message will request that status. It will reply with 1 if the LED on the front panel is on and 0 if it's off
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x2A)
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | Response format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x17 Function ID (0x2A)
| |
− | :0xdd 0 = NO, 1 = YES
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | ==MIDI_SET_PRESET_NUMBER==
| |
− | This message sets a preset number of your choice, it will repond with message 0x64 to confirm.
| |
− | | |
− | Message format:
| |
− | | |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 Manf. ID byte0
| |
− | :0x01 Manf. ID byte1
| |
− | :0x74 Manf. ID byte2
| |
− | :0xdd Model #
| |
− | :0x3C Function ID (0x3C)
| |
− | :0xdd Preset Number bits 6-0
| |
− | :0xdd Preset Number bits 13-7
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | On the Axe FX the first byte for the preset number is the bank (with an index of 0) and the second byte is the preset number in that bank from 0 to 127. for example if you are on bank A the first byte is 0, bank B then first byte is 1 and so on. if you are on preset 10 then the preset byte is 9, etc
| |
− | If you are on Bank C preset 50 then you want your first byte to be 2 and the second one to be 49 or in Hex 0x02, 0x31
| |
− | | |
− | =MIDI SysEx: calculating the SysEx checksum=
| |
− | As mentioned above, the Axe-FX II units require a checksum to be added to the end of the SysEx string that is sent to it (before the terminating F7 byte) as a verification step.
| |
− | | |
− | In order to calculate the checksum, you basically have to XOR every byte from the start of the SysEx message, up to the character BEFORE the terminating F7 byte. For example, to send the following SysEx message (to fetch a preset name):
| |
− | | |
− | <tt>F0 00 01 74 03 0F F7</tt>
| |
− | | |
− | We would have to XOR all the byte values from the starting 'F0' to the '0F' which is the second last byte:
| |
− | | |
− | <tt>0xF0 ^ 0x00 ^ 0x01 ^ 0x74 ^ 0x03 ^ 0x0F = '''0x89'''</tt>
| |
− | | |
− | Then, we would need to strip the leftmost bit from the result (by ANDing it to 0x7F):
| |
− | | |
− | <tt>0x89 & 0x7F = '''0x09'''</tt>
| |
− | | |
− | And, we add this byte (actually, a septet now) to the end of the SysEx string, BEFORE the terminating F7:
| |
− | | |
− | <tt>F0 00 01 74 03 0F '''09''' F7</tt>
| |
− | | |
− | Obviously, in a 'static' SysEx message like above, you do not have to recalculate the checksum each time as it will always be '09' as the rest of the message does not change, but if you are sending a SysEx string to change a parameter value etc. then you will have to calculate the checksum on the fly as byte values towards the end of the SysEx string will be different each time.
| |
− | | |
− | =MIDI SysEx: obtaining parameter values=
| |
− | | |
− | The old Standard/Ultra devices used to store the parameter values on *most* knobs as 0-254. This was split into two bytes, XX YY where XX was the lowest 4 bits of the value, and YY was the highest 4 bits. Pretty simple.
| |
− | | |
− | The new Axe-II now has more granular control over *most* knobs, with the values going from 0-65534. This requires a full 16 bits to store. The problem is that the MIDI specifications means you can only transmit values using 7 bits as the highest bit of each byte must be a zero.
| |
− | | |
− | To get around this, the Axe-II uses THREE bytes to transmit the values XX YY ZZ where XX is the lowest 7 bits of the data, YY is the 8th to the 14th bit of the data, and ZZ is the remaining top two bits of the data.
| |
− | | |
− | So, if you had the value 52421 on a knob, then this would be represented by the 16 bits: 1100110011000101
| |
− | | |
− | If you split this into segments of length 2/7/7 to store in ZZ/YY/XX: 11 0011001 1000101
| |
− | | |
− | So XX gets the last segment: 01000101
| |
− | And YY gets the middle segment: 00011001
| |
− | And ZZ gets the first segment: 00000011
| |
− | | |
− | You will also have to back-calculate the respective knob values to the 16 bit values. For example, a knob that goes from 0 - 10, 0 would of course be 0, but 10 would be 65534. From there, you would work out that 5 is 32767 and 7 would be about 45871 etc.
| |
− | | |
− | =MIDI SysEx: loading IRs=
| |
− | | |
− | The information below was provided by former forum member LMO.
| |
− | | |
− | The Axe Fx II supports 2040-point impulse responses that are packaged for download in a series of 66 MIDI SysEx messages, as follows:
| |
− | | |
− | '''MIDI_START_IR_DOWNLOAD'''
| |
− | | |
− | Prepare the Axe-Fx II to receive impulse response data
| |
− | | |
− | Message Format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 manufacturing ID byte 0
| |
− | :0x01 manufacturing ID byte 1
| |
− | :0x74 manufacturing ID byte 2
| |
− | :0x03 model number
| |
− | :0x7A function ID
| |
− | :0x20
| |
− | :0x00
| |
− | :0x10
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | '''MIDI_G2_IR_DATA'''
| |
− | | |
− | There are 64 SysEx messages, each containing 32 chunks of data. Each chunk consists of five
| |
− | bytes and can hold either four text characters or one 32-bit IR data sample.
| |
− | | |
− | The first data message sent includes 8 chunks of text that specify the 32-character IR name, and
| |
− | 24 chunks of IR data. The subsequent 63 data messages each contain 32 data samples for a
| |
− | total of 2040 samples.
| |
− | | |
− | Message Format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 manufacturing ID byte 0
| |
− | :0x01 manufacturing ID byte 1
| |
− | :0x74 manufacturing ID byte 2
| |
− | :0x03 model number
| |
− | :0x7B function ID
| |
− | :0x20
| |
− | :0x00
| |
− | :0xdd data chunk byte 0
| |
− | :0xdd data chunk byte 1
| |
− | :0xdd data chunk byte 2
| |
− | :0xdd data chunk byte 3
| |
− | :0xdd data chunk byte 4
| |
− | :--- 31 additional five byte data chunks ---
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | '''MIDI_CLOSE_IR_DOWNLOAD'''
| |
− | | |
− | Terminate the IR download sequence
| |
− | | |
− | Message Format:
| |
− | <tt>
| |
− | :0xF0 sysex start
| |
− | :0x00 manufacturing ID byte 0
| |
− | :0x01 manufacturing ID byte 1
| |
− | :0x74 manufacturing ID byte 2
| |
− | :0x03 model number
| |
− | :0x7C function ID
| |
− | :0xdd encoded checksum byte 0 for IR data
| |
− | :0xdd encoded checksum byte 1 for IR data
| |
− | :0xdd encoded checksum byte 2 for IR data
| |
− | :0xdd encoded checksum byte 3 for IR data
| |
− | :0xdd encoded checksum byte 4 for IR data
| |
− | :0xdd checksum
| |
− | :0xF7 sysex end
| |
− | </tt>
| |
− | | |
− | '''Data Chunk Encoding Scheme'''
| |
− | | |
− | The data encoding scheme translates four octets into five septets. Each septet occupies the
| |
− | lower seven bits of a byte, with the most significant bit set to 0.
| |
− |
| |
− | :* octet is one byte containing 8 bits of data
| |
− | :* septet is one byte containing 7 bits of data
| |
− | :byte_chunk = (data[0] & 0xFF )<< 24 | (data[1] & 0xFF )<< 16 | (data[2] & 0xFF )<< 8 (data[3] & 0xFF;
| |
− | :* convert four octets to five septets
| |
− | :septet[0] = byte_chunk & 0xFF;
| |
− | :septet[1] = byte_chunk >> 7 & 0xFF;
| |
− | :septet[2] = byte_chunk >> 14 & 0xFF;
| |
− | :septet[3] = byte_chunk >> 21 & 0xFF;
| |
− | :septet[4] = byte_chunk >> 28 & 0xFF;
| |
− | | |
− | =MIDI Sysex: converting bytes to decimal and vise versa and more=
| |
− | | |
− | All functions below written in C++
| |
− | | |
− | The following are for each 5 byte chunk of message 0x0E (MIDI_GET_PRESET_EFFECT_BLOCKS_AND_CC_AND_BYPASS_STATE)
| |
− | | |
− | this function returns true if the block is in X state or false if the block is in Y state
| |
− | x is the first byte of each 5 byte chunk of message 0x0E
| |
− | <tt>
| |
− | bool isBlockX(byte x){
| |
− | if(x==0x03||x==0x02){
| |
− | return true;
| |
− | }
| |
− | return false;
| |
− | }
| |
− | </tt>
| |
− | | |
− | this function returns true if the block is bypassed, false if it's not
| |
− | x is the first byte of each 5 byte chunk of message 0x0E
| |
− | <tt>
| |
− | bool isBlockBypassed(byte x){
| |
− | if(x==0x03||x==0x01){
| |
− | return false;
| |
− | }
| |
− | return true;
| |
− | }
| |
− | </tt>
| |
− | | |
− | this function converts the 2 bytes for the block's bypass CC (IA CC Number LSB/MSB) into a decimal number
| |
− | LSB is the second byte and MSB is the third byte of each 5 byte chunk of message 0x0E
| |
− | <tt>
| |
− | int toBlockCC(byte LSB, byte MSB){
| |
− | return ((LSB & 0x7E) >> 1) + ((MSB & 3) << 6);
| |
− | }
| |
− | </tt>
| |
− | | |
− | | |
− | this function converts the 2 bytes for the block's ID (Effect ID LSB/MSB) into a decimal number
| |
− | LSB is the fourth byte and MSB is the fifth byte of each 5 byte chunk of message 0x0E
| |
− | <tt>
| |
− | int blockID(byte LSB, byte MSB){
| |
− | return ((LSB & 0x78) >> 3) + ((MSB & 0x0F) << 4);
| |
− | }
| |
− | </tt>
| |
− | | |
− | | |
− | | |
− | this function convers the effect ID bytes OR the parameter ID bytes into a decimal number
| |
− | <tt>
| |
− | int bytesToInt(byte byte1, byte byte2){
| |
− | return (byte1 & 0x7F) | ((byte2 & 0x7F)<<7);
| |
− | }
| |
− | </tt>
| |
− | | |
− | the reverse of the above to turn a decimal number into 2 bytes where x is the decimal number
| |
− | <tt>
| |
− | byte byte1 = (x & 0x7F);
| |
− | byte byte2 = ((x >>= 7) & 0x7F);
| |
− | </tt>
| |
− | | |
− | | |
− | this function converts the 3 parameter value bytes on message (0x02) into a decimal number
| |
− | <tt>
| |
− | int parameterValueBytesToInt(byte byte1, byte byte2, byte byte3){
| |
− | return (byte1 & 0x7F) | ((byte2 & 0x7F)<<7) | ((byte3 & 0x7F)<<14);
| |
− | }
| |
− | </tt>
| |
− | | |
− | the reverse of the above to turn a decimal number into 3 bytes where x is the decimal number
| |
− | <tt>
| |
− | byte byte1 = x & 0x7F;
| |
− | byte byte2 = (x >>= 7) & 0x7F;
| |
− | byte byte3 = (x >>= 14) & 0x7F);
| |
− | </tt>
| |
| | | |
− | to convert a decimal number into the 2 bytes for a preset change, where x is the decimal number
| + | =Axe-Fx Standard and Axe-Fx Ultra= |
− | <tt>
| |
− | byte byte1 = x >> 7;
| |
− | byte byte2 = x & 0x7F;
| |
− | </tt>
| |
| | | |
− | to convert the 2 bytes received from a preset change to a decimal number
| + | [http://www.gmarts.org/html/axefx_ultra_sysex_1005.html Ultra-specific SysEx information from forum member GM Arts] |
| | | |
− | Axe FX II
| + | [http://forum.fractalaudio.com/other-midi-controllers/39161-using-sysex-recall-present-effect-bypass-status-info-available.html SysEx commands for retrieving Preset/Effect bypass states] |
− | <tt>
| |
− | int x = (byte1 & 0x7F) << 7 | byte2;
| |
− | </tt>
| |
| | | |
− | AX8 | + | =Axe-Fx II and AX8= |
− | <tt>
| |
− | int x = (byte1 & 0x7F) | ((byte2 & 0x7F) << 7);
| |
− | </tt>
| |
| | | |
| + | SysEx commands for control of the Axe-Fx II (all models) and AX8 are documented in this page: [https://wiki.fractalaudio.com/wiki/index.php?title=MIDI_SysEx_Functions_AxeFxII MIDI SysEx Functions for Axe-Fx II] |
| | | |
− | to convert the decimal preset number into a Bank/Preset set.
| + | =Axe-Fx III, FM9 and FM3= |
− | this number ranges from 0 to 383 on the Axe FX II, 0 to 767 on the XL/+ and 0 to 511 on the AX8
| |
| | | |
− | Axe FX II or later, where x is the decimal number from 0 to 383/767 | + | SysEx commands for control of the Axe-Fx III, FM9 and FM3 through third-party MIDI devices are documented in this guide: [http://www.fractalaudio.com/downloads/misc/Axe-Fx%20III%20MIDI%20for%203rd%20Party%20Devices.pdf Axe-Fx III MIDI for Third-Party Devices] |
− | <tt>
| |
− | byte bankNumber = floor(x / 128); // banks are labeled A,B,C,D,E,F where bank A is 0 and bank F is 5
| |
− | byte presetNumber = x - (bankNumber*128); // preset number with index of 0, to display offset it to 1 just add 1 to this number when displayed
| |
− | </tt>
| |
| | | |
− | AX8 where x is the decimal number from 0 to 511
| + | =SysEx Model number per device= |
− | <tt>
| + | The numbers below refer to the processors. |
− | byte bankNumber = floor(x / 8); // banks are labeled from 1 to 64, this functions will return a number from 0 to 63, add 1 when you display it
| |
− | byte presetNumber = x - (bank * 8);
| |
− | </tt>
| |
| | | |
− | =MIDI SysEx: Effect IDs=
| + | * 0x00 Axe-Fx Standard |
− | <tt>
| + | * 0x01 Axe-Fx Ultra |
− | : 100 Comp 1
| + | * 0x02 MFC-101 |
− | : 101 Comp 2
| + | * 0x03 Axe-Fx II |
− | : 102 GEQ 1
| + | * 0x04 MFC-101 mk3 |
− | : 103 GEQ 2
| + | * 0x05 FX8 |
− | : 104 PEQ 1
| + | * 0x06 Axe-Fx II XL |
− | : 105 PEQ 2
| + | * 0x07 Axe-Fx II XL+ |
− | : 106 Amp 1
| + | * 0x08 AX8 |
− | : 107 Amp 2
| + | * 0x0A FX8 mk2 |
− | : 108 Cab 1
| + | * 0x10 Axe-Fx III |
− | : 109 Cab 2
| + | * 0x11 FM3 |
− | : 110 Reverb 1
| + | * 0x12 FM9 |
− | : 111 Reverb 2
| |
− | : 112 Delay 1
| |
− | : 113 Delay 2
| |
− | : 114 Multi Delay 1
| |
− | : 115 Multi Delay 2
| |
− | : 116 Chorus 1
| |
− | : 117 Chorus 2
| |
− | : 118 Flanger 1
| |
− | : 119 Flanger 2
| |
− | : 120 Rotary 1
| |
− | : 121 Rotary 2
| |
− | : 122 Phaser 1
| |
− | : 123 Phaser 2
| |
− | : 124 Wah 1
| |
− | : 125 Wah 2
| |
− | : 126 Formant
| |
− | : 127 Vol 1
| |
− | : 128 Pan Trem 1
| |
− | : 129 Pan Trem 2
| |
− | : 130 Pitch 1
| |
− | : 131 Filter 1
| |
− | : 132 Filter 2
| |
− | : 133 Drive 1
| |
− | : 134 Drive 2
| |
− | : 135 Enhancer 1
| |
− | : 136 Effects Loop
| |
− | : 137 Mixer 1
| |
− | : 138 Mixer 2
| |
− | : 139 Noise Gate
| |
− | : 140 Output
| |
− | : 141 Controllers
| |
− | : 142 FB Send
| |
− | : 143 FB Return
| |
− | : 144 Synth 1
| |
− | : 145 Synth 2
| |
− | : 146 Vocoder
| |
− | : 147 Megatap Dly
| |
− | : 148 Crossover 1
| |
− | : 149 Crossover 2
| |
− | : 150 Gate Exp 1
| |
− | : 151 Gate Exp 2
| |
− | : 152 Ring Mod
| |
− | : 153 Pitch 2
| |
− | : 154 MB Comp 1
| |
− | : 155 MB Comp 2
| |
− | : 156 Quad Cho 1
| |
− | : 157 Quad Cho 2
| |
− | : 158 Resonator 1
| |
− | : 159 Resonator 2
| |
− | : 160 GEQ 3
| |
− | : 161 GEQ 4
| |
− | : 162 PEQ 3
| |
− | : 163 PEQ 4
| |
− | : 164 Filter 3
| |
− | : 165 Filter 4
| |
− | : 166 Vol 2
| |
− | : 167 Vol 3
| |
− | : 168 Vol 4
| |
− | : 169 Looper
| |
− | : 170 Tone Match
| |
− | </tt>
| |
| | | |
− | [[category:MIDI]] | + | [[category:Axe-Fx2]] |
| + | [[category:FM3]] |
| + | [[category:FM9]] |
| + | [[category:Axe-Fx3]] |
| + | [[category:AX8]] |
| + | [[category:FX8]] |
| + | [[category:Remote]] |
| + | [[category:All]] |