Akai Fire in FLS, MTP vs. Python

Hi, I’ve recently run into a problem with remapping the Fire’s note outputs in drum mode. Since Python scripting was introduced, I’ve avoided it because I would need to be a Python expert to be able to make the changes I want. But now I don’t have a choice because this note remap problem is serious.

I’ve been working on the script, but nothing I do is working. Also want to do other changes like read and display the pad colours from the plugin per preset change.
I see that some on this forum have been configuring this controller as far back as three years ago.

The mention of using a Thru port makes me wonder if I can use a hybrid config of Python and MTP. But the pad colours is still beyond me right now.

Was thinking of a signal flow like this:
Fire Signal Flow

I don’t even know what my question is right now. Just at a loss of how to proceed. I could potentially fix all this within the Python script, but you are aware of how much work that would be to learn the language just to fix a single controller. Ugh.

A couple guys have made Python scripts that can do things I want to do, but they are different configs. I would want my own custom script. These are professional programmers; they know how to use Python, and I don’t.

I could probably fix my issues using MTP only, but then I lose all the other great features of this unit.

Interesting. Since you don’t know the question. I’m not sure how to answer.

I certainly can envision keeping your current python script and then just making some tweaks with MT Pro where needed but depending on what your issue is, I’m not sure if that would do it.

If you could describe to me the desired behavior (what MIDI you want sent and received) compared to the current behavior), perhaps I could help

Steve Caldwell
Bome Customer Care

Also available for paid consulting services: bome@sniz.biz

I’ll look at the Python script tomorrow to see how hard it is to change things.

I wanted to buy a Fire in the near future anyway to mess with the script.
I’ve looked at the FL Studio scripts before, they’re kind of a mess even if you know Python.

1 Like

OK, I’ve done a bit of scripting in Ableton Live that uses Python but I agree it is not for the faint of heart. If you are an experienced trained Python programmer then it is probably considered easy, however I don’t spend a lot of type with Python, so every time I jump into that realm, I’m usually relearning stuff and it takes a while.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services: bome@sniz.biz
1 Like

Cool, thanks for the support guys. Still unsure what I’m asking here, except some advice if diving into Python will be a years worth of work or not.

I’ve been in continual discussion with some guys on the IL forum about it too. Most people struggle with making a working script, like I do.
The official script is on the forum here. It’s the base script that made no changes to how the unit behaves, so the user can do their own custom work on it. You need an FLS license to access it I think. I could also upload it here, but don’t know if I’m allowed.

Lots of people use the controller for its performance mode, so that’s what most scripts focus on.
But for me, the custom remapping of (the FPC plugin) pads to the piano roll, and for it to read FPC pad colours and send them to the unit is my main issues. I have other issues, but I’m really struggling with that. Getting the colours from the plugin might be impossible without IL’s help.

I was able to fix the vol/pan location issue that I was ranting about before.
Just swapped their addresses in the definitions.

But there are some other bugs with the factory script. The oled display has a weird bug and it has some mode issues. It thinks the knobs are in user 1 mode, when it’s actually in channel mode. I don’t know about that yet.

I’ve dumped a bunch of issues on IL’s lap in two days; they haven’t had any time to respond to it yet.
Still don’t know what my question is here. I’m almost ready to just get an NI Machine Mk3 and run it fully through MTP, but I want the 32 pad drum kits.

I’m trained by myself, Google, and a whole lot of answers on Stackoverflow.
Does that count? :grin:

I downloaded the script.
This is gonna take a while, 3000 lines of code for a midi controller script seems a bit excessive.


When I enable the style guide in PyCharm, the whole script lights up like a christmas tree.

Half indentations, camelcase naming used for functions, lines ending in semicolons, lines being too long, blank lines and spaces in weird places.
I’m not saying it’s bad, it’s just very long and doesn’t read easy.
At least the scales are in a separate file.

Also know that none of these scripts are the same as the official mappings, they just replicate the behaviour of those mappings.

Regarding your first post:

I guess that’s what you want changed?

If there is a function to request those colors, it shouldn’t be too difficult.
But I’m not entirely sure about this, there is a lot of custom color stuff in the script.

Let’s start with the easy stuff.

1 Like

I’ve changed the script to be a bit more readable and moved the FPC note mapping to a separate file so it can be edited easily. Send me a DM if you want those files.

Procedure to get FPC pad color:

Use getColor from the plugins module.
The third argument for this function is (long flag = GC_BackgroundColor)
This seems to be the current implementation for FPC.

Use getPadInfo from the plugins module.
The third argument for this function is (long paramOption)
This is probably for other plugins with pads.

The problem is, I can’t find any reference in the script to either of those.
Which means you have to write that functionality yourself.

1 Like

Oh wow. Looks like I’ve run into an angel. Just like Steve who helped me with MTP, you seem helpful too. It’s highly appreciated.
If you noticed the download counter on that script, there would be at least three hundred people that will love you to bits if you help with this. And also the vast number of those who own a Fire but won’t go near the scripting because it’s well beyond their ability to.

