Numark Mixtrack

Yes, this subforum is exactly the place. Try searching the subforum for mixtrack and see if anyone else has done something for it.

Just to give a few news, I’ve started to work on this mapping and things are turning good.

Right now, I have found, thanks to the instructions on the wiki on how to “sniff” the midi events, all the events that the controller was sending and I’m ready to map all of them properly.

I’ve also run a full “event scan” on the controller and found all the right events to send in order to switch on and off the leds and buttons.

I will more than likely send a first version of a mapping this week end for beta test.

Oooh, how did you do this? I’m interested!

Well, really nothing very glamourous… Like a network port scan, it was kind of “brute force”, except as I’m starting to discover midi, I’m not as sure of what I’m doing, and my understanding of midi is very limited.

In fact, I studied the mapping from the Numark Omnicontrol as a starting point, to get how the mixxx API and stuff are working and saw that the author of this mapping was sending events with 64 as velocity (not sure of the term…) for turning light on and 00 for lights off. Browsing the amidi command man page I saw it could send midi events, it was a command line interface, so I could script it to make a “port scan” tool, perfect.

So I used amidi, with -S arg for sending triplets of the form 90xx64 to try to turn lights on. With xx starting from 00 to ff. With a very small bit of perl I generated an amidi command with all the midi events (amidi -p … -S “90 00 64 90 01 64 90 02 64… 90 ff 64” and all the lights illuminated ! Hurra ! Now… Among all these 256 events I sent, which are the goods one ? First I needed to turn them off, I regenerated a command with all the “velocity” to 00, all the lights turned off, the hint in the Omnicontrol was the good one.

And now, the real problem was that I needed to check “visually” for each command, so I could not script it all the way… And I checked, when a light is turned on (or off), no midi event is sent by the controller… So that was looooooong :slight_smile: Let’s send 900064… no light ? Let’s send 900164… no light ? Let’s send… etc.

So it was very stupid, and a bit tedious yes :slight_smile: and… the first working event I sent was 33 (The 51st one !)…

Let’s say I was applying a scientific experimental method :smiley: (or just plain old good home hacking…sounds good too)

But once it is done, it is done, and I’m quite happy that it is finished and to have all the references in hand now.

The small bit of perl, just in case it is useful for some one, replace the value of the -p argument with the address of your controller.
It’s a one liner, it will print (not execute) a command on the standard output. So execute it in bash, and save the output in a file, to execute it as a script for example.

perl -e '$cmd = "amidi -p hw:2,0,0 -S "; foreach $i (0..255) { $cmd .= "90 ".sprintf("%02x",$i)." 64 ";} print $cmd."\n";'

Ahh ok I figured you did something like that. That works for simple controllers, but more complex ones sometimes have special features that are accessed through a certain sequence of 3-byte messages, or System Exclusive messages, so for those the MIDI spec will be required.

Actually I was wondering if it would be possible to sniff the midi bus on an OS point of view like a real network. The thing is supposed to work under windows with a software called Traktor (I do not have a Windows set up at home, so I haven’t tried), and I was affraid I would have to do something like sniffing the communication between the windows host and the interface to figure out what information they exchange, thinking that it should not be too complex to figure out… Now that I know, I can confirm that.

I could not find any informations on how to do that sort of stuff. However, I think I understood some make kind of complex set ups with softwares for routing midi events between other softwares. Maybe, these “routers” could be configured to “dump” what they see somewhere ? A Retro-analysis would then be possible, as to my experience in other fields, constructors are frequently reluctant to deliver their full specs to us happy home hackers…

Again, my understanding of everything midi is very limited, I’m discovering all that right now… pardon me if I’m saying anything absurd.

Yes, Bome’s MIDI Translator can do that and more, but it’s not free. There are other MIDI monitor type programs out there though.

Hi, please find attached a first mapping and script file for the controller.
Everything is still not perfect, I know, but I’d be more than happy to improve this according to user feedback. In any case, all the basic functions are implemented and everything needed to start playing is there. Among the points I’m not quite sure on how to implement are:

  • The “Stutter” key
  • The “1 bar” auto loop key, which I guess is supposed to create a loop of just one bar ?

Many thanks to the person who did the Numark Total Control mapping, the files I’m sending are heavily inspired by his.
Numark-MixTrack-MixxxMapping-0.1.tar.gz (3.3 KB)

It would be great for Mixxx users if we could get some documentation of our mappings on the wiki, one page per controller, with documentation of how to use the controller with each existing mapping.

I’ve started out by making a page for the RMX mixxx.org/wiki/doku.php/hercules_dj_console_rmx

Please consider documenting this controller as well and link it from hardware compatibility page mixxx.org/wiki/doku.php/hardware_compatibility If you copy from existing pages it’s not too much work.

Yes, I’ve also made a few changes to the mapping I’ve submitted. I’ll finish to polish a few things and submit a new version along with a wiki page.

Goodie!

I’m running mac osx and I can’t find the folder to add new scripts, can anyone help me?

The MIDI mapping files are located in the following paths:
Windows: C:\Program Files\Mixxx\midi
Linux: /usr/share/mixxx/midi (or /usr/local/share/mixxx/midi)
OS X: /Applications/Mixxx.app/Contents/Resources/midi
http://mixxx.org/wiki/doku.php/midi_controller_mapping_file_format

For OSX select Mixxx.app in Finder ->Right click-> Show Package Contents
mixxx_midi_path_osx.png

isn’t the numark mixtrack almost teh samen as teh ion discover dj (pro) ?
Just with more butons.

Maybe it’s easier to combien the development of both controlers, instead of having to invent the wheel 2 times.

Would this be mostly the same as the Mixtrack Pro/can someone help out with that if there isn’t one already made?

Hi Matteo,

I’ve just added your mappings to the Mixxx 1.8 branch. They will be in Mixxx 1.8.2 (coming out soon) and Mixxx 1.9.0. Just update this thread if you update the mappings and I’ll see it and update Mixxx as well.

Thanks,
RJ

I just tried the mapping in 1.9 with my mixtrack. It seems way, way off and I’m not sure if these are bugs or just problems with matteo’s mapping.

1.) For scratching the platter response is all wrong:
A)When you hold down the platter the track continues playing after there’s no active movement. (It should pause as long as you’re touching the platter.)
B)The acceleration and sensitivity don’t seem to match the platter size.
C)The scratch/back cue sounds artifical…very grainy with audible digital artifacts…almost like a bad key lock is engaged.
D)The cut on the crossfader isn’t sharp enough. It should be an immediate on/off click.
E)You should be able to nudge (by touching the outside ring) and scratch (by touching the top of the platter) at the same time…but you can’t.

2.)It also seems that the effect knobs and loop buttons don’t seem to match up as well. That should be an easy fix in the prefs though.

Hey coolout,

Thanks for the feedback. As for the crossfader, you can adjust the curves in the Mixxx preferences. No idea about the rest since I don’t own a Mixtrack.

Hi Matt,

I have been adapting the script for the Mixtrack mapping you created and had a question. I’ve been trying to reverse the selectKnob so clockwise equals down in the list and counter-clockwise is up in the list and can’t for the life of me figure out how to do it. Every change I make pretty much switches the knob to a page down or up capability. I have also tried editing the midi xml and adding an into the options area for the control but this basically negates the script function altogether. I have some scripting knowledge but this one has me kind of stumped…any suggestions?

Thanks

DJ Sven Tech

In the script function NumarkMixTrack.selectKnob, try changing

engine.setValue(group, "SelectTrackKnob", -value);

into

engine.setValue(group, "SelectTrackKnob", -value);