SysEx Explorations

Chris Hurley

Power User
I've been trying to unravel some of the mysteries of Axe-FX sysex and thought I'd share what I have so far. This information is unsupported by Fractal. If you use it somehow and goof up your axe-fx, they won't help you. You have been warned. If you're scared, stay home.

SysEx messages in general:

On my unit, sysex messages all begin with F0 00 00 7D 01. '7D' is the sysex ID as set in the I/O menu (mine is 125). I don't know what '01' is, but in another thread, I think someone else had a different value for that position.

Some example sysex messages captured from the editor:

Increasing Amp 1's type from Tube Pre on up through other models
F0 00 00 7D 01 02 0A 06 00 00 01 00 01 F7
F0 00 00 7D 01 02 0A 06 00 00 02 00 01 F7
F0 00 00 7D 01 02 0A 06 00 00 03 00 01 F7
F0 00 00 7D 01 02 0A 06 00 00 04 00 01 F7

Doing the same with Amp 2:
F0 00 00 7D 01 02 0B 06 00 00 00 00 01 F7
F0 00 00 7D 01 02 0B 06 00 00 01 00 01 F7
F0 00 00 7D 01 02 0B 06 00 00 02 00 01 F7
F0 00 00 7D 01 02 0B 06 00 00 03 00 01 F7
F0 00 00 7D 01 02 0B 06 00 00 04 00 01 F7

You can see the 0A changed to a 0B, which suggests that 0A=amp 1, 0B=amp2, while the increasing sequence is the amp model type ID.


In another thread, a message from changing the drive 1 clip type to SI Diode was listed as:
F0 00 00 7D 00 02 05 08 0A 00 06 00 01 F7

(which suggests that block 05 = Drive 1)

Back to on Amp 1: gain changing:
F0 00 00 7D 01 02 0A 06 01 00 00 00 01 F7
F0 00 00 7D 01 02 0A 06 01 00 09 01 01 F7
F0 00 00 7D 01 02 0A 06 01 00 0F 07 01 F7
F0 00 00 7D 01 02 0A 06 01 00 04 0E 01 F7
F0 00 00 7D 01 02 0A 06 01 00 0E 0F 01 F7

I'm not sure how to interpret this yet.

I've looked at the tuner sysex output, but its not really useful to be sent to the axe-fx from a controller.

EDIT: I asked Fractal Support and they indicated that it was OK to post this information but that they don't support its use. They even OK'd me posting their reply, which I did in another thread. The purpose of this stuff is to gather information that can be used to control the Axe-FX from other MIDI devices in a manner that is otherwise impossible.
 
Matman said:
What exactly are you trying to accomplish?

Some foot controllers can send sysex messages to the axe-fx to do tricks that are otherwise impossible. Changing the 'type' of a drive pedal, for example, is impossible from a MIDI controller without sysex messages.

See the thread in another area where several folks are requesting the documentation for the axe-fx sysex information. This is a start to deriving that information.
 
hint: you're looking for two bytes to specify the effect block.

Another thing I think would be nice when cataloging this stuff for the Wiki or wherever is a list of devices capable of sending the complex SysEx the Axe-Fx needs. Two I have are the Digitech PMC 10 floor controller and the Behringer BCR2000 rotary knob controller. I haven't tried messing with the SysEx stuff on my Novation ReMote 37 SL keyboard controller.

Even better would be a list of devices capable of receiving and interpreting the Axe-Fx SysEx. As far as I know, there are two in existence: Liquid Control's Liquid Foot Pro and Liquid Foot Jr., and one to be released later: Fractal's MFC101. I believe the Gordius LG also supports the Axe's tuner data.

Axe-Fx SysEx manipulation is unsupported by Fractal; don't ask them about it and proceed at your own risk.
 
Chris Hurley said:
Matman said:
What exactly are you trying to accomplish?

Some foot controllers can send sysex messages to the axe-fx to do tricks that are otherwise impossible. Changing the 'type' of a drive pedal, for example, is impossible from a MIDI controller without sysex messages.

