Denon MC6000MK2

Just wanted to let you know, that I’m working on a MIDI mapping and script for the Denon MC6000MK2:

https://blueprints.launchpad.net/mixxx/+spec/denon-mc6000mk2-midi

Download link will follow when at least the most basic stuff is usable.

Initial revision for the upcoming version 1.12 of Mixxx:

  • Does not work with Mixxx 1.11!
  • Just the basics (including scratching and hot cues)
  • No loops
  • No samplers
  • No filters & effects
  • No microphone support

Mixxx_Denon_MC6000MK2_2014-04-13.zip (8.7 KB)
The technical specification for the MIDI commands is part of the Owner’s Manual from Denon. Although it contains some mistakes it was very helpful. The pitch sliders provide full 14-bit resolution while the jog wheels seem to deliver only 600 delta ticks per revolution (measured experimentally).

It would be great to receive some feedback from other early adopters on how to improve this mapping :wink:

Nice job! I don’t have the device but I wanted to point some things out.

No need for script here. We have a dedicated control for this now!

			<control>
				<midino>0x28</midino>
				<status>0x90</status>
				<key>DenonMC6000MK2.onTrackSelectButton</key>
				<options>
					<script-binding/>
				</options>
			</control>

can become:

			<control>
				<midino>0x28</midino>
				<status>0x90</status>
				<key>SelectTrackKnob</key>
				<group>[Library]</group>
				<options>
					<selectknob/>
				</options>
			</control>

Also, no need for script on the 14-bit pitch bend sliders:

			<control>
				<group>[Channel2]</group>
				<status>0xE2</status>
				<key>DenonMC6000MK2.onPitchSlider</key>
				<options>
					<script-binding/>
				</options>
			</control>

can become

			<control>
				<group>[Channel2]</group>
				<status>0xE2</status>
				<key>rate</key>
				<options/>
			</control>

Thanks for your review, RJ! The script is already huge and any hints for simplifying it are greatly welcome. I’m also striving for a more modular and cleaner design. Well, JavaScript is definitely not my coding language of choice. Lots of trial and error and often hard to detect runtime bugs.

I noticed that “filter” and “filterDepth” are not available any more? Already tried to use them for my VCI-300, didn’t work either. A quick look into the source code revealed that the corresponding control objects don’t exist, although they are still documented in the Wiki.

Btw, the new cue/play indicators are really nice :slight_smile:

Mapped some controls and the VU meter LEDs directly:

Mixxx_Denon_MC6000MK2_2014-04-14.zip (8.52 KB)
I could not directly map to SelectTrackKnob, because the knob on the controller sends the values 0x00/0x7F for right/left turns which need to be transformed to +1/-1 by the script.

Oh, shoot – I misread 0x00 and 0x7F as 0x01 and 0x7F (which the selectknob MIDI option would handle correctly). Yea, for now script is needed for that.

Looping

  • Loops: Manual, beat and beatroll
  • Censor: Use reverseroll instead of reverse
  • Scratching: Don’t modify keylock mode

Mixxx_Denon_MC6000MK2_2014-04-16.zip (8.94 KB)

  • Solo cue mix when loading a track (can also triggered manually by pressing Shift + Cue Mix)
  • Slip mode fixes (still does not always work as expected)

Mixxx_Denon_MC6000MK2_2014-04-17.zip (9.11 KB)

2014-04-27: Samplers and various improvements

  • 16 samplers (4 per deck)
  • Hotcue fixes
  • Sync mode switching improvements
  • Use cue mix LEDs as track load indicator
  • Delete obsolete filter controls

Mixxx_Denon_MC6000MK2_2014-04-27.zip (9.6 KB)

2014-04-28 Polishing

  • Global shift state
  • Slip mode fixes
  • Looping improvements
  • Cue button controls AutoDJ fade/skip
  • Shift + play triggers stutter play
  • Internal refactoring of hotcues
  • Delete obsolete constants & triggers
  • Minor changes

