• We would like to remind our members that this is a privately owned, run and supported forum. You are here at the invitation and discretion of the owners. As such, rules and standards of conduct will be applied that help keep this forum functioning as the owners desire. These include, but are not limited to, removing content and even access to the forum.

    Please give yourself a refresher on the forum rules you agreed to follow when you signed up.

Control Axe FX 2 with a USB-only MIDI controller? (Akai LPD-8)

Paperjace

Experienced
Hi all,

I have an Akai LPD-8 MIDI controller, which has 8 pads and 8 controller knobs. I'd love to use this as a way to control things in the Axe that would normally use knobs (bass, mid, treble, master vol., tape delay motor speed, etc.) Unfortunately, it only has a Mini-USB port which also powers it. Is there any way to get this to communicate with the Axe?

I'm at work currently and can't test this, but I'm guessing the only way is to have the Axe and LPD-8 connected to a DAW on a computer and use the DAW's MIDI-thru capabilities.

Thanks in advance for any advice!
 

Paperjace

Experienced
So I've been doing some researching and have been learning about Sysex messages and how they work with the Axe. The Axe FX wiki has been a great resource so far.

I have a question though if someone could help: I've been trying to use MIDI-OX to read the Axe's Sysex messages from the MIDI Out, but I'm not receiving anything except the metronome sysex. However when I open Axe Edit, there's an endless stream of Sysex messages that makes it almost useless to pick out anything specific.

Is there a way to, say, "twist a knob" on the Axe and watch a Sysex message spit out? Does it even work that way?

My end goal is to understand how to control the Amp Block's basic Bass, Mid, Treble, etc. controls with a MIDI controller. Maybe not necessarily the LPD8. The RAC12 obviously is reading and sending Sysex messages and I'm curious where to start.

Thanks in advance!
 

Bakerman

Axe-Master
Is there a way to, say, "twist a knob" on the Axe and watch a Sysex message spit out? Does it even work that way?

No.

To see the sysex commands you have to watch what Axe-Edit sends when a control is adjusted in AE. This is possible using virtual MIDI ports. I don't know if Midi-Ox can create them. If not, a separate utility like this will work:

loopMIDI | Tobias Erichsen

Create virtual port, select virtual out in AE.

In MIDI-Ox monitor the virtual in and route it to Axe-FX USB MIDI Out.

Alternatively you could enable USB Adapter Mode and connect the Axe MIDI Out/Thru to another MIDI interface, and monitor the input of that. It may even work with Axe Thru looped back to In with 1 cable, but this might get unpredictable or sluggish, and the returning data would be mixed among other messages like you saw earlier.

Also, each sysex message needs to end with a valid checksum. This level of programming might not be possible for the LPD-8 knobs.
 
Last edited:

Paperjace

Experienced
Thanks, Bakerman. I'll have to give loopMIDI a try tonight. Sounds promising!

I'm aware of the checksum. I've been wanting to work on a Python project for a while so perhaps this'll be a good opportunity to learn how to interface the LPD8 with the Axe.
 

Paperjace

Experienced
Thanks for all the help so far. Totally new to all this so any advice is very helpful.

I ended up using the trial of Bome SendSX to get the Axe Edit sysex data stream. So far so good!

However, I feel like I'm missing something in calculating the checksum. I understand the purpose of the checksum and its validation of the data being transmitted, but I don't know how to actually calculate. Here's an excerpt from the Axe FX wiki that I've been using for reference, but confused about:

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):
F0 00 01 74 03 0F F7

We would have to XOR all the byte values from the starting 'F0' to the '0F' which is the second last byte:
0xF0 ^ 0x00 ^ 0x01 ^ 0x74 ^ 0x03 ^ 0x0F = 0x89

Then, we would need to strip the leftmost bit from the result (by ANDing it to 0x7F):
0x89 & 0x7F = 0x09

And, we add this byte (actually, a septet now) to the end of the SysEx string, BEFORE the terminating F7:
F0 00 01 74 03 0F 09 F7

I'm not understanding the highlighted portion. What is the "leftmost bit" and where is it coming from? In the example, it says to "AND it to 0x7F", but I don't see a 7F hex in the sysex example. Wouldn't the left most bit be F0?...Which obviously doesn't make sense because that will always be F0.
 
Last edited:

Paperjace

Experienced
Anybody? Sorry to be a nag, but this is really the only place where I can get an answer to the question in my above post. Thanks in advance.
 

GuttaLaser

Power User
Contact AlGrenadine... (is one of the developer of RAC12 midi knobs controller).
Maybe he can help you and/or save some hours of work about the midi communication between AE and the AxeFx.
What I know is that there is some issue in the midi code (aka some non-standard midi) from the Axe to AE.
 

Rex

Legend!
Then, we would need to strip the leftmost bit from the result (by ANDing it to 0x7F):
0x89 & 0x7F = 0x09



I'm not understanding the highlighted portion. What is the "leftmost bit" and where is it coming from? In the example, it says to "AND it to 0x7F", but I don't see a 7F hex in the sysex example. Wouldn't the left most bit be F0?...Which obviously doesn't make sense because that will always be F0.

Look at the result of the XOR just prior to that statement; it's "0x89." That's a byte, not a bit. A byte is a string of eight bits. You strip off the leftmost bit of that byte by ANDing it with 0x7F.
 

Paperjace

Experienced
Look at the result of the XOR just prior to that statement; it's "0x89." That's a byte, not a bit. A byte is a string of eight bits. You strip off the leftmost bit of that byte by ANDing it with 0x7F.

I'm sorry, you're right. I had my terminologies mixed up and realized it after the fact. I'm just confused where the 0x7F is coming from? Is that hex to be used for every checksum calculation after I XOR everything? I'm not sure if 0x7F is only specific to this example or if that's the "encryption key" for all checksums.
 

Rex

Legend!
I'm just confused where the 0x7F is coming from?
0x7F is a byte whose leftmost bit is set to zero; every other bit is set to 1. When you AND that with any other byte, the result is the original byte with its leftmost bit stripped away. That's true whether the byte is MIDI or anything else. 0x7F is the number you use to strip off that first bit.
 

Paperjace

Experienced
Thanks Rex! That makes sense. I'm new to all this and didn't know that byte's role with the checksum.

Thanks all for the help! I think I have all the info I need.... for now...

Sent from my HTC6525LVW using Tapatalk
 
Top Bottom