Always consult the official Owners Manuals first

Difference between revisions of "MIDI SysEx"

From Fractal Audio Wiki
Jump to navigation Jump to search
m
Line 33: Line 33:
  
 
There are 64 sysex messages, each containing 32 chunks of data.  Each chunk consists of five
 
There are 64 sysex messages, each containing 32 chunks of data.  Each chunk consists of five
bytes and can holds either four text characters or one IR data point.
+
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  
 
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 points for a  
+
24 chunks of IR data.  The subsequent 63 data messages each contain 32 data samples for a  
total of 2040 points.
+
total of 2040 samples.
  
 
Message Format:
 
Message Format:
Line 85: Line 85:
 
lower seven bits of a byte, with the most significant bit set to 0.   
 
lower seven bits of a byte, with the most significant bit set to 0.   
 
   
 
   
* octet is chunk data in octets
+
* octet is one byte containing 8 bits of data
* septet  is a byte array of chunk data in septets
+
* septet  is one byte containing 7 bits of data
* organize four bytes of input data in reverse order
+
byte_chunk = (data[0] & 0xFF )<< 24 | (data[1] & 0xFF )<< 16 | (data[2] & 0xFF )<< 8  (data[3] & 0xFF;
octet = (data[3] & 0xFF )<< 24 | (data[2] & 0xFF )<< 16 | (data[2] & 0xFF )<< 8  (data[0] & 0xFF;
 
 
* convert four octets to five septets
 
* convert four octets to five septets
septet[0] = octet & 0xFF;
+
septet[0] = byte_chunk & 0xFF;
septet[1] = octet >> 7 & 0xFF;
+
septet[1] = byte_chunk >> 7 & 0xFF;
septet[2] = octet >> 14 & 0xFF;
+
septet[2] = byte_chunk >> 14 & 0xFF;
septet[3] = octet >> 21 & 0xFF;
+
septet[3] = byte_chunk >> 21 & 0xFF;
septet[4] = octet >> 28 & 0xFF;
+
septet[4] = byte_chunk >> 28 & 0xFF;
  
 
[[category:MIDI]]
 
[[category:MIDI]]

Revision as of 16:25, 13 July 2011

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.

Axe Fx II SysEx Information for loading IRs

The information below was provided by forum member LMO.

The Axe Fx II supports 2048-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
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;