Mapping MIXXX controls to your hardware using the MIDI protocol, can be a challenging job !
Download here : https://mixxx.org/
Especially if you don’t have your hardware around, but only your PC.
(Windows OS only in this case)
As mentioned in my previous post, is to download the available MIDI debugging tools.
MIXXX – MIDI debugging Tools
Let’s make this simple example to explain the concept.
If you are not familiar with the MIDI protocol (bits and bytes)
This is a MUST SEE series that explains it all to the bone.
Especially Part 1 / 2 / 4 / 5 / 7 are most valuable, to get a good understanding.
MIDI Part 1 – MIDI Signal Path – YouTube
MIDI Part 2 – MIDI Message Types – YouTube
MIDI Part 3 – DIN MIDI – YouTube
MIDI Part 4 – MIDI Protocol Details – YouTube
MIDI Part 5 – Channel Messages – YouTube
MIDI Part 6 – MIDI Clock – YouTube
MIDI Part 7 – SYSEX, etc. – YouTube
Prerequisites :
– MIDI-OX is installed
– loopMIDI is installed
– MIXXX Controller setting config
-.
1. loopMIDI
Once installed and started it does not need any configuration.
Runs out of the box
2. MIXXX
Open Mixxx Preferences and select the loopMIDI controller
Also load your Mapping file that you have on your PC when the hardware was attached.
3. MIDI-OX
Install it and select PERSONAL USE only license.
Once you have MIDI-OX installed, this is how to configure it it for debugging inbound or outbound MIDI messages
.
1. MIDI-OX Configure the MIDI device
In the OPTIONS menu you can set which MDI device to monitor
IMPORTANT :
Never configure loopMIDI as INPUT and OUTPUT device together !!
Because this will create an endless loop on your PC.
Either first select loopMIDI as INPUT (blue selected) to monitor the INBOUND messages.
Or select it as OUTPUT device, see picture above.
.
Open the output and the input monitor window in MIDI-OX,
Via VIEW menu INPUT MONITOR
Also make sure ALL FILTERS are OFF (unchecked)
Now you are ready to monitor OUTBOUND messages from MIXXX and see them in the INPUT MONITOR.
Example let’s take the press CUE button in Deck 1, as an example.
For INBOUND messages to MIXXX we are going to use the PLAY button as an emample
.
SOLUTION :
First check the XML Mapping you created earlier using the MIXXX learning wizard.
OUTBOUND example :
In the XML, we have defined the output messages for that MIXXX will sent when the is pressed or pauzed (blinking).
When I pauze the track using the CUE button, I can see the ON / OFF MIDI values being send in the input monitor windows.
In this case it was as defined in the XML Mapping:
Status 92 / midi note 09 / value On = 7f / value Off 00
<group>[Channel1]</group> <key>cue_indicator</key> <description>CUE LED1</description> <status>0x92</status> <midino>0x09</midino> <on>0x7f</on> <off>0x00</off>
Nothing exciting about this for now
INBOUND example :
But let’s say we want to send data to MIXXX to activate a control.
First select the loopMIDI as OUTPUT device.
Next send the MIDI message to activate the PLAY button.
In the XML it was mapped to 0x92 / 0x0A for Deck 1
Open the SysEx window in MIDI-OX using the VIEW menu
Bytes explaned
00 no Status byte needed when sending MIDI messages
92 see XML mapping print screen
0A see XML mapping print screen
7F is note ON message, to activate the PLAY buton control in MIXXX
Open the Command Window and select Send SysEx
Send this MIDI Short Message, possible even in a SysEx window.
Once this was send the PLAY button was activated and the track started to play !
Of couse you still can and still need, to use the MIXXX Debug output as well.
Using this commandline to start MIXXX in debug mode :
cd C:\Program Files\Mixxx mixxx --controllerDebug
This is how they relate :
.
So now that you have all the basics seen in action, you can use this approach, without having drag your hardware around all the time.
And you don’t need to know any JavaScripting for now at least, as well …
.
Scripting :
But if you are into scripting, you can use this approach as well :
As mentions in my other post you can make our own MIDI-OX debugging scripts.
Using any COM / ActiveX compatible scripting language like :
JavaScript / VBScript / Powershell / Python / VB for applications / etc …
But nothing beats my all time favourite AutoIT of course
Here are some examples :
https://www.autoitscript.com/forum/topic/209562-com-midi-ox-scripting/
Keep in mind to send MIDI short messages using this method it uses Decimals instead of HEX :
$mox.OutputMidiMsg (00,146,10,127) ConsoleWrite("Send 0x00, 0x92, 0x0A, 0x7f " & @CRLF)
Enjoy !