Mapping for a Numark NV deck

Hi Folk – newbie question from a rookie newbie:

Is there a mapping (or equivalent) for a Numark NV deck?

Thanks folk !!

Hello pabmusic.

Is there a mapping (or equivalent) for a Numark NV deck?

Me too. I got that.

But, that’s nowhere.
So, I have made it now.

I’m not moderator. but, I’ll try it.

I made github repository for the moment.
manzyun/Mixxx-NumarkNV: NumarkNV mapping and script on Mixxx

Manzyun, thanks for starting this. If you’d like to submit your mapping for inclusion in Mixxx when it’s ready, it’ll be easier if you for the Mixxx repository on GitHub then add your new files to the res/controllers folder. There is a wiki page with more guidelines for making mappings. Feel free to ask questions if anything isn’t clear.

Hello everyone.

Script is mostly copying in entirety from Numark Mixtrack Pro3. but, I writing. … scripts.js

By the way, I have something question.

= Q1. Can I something loop saving ?
Can Numark NV saving 4 loops on Serato wrote in Numark NV user guide.
NV User Guide - NV-UserGuide-v1.2.pdf: … e-v1.2.pdf

Only Mixxx can’t that, but I think, can some loop marker saving use script.
However, I think will be called loop marker only one on reload track.

= Q2. Can I Slicer ?
It is writing in user guide too.
I have near thinking Q1, Maybe, I use “beatjump” function.

= Q3. How to research PAD colour code ?
Maybe, I send message to PAD earnestly.

= Q4. How to research LED meter code ?
I think Q3 too.

= Q5. Can I Numark NV display ?
I think, It’s very difficulty…

Wonder if such a place.
Maybe, I to not take packaging too far more I can from that fact better.

I’m happy take answer.


  • Sorry poor English. And many “maybe”.
  • Which you read like Google Translation or writing use a dictionary. My problem of Japanese.

The Mixtrack Pro 3 and NV are quite different controllers. I am not sure how much help it will be to copy code from the Mixtrack Pro 3 mapping.

No, this is not possible with scripting. I reported a bug for this when I tried to do it. I am not entirely sure why, but I think the approach I tried in that bug, jumping to a hotcue then starting a loop, causes a race condition so there is no guarantee that the engine will jump to the hotcue before starting the loop.

A Google Summer of Code project started to implement this functionality a long time ago, but it was never merged into Mixxx and would take a lot of work to merge it into Mixxx now. If you know C++ and want to implement this in Mixxx, that would be awesome, but that’s a bigger project than making a controller mapping.

No, Mixxx does not have this functionality, so use that pad mode for something else. Beatjumping with pads is an interesting idea.

You could try asking Numark about these, or you could figure it out yourself. You can guess and check MIDI codes to send or you could try to figure out what signals mappings for other DJ programs send. On Linux, you can use the amidi -p command to send individual MIDI messages, or you can use midi.sendShortMsg() in the init function of the mapping.

I do not know. Somehow VirtualDJ can use the displays, so it is possible for programs other than Serato to use them. I don’t know if they use MIDI because it would be weird to fit that kind of data into MIDI messages. Maybe they use HID for the screens? Can you post ~/.mixxx/mixxx.log here? That should say whether Mixxx detects any HID devices.

However, even if you can send data to the screens, Mixxx does not currently have any way to get waveform data to mapping scripts. :confused: This would require quite a bit of work in C++ to implement.

It’s okay, I can understand your questions. :slight_smile: I don’t think there are any regular contributors who know Japanese, but you can try posting your questions in Japanese and English. If you have any questions about the controller mapping documentation, feel free to ask.

Hi Manzyun! I’m maintaining VCI-100MKII mapping, and my native language is japanese. Feel free to ask me in japanese.

By the way, I think the Mixtrack Pro3 mapping is too complicated to begin with for your new NV mapping. Ordinary way is:

  1. map buttons, knobs and LEDs by xml as many as possible.
  2. write js script for wheels, pads with multi bank, shift button modifications …
  3. hack display section if you have enough time.

Hello Sohet.

Umm… I was right after all.(just because, my code is not have a good taste…)

By the way. I have any problem.

= wheels not normally action. it happens earlier or later at a regular speed turned.
Maybe, this wheel 0x00…0x4F after 0x4F…0x00.
Scratching example used. but I doesn’t go well.
midi_scripting [Mixxx Wiki]

