NI Traktor Kontrol S3 Mk3 in FL Studio - Long keystroke sequences, Assigning MIDI Aliases ... and more

Hi, I’m trying to use this DJ controller in FLS. :grinning:
First problem is the MIDI ‘FAIL’ and ‘Not enough memory’ popup I get when using a virtual out port in Bome’s MTP. The controller *is being detected and is working fine in FLS. I know that I can get it working with both programs without these warnings, but forgot how.

(I did enable the Bome MTP input port after I snapped this pic)

Here is my virtual routing. I created the ‘Traktor Kontrol S3 for FLS’ alias. Don’t know why, was just trying stuff to see what works.

Second problem is it only has the one user bank.
Can I use ‘preset change’ output to make multiple user banks on the same device? Push the button and the rest of the parameters will send out something else to FLS?

Third problem is the lights. None of the buttons are lit up in MIDI mode. Can I configure the lighting in MTP?

Fourth problem is it’s sending a different ‘channel’ for each and every single knob.
Is this normal?

One of the faders are even conflicting with other MTP presets, because it’s sending from channel 2. ? It’s not even the same port but moving the fader, I get a mouse macro response, whether MIDI Buddy is running or not.

The pads send a message that looks like this, just so you know:
Pad 4

Fifth problem is dead buttons. The four ‘channel select’ buttons that actually light up, don’t send and MIDI signal at all. Can we get these working?
I’ve asked NI about the lights and dead buttons; awaiting a response.

Sixth problem is the platters. They send these messages:

I would like them to send different messages depending on the direction.
Maybe platter right: clockwise: output: page down (zoom out)
counter clockwise: output: page up (zoom in)
Or a hotkey to move the play header by bar: clockwise: * counter clockwise: /
Or I would just be happy if the could move a knob normally. Is this possible?

Wow, a lot of different questions in one thread. Getting late here in USA west coast time. I’ll get back to you tomorrow morning my time.

*First problem is the MIDI ‘FAIL’ and ‘Not enough memory’ popup I get when using a virtual out port in Bome’s MTP. The controller is being detected and is working fine in FLS. I know that I can get it working with both programs without these warnings, but forgot how.

SJC> Well you should NOT select your original controller in FL studio. In Windows only ONE application can open a specific MIDI device. Since you are running through MIDI Translator with output to Bome MIDI Translator Virtual One (BMT 1) port, you should use that port instead. If you need multiple applicatinos to have access to your controller, then you go through MT Pro giving each application, its own unique port.

Here is my virtual routing. I created the ‘Traktor Kontrol S3 for FLS’ alias. Don’t know why, was just trying stuff to see what works.

SJC> If you are using Aliases, please set up routing and translators to work with thier “Alias” names only and not the physical ports (virtual or physical devices). For Example, if you have an input alias called “My Controller” and it is assigned to “Bome Mome MIDI Translator 1 Virtual In” and you check both input boxes in your incoming ports table, you will see double MIDI messages, one from the original device and one from it’s alias. The same is true for outgoing messages. This holds true whether you select the devices in your static MIDI router, project level, presets or translators.

See this tutorial.

Second problem is it only has the one user bank.
Can I use ‘preset change’ output to make multiple user banks on the same device? Push the button and the rest of the parameters will send out something else to FLS?

SJC> See this tutorial for how to use presets to switch to different virtual banks.

Third problem is the lights. None of the buttons are lit up in MIDI mode. Can I configure the lighting in MTP?

SJC> Typically to light an LED it is a note message and you send a Note-On with velocity of the color of the LED (start with 127). You might need to experiment with colors. In your case you mentioned 91 0A 7F which is note-on message, so send 91 0A 7F back to your controller to turn the LED on and 91 0A 00 to turn the note off. This is not always the case but most controllers work that way.

Fourth problem is it’s sending a different ‘channel’ for each and every single knob.
Is this normal?

