Numark V7 mapping.

If anyone else owns these and would like to test it for bugs, that would be appreciated.

Everything on these controllers works as labeled except the jog wheels, the motors function fully and change speed with pitch, but there is no jog/scratch functionality as of yet.
(Hopefully i can get them working before the 1.11 release)

all LED indicators work (bpm sync lights, 0% pitch, Fx param, etc…).

Tested on both 1 and 2 controller setups (using link cable).

EDIT: I fixed an issue with the sync buttons. attached is the new file package
EDIT2: Final Mapping Done!
EDIT3: Debugged
EDIT4: June 2016 bug fixes
Numark (10.3 KB)

Ok so I finished the mapping completely. Jog wheels and scratching work fairly well, and are only limited by hardware speeds. (if you really want to scratch well with these, use serato.)

some tips / special functions:
if you want to turn off scratching but keep the motors running, hold shift, then press “motor off”.

file in first post updated.

Thanks for the preset Mike. I’ve included it in the 1.11.0 release.

HI I am trying to use my V7 with MIXX and the mappings seem to work except for the platter, when activated it plays the track at like a snails pace and I can’t figure out how to get it play normal speed.

Any idea what I may have to change in options to fix this?

Thanks a lot


My first idea is to disable scratching to check if that is the problem. To do that easily, hold shift and press the motor off button. if that fixes the problem tell me, and we can go from there.

I know it has been a while, but i came up with a fix for the slow playback, as well as a host of other problems that occurred with the move to 1.11.0. For some reason the mapping used an incorrect value, which worked with my old computer. It stopped working, so the new file should have the correct numbers. I also did quite a lot of debugging on the mapping as a whole, making everyone happier. I’ll update the file at the top post.

Hello myoilu, have you used the Numark V7’s on the newest version of Mixx? Does scratching work in this version?

I haven’t plugged them in for years. I can give them a try in the next few days and find out though. I might update the mapping if need be and if i have the time.

Great, let me know. Is this the main DJ program you use ? Also, are you a programmer as well?

Mainly a programmer nowadays. DJ’d back in highschool and early in college which is when i wrote the mapping. Honestly I haven’t even opened a DJ program in over a year.

I sent you a PM, let me know if you don’t receive it.

Hi guys,

I’m a computer programmer by day and DJ by night. I’ve not done any C++ for a few years so I may be a bit rusty.

I volunteered to get a Numark V7 working with the DJ software that I’ve been using for many years (Ots AV) but it’s controller support is a little limited - it only expects two-byte pitch sliders to use a single MIDI message per value change for example and it certainly cannot cope with the platter/vinyl values from the Numark V7.

I was hoping to be able to see how Mixxx handles the V7 and create some software to sit between the controller and Ots AV but I’ve just installed Mixxx 2.0.0 and tried the V7 with this MIDI mapping and I’m experiencing the slow playback issue that jackofallfunk reported.

I’ll be getting Mixxx to compile from source on my laptop today (hopefully). I suspect that I’ve got an old version of the mapping so I’ll check that first.

Is there a version number for the Numark V7.midi.xml and Numark-V7-scripts.js files that I can use to can tell if I’m on the latest?


Ok - I’ve got your latest zip file and the platter is working (sort of). The speed of the turntable doesn’t appear to be very consistent - the pitch of the audio is fluctuating when playing a track. I’ll see if there’s a setting in Mixxx to use tempo bend instead of pitch - it might not be so noticeable then.

Sounds good. I will test it out.

I’ve spent a bit of time on this today and I’m not sure that myoilu’s javascript is correct. The switch statement in the NumarkV7.Scratch functions doesn’t look right to me - this might explain why the pitch is ‘wobbling’ for want of a better description. I’m not going to assume that the number of ticks per rotation is correct either - if myoilu is still around, maybe he can explain where the value of 3556 ticks per rotation came from. I’m attempting to measure it at the moment but it’s slightly awkward since the value repeats every 128 values.

Got you. I’ll see if I can find anything out as well.

The file that is posted here is the most recent, because I haven’t even touched it since may 2014. I’ve been busy the last few weeks and haven’t had the chance to look at it yet.

The number came from empirical testing using a midi monitor. I have no documentation on the V7, so I just spent a bunch of time recording the output and running calculations. It came out to 28 repetitions of 127 values, so 127 * 28 = 3556.

It’s just what worked, but remember this was written for 1.11, not 2.0

I’m putting my setup together today so I’ll test it with 1.11 and 2.0 and see what I can do.

P.S. - attached is the output I recorded when I last worked on it. not sure if it’ll help you but its how I got my numbers.

P.P.S - I have a possible answer for your warbling problem, and you wont like the answer. I have two v7’s and the motor is bad on one of them. It still spins, but the song playback warbles. Tell me, have you used the unit with serato, and does that work? and if you disable scratching by holding shift and pressing motor off, does playback play correctly?

attached is the file
v7wheeloutput.txt (528 KB)

Thanks for the quick reply and how you got to the values. This controller was sent to me as a gift to map with OtsAV so I won’t be too upset if it turns out to be faulty.

I’ve not tried it with any other software yet. I’ll have a look to see if there is a free trial of serato to try it with,

I’ve just done some similar logging and calculating and 3556 seems about right (I never get the same number twice). The reason I’m questioning it is that you’ve set the number of ticks per rotation to 3556 and the controller is fairly consistently increasing the value by 2 on each message when the motor is running - so as a test to rule out any bugs in the javascript, I hard coded the NumarkV7.ScratchA function to just do engine.scratchTick(1, 2);

Because I’ve left the rest of your logic in, I can switch the motor off and get the track at normal speed (pitch slider is at 0% for this test) and the speed of the track playing is not the same with vinyl/scratch on as it is without - suggesting that the number of ticks per rotaton (or the speed of the platter) differs.

Please don’t think this is a criticism of your mapping - I just don’t know what is correct and what isn’t - so I start by assuming that everything may potentially be wrong and test each bit at a time!

I also admit to not understanding the alpha/beta filter coefficients - so I’ve replaced them with constants and set both to zero (hoping that it will disable the filtering completely for this test).

The motor could well be fluctuating - I’ll see if I can rule that out, but I think the diff value is typically 2 when motorized - except for when the value goes past 0x7f - so if it the previous value was 0x7e and the next value was zero, the value of diff would be 0x7e - there’s no case statement for that situation, so the script will pass ticks = 4 into engine.scratchTick() every time the value goes from 0x7e to 0x00 (or if I was spinning the platter a bit quicker it could go from 0x70 to 0x03 - resulting in 0x6d) - hence my doubts on the switch/case logic in the javascript.

I really appreciate your assistance. I’ll have a look at your wheel log output shortly.

Thanks again,

serato itch is free, it’s legacy but it’s what the controllers were made for.