Akai Fire Midi Translator

Hallo, I have bought an Akai Fire which is a great controller for FL Studio. But I would like to be able to use it for other daws, too. Mainly to tweak plugin parameters.

It has 64 RGB colour buttons, 4 endless knobs and one knob with screening.

There are also some other buttons which are for the functions in FL Studio.

Now I would like to create a program in BMTP that acts the following:

If I press one of the 64 buttons in the middle I would like it to act as a selector for a specific cc#.

Then I would like to be able to turn one of the knobs to get the value for this cc.

The knobs act in a way that they send out a value of 127 if you turn them left and a value of 1 if you turn them right.

Maybe it is even possible to get a 14bit cc value this way.

Can anyone help me make this possible?

Hi,

Well it appears there is no documentation on what MIDI this controller sends to this means there will be a bit of experimentation and reverse engineering probably required.

Maybe if you monitor one of he knobs while turning it and then say the top rows of LED’s and let me know what they send, I can provide you with some help.

Then once we see if that works, we can experiment with how MIDI messages back to the LED’s are translated.

Maybe AkaiPro can help you or some other user has gone through this exercise. You might query other forums with users that might have done this and documented something.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Thank you for your answer! Actually it’s not really a problem for me to explore the midi messages the controller sends. I have several midi monitoring programs, of which I use the SNOIZE Midi Monitor very often for example.
This is a Midi Map of the midi messages the Akai Fire sends out:

Pads first row: Note F#2-A3 (90 36 20 – 90 45 20 on pressing and 80 36 20 – 80 45 20 on letting go)
2nd row: A#3-C#5 (90 46 20 – 90 55 20 / 80 46 00 – 80 55 00)
3rd row: D5-F6 (90 56 20 – 90 65 20 / 80 56 00 – 80 65 00)
4th row: F#6-A7 (90 66 20 – 90 75 20 / 80 66 00 – 80 75 00)

The first knob from the left sends out:

Note E-1 127 (on touch) and 0 on letting go,
CC# 16 127 (B0 10 7F) when turning left and
CC# 16 1 (B0 10 01) when turning right.
The other knobs do the same each +1.

Then there is the select knob/button which sends CC# 118 127 (B0 76 7F) when turned left
and CC# 118 01 (B0 76 01) when turned right.
Pressing the select knob sends note C#0 127 (90 19 7F) and note C#0 0 (80 19 00) when letting go.

So not much of a mystery. 🙂

Thank you for your answer! Actually it’s not really a problem for me to explore the midi messages the controller sends. I have several midi monitoring programs, of which I use the SNOIZE Midi Monitor very often for example.
This is a Midi Map of the midi messages the Akai Fire sends out:

Pads first row: Note F#2-A3 (90 36 20 – 90 45 20 on pressing and 80 36 20 – 80 45 20 on letting go)
2nd row: A#3-C#5 (90 46 20 – 90 55 20 / 80 46 00 – 80 55 00)
3rd row: D5-F6 (90 56 20 – 90 65 20 / 80 56 00 – 80 65 00)
4th row: F#6-A7 (90 66 20 – 90 75 20 / 80 66 00 – 80 75 00)

The first knob from the left sends out:

Note E-1 127 (on touch) and 0 on letting go,
CC# 16 127 (B0 10 7F) when turning left and
CC# 16 1 (B0 10 01) when turning right.
The other knobs do the same each +1.

Then there is the select knob/button which sends CC# 118 127 (B0 76 7F) when turned left
and CC# 118 01 (B0 76 01) when turned right.
Pressing the select knob sends note C#0 127 (90 19 7F) and note C#0 0 (80 19 00) when letting go.

So not much of a mystery. 🙂

I have figured out how to turn the note on commands into control change commands.

But one main problem I have is how to transform the repeated CC# 16 1 to increasing cc values from 1-127 and the repeated CC# 16 127 commands to decreasing values back down.

Then I would need a variable to replace the cc# with the value from the note e.g. the transformed cc# value from the note command buttons.

Oh and since you were talking about the led’s. Well they are not as important to me. But it would be a nice feature if they could change the color corresponding to the cc value. That would be awesome! 🙂

Hi,

Thanks for this. Here is an example.

Knob 1 normally puts out 16 Hex.