SJC> Yes, this is normal. However you may want to re-write your incoming triggers to the target channel instead of any channel, or put in rules to restrict which channels you want to listen to.
For instance in your example, translator 4.0 is lookin for Control change on any channel so unless there is a rule to look at the incoming channel and “skip rules exit outgoing action” if it is not the right channel, the outgoing action will occur on all channels. I cannot see the rules of your translator 4.0 so I’m not sure what the translator does and whether it filters out given channels within the rules.

One of the faders are even conflicting with other MTP presets, because it’s sending from channel 2. ? It’s not even the same port but moving the fader, I get a mouse macro response, whether MIDI Buddy is running or not.

SJC> Maybe you are looking for input from more than one port in your translator (see discussion on aliases and port selection earlier.

Fifth problem is dead buttons. The four ‘channel select’ buttons that actually light up, don’t send and MIDI signal at all. Can we get these working?
I’ve asked NI about the lights and dead buttons; awaiting a response.

SJC> My guess is that these buttons just internally set a different state within the controller. If it doesn’t send MIDI, there is not much we can do. With that said, pressing one of these buttons may make other buttons send different messages depending on which of the 4 buttons you press as it may be be putting your controller into a differeent mode.

Sixth problem is the platters. They send these messages:
<> Example above

SJC> The messages are relative encoder messages. For right turn you get 65,66,67 for movements of +1, +2, +3 etc and 63,62,61 for movements of -1, -2 -3 etc. In your case clockwise sends positive movement and counter-clockwise send negative movement.

You will need to use 2 translators to produce different keystrokes for positive and negative movement. Only one keystroke fires in each translator

First translator (right movement), we look at qq

if qq<=64 then exit rules, skip outgoing action

Then outgoing keystroke “*”

Second translator (left movement would have rule:

if qq>=64 then exit rules, skip outgoing action

Outgoing keystroke would be “/”

See this tutorial for relative to keystroke.

If you want to convert relative to absolute encoder, see this tutorial.

Steve Caldwell
Bome Customer Care


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

I know that I can have a MIDI controller enabled in both programs, because it is working with my Novation Launch Control XL.

In FLS, it’s enabled without failure. And in MTP, it also works. I have the hardware knobs linked to knobs in FLS, and the buttons running through MTP.

The Traktor Kontrol S3 Mk3 is detected and working in both programs. It’s not enabled in FLS, but still being detected. No idea.
I don’t care if it’s enabled or not, as long as it will be working as I’m trying to get it to, without the errors. I will be requesting Image Line to suppress their MIDI error pop ups. They’ve already made a ‘suppress popups’ menu a while ago.

The Traktor device isn’t ‘FAIL’ in the pic, but it is currently.
My current Bome MTP MIDI port settings for the project:

I’ve done trial and error for every port setup I can think and this seems to be working for now.

I can make virtual user banks now, and it works with the buttons. Preset 1 on pad A outputs keystroke ‘P’ and Preset 2, using the same button outputs keystroke ‘B’.
But MTP isn’t suppressing the device’s original MIDI output. It outputs note on/off signals for basically everything, so FLS is playing notes. How can I suppress the original device output? The ‘swallow MIDI message’ isn’t doing it.

This issue is stopping the knobs from linking up in FLS, with the virtual presets. I assigned a knob translator on Preset 1 to output channel 5. Same knob in Preset 2 outputs channel 6. But FLS is only linking up the original output of channel 12 in both instances. And it’s playing notes when tweaking the knob.

(I stopped manually putting the input channel to ‘any’ now. I just leave it as it is detected by the ‘capture MIDI’)

The platters zooming in/out by direction is working good. Except it’s way too fast.
I have to slow it down by at least 4 times or even 8. Is there a rule where it needs to receive multiple copies of an input before it triggers the output once, or something?

I will have to try setting up the lights later. NI tech support escalated to senior members, because the guy didn’t know what to do. Awaiting on a response.
I suspect that the four dead buttons are supposed to switch user banks, because the one you press glows brighter than the others. The ‘Shift’ button lights up when pressed too, but it’s also dead.

I captured the debug log in FLS for the conflicting fader. It showed this about 10 times first:

Touching Tempo Fader

And then this a bunch of times:

Touching Tempo Fader 2

In MTP’s log window, it shows this:

While it is logging these things, the mouse cursor is moving all over the place and clicking things. I’ve disabled presets until I isolated a Novation Launch Control XL preset is the conflict. I have no idea why they would conflict, as they are different ports.
If I can’t get MTP to suppress this controller’s MIDI output, I’m a dead duck.

I am not sure why it is working that way as this is not default Windows behavior with MIDI ports.

If you have MIDI thru paths, the output will not be suppressed unless all of the below are true

  1. The proper output port is called or overridden from default project ports at the preset or translator level for all translators with relevant incoming triggers
  2. The translator executes it’s outgoing action or the outgoing action is none.
  3. Swallow is set in the outgoing action

If your translator does not execute, and you don’t want the MIDI message to go through you either need to remove the MIDI thru path or set up a translator with outgoing action of none to suppress it (or have the conditions met above.

I would need to see the project file (or at least the relevant translators and their log messages) to see what is happening.

Yes, you would need to count up or down with a global variable and apply a mod (%) operator so that as the count increases or decreases it only outputs by x movements as valued by the mod operator

// after incrementing or decrementing ga (and setting limits)
// This will only output every 4 clicks
tt=ga%4
if ga!=0 then exit rules skip outgoing action

I really don’t know what this screenshot is showing. It does appear however that maybe some of your controllers on you you S3 is sending 14 bit MIDI messages so maybe converting them from 14 bit to 7 bit would be warranted. In this case you should only use the MSB and ignore the LSB. You loose granularity at the cost of compatibility with FL Studio.

Hard to see what is happening as you are not capturing output in the log. Although I’m not sure why you are always setting the value to 36.

I suspect your launch control is bypassing MT Pro and talking directly to FL Studio. Another reason to disable it in FL Studio and only look at it from your Bome Virtual Port.

Steve Caldwell
Bome Customer Care


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

To be fair, Image Line did create support for the Launch Control XL. That is why it is on port 205. I studied the support page they made for it, and followed the instructions. That is the port it likes to work at. Notice the port 206 is MIDI out 2, with its name selected as the “driver”. That is the factory port, where they had manually mapped a bunch of integration with FL Studio, but I don’t use that; just the user banks/port 205 (it has two modes on the hardware; factory and user).

So the two differences between the two devices, is the DJ controller is not “supported” by Image Line, and it has no editor where I can tell the device to send cc’s or something, instead of notes. Maybe the Launch Control is sending cc’s to FLS in parallel with MTP, but I can’t notice it because it has no effect. But the DJ controller does have an effect because it sends notes on/off.

So that’s my problem. I need FLS to be able to detect the controller, so I can link its knobs to the device knobs. But I need MTP to intercept the message before it gets to FLS, changing what the knobs send to FLS, configured by me, with virtual user banks, and suppressing the stupid note triggering. That’s what translating means, yes? Changing the message from one thing to the other?

I don’t care if it there is a MIDI thru port or not, as long as it is working. Anytime I remove the thru port, FLS hasn’t been able to “see” it, and it’s useless. I was only setting it up however I can get it to work, not knowing what’s going on. I watched the tutorials, but it doesn’t really explain my use case.

In the FLS MIDI settings, all the detected devices set up their own ‘out’ port by default. I take it off, by dragging down the port number until --. But then it resets itself on boot up. So is there a feedback loop between FLS and MTP? “Send Master Sync” is only for MIDI clock sync with outboard gear. Pretty sure I don’t need any out ports from FLS? The only thing that I need to sync with FLS is my Akai Fire.

You say that I need to call or override the default project ports at the preset or translator level. How do I do that?
Here is the current project, if you want to look at it. (The Traktor presets are a work in progress) Feel free to change it however it will work and send it back, if you want.
TJ MB Project.bmtp (75.6 KB)

I have no idea how to set up the formula for the platters to slow down.
Could you stick that in one of the platter translator for me please?

I don’t mind converting the output to 7 bit messages, as long as it works. I’ll use black magick at this point if it just works.
See the “knob tests” in my Traktor presets, showing how I tried to have the two different virtual banks send different channels from the same knob. But that didn’t work. FLS still detected only channel 12 for both knobs, so the one linked over top the other and discarded the previous link.

I wasn’t “always sending a value of 36” when moving the conflicting fader. I think that I just had a steady hand, that was moving in a uniform movement. I have no idea what is going on with that fader. I was hoping when I get MTP to suppress the original device output, the conflict will clear up.

At the end, where I said “If I can’t get MTP to suppress this controller’s MIDI output, I’m a dead duck” I am referring to the DJ controller. The Launch Control XL is working beautifully. Thanks to your previous help, of course.
Thank you again for all the help. :grin:

Are you sure you sent the right project? I don’t see either launch control xl or S3 MK3 defined.

For your Launch Control XL, use the tracktor driver but route it through MT Pro with a thru port to BMT2 and visa versa. If it isn’t going through MT Pro, you won’t be able to translate it and if it is hooked up directly to the application, MT Pro will not see it.

From application standpoint it should look to BMT1 for anything to and from your S3 and BMT2 for anything to and from your Launch Control.

Yup, that’s an old project with the exact same name. I have the working project in a different folder apparently, one that auto backs up to the google cloud because it’s important. This should be the one:
TJ MB Project.bmtp (211.3 KB)

Interesting,

Nothing in your project file is sending to any MID ports so either you sent me the wrong file again or I can understand why not much is working. All of your translators output keystrokes or mouse clicks so it shouldn’t make any difference how you sent your MIDI input ports in your application.

Your iCue Macros send keystrokes, that get translated to mouse clicks, however understand any keystrokes you send to Bome MIDI Translator will not be suppressed so both the keystroke and the mouse message will be sent. Swallow does NOT swallow anything but MIDI messages so none of you iCue Macros would work correctly. If you want to swallow keystrokes, you will need an application that does that and possible converts to MIDI as well.

Each preset, however should have just the input MIDI device you want to monitor for that preset. With out setting preset defaults, MIDI messages will be seen from all attached devices. To fix this, go to each preset and select just the input device(s) you want to monitor for the translators under that preset.

Outgoing keystrokes, mouse actions and Movements will go to your computer application in focus at the time.

See this tutorial on how to set up for proper inputs and outputs.
It is only partially relevant since you are outputting keystrokes, and mouse actions and not MIDI so you should only worry about the input.

If your Launch Control XL is indeed also hooked up directly to your application then you should be able to use it that way however if you want it to also translate to mouse and keystrokes in the project file you need to route through a Bome Virtual Port (as I suggested BMT2). This is because as I said earlier, 2 applications cannot simultaneously share a MIDI port on Windows.

Steve Caldwell
Bome Customer Care


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

Yes, nothing until now needed a MIDI out port from MTP. Instead of iCue, I was using MTP with MIDI Buddy so the mouse will click on a part of the screen and move back, without jumping. This function isn’t available in iCue.

So in iCue, I assign my desired shortcut to wherever on the keyboard I want it, and have its output as an available free keystroke. The input in MTP is that keystroke and then the translator is that mouse movement macro with MIDI Buddy.
So I get to put the shortcut on the qwerty key of my choosing, and I also get the mouse actions that are so fast, it just looks like a regular keyboard shortcut.

You helped me figure all that out a year ago. I’m not concerned with what the iCue preset is doing; it is working fine, and just happens to exist on the same project as the issue I need help with: the DJ controller.

It’s the same thing with the Launch Control. I only use the buttons in MTP for the mouse click translators, on the hardware buttons. The knobs I have linked up in FLS without any third party interference. For example, on user bank 1, it’s my mixer bank. The faders and knobs are linked to mixer track parameters. But the mute/solo buttons can’t be linked to a controller in FLS. So I have the buttons as translator in MTP; they make the mouse left click on the mute button to mute, and the upper button Alt + right clicks the mute button to Alt Solo it. Works good. :slightly_smiling_face:

I didn’t know that I needed to use the “MIDI Router” port patch bay. Thought that clicking on the check boxes in the port selection area, makes whatever device is in the input, output to the port with the checkbox, as per any other program ever.

I’ve changed the Novation Launch Control XL presets input to the specific port, as per the tutorial, and the output still to project default because it doesn’t need an output. It just clicks on the screen with the mouse. FLS handles the knobs.

I’ve changed the Traktor Kontrol S3 input port on the preset level to the specific port, as per the tutorial. But it does have an output because I will need the knob user banks. I chose specific port Virtual Out 1. The other factory virtual out port is for legacy projects, yes?

And I made the DJ controller output to the virtual port:

So Windows can only see one MIDI device at a time. Ok, so this is exactly why I’m confused as to why MTP isn’t suppressing the DJ controllers output. Why is FLS receiving the original note on/off commands *and MTP’s translator outputs, from one device? I don’t even have the DJ controller enabled in FLS, yet it is still receiving the original messages.

Here is how I’m thinking of it:

Could you add the formula for slow down platters please?
It is too advanced for me. It’s in the “Bank1 Master” preset. I could copy/paste a simple line, but that’s all I know how to do. I’m just a carpenter.

TJ MB Project.bmtp (211.9 KB)

Native Instruments just got back to me. I’ll copy paste their wording about the dead keys and lighting:

“The A C B D buttons are layer switches that are hardcoded. So you get one set of midi controls on layer A another on layer C. Same for B and D. The LEDs of the individual deck buttons have to be assigned from the software by the user. So when you map, e.g., a button to the Play function, you also would need to map the MIDI output from Traktor of Play to the MIDI input of that button.”

So that sounds like four available user banks to me. That’s good news. I’ve tested them out already though and found them sending the same messages, but I’ll investigate further.
I like how he says to “map out the lights with software”. Uh huh. You mean like the controller editor that NI doesn’t make available for this unit?

Hi,

First of all I set up an outgoing MIDI port for Preset number 4 since you are sending MIDI in translator 4.0 (Alias FL Studio for Lauch which points to BMT2

I added a few global variables

gm handles count for left/right
gn handles count for page up/page down

Translators 11.3 through 11.6 have rules that count ticks between output. Changing the value of uu in each of these translators will change the amount of ticks between keystroke output.

The rules pertaining to the global variable zz can be ignored. I use this for debugging in my Beta version of MT Pro.

Presets 11 and 12 each have a translator with incoming note of 14 to activate the other preset

I set up Preset 11 to disable preset 12 upon activation
I set up Preset 12 to disable preset 11 upon activation

In this way we can ensure only one of the two presets are active at any given time.

At the project level, we define only the aliases we use in the project so that we don’t duplicate message from an two the physical ports.

I know you are not yet sending MID from S3 to FL Studio but I have a MIDI thru path for that so that if you don’t have a translator, the messages will pass through untouched. (BMT1)

Right now, no MIDI feedback from FL Studio to back S3 but the alias is set up. You will need to either
add translators or a MIDI thru path. Same for FL Studio back to Launch.

I added a translator to launch single shot “INIT” timer at project opened. The Init timer has other outputs that handle doing housekeeping such as setting the global variables to a known state.
TJ MB Project (2)sjc.bmtp (213.0 KB)

Steve Caldwell
Bome Customer Care


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

Oh and your application should only have BMT1 and BMT2 ports open.

And I disabled preset “iCue Macros” when I worked with your project and forgot to re-enable it.

I could not enter comments (which use the “/” key) when it was enabled.

Steve Caldwell
Bome Customer Care


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

Awesome, thank you so much.

The unit still ‘fails’ on boot up if I enable it, but if I keep it disabled, it is still detected by both MTP and FLS. I dunno. I will keep trying to set it up and use it as ‘disabled’ in FLS. I assume FLS is reading it through Bome’s port 25 enabled input. That is fine. Either way, you corrected the project setup; I’m grateful, thank you.

If I make a translator for a parameter, it still doesn’t swallow the original signal, so FLS is still receiving notes and playing an instrument because of it. I really don’t know what to do about that at this point. Is there a rule formula I can put in all translators that says to numb the device’s MIDI input after the translator processes, before it goes out of MTP?

I discovered that these mysterious ACBD buttons only change the MIDI output of the deck sections, leaving all the mixer knobs only the one bank (This is why I couldn’t figure out their use before). This isn’t that useful; the mixer has most of the parameters. Think that I won’t be utilizing that.

S3 MK3

It got glitchy too. When enabling the dj controller, the Launch Control user bank 1 lights went dark. All banks still worked fine, just lights glitched out. Then disabling the dj controller, the bank 1 lights reenabled as a factory preset, not my configured preset lights. Strange. I think that had something to do with me testing out these ACBD bank buttons. It also broke the platter translators. They were working, and then they suddenly weren’t. It was back to the note output when moving them. Very strange.

The platter slow down formula works great. Thank you. I made it a little slower by changing it to uu=6, instead of 4. Think that was the way to do it.

You’ve discovered the hassle of the iCue preset when trying to type. Ya it’s annoying. That’s what the ‘suspend MTP’ was about. If I could find some other way of communication from iCue to MTP, I wouldn’t use any keystrokes. But that’s what I have to work with.

Sorry to be such a pain. I’m almost there. If I can just get the notes to not end up sending to FLS, having my MTP translators sending to FLS instead, I’ll be all set I think. :hugs:

Try setting the output of all presets that only do keystrokes to some unused BMT MIDI port. That should fix your problem with the Launch Lights because if you don’t override in the preset, messages will go to all currently ports defined as output ports at the project level.

Steve Caldwell
Bome Customer Care


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

Ok I will do that. But can’t right now.
There is a bug that has been haunting me for a while now. But it used to be so rare that I didn’t bother to report it; thinking computers just glitch out sometimes.

After a while of moving in and out of MTP, opening closing, changing things, using it, saving projects… it eventually refuses to open for me. If my MIDI devices are on or off, FLS open or not, doesn’t matter. Clicking on the MTP icon to load it up, it just opens, then closes. I move my mouse cursor over to the system tray where it is, and the icon just disappears. It doesn’t load up MIDI Buddy either, when this glitch happens.

The past few days it has happened to me like five times. I have to restart my computer for it to work again. But right now I restarted and it still won’t open.
Now I’m in real trouble.

Restarted and it’s working now. Then it didn’t work. Restarted again, works again.
Platters formula had a backwards symbol so clockwise didn’t work. Fixed that. Then the DJ controller wasn’t being detected at all. Restarted now it is. So it’s been like that. Think I will wait for the update and reinstall MTP.

Having separate virtual ports for the devices broke MIDI Buddy because it only has the one output that the devices have to share among them. So I put it back how it was before. I will keep an eye on the numbers to avoid conflicts. That old fader conflict I spoke of cleared up because of the routing, as I suspected it would.

Somehow I managed to route it so I have FLS reading the S3’s output from Bome without the original interference. Success! I have no idea what the difference is from before, but it’s all good now.

One last question: The output for a MIDI knob can’t be at value 64. It has to some kind of variable formula for a normal knob operation. Here is how I have it set, but it just puts the plugin knob to the center. What is the formula for setting it to a 1 - 127 range normal knob?

I found the youtube channel tutorials. It’s input variable value=pp
Output value=pp. So nvm.

Great, glad you found it!

Steve Caldwell
Bome Customer Care


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

Hello, me again.
Is there a formula for imitating holding down a qwerty key?
I would like one of the buttons, when I press it as a toggle on/off, to hold down
the Ctrl key. And one for shift.
So is there ‘hold’ ‘toggle’ and ‘momentary’ type inputs?

I never used to have to choose my ports on the splash screen at boot up.
No matter what MIDI controller was plugged in or not plugged in, it never bothered me. It just auto open and closed ports as devices were turned on/off. Now it shows every time on boot up. How do I make that screen go away for good again?

MIDI Splash Screen