Always consult the official Owners Manuals first

Difference between revisions of "MIDI SysEx"

From Fractal Audio Wiki
Jump to navigation Jump to search
(more sysex)
Line 12: Line 12:
 
= SysEx messages for Axe Fx II=
 
= SysEx messages for Axe Fx II=
  
* Many Axe Fx II sysex messages are similar to Standard/Ultra messages.  Model ID is 3.  All messages must be sent with checksums.
+
* 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].   
* 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.]
+
* Model ID is 3.   
 +
* 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.]
  
 
=Axe Fx II SysEx Information for loading IRs=
 
=Axe Fx II SysEx Information for loading IRs=

Revision as of 16:37, 2 January 2012

About MIDI System Exclusive (SysEx) messages

If you're a MIDI expert, you can use SysEx messages (MIDI System Exclusive) to control the Axe-Fx II.

SysEx messages for Ultra

  • Ultra-specific SysEx information has been accurately acquired and organized by forum member GM Arts: here.
  • Information about SysEx commands for retrieving Preset/Effect bypass states is here.

SysEx messages for Axe Fx II

  • Many Axe Fx II sysex messages are similar to Standard/Ultra messages documented here.
  • Model ID is 3.
  • 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 here.

Axe Fx II SysEx Information for loading IRs

The information below was provided by 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:

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

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:

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

MIDI_CLOSE_IR_DOWNLOAD

Terminate the IR download sequence

Message Format:

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

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;