When you push R1 column 1 it changes output of knob 1 to 0 Column 2 will change it to 1 etc up to 15.

I use the global variable ga to determine the output CC I want to use.

There are two translators.

Volume Knob – Translates incoming CC to outgoing cc as defined in global variable ga (which is 0 at project start)

Row 1 – Monitors the pads on row 1 and sets variable ga to 0-15 depending on which pad is pushed.

 

When opening the file you should get prompted with 2 Aliases. Set them to point to your actual Akai Fire (for input) and to the virtual port you want to monitor with your DAW (for output).

 

Let me know if this helps.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz


Attachments:
1563943120075_Akai-Fire-CC-Change-Example-2019-07-23.bmtp

Check out our tutorial on Converting Relative Encoder to Absolute:

https://youtu.be/yjgmIUIS0SI

I found this article on someone that figured this all out before. Now you would just need to implement in Bome MIDI Translator Pro. I can help with pointed questions but if you want to create a complete solution, send me an email with your requirements and I can price it out for you.

https://blog.segger.com/decoding-the-akai-fire-part-1/

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Thank you veeery much!! I tested your file and the selection of cc# works fine for the first 16 buttons (row 1).
What doesn’t work so far is the cc value. I still get 01 when turning the knob right and 7F (e.g. 127) when turning the knob left.

Thank you veeery much!! I tested your file and the selection of cc# works fine for the first 16 buttons (row 1).
What doesn’t work so far is the cc value. I still get 01 when turning the knob right and 7F (e.g. 127) when turning the knob left.

I think I already found the solution.

I simply added one translator for up with two rules:

qq=qq+1
if qq>127 then qq=127

and one translator for down with two rules:

qq=qq-1
if qq<0 then qq=0

In the up translator I set the incoming cc value to 1 and in the down translator I set it to 127.

 

It’s working now. 🙂

Now I need to extend the rules for all rows.

Maybe we can get the led’s to work, too. 🙂

 

And it would also be nice if I could change the cc# of the rows in a way that the other cc# from 65-127 can also be used.

By the way, concerning the Midi implementation of the Akai Fire I found this here:

 

https://blog.segger.com/decoding-the-akai-fire-part-1/

https://blog.segger.com/decoding-the-akai-fire-part-2/

 

Neat! 🙂

Reading the sites, especially the end of the second page got my worries concerned that it is a sysex message that makes the pads illuminate. But on the other hand the author has completely decrypted that sysex message, so it should be possible to make the pads illuminate with a specific color and brightness.

It’s just a lot to program for 64 pads… 🙂

After manipulating the input note value from to an index value you can have rules that send any CC you want.
For instance:
rr=pp
if rr==0 then pp=20
if rr==1 then pp=56
if rr==2 then pp=100

pp=rr
Then output pp as usual.
You should probably use a different global variable for each knob so that as you change them the knobs remember their position. (Since you are using absolute values)
As far as LED’s I agree the user did a good job and that should help you.
If you need help on 1 LED, I can assist here. The trick here will be able to determine by it’s RGB values what color you need to produce. You may need to just set up your own color pallet for common colors your commonly and then look up the appropriate RGB values in rules to produce the correct System Exclusive message.
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Hi Steve! Thank you for all your further answers!

Strange things are going on here. I first thought you hadn’t answered so far. But then I had a look into my E-Mail spam folder and saw your answers. But they don’t appear here for me.

I can only see your two first comments. Everything else I can only see in my E-Mails.

Edit: Okay, it seems I overlooked the comments under my posts. These are what I got with the E-Mails. It\'s a bit unusual. Maybe it\'s because I\'m allergic to small printed things in contracts etc. :D

Yes, comments are interspersed different on this site than answers. An answer post will always be on the top. Comments are kind of in chronological order one underneath the other.

Makes sense actually. But I’m new here and though I recognized the comment function and used it, I overlooked your comments. And that’s also why I posted some comments again as new answers. What a mess. Sorry.

No Worries

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Hi Michelle242!

I’m new here and i wouls like some information. I read your experiment with the Akai-Fire controller.
Do you have any results?
I want to use this controller for light-control. This would require a mapping base that I could further refine for a QLC+ program.

Thank you for helping me with this.
Peter - Hungary