// A: For a control that centers on 0:
    var newValue;
    if ((value - 64) > 0) {
        newValue = value-128;
    } else {
        newValue = value;
    // B: For a control that centers on 0x40 (64):
    var newValue = value - 64;
    // --- End choice

Which? or another?

= Can’t work shift key

I referenced source code from wiki.
but, i don’t understand section.
I use “layer Example.js” but, not working because “key” is not define.

MyController.shiftButton = function (channel, control, value, status, group) {
    // This function is mapped to the incoming MIDI signals for the shift button in the XML file
    if (value === 127) { // shift button pressed
        engine.connectControl(group, key, true); // disconnect callbacks for unshifted layer
        MyController.activeButtons = MyController.shiftedButtons;
        engine.connectControl(group, key); // connect callbacks for shifted layer
    } else { // shift button released
        engine.connectControl(group, key, true); // disconnect callbacks for shifted layer
        MyController.activeButtons = MyController.unshiftedButtons;
        engine.connectControl(group, key); // connect callbacks for unshifted layer

incidentally, where from value “key” ?
I’m not be found in sample code

= [reappear]How about I explore LED message

Sure enough, I asking Numark about these.
or many note number and note value in 0x90 status code for Numark NV.

Thank you.

Repository as here.
manzyun/Mixxx-NumarkNV: NumarkNV mapping and script on Mixxx

Type A ranges 0x40(min) 0x41 <–> 0x7F 0x00(center) 0x01 <–> 0x3E 0x3F(max).

// corrected
var newValue;
if (value < 64) {
    newValue = value;
} else {
    newValue = value - 128;

Type B ranges 0x00(min) 0x01 <–> 0x3F 0x40(center) 0x41 <–> 0x7E 0x7F(max).

From the script of mixtrack 3, type A may be the right choice, but you can see which is yours by starting mixxx from shell command line with midiDebug option (you seems to use Ubuntu) and moving wheel.

$ mixxx --midiDebug

And the feel of moving is especially depends on two variables.

  • Second argument “intervalsPerRev” of engine.scratchEnable:
engine.scratchEnable(deck, intervalsPerRev, rpm, alpha, beta, ramp);

This value is the emitted pulse count per one rotation of the wheel. From the script of mixtrack 3, 1200 may be appropriate, but you can also get it counting output lines to the shell.

  • Divisor of value given to “jog” control:
engine.setValue(group, "jog", newValue / divisor);

Usually the move is too sensitive without the divisor. You must set the appropritate value, or devise more elaborate calculations.

I think it incomplete. At least three arguments must be given to “engine.connectControl”.

You may get it from the mixtrack 3 mapping. Almost all LEDs have the same code as the corresponding buttons on old Vestax.

To sohet.
I appreciate your kindness.

However, no good under way :frowning:

Maybe, I rewrite midiScript from scratch…

Repository as here.
manzyun/Mixxx-NumarkNV: NumarkNV mapping and script on Mixxx

Hello everyone.

I was finished mapping and scripting.

= But, under issue.

  1. Not light LED
  2. You can not the Touch FX
  3. You can not the Filter Roll and Filter FX
  4. Controller display is can’t use.
  5. I’m not perfectly test.

= But, under sales point.

  • 4ch deck.
  • Hot cue is 8 using.
  • analogue loop control is 4ch meanwhile.
  • If PAD mode selected “SLICER”, can use jump beat.
    If that is all right.

That’s my taste.
If that all right, this zip download and use! (7.35 KB)

“key” in that example is not meant to be literal. It should be replaced with the name of a control object. engine.connectControl() is documented in the Automatic reactions to changes in Mixxx section of that wiki page. I added a comment to the code on the wiki to refer to that section to make it clearer.

However, that approach may be more complicated than you need. If your controller sends different MIDI signals when the shift button is pressed, you may not need to use JavaScript to implement alternate behaviors when shift is pressed.

As for the jog wheels, I do not know. Every controller’s jog wheels work differently. You may need something quite different from the example code for the Numark NV.

I admire your dedication to working on this through a language barrier. :slight_smile:

hi I’m new here to this forum and I was wonding if you could help me to get my numark nv to work with this mixxx software?

Recently bought this deck and am working on refactoring Manzyun’s mapping scripts. The MIDI mapping files themselves were pretty good but am having to basically rewrite the mapping scripts using the Components library. If anyone else is working on this controller lets collaborate. Documentation on System Exclusive messages to control the LCD screens are non-existent, so especially looking for help on that.

About to download the zip from above and test it out… Unless someone has a better mapping available.