See the thread in another area where several folks are requesting the documentation for the axe-fx sysex information. This is a start to deriving that information.

I don't know if I am missing something here but it seems infinitely easier to just have two patches one with one type of drive pedal and another with a second type of drive pedal. Step on your footcontroller to change between the patches. It seems much easier than trying to decode sysex messages and then program them.

We get two drive blocks don't we. Why not drop the two in the same patch and either use an expression pedal to fade between the two or an IA switch to select one and bypass the other. All that seems much easier to me that trying to decode the sysex.
 
mworkman said:
I don't know if I am missing something here but it seems infinitely easier to just have two patches one with one type of drive pedal and another with a second type of drive pedal. Step on your footcontroller to change between the patches. It seems much easier than trying to decode sysex messages and then program them.

We get two drive blocks don't we. Why not drop the two in the same patch and either use an expression pedal to fade between the two or an IA switch to select one and bypass the other. All that seems much easier to me that trying to decode the sysex.

Changing Drive Type by using a SysEx is just an example. SysEx messages can do many much more.
I don't know if it's doable on Axe-FX, but for example, some GLOBAL functions could be modified via SysEx messages.

Interpretation of Tuner's SysEx by LFP an Gordius is probably one of the best examples.
 
mworkman said:
We get two drive blocks don't we. Why not drop the two in the same patch and either use an expression pedal to fade between the two or an IA switch to select one and bypass the other. All that seems much easier to me that trying to decode the sysex.

That was just an example of course, but there are other reasons why you might want to do this- lack of CPU for the second block of an effect, for example. Already using the second block for something else...

The ability to change parameters like this with an external controller is a powerful feature of this device. If you don't need it, that's cool, but there are others who want it, so let us toil in our madness. :)
 
Can I just say, you folks are freaking awesome! My LiquidFoot Jr is arriving today and I plan to make good use of this information!
 
Chris: killer work man. Wow! You're really going at this hard.