It has alot of lines of code, but the controller does have a lot of features.

Yea you noticed that the factory script has problems. Other people were noting it too on the forum. It hasn’t been addressed by IL yet. Don’t know if it ever will.

Two serious problems that are in the script:
I have this weird oled display bug that isn’t there without the script running.

And when in ‘Channel’ mode, the four pot knobs think they are in User 1 mode, for some reason. I noticed that in channel mode, turning the knobs move parameters that I had previously linked.

So unless these bugs get fixed, there is no point doing anything else because it’s unusable at this point.

The changes with FPC I’m trying to do is found in my write up here.
If you don’t have access to that forum, I can copy over whatever info you need.

One thing that I was able to do myself is to swap the locations of the volume and pan knobs. I found their addresses in the definitions and just swapped over their numbers. Seems to have worked without side effects.

getColor from the plugins module doesn’t seem to be the function to get the 32 FPC pad colours. And it definitely won’t address printing the pad colours to the device on preset change. I don’t know if that function exists or is possible; we’ve asked IL about it without a reply.

There are several custom changes that I would personally want to get done later, but the script bugs, note remaps and get colours is my current priorities. Without that, I’m dead in the water.

Thanks so much for your help. :slightly_smiling_face:

1 Like
another rant

I noticed that they crammed all the features they could find in there.
That shouldn’t be a problem normally, but they decided to let the script handle everything.
They included event handling, custom midi messages, focusing, color conversions and tons of hardcoded stuff that’s better left to a separate module.

There’s so much stuff users shouldn’t have access to that it wouldn’t surprise me if a lot of those custom scripts will just crash FL Studio.

This script should at least be split in parts and the customizable stuff should be separate.
That would lower the threshold for newcomers trying scripts for the first time.


They won’t, for example, the function naming is just wrong for Python.
But changing that would render every script unusable, so that will never change.

I’ll check it out, I found multiple bugs in the script already. I tried to fix what I could but I can’t verify anything without the Fire, I can only fix the obvious.

I’ll look at the other bugs too.

That explains why it’s not used in the script.
But the other function for pad color isn’t used either.
And I can only go by what the manual tells me:

That one will be tricky, the whole color system in this script is a mess and it’s useless anyway until you know how to actually retreive the right pad colors.

I’ve already placed the note map into a separate file, if that works like it should we can focus on those bugs. :cockroach: I have access to the FL Studio forum.

You’re welcome. :slightly_smiling_face:

1 Like

Ok I copied over the files you uploaded here, into the correct folder. I overwrote the existing factory script. So it looks like this now:

Enabling it in FLS, at first I got the red/white colour scheme that shows there is “no driver”. Then after refreshing, I get no lights. That happens when FLS is not focused or running.

There are two script entries in the MIDI settings now. Haven’t seen two entries before.

Two Scripts

Trying both out, and they give the same line 22 error:

No Notemap Module

I suspect your notepad file is a typo, or they didn’t setup FLS to support multiple python files. This would explain why they crammed everything into one script.
It’s a universal feature for all MIDI devices, and most of them are basic compared to the Fire. So one script file would be a reasonable architecture, but I’m just speculating.

There’s a neat Segger blog post about decoding the Fire. Most of it I don’t understand, but an interesting read. here

I wonder if the FPC pads have a unique location address in the FLS engine. That might be our ticket to getting the colours. If we can already remap the note output, then we could get the colours too I think. The python scripts can already get colours for other objects already. So this wouldn’t be that much of a jump. It already gets channel colours for the step sequencing in the channel rack.

I have the ideas to make this unit cherry :ok_hand::cherries:. But I don’t have the know how to make my ideas a reality.

I wish you had a Fire, especially since you already know how to configure the script. I almost want to buy you one, if I had the money.

It’s weird that it doesn’t work, because it’s just a straight import and the scales are imported the same way. But somehow it’s expecting a module?
That would be ok, if there was an init file for the module, which there isn’t.
I don’t even know if that’s supported.
This already shows the deviation from normal python practices.
I bet there’s a special case for the scales file, or they’re enforcing their specific file naming scheme.

The other thing about this script is that the event handling function is gigantic.
If you want to change anything about the way controls are handled, you’ll be doing a lot of searching and you’ll easily break things.

My idea is to separate the control handling completely and split it up into smaller functions so it’s easier to know what you’re changing.
But that would require imports to function normally.

I’m pretty sure the scales was an update to the factory script, because people were requesting more scales and Miro (or Milinor, I don’t remember) ended up making them.
It isn’t referenced in the update notes, but I do remember reading about it, but don’t remember where or when. So it seems like the scales file is an unintentional add on to the base script.

Let me know if it’s too much hassle to continue. From the sounds of it, I couldn’t say I blame you.

It’s not too much hassle, no worries.
I want to figure out these scripts myself too.

But it’s gonna be tomorrow cause it’s getting late here. :sleeping:

1 Like