Denon Prime 4 Mapping

Hey everyone!

I’m creating this topic to document my progress on my mapping for the Denon Prime 4. I used Mixxx for a couple years before I upgraded to the Prime 4 as a standalone unit for my primary DJ source. Now that I’m delving deep into the realm of GitHub projects and open-source contributions, I want to help myself and others in the community by allowing the Prime 4 to be fully supported by the Mixxx software, and potentially even provide more functionality than just the standalone unit, as Denon’s software is incredibly lacking despite how good their hardware is.

My mapping can be found at my clone of the Mixxx repository on GitHub.

I look forward to hearing some feedback, and hopefully getting this mapping finished soon!

Ngā mihi

Whanake

3 Likes

At this point in time, I have not created any JavaScript mappings yet. So far, the volume sliders, filter knobs, EQ knobs and gain knobs work as expected for Decks 1-4. The FX buttons above each channel strip on the Prime 4 enable FX units 1 and 2 for each deck respectively. The headphone cue buttons, headphone gain knob, headphone split knob, cue split button, and master gain knob on the Prime 4 all work as intended.

NOTE: I am doing most of my mapping tests on Ubuntu Studio, with occasional tests on Windows 10 as well. Any tests to confirm functionality on other platforms are more than welcome

FYI If you start a fresh mapping I strongly recommend to use the JS MIDI components library. That will make the mapping much more readable in the long term. Have a look at the Roland DJ-505 mapping if you need an example.

3 Likes

Great to see your effort! 1.5 years ago I contributed a mapping for the Mc7000. The mcx8000 seems to work most of functions as well. So maybe that is somehow of help in case you get in trouble. I always had issues to implement the pad buttons in a good way though.

Awesome thank you, I’ll be sure to use that as a reference. I have no idea how to approach the screen, because I’m not at all fluent in C++, but I feel like as long as the MIDI scripting is fully functional then the screen can be tackled by someone else

Will do, thanks for the idea. I’ve loaded it in the XML file but haven’t extensively looked at it yet. I’ll approach mapping all the buttons by MIDI code in the XML first, then work on giving them functionality I think.

Which USB interfaces does the Prime 4 provide? Only MIDI, or also HID?

I would expect also interfaces (USB Bulk?) for the displays of the Prime 4. At least for the three main displays.

The most advanced mapping for the Prime 4 seems to be in Virtual DJ, they replace large parts of the GUI (like the waveforms) with their native elements. Might be interesting to sniff the traffic between Virtual DJ and the Prime 4.

UPDATE: I plan on replacing the .js file with one that works with the Components JS library, but for now I have added in the XML mappings for all elements on each deck, except for for the jog wheels and pitch sliders as they work very differently to most other controllers. I will post a video showing how they send their MIDI signals, because I’m not quite sure how to implement them (yet).

All updates are on the current GitHub PR

I believe it only uses MIDI, but I will try to intercept some Virtual DJ feedback at some point in the near future. There is currently a Zulip thread discussing the screen issue, but it seems rather complicated (especially given that it’s closed-source). I snooped some SysEx messages between the Prime 4 and Serato, but didn’t get too much back besides an authentication fingerprint (to my knowledge at the time). I can’t wait to investigate this further!

very good hint ! It would be awesome to understand the traffic.

@whanake - I did once add my MC4000 and MC7000 sniffing experience to the WIKI Reverse Engineering page. I think it is quite clear but if you need further help on that please don’t hesitate to contact me …

Awesome thank you! I’ll see what I can do…

The proffesional version of Virtual DJ can be used for 10 minutes for free, as often you like: VirtualDJ - VDJPedia - Is there a trial version available

This should be enough to sniff any traffic.

3 Likes

Hey all, I’ve created a new pull request for the mapping as my last one had some rebasing issues that resulted in the old PR closing and unable to be re-opened, so this one is based off the 2.3 branch to begin with. Hopefully this time everything should run smoothly.

The .xml and .js files have remained the same as they were on the old PR.
New pull request page can be found here.
My fork of the repo can be found here, under the ‘prime4_mapping’ branch.

2 Likes

Hi.

@whanake I have found these midi map files which I think might help you.

DenonPrime4.7z

Of course, I don´t know if this two links could help also…

Legal SC5000 Prime
Stagelinq protocol API

I am also a programmer, although my specialty is the web, php, javascript …

I have a couple of denon SC5000M units and I am especially interested to know if Mixxx is capable of implementing commands for motorized jogs, and of course the display. It would be great if owners could see the Mixxx screen on the Denon unit, just like VDJ has done an excellent job with the Denon SDK. I understand this is a complex job and this SDK has not been free, but if someone managed to do reverse engineering it would be brutal to push Mixxx and make these amazing devices from Denon Prime 4, SC5000 / 6000 / M almost Mixxx “official” devices.

Please i look forward the update of your progress and share as much as possible how I could get started in the world of developing a mapping for my Denon SC5000M motorized unit.

All my best.

Thanks for the files! I’ll have a look and see what I can do with them :slight_smile:

Yeah from my understanding, the screens are controlled with C++, not JavaScript or MIDI, so I have no clue how to get them working, but at least this mapping is a start!

I agree, I think it would be awesome and hilarious if Mixxx gave the Denon products even more functionality than their own software hahaha

I’m guessing these are files that’ve been taken from Serato, right? The SysEx messages will come in handy I think

Hello again @whanake,

The files are not from Serato. If you notice, inside the 7z file there is a zip called “Denon Prime4 Screen”. This file is the skin type used by VDJ.
If it is not enough for your development and you are interested in Serato maybe I can get them used by Serato.

Denon’s stand-alone software engine prime is a mess, a shame, pathetic. To which is added that for many requests that are made in the forum, developers are indifferent, if they can be called that from the perspective of djing software. They have no desire to improve.

By the way, you didn’t comment on giving me any suggestions or where I could look how mixxx implements midi commands for motorized jogs like the one on my SC5000M unit.

I would be very grateful.

  • Mixxx supports jogs. Which commands do you need for a motorized jog, which a normal jog doesn’t need?
  • Mixxx COs can’t provide the information needed for the display of the Prime4 yet. I think this is the most complex DJ controller on the market, with three different types of displays. But in general, all the information is available inside Mixxx.
1 Like

With this overwhelming logic, couldn’t any djing software support motorized jogs or platters?

However…

Why Traktor does not support motorized platters?
Traktor does not support motorized platters

Why is Algoriddim djay pro not supporting motorized platters?
Djay pro not supporting motorized platters

Tell me, wonderful mind ¿?

Hi @djinet ,

Ahhh I see, thank you. The info inside the mappings is still quite helpful, as I think I can use it to get the VU meters working. I thought those were MIDI operated but they’re SysEx operated instead.

You’re right, Denon’s standalone software (As well as the firmware for their units) is shocking, and being closed-source gives it so many more drawbacks hahaha

Sorry for not getting back to you about the SC5/6000(M), All the documentation for making Mixxx mappings can be found on their GitHub wiki, which I have been using to figure out my mapping script. As far as motorized jog wheels and screens are concerned, I have no idea how to get them working, as I don’t believe they are operated with just MIDI and JavaScript, but there are a few people talking about things like this in the Mixxx chat server on Zulip, so I would suggest starting a topic there :slightly_smiling_face: