Working around Pioneer equipment. Exclusive MIDI connections


Hi all,

Been a while, this one’s probably for you Florian.

So I’ve been messing around with Pioneer’s RekordboxDJ after years of fruitful Traktor dealings and I’ve always been frustrated with Pioneer’s incessant desire to limit how we use their equipment. This time without Bome’s MT you literally can’t control lights on a controller effectively. With the Push I have I’ve used nearly all the globals just to give a single colour to each page of lights, no states can be recorded so its as flat as a pancake.

Anyway I digress, the question here is this:

Can we make it so that MT ignores a particular MIDI device when it starts/restarts, and by this I mean it will never show up in the list of available and closed ins and outs.


Now for the gritty explanation:

I have 2 CDJ2000NXS2’s and a 900NXS2 mixer, I have discovered that if the 3 are connected via Cat5 network cable and the mixer through USB to the computer you get the best of both worlds. Full colour waveform on the decks and the BPM of the mixer follows exactly the master deck tempo (unlike with seperate USB MIDI connections to the comp where it uses the audio in the channels and fluctuates a bit).

This system when you push “link” on the CDJs is called DJM900NXS2 MIDI and is through the mixer as I said. The problem comes when now that I can guarantee the Clock from the mixer is exact and correct I want to use it in MT. But picking up the 900NXS2 into MT breaks the connection. And the Pioneer software does not expose the connection to you in their MIDI manager so you cannot switch it to BMT3 for example.

So there are 2 USB’s on the mixer and the MIDI will connect both to a comp but not the audio on both, but RekordboxDJ picks up both or none on the MIDI side.

What I propose is I turn on MT and pickup the 2nd cable and Rekordbox picks up the 1st afterwards, but I need MT to completely ignore the 1st or Rekordbox won’t see it and if I do the opposite and run RB 1st it won’t pick it up in MT.

Hope you can help


Marked as spam
Posted by (Q&A Forum: 2, Answers: 22)
October 28, 2017 5:53 pm
Private answer

Just to make it clear on what BMT Virtual ports do and do not do:

This will work

Device  ->MT Pro ->BMT1 -> Application

Application ->BMT1->MT Pro->Device

Device ->MT Pro -> Device

Application A -> BMT1 in  -> MT Pro -> BMT1 Out -> Application B

The below will not work

Device -> MTPro ->BMT(x) Out -> BMT(x) In ->MTPRO – BMT(y) Out -> Application

In other words, only one end of  a given BMT port can be connected to MT Pro. The other end needs to be a device or application

However you can do this if you have a 3rd party virtual port (using LoopMIDI as an example)

Device -> MTPro ->LoopMIDI(x) Out -> LoopMIDI(x) In ->MTPRO – LoopMIDI(y) Out -> Application

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 30, 2017 6:53 pm
Private answer

Hi Robbie,


I was watching your video but did not watch the whole thing. I stopped when I saw a glaring problem.

You were trying to connect BMT3 Out in Bome back to BMT3 In to Bome. You cannot connect BMT to Bome on both directions. One end has to be either an application or a device. You are trying to use BMT virtual ports as a pipe and this will not work.  I suggest you try the same thing with either LoopBE or LoopMIDI or some other third party MIDI pipe. Then it should work. I think both LoopBE and LoopMIDI are free with some restrictions. I use LoopMIDI on my Windows machine all the time for this type of thing.




Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 30, 2017 5:43 am
Private answer

Damn it here’s the screenshot

Marked as spam
Posted by (Q&A Forum: 2, Answers: 22)
October 29, 2017 6:25 pm
Private answer

Here’s a video link:

Missing from this video is the MIDI manager so the image attached is a screenshot of the manager inside BMT2 on a tab I have mapped controls.

As you can see there are some major limitations on how Pioneer have chosen to implement this part of their software.

You cannot map a single MIDI message to multiple controls

You cannot control the value of the output of any control, it returns what it receives and this means 00 when the button is released in the case of Push

If an OUT is used you cannot use it’s IN separately

You cannot refresh the states of the controls to resend “Send Monitor State” in Traktor, making page changes and states impossible in RB.

Many controls do not accept velocity less than 63 as On.

Any control is assigned its type by the program, so the drop down you see saying Button is infact not a list at all.

You will also see the Dropdown I have open contains 3 BMT’s and 2 Push connections, If I had MT open 1st then Push does not appear here but the CDJ and Mixer never do, they are dealt with by Pioneer in the background and unchangeable.

This is what I am originally talking about, Rekorbox does not allow the creation of Devices by the user like Traktor does (I can have 15+ devices in Traktor all connected to BMT3 if I want or 100 DJM900NXS2 devices, not practical of course).

RB does not allow the disconnection of devices it has seen on startup.

It also likes to be 1st in the queue, so if my Push crashes the connection for some reason, turning it off and on is great mid set and Bomes normally picks it up again because in Traktor I have no device for it in the manager and all is well: In RB by contrast off/on the push and it makes it its own and nothing works at all as MT sets it to pending. That’s not an issue you can fix but worth noting here at how aggressive RBDJ is with MIDI devices.


Anyway enough chewing this over hope it helps you understand better.


Peace, see you in the Bit by Bit post i’m about to embark on!

Marked as spam
Posted by (Q&A Forum: 2, Answers: 22)
October 29, 2017 6:21 pm
Private answer

just chiming in for the core question: The answer is that MT Pro does not claim a port unless it’s used in the project file.

