Akai Fire exclusively mapped?

Looks like maybe a FL thing. Set it to 80 and see what output you are getting. If it said 127 it would make more sense as 100% of 127 would be 127 and maybe FL is working in percentages rather than MIDI velocities.

Implicit is shown when you use aliases and using the alias “implies” opening the underlying real port that the alias uses.

Steve Caldwell
Bome Customer Care

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

Ya it outputting 0-100 percents instead of 0-127 does make sense. That is the scale the FLS editor uses for its MIDI notes.
So if I change the if ua=100 then GoTo “100”
to if ua=120 Then GoTo “100”
It works again. Didn’t think to do that before.
The reason the orange colour isn’t showing, is I’m getting duplicate light messages when pressing the pads. I set it up to have light feedback when physically pressing the pads when there is no playback. I also set it up to get light feeback coming in from FLS during playback, so the pads light themselves up according to the MIDI score in the pattern.

So I get both inputs (from the Fire and from FLS) when pressing the pads, but only the one input from FLS during playback. So the pads displays orange from the Fire output, and then white comes in from FLS, taking over the orange. It happens so fast I don’t even see the orange.

I don’t like having the duplicates even if the orange is working now. The problem is muting the MIDI Out generator doesn’t silence MIDI messages. I’ve ranted to IL in the past before about this. So I’m not sure how to only have one input when pressing pads, except for disabling the preset when pushing the stop button and enabling it on the play button. That might be what I have to do.

This is likely what you will have to do.

Steve Caldwell
Bome Customer Care

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

I actually realized that if the preset that returns light feedback from FLS works for both pressing pads and playback, then I don’t need the first preset at all (that only gives feedback with button presses).
But the lights can get out of sync because the MIDI Out pattern has to be the same MIDI score as the current pattern I just made. MIDI Out can’t read data from plugins; it has to have its own MIDI score pattern to work. Which is of course LOL.

I locked both generators to the same input to try and solve this. So recording notes from the controller actually changes the notes in both patterns at the same time, keeping them synced.
But as soon as I start making changes to a pattern with anything other than the controller, it breaks this whole thing. So I will have to manually overwrite the score from current one to MIDI Out every time it’s out of sync, just for light playback. That’s a waste of time. Image Line’s bad programming wasting my time? No never.

I also just realized that note transpose is incompatible with the playback light feedback. Say a pad is set to trigger on note 60. If I transpose up one octave, now that pad and the one above it lights up when pressing the one pad, so it’s all messed up.
I’m telling you these things because I just wasted two days of my life being excited going down this path and finding dead ends, so I’m ticked.

I could potentially solve it by using the transpose global variables to tell pads not to trigger with certain inputs, but the complexity of which numbers do what and when is tying my brain in knots. I would have to be careful that pads don’t cancel out their own lights in the process.

I could solve it all by having dedicated presets for every note transpose. I currently have 4 transposes, and the note group has four colours/presets. So I would need four feedback presets for each transpose colour. I would need 16 different presets just for four note group lights. Ugh.

I want to keep transpose so I will scrap the playback light feedback for notes. Drums don’t transpose so I can keep those ones. And the drum plugin stays the same; to get different drum kits I change the preset, not the plugin.

I was going to do a note repeat, using what I learned from my glissando machine, but the FLS arpeggio feature is right in the next tab of plugins so using that can repeat notes by itself.

For LED feedback, it is important that all incoming notes from FL Studio are 0-63. If you transpose the outgoing notes and always want them to fall into the 0-63 range. Say the incoming note is pp

if pp>63 then pp=pp-64

Then send pp to the Fire using your SysEX conversion method.

Keeping the buttons pressed on the fire in sync with FL Studio will be another story. You will need to decide in the case they are out of sync, which device will take precedence. You may need to track all buttons and use a timer to refresh all LED’s with the value of each LED when there is a conflict. Either that or clear all LED’s and start over.

Steve Caldwell
Bome Customer Care

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

Ya. That’s an idea. It might work; I will test it soon.