Mixxx_Denon_MC6000MK2_2014-04-28.zip (9.76 KB)

2014-04-29 Many MIDI mapping fixes

  • Many MIDI mapping fixes, mainly for [Channel3/4]
  • AutoDJ changes
    Shift + Cue triggers skip_next
    Shift + Play triggers fade_now
  • Internal refactorings & cleanup

Mixxx_Denon_MC6000MK2_2014-04-29.zip (10 KB)

2014-04-30 Only 4+4 samplers (shared between decks)

  • MIDI debugging revealed that the sampler controls buttons/LEDs are sending/receiving on MIDI Ch0 (left side) and MIDI Ch2 (right side) independent of the currently selected deck.
  • Automatically load selected track into empty deck or sampler when pressing the cue/play or the sampler button respectively

Mixxx_Denon_MC6000MK2_2014-04-30.zip (10.3 KB)

2014-05-02 Sampler modes + crossfader configuration

  • Support 2 different sampler modes:
  • Hold (the new default mode)
  • Trigger
    The default sampler mode can be changed by setting DenonMC6000MK2.DEFAULT_SAMPLER_MODE appropriately.
  • Assignment of crossfader to channels
  • Modify contour of crossfader curve
  • Delete unused booth level control

Mixxx_Denon_MC6000MK2_2014-05-02.zip (10.8 KB)

2014-06-11 Filters and initial effects support

  • Effect units (ordered according to physical controller layout from left to right):
    • EffectUnit1: Left FX1
    • EffectUnit2: Left Filter
    • EffectUnit3: Right Filter
  • EffectUnit4: Right FX2
  • Filters are fully functional
  • FX1 and FX2 can be assigned to decks
  • Minor changes of VuMeter sensitivity

Mixxx_Denon_MC6000MK2_2014-06-11.zip (11.5 KB)

2014-06-12 Basic effect chain control

  • Effect chain selector (need to press shift as labeled)
  • Efx3 button enables/disables the effect chain
  • Efx3 knob for dry/wet control
  • Efx2 knob for master parameter control (“metaknob”)
  • Minor cleanup

Mixxx_Denon_MC6000MK2_2014-06-12.zip (11.4 KB)

2014-07-14 Simplify sync logic

  • Control sync mainly through “sync_enabled” instead of trying to select a specific “sync_mode”. Mixxx already handles this internally and we should not override it here
  • Generalize shift button handling for easier switching between local and global Shift button handling
  • Minor cleanup

Mixxx_Denon_MC6000MK2_2014-07-14.zip (11.8 KB)

2014-08-20: Sync mapping with push-and-hold

  • Use MIDI mapping for “sync_enabled” to support push-and-hold
  • Change sync mode indicator LED:
    MASTER=blinking, FOLLOWER=on, NONE=off
  • Use setParameter() instead of setValue() for effect parameters
  • Fix right effect unit enabled LED

Mixxx_Denon_MC6000MK2_2014-08-20.zip (11.9 KB)

2015-01-25: Reconnect controls for version 1.12

  • Connect filter effect to QuickEffectRack
  • Connect channel EQs to EqualizerRack
  • Connect FX Beats knob to musical key controls (next/prev/reset)
  • Fine-tune jog wheel parameters

Mixxx_Denon_MC6000MK2_2015-01-25.zip (12.3 KB)

2015-04-27: Release candidate for 1.12

Please update the firmware of your controller to v1003. Otherwise the filter LEDs will not work with this mapping.

  • Unify jog wheel control for vinyl and non-vinyl mode
  • Implement proper spin-back capability
  • Fix key control
  • Change MIDI numbers of filter LEDs (FW v1003)
  • Update state of filter LEDs when applying the filter (in addition to engine callback)

Mixxx_Denon_MC6000MK2_2015-04-27.zip (12.5 KB)