Used means:

  • checked in Project Properties|MIDI Default Ports
  • checked in any preset’s Preset Default Ports
  • checked in any Translator’s incoming or outgoing MIDI action’s MIDI Port
  • part of any route in the MIDI Router
  • assigned to an alias which is used in the project.


Specifically, when you close a project, all MIDI ports should be in state Closed or Unplugged and they’re not blocked for any other application to use it. Once you load a project, the ports that are used in the project will appear Open or Pending (if unplugged or used in another program). If you want to temporarily close a port which is used in the project, double-click the port in a MIDI port list.

Sometimes, it’s hard to find out where a particular port is used. For that, a simple solution is to open the .bmtp file in a text editor and do a search for the name of the port. I don’t recommend to edit the .bmtp file directly in the text editor (unless you know what you’re doing!), but you’ll probably be able to derive where in your project the MIDI port is used.

Hope that clarifies some. I find the side discussion with Steve also very interesting!

Marked as spam
Posted by (Q&A Forum: 3, Answers: 200)
October 29, 2017 12:12 pm

Thanks Florian that clarifies a little, I’ll make a video in a bit showing you exactly what I’m experiencing and post you a link here. Peace

( at October 29, 2017 3:39 pm)
Private answer

Hi Robbie,

I will alert Florian of this post but maybe I can help you.

As far as I know you cannot tell MTPro that a port doesn’t exist however if MTPro is opening the port, you can close it by unchecking the offending input port and if open right click and uncheck “open”.

I’m still not quite clear what is normally exposed to Rekordbox when hooking directly from your mixer via USB. Does Rekord box expect to see 2 separate ports or just 1.

If two, you should be able to use the following strateg

Mixer USB1 -> MT Pro procesing MIDI -> BMT1 -> Rekordbox
Mixer USB2 -> RekordBox

If one, it would look something like this

Mixer USB1 -> MT Pro procesing MIDI -> BMT1 -> Rekordbox
Mixer USB2 -> MT using default routing -> BMT1 -> Rekordbox

If the mixer exposes 1 port but some MIDI needs to pass through but not all:

Mixer USB -> MT Pro processing MIDI, swallow anything you process in translators and set up default route for anything you aren’t processing -> BMT1- Rekordbox

Maybe if it is something else you can clarify what I’m missing?

Independent Bome Programming Specialist
Bome Q&A moderator

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 28, 2017 6:53 pm

Hi Steve,

So what you are proposing is still the issue as RB and Pioneer are incredibly unimaginative and restricting in how any of their stuff works… it’s unbelievably frustrating.

But I have managed to test it and it’s not a stable clock, which is again annoying to say the least.

To clarify a bit about the mixers setup with RB:

You are not supposed to connect the mixer via USB twice to the same computer, even though there are 2 USBs, they are intended for multi laptop, DJ switchover and back to back DJ’ing. The ASIO will only connect 1 to the computer. However it will connect 2 MIDI devices this way.

When RB starts it looks for any unassigned MIDI devices and grabs them. If they are not Pioneer they put them in the MIDI manager and you may select them and map away (BMT1,2,3 etc appear here). If they’re Pioneer who knows? You can’t see them; you can’t edit them.

Under normal circumstances this is great as you plug and play with all their features.

However, we MT nutters are not normal and if you start MT 1st it does the same and claims the devices, even if they are closed or routed as passthrough to BMTWhatever they are no longer seen by RB when it starts.

If you do the opposite and start RB 1st then they have error next to them when you start MT.

Now my discovery is that somehow if you then plug the 2nd USB into mixers port B it will clear this error and place it on the 2nd MIDI input, unplugging this will revert the error and maybe break the RB connection, but I was able to get the clock running like this, and realised it was still unstable as hell on 1/4 beats.

Traktors Send MIDI clock ruins Send Monitor States with huge audio glitches but is timed perfctly and retriggerable, RBDJ has no such feature and the clock in the DJM is still useless…

Great experiment Robbie lol.

( at October 28, 2017 7:28 pm)

“However, we MT nutters are not normal and if you start MT 1st it does the same and claims the devices, even if they are closed or routed as passthrough to BMTWhatever they are no longer seen by RB when it starts.”

Funny I have yet to see a situation where MT Pro insists on taking over a port if it is not opened. Maybe the USB port has dual purpose and Rekordbox recognizes the port outside of MIDI functionality (through some other native USB interfaces stream). It should only “take over” the incoming MIDI port if you ask it to open it.
Anyway, I sent a message to Florian so maybe he has something more to help.

I’ll poke around the RecordBox manual and see if I can figure out from there what it does.

Independent Bome Programming Specialist
Bome Q&A moderator

( at October 28, 2017 9:50 pm)

On your separate issues of lack of globals. How many bits are you using of each global variable. We may be able to squeeze out the use of existing global variables by using a bit map strategy. For instance if you have RGB, we could use 3 bits of the 32 bit signed interger to control a single LCD. Since interger size is 32 bits we could possiblly control 10 LED’s with a single global variable with 2 to spare.

If you want to pursue this, please open a separate subject and we can handle that discussion there.

( at October 28, 2017 10:01 pm)
Hi Steve I’ve been avoiding going this far since I read about the possibility a year or two ago, i suppose it’s time to get the learning hat back on again and I’ll certainly begin a new post for the privilege. Cheers for your help
( at October 29, 2017 3:41 pm)