I’ve been using global variables for everything note related. Thinking that I had to. Every note has its own dedicated global variable. Maybe I could use local variables on the note lights instead.

I don’t like having several paragraphs of processing for each note press. I’m sensitive to that ever since I saw MB flooding MTP with mouse location messages. Even though MTP has a ‘capture’ feature for inject events, MTP still has no ability to capture and return mouse clicks, which is bizarre.
Same story with Corsair’s iCue. It’s literally the mouse driver for the computer, but iCue doesn’t have this ability either.

This is why I abbreviate everything in my MTP project, delete out commentary and even have presets that disable a controller’s presets when it is unplugged (then reenable on plug in). I’m assuming MTP doesn’t read presets that are disabled.

I might actually go for the preset change method because of the processing load. Even though MTP processes lightning fast, I would prefer to do the processing myself beforehand and so MTP just has to do direct things without thinking about it. I would have to think about it one time instead of MTP having to think about it repetitively in real time. Music processing is bad enough without anything added.

The MIDI Out plugin can actually send out different things on customizable knobs. Notes, RPN, NRPN, AFT and CC’s. With different value ranges on them. Each knob can have its own channel output too. That might be the trick. I could link the knobs to a controller, and add another translator to my transpose buttons to send the exact value that changes the knobs to the correct octave.
MTP doesn’t have a translator output that can transpose?
I was going to ask if a rule can have a range instead of just one thing equals one thing.
Such as, if pp=24-60, then qq=60, for example.

// if pp=24-60 then qq=60 The below rules should handle your logic.
if pp<24 then skip next 2 rules
if pp>60 then skip next rules

Steve Caldwell
Bome Customer Care

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

Ok thanks, that is useful for anytime I need ranges.
But for these lights if I do any greater than/less than, it will conflict with my velocity locking at the 100 and 127.

But a cool thing I discovered is in the general settings there is a ‘Generator Mute Channel’. Set it to 16, so I can toggle on/off the MIDI Out with a button press if I don’t want feedback animation. For some reason it actually blocks its output, when FLS usually doesn’t block MIDI at all. Dunno, but I’m happy with that.

Speaking of the velocities, the MIDI Out plugin decided it’s now going to convert 100 velocities, not into 120’s as before, but now 116. Breaking my 100 velocity lock once again. I didn’t change anything at all, but it’s sending a different value. FL Studio is just trolling me at this point.



I’m never going to get this thing finished :sob::sob::sob::sob::sob::sob:

I can’t fix what IL sends, however you can always change the velocity coming from FLS to something else to send to your Fire. Input from FLS any velocity output to Fire - Velocity 100 (or whatever you want). Of course running the value through the RGB SysEX conversion.

Steve Caldwell
Bome Customer Care

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

After studying the ‘Stop Processing’ flag for a while now, I still don’t get it.
I’ve been putting it on everything possible; if it won’t break other things. I assume that’s how to do it. Put it on all my note feedback lights because they still seem to work with them all ‘stopped’. But it seems to be inconsistent. If I put it on my note outputs preset, it breaks the ‘Light On’ translator. Same thing on another identical preset, it breaks the ‘Light Off’ translator. A third preset, it doesn’t break anything. I don’t see the difference in why that happens.

So I’m not sure how ‘stop processing’ affects other presets and outputs in other places; other than it stops reading that particular preset. ? Apparently it makes MTP stop reading the preset and goes back to the top of the list to monitor for another incoming message.

Btw, the ‘Stop Playback’ MIDI message pauses FLS, instead of stopping playback.

From the manual page 34

Stop Processing

If this is enabled, successful completion of this translator’s Outgoing Action will cause
the rest of the translators in the current preset, and in following presets, to be ignored.
This is useful for multiple-part presets that have different processes depending on
different defined actions. In general, it is essential if you want to ensure that one
incoming event is only processed by the first translator that matches.

The key areas to remember here is for stop processing to work both of the below cases must be true.

  1. The incoming trigger matches the translator
  2. The outgoing action executes

In the second case, if the you have a rule like the below that is true then stop processing will not occurr

// stop processing will not happen if the below is true
if pp==0 then exit rules, skip outgoing action

Page 89 of the manual (Help or F1 with MT Pro) has really good flowchart that shows how this all works.

Steve Caldwell
Bome Customer Care

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

Ya but I’m getting strange results. Maybe because of my routing, but I dunno. None my note rules have a ‘skip outgoing action’.
If I stop processing on a note out (C4 for example), it will break all other notes in the preset. They never work when pushing their buttons. They all have unique inputs so when pressing a different note, the first stop flag shouldn’t stop any other notes because when pressing those other notes, the first one didn’t process, because it wasn’t pressed.

Moving the preset down below the light presets gives me different results on the note sound itself (triggering FLS instrument) instead of different light results.

In this project example, I cut out the presets I’m working on, I have NOTE A triggering any instrument in FLS that is focused. NOTE OUT is just a MIDI printer that will record in the same notes into the MIDI OUT plugin’s pattern, so I can have light feedback to the Fire, coming into NOTE IN without having to manually copy over the pattern in FLS. The presets have unique routing, so they shouldn’t be conflicting.
Stop Flag Test.bmtp (162.9 KB)

It’s confusing me because my drums preset behave differently, but they are technically identical. Stopping the notes will break the lights, but stopping notes in NOTE A will break the note sounds, and not the lights. SD is one of my drum presets (SuperDrums).

This isn’t important, I just thought to help MTP tighten up redundant processing.

I have a bunch of global variables that I have set to init at =0. la=0 lb=0 etc.
Is this pointless? On project open does the MTP system default global variables to 0 anyway?

Remember the velocity curve I adjusted a while back?
Ya, that was the reason MIDI Out was sending me 122, and 116, instead of 100. Resetting the spline puts it back to 100.

Velocity Map

Oof :persevere:

I blamed Image Line for that. Told them it’s broken. Now I have some explaining to do.

Sorry, if I misspoke. Stop process stops the entire chain of events after the current translator if the current translator executes. This is to ensure, that if you know you don’t have anything you want to do in your preset, translator list below. MT Pro doesn’t waste any time on those translators. As such, I seldom use stop processing as I usually want to do something else in the translator list.

For instance

Incoming - Note-On MIDI CH 1 Note 60 set to pp any value
Outgoing - Control Change MIDI CH 1 value 127
Stop Processing

Incoming - Raw oo pp qq
Outgoing - Keystroke - K

The second translator will never execute. If you change the order, however they will both execute but nothing after the one with Stop Processing

However if you had a rules in the first translator you had a rule.

if pp==60 then exit rules, skip outgoing action.

the second translator will execute since the first translator did not because of the above rule.

I’ll take a look at your project file when I get back to my PC. Right now I’m replying on my Chromebook so cannot look at it.

Steve Caldwell
Bome Customer Care

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

Well as far as I can tell the project file you posted behaves as MT Pro is designed.

I’m still struggling with what you are trying to accomplish so let me try and echo back to you what I think you want.

  1. FL Studio lights up the Fire lights with the desired color from FL Studio (playback mode)
  2. Pressing a button on your Fire lights up the Fire lights with a color of your choice as you press the button and turns off when you release the button (record mode)
  3. If pressing a Fire Button and Playback is in progress you want to only light up the Fire lights from the playback of FL Studio and ignore the button presses on the Fire.
  4. As you move from from record mode to play mode, clear all of the Fire lights
  5. As you move from play mode to record mode, clear all of the fire lights.

If 4 and 5 are true, what is the incoming trigger to switch into play mode and out of record mode and visa versa?

Steve Caldwell
Bome Customer Care

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

It’s time to make the demo video, but I’ve been doing some desk construction first. And keep running into variables that are backwards so I’ve been debugging for a few days. Will upload the vid in a few days.

Looking forward to it!

Steve Caldwell
Bome Customer Care

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