I'll check some SysEx messages from my unit tomorrow (today is a write-off for free time for me). That'll give us some preamble stuff (the stuff up to the SysEx ID#) to compare. I know that when I get syx files from Fractal SysexLibrarian thinks the manufacturer is "Brooktree", but when I dump sysex from my unit to SysexLibrarian it thinks the manufacturer is "Time Warner" -- I'm pretty sure this "manufacturer" ID is one of the preamble bytes. Comparing against my unit might tell us which.
 
Matman said:
What exactly are you trying to accomplish?
As others have pointed out: we're interested in documenting the SysEx.

As for what I intend to do with this message: first to mind is assigning continuous controllers to the amp block's bass, mid and treble values so I can tweak them from the controller I'm building. None of these parameters are current assign-able to external controllers. Knowing how to do send sysex would also free you from the external controller limitation on the unit. You'd no longer be limited to 8 or whatever it is.
 
Went ahead and added the main sysex spec (message types and formatting) and the list of effects block IDs.
 
chase said:
Went ahead and added the main sysex spec (message types and formatting) and the list of effects block IDs.
chase: thanks man. If formatting bogs you down, don't sweat it. Someone else can clean it up. I have a vested interest in keeping the page tidy 'cause I'll be referencing it quite a bit.
 
iaresee said:
That'll give us some preamble stuff (the stuff up to the SysEx ID#) to compare. I know that when I get syx files from Fractal SysexLibrarian thinks the manufacturer is "Brooktree", but when I dump sysex from my unit to SysexLibrarian it thinks the manufacturer is "Time Warner" -- I'm pretty sure this "manufacturer" ID is one of the preamble bytes. Comparing against my unit might tell us which.

One web page I read seemed to indicate that the manufacturer ID was expected at the second byte. I'm not sure that there is a sanctioning body that officially dictates, however. Here's one page I found:

http://www.terzoid.com/noize/nzsysex.php
 
iaresee said:
chase said:
Went ahead and added the main sysex spec (message types and formatting) and the list of effects block IDs.
chase: thanks man. If formatting bogs you down, don't sweat it. Someone else can clean it up. I have a vested interest in keeping the page tidy 'cause I'll be referencing it quite a bit.

The biggest problem is having to add line breaks - the lists are illegible without them, so I can't really leave them out. I've been adding "tt" (fixed width text) tags around the sysex and putting a colon at the beginning of each line to add an indent and line break, but it's tedious. If no one minds I'm just going to post the rest of my lists here; feel free to copy them to the wiki, or I'll do it when I'm less busy (which won't be until September).
 
Chorus:

04 07 = Chorus1
05 07 = Chorus2

00 00 = Voices
01 00 = Rate
02 00 = Tempo
03 00 = Depth
04 00 = Bass
05 00 = Treble
06 00 = Bass Freq
07 00 = Treble Freq
08 00 = Delay Time
09 00 = LFO Phase
0A 00 = LFO Type
0B 00 = Auto Depth off/on
0C 00 = Mix
0D 00 = Level
0E 00 = Balance
0F 00 = Bypass Mode

00 01 = Global Mix
01 01 = Phase Reverse
02 01 =
03 01 = Width
04 01 = LFO2 Rate
05 01 = LFO2 Depth
 
Comp:

04 06 = Comp1
05 06 = Comp2

00 00 = Threshold
01 00 = Compression
02 00 = Attack
03 00 = Release
04 00 = Level
05 00 = Knee
06 00 = Makeup Switch
07 00 = Detect
08 00 = Filter
09 00 =
0A 00 = SCSEL
0B 00 = Mix
0C 00 = Type (Studio/Pedal)
 
Delay:

00 07 = Delay1
01 07 = Delay2

00 00 = Type
01 00 = Time MSB?
02 00 = Time LSB?
03 00 = Ratio (Stereo)
04 00 = Feedback (Mono)
05 00 = Feedback L
06 00 = Feedback R
07 00 = Echo Pan
08 00 = Spread
09 00 = Tempo
0A 00 = Lowcut
0B 00 = High cut
0C 00 = LFO1 Rate
0D 00 = LFO2 Rate
0E 00 = LFO1 Depth
0F 00 = LFO2 Depth

00 01 = Drive
01 01 = Mix
02 01 = Level
03 01 = Pan
04 01 = Bypass Mode
05 01 = Global Mix
06 01 =
07 01 = In Gain
08 01 = LFO1 Type
09 01 = LFO2 Type
0A 01 = Time R (Dual) MSB?
0B 01 = Time R (Dual) LSB?
0C 01 = Master Feedback
0D 01 = Tempo R (Dual)
0E 01 = Feedback LR (Dual)
0F 01 = Feedback RL (Dual)

00 02 = Level L (Dual)
01 02 = Level R (Dual)
02 02 = Pan L (Dual)
03 02 = Pan R (Dual)
04 02 = LFO1 Phase
05 02 = LFO2 Phase
06 02 = XFade Time (Rev)
07 02 = Run (Reverse)
08 02 = Trig Restart (Reverse)
09 02 = Filter Slope
0A 02 = Ducker Att
0B 02 = Threshold
0C 02 = Release Rate
0D 02 = Depth Range
0E 02 = Diffusion
0F 02 = Diff Time

00 03 = Phase Rev
01 03 = LFO1 Target
02 03 = LFO2 Target
03 03 = LFO1 Tempo
04 03 = LFO2 Tempo
 
Drive (this one obviously needs updating):

05 08 = Drive1
06 08 = Drive2

00 00 = Type?
01 00 = Drive
02 00 = Tone
03 00 = Level
04 00 = Mix
05 00 = Bypass Mode
06 00 = Slew Limit
07 00 =
08 00 = Low Cut
09 00 = High Cut
0A 00 = Clip Type
0B 00 = Bias
 
Back
Top Bottom