Dark Wheel

We combined our dream components and made them portable
Pioneer CDJ-2000nxs2 C/P - Jogwheel - Encoder - Hot Cues

currently in FINAL beta VALIDATION

The idea behind Dark Wheel

I missed such a controller long ago for myself. Dark Fader is perfect for manual beat matching, but sometimes I am one of these ‘hot cue junkies’, using sync with 4 decks to mashup songs on the fly. I also spend lot time preparing songs (grid & cue), so having a portable controller on travel would be perfect. 

As a NI Traktor user I learned to love their 2 encoder concept (beat jump and loop size) and the direct access to 8 hot cues. And I made a dream come true: getting this amazing feeling of Pioneer CDJ-2000 Cue & Play knobs. So we added the original spare parts (2000 black / 2000nx2 silver).

Adding a jogwheel was a must have to complete any grid and cue search workflow. We could not find any tiny jogwheel in high quality, so we made our Dark ‘Wheel’ ourselves; in metal, smooth feeling, and a high tick per turn resolution.

A flexible firmware will complement the concept: User Customizable Shift and Alternate layer features, and a midi channel concept which allows to trigger 1, 2, or even 4 decks with one Dark Wheel.

I am quite sure Dark Wheel will be my favourite mobile controller ; ) .. ready to go midi with iPad or laptop. For preparing songs on travel and for playing gigs. And it matches perfectly to the connected Dark Fader.

Let us know what you think about this project!

Insights into the technical concept

Dark Wheel is our most complex controller. Based on the Dark Board as always (using Teensy 3.2). The challenge was the portability and amount of controls. We constructed a 2nd printed circuit board as the carrier for all tactile elements, added some MCP in smd technology to this pcb and placed it as sandwich above Dark Board. We use the I2C bus technology to connect both printed circuits.

We milled the top panel backside to hold the original Pioneer cue/play panel spare parts. For the jogwheel, we used best components we could find: Magnetic hall encoder with ball bearing shaft and high resolution. We added the metal knob for a perfect smooth feeling.

The tactile feeling of original MEC switches with 2 colored led was our choice for the hot cues. And we completed with 2 original Panasonic Encoder with metal knobs. 

Projected Retail Price

We don’t know yet ; ) .. let’s see when all is finished, but please do NOT wait for the Dark Wheel if you are in search of a cheap controller. 

Dark Wheel will be expensive – because of the high costs of the components (examples: NXS2 panel cost €40, the high tech jogwheel encoder about €100 etc). Currently we estimate the material costs to be more than double the Dark Fader. We remain true to our vision, producing in best quality we can … then we see where we end.

Project Status (updated March 06, 2020): 
Hardware & Firmware is ready, we started shipping already in February (beta phase). Default mapping for Traktor and DJPP done. Next step (still open): user manual and final pricing. Contact us if you are interested in an early bird offer ; )

Technical Specifications


  • Full metal chassis
  • CNC made panels, brushed and double black anodized 3mm aluminium, polished bare metal side surfaces
  • Engraved logo, product name (no painting, no laser cut)
  • Dimension: 207 x 65 x 38(52) mm
  • Weight: 450 grams

Control elements

  • CUE/PLAY: Original Pioneer CDJ-2000 (nxs) panel with low latency short-stroke tactile switches and original led light pipe rings. Buttons available in black (optionally silver)
  • JOGWHEEL: High quality magnetic hall encoder (10bit analog stepless, high TPR/resolution), ball bearing for multi spinning support. Full metal knob
  • ENCODER: 2 original Panasonic encoder, soft click (low pressure) push rotate encoder, 20 TPR. Full metal knobs with concave top shape
  • BUTTONS: 8 original MEC tactile switches (US made), bicolor illuminated LED’s (3 red/green, 4 yellow/green, 1 blue unicolor)
  • INDICATOR LED’s: 2 LED’s between encoder (unicolor: orange, blue), 2 Jogwheel LED’s (bicolor: red/green)


  • BOTTOM LAYER PCB: Dark Board (CAD factory made pcb, dual layer, black glossy surface, immersion gold contacts). Mounted CPU: Teensy 3.2 (72 MHz 32 bit ARM processor)
  • TOP LAYER PCB: Dark Wheel control elements carrier pcb, smd components soldered in SMT (surface-mount technology), I2C bus connected to Dark Board


  • USB-B IN: Connects Dark Wheel to midi host
  • USB-A OUT (optionally): Available if an active hub is mounted on board. Intended use: connect additional midi devices in daisy chainDC Power IN (5.5/2.5mm, center pin +5V): Only available if USB A OUT and hub is mounted. 
  • DC Power IN is not needed for operation (USB self powered, consumption ~100mA). Intended use: Optional power for USB OUT connected devices and Dark Wheel 


  • Midi class compliant, no driver needed 
  • Inbuilt ‘Power-On Setup’ to customize user favourite modes
  • Supporting 1-4 channels, multiple layers, multiple devices

Dark Wheel Features


  • Each control send unique messages (NoteOn 0x9 or CC 0xB) and receive equivalent messages for LED triggering
  • In addition to midi I/O: Dark Wheel firmware offers a powerful ‘mode’ concept to activate optionally inbuilt logic for 3 buttons: DECK SELECT, SHIFT and BANK
  • User can enable, disable, select and store each mode, example: right device toggles B/D deck for 4 deck mixing, using one SHIFT layer and 2 BANK layer
  • Modes can be customized and stored via Power-On Setup capabilities (see CUTOMIZING), no need to modify any existing mappings
  • User can customize Dark Wheel: from a single 1 deck controller with few control .. to a multi-layer multi-deck device for several decks
  • One common mapping file for any kind of decks, devices or mode combinations


  • Bicolor illuminated button (red/green) midi I/O mappable or firmware triggered if DECK mode activated (toggling midi channel)
  • Deck Select mode (settings) defines behaviour of button (normal button/led without banks .. OR a 2 deck X/Y toggle .. OR a 4 deck toggle button)
  • Modes are stored on devices, this allows e.g. to use 2 Dark Wheels with (Left toggles A/C, Right toggles B/D) with same mapping


  • Original Pioneer CDJ-2000 (nxs) panel with Pioneer tactile switches. The low latency and short-stroke results in an immediate action response
  • Illuminated LED rings with mappable midi inbound (CUE: magenta, PLAY: green)


  • Optimized for fine cue/grid adjustments and smooth pitch bending (high tick resolution, aprox. 600 ticks/turn)
  • Firmware calculates an acceleration based CC message. This extends the intended use to a beat/bar scroll control (ball bearing enables multiple self rotations)
  • The full metal knob (without a dedicated top platter and outer ring) supports Pitchbend and Cue/grid move position mode, toggled via mapping features
  • Jogwheel sensitivity (smallest movements threshold) is customizable via Power-On Setup, acceleration rate (for beat searching) can be adjusted in mapping file


  • 2 Push/Rotate Encoder (20 TPR) with full metal knobs and top shapes. The low pressure and short-stroke encoder feels very pleasant
  • Free for mapping, in Traktor typically mapped to Beat jump (left encoder) and Looping On/Off and size (right encoder)
  • 2 unicolor LED’s (orange, blue) close encoder with midi receive inbound


  • 4 bicolor illuminated buttons, free for mapping, typically mapped to hotcue 1-4. LED’s (yellow/green) with midi receive inbound
  • Additional layer supported for enhanced mappings (e.g. using SHIFT for hotcue 5-8 or BANK for FX pads etc)


  • LEFT BOTTOM button (bicolor illuminated, red/green), midi I/O mappable or firmware triggered if SHIFT mode activated
  • If mode activated: firmware coded hardware SHIFT -> activating additional layer for other controls in 2nd SHIFT layer (adding layer related notes)
  • User customizable button via Power-On Setup capability (normal button/led without SHIFT capability .. OR active momentary .. OR active latching)


  • Free for mapping, unicolor illuminated button (LED blue). Typically mapped to e.g. SYNC (or master deck select)


  • RIGHT BOTTOM button (bicolor illuminated, red/green), midi I/O mappable or firmware triggered if BANK modes activated
  • If mode activated: firmware coded hardware layer toggle -> activating additional layer for other controls, adding layer related notes (similar SHIFT), maximum: 4 banks
  • User customizable button via Power-On Setup capability (normal button/led without banks .. OR 2 banks momentary .. OR 2 banks latching .. OR 4 banks toggling)
  • Any combination with SHIFT possible, which results in max. 2×4=8 layer in total


Press and Hold the BUTTON during power connect to activate the ‘Power-On Setup’ features, allowing customizing Dark Wheel modes to user specific needs. Hotcue 1-4 buttons are used to select new button mode. All changes get stored permanently. Available setting options – defaults kursiv: 

  • DECK BUTTON MODE (4 options): Off | select 2nd deck during hold |  toggle between 2 decks | toggle thru 4 decks
  • 2 DECKS ABCD (Mid btn, 4 options): A/B | A/C | B/D | C/D
  • SHIFT BUTTON MODE (3 options): Off | activate SHIFT layer during hold | NORMAL-SHIFT toggle
  • BANK MODES (4 options): Off | select 2nd bank during hold | toggle between bank 1 and 2 | toggle thru 4 banks

Additional options (hold buttons below during Power On):

  • SHIFT + BANK: Reset to default settings
  • RIGHT ENCODER: Calibrate Jogwheel rotation sensitivity (angle threshold for minimal movements)




Overview, technical specifications, features

Mapping Guide

Background to mapping, Dark Wheel modes, midi message chart, Q&A, Traktor and DJPP default mappings

Customizing Guide

How to customize Dark Wheel, midi modes and jogwheel calibration

Mapping Files

DJ Player Pro
Mapping file

Universal .djpmap file, supports 2 or 4 decks and multiple controllers. Detailed mapping chart (pdf) included

Traktor Pro
Mapping file

Universal .tsi file, supports 2 or 4 decks and multiple controllers. Detailed mapping chart (pdf) included



Latest firmware collection (unzip download to see all .hex files)

(available soon)


Link to TyTools (free open source project from Koromix)

How to upDate your Dark Wheel Firmware

Many tools are available to upload firmware into Teensy based controller. We recommend the tool ‘TyCommander’, part of the open source TyTools project (from Koromix). TyCommander is easy to use, available for Windows, Linux and macOX, no install procedure needed; you can directly launch TyCommander after unzip. A big ‘Thank you’ to Koromix!. Workflow instructions:

  • Download latest version of our firmware collection, use left ‘Firmware’ link. 
  • Open the zip file, inside you will find all firmware (.hex files) of all Dark Controller
  • Download latest TyTools (use left ‘Uploader’ link), extract TyCommander
  • Launch TyCommander (no install needed), then open tab ‘Serial’
  • Connect your Dark Controller, the current installed firmware version gets displayed 
  • Check your current version: the 9 digit prefix (e.g. DF2.0-32-) must match to one of the downloaded .hex files. Contact us if you can’t find a matching download version 
  • Press arrow button ‘Upload’ and select your downloaded hex file with same prefix
  • Wait few seconds until upload process finished. Disconnect Dark Wheel .. DONE
  • Let us know if you need support at any step – always welcome!

MIDI Mapping


We spent a lot of time developing a powerful, flexible, and easy to use midi message concept. We know that user preferences can vary significantly. Some users want to map the simplest workflow (16 control elements that send 16 messages); others for example, want a 4-deck controller with SHIFT and multiple layer features. So which concepts would fit best for a smaller and portable controller like DARK WHEEL ??


User wishes and workflows are very different - Examples:

DECK SELECTOR (Midi channel): some users may use DARK WHEEL for one deck only, or might use 2 separate DARK WHEEL’s for deck A and B, so they do not need any deck selector.  They want to use this button for other midi mapping, similar to normal buttons.  Other users may want to use one DARK WHEEL for 4 decks, so they wish to toggle between decks with the button (A>B>C>D>A).  2 deck user may be bored with a 4 state toggle, they wished to toggle faster, 2 states only (A/B). 4 deck user with two Dark Wheel may want to toggle A/C on left and B/D on right controller.  And some user even would love to switch to deck B only while holding a button (and jump back to deck A after the button is released).  And most users expect that the controller is doing this via midi channels, and not via hacks in the midi mapping, right? And isn’t it annoying that many vendor offer different mapping versions for the use cases above ?

SHIFT features: A SHIFT button is a powerful feature of many controllers.  It allows giving any other button a different function in the DJ application.  Many controllers send a single midi note for this button only (and the DJ application has to fire another action), other more clever controllers change the midi command of any other button in SHIFT mode (so the user can easily map 2 features to 2 different notes). So what’s best for DARK WHEEL?  We decided for a ‘clever’ and flexible concept of changing midi notes, so as soon as you press SHIFT all other buttons send a 2nd note.  But we wished for even more: should SHIFT work in the typical ‘momentary’ mode always (active during press and hold)? Our opinion: Yes, as the default mode. But we would also allow that the users could use SHIFT as a toggle (not very common, but often helpful).  And last but not least: some users do not need any SHIFT at all, they want to use the left bottom button for any other midi actions.  A hard coded SHIFT button would be a waste of a button for them and hacks in mappings (to avoid the 2nd note) would make their mapping quite complex. 

BANK features: Only a few controllers offer such a more enhanced feature (the Allen&Heath Xone K2 is a nice example).  BANKS often are called LAYERS.  But do any users need Layers? Maybe some prefer that they use this button (with the LED) as a normal button, e.g. use it as SYNC button (with LED on/off).  In particular on small portable controller like DARK WHEEL we do not want to waste any button.  Most users may love Layers, they want to toggle between Layer 1 and 2, e.g. Layer 1 for hotcue’s, on Layer 2 mapping FX effects, using the encoder too. And of course they expect from an intelligent controller that the notes are different in Layer 2 (to allow easy mapping). More questions: Does the user need 2 or even 4 Layers? And last but not least: why not allow a momentary behaviour on the Layer button? (active as long you press and hold), is this nice idea reserved for SHIFT only?

Difference between SHIFT and BANK layer: In our vision there should not be a difference, as long as we pick up the pros from both, making them flexible, then the users can decide what they need on both buttons.  SHIFT and BANK buttons follow the same idea at the end; they modify the notes of other control elements.  Exception to keep in mind: Some vendors label a button only as ‘SHIFT’, but this knob is a ‘normal’ button only, not modifying any other notes at all (even the Xone K2 with the nice bank Layers struggles on this, the K2 SHIFT is labeled SHIFT only), which makes a ‘SHIFT’ mapping for the user very difficult.  So this simple ‘labeled‘ SHIFT are not meant here.  Coming back to (real) SHIFT and BANK buttons: both buttons produce the same benefit, so users can map additional and totally different DJ app features to the same control element. Saying this, the mapping does not have to take care about conditions or modifier, each note is unique and can be mapped quite easy.  So what’s the difference between both on most controllers?  It’s the behaviour on press/release: Most vendors realize the SHIFT only in momentary mode (press and hold SHIFT), and the BANK button in toggle mode (also called latching or permanent mode), so the layer changes after release.  DARK WHEEL overcomes this limitation: the SHIFT is a real SHIFT (modifying other control notes) and we allow the SHIFT and the BANK buttons as momentary or as latching behaviour, so both could be exactly same, there is no need for any dogmatic difference.  Whatever is needed, the controller has to take care that all works together, and of course even in case that you combine them – e.g. if you press both at same time! (activating e.g. shift Layer of Bank 3).  And as always: users who do not need Layer at all could use both knobs as ‘normal’ buttons with midi LED receive features. Finally you may understand why we also made a flexible DECK selector:  it’s nothing else than a different layer (with other midi channel, so users can customize to their needs (normal button, momentary, latching, 1/2/4 deck).


The user can decide how they should work. Using as 'normal' buttons with bicolor LED (midi send/receive) or enabling the inbuilt logic of flexible SHIFT, BANK, and DECK SELECTOR features.

We created a ‘mode’ concept, which at least we have never seen before in other controller : ). We made 3 buttons completely user customizable and DARK WHEEL (not your mapping) takes care of them. The user is able to define how these 3 buttons work. Once stored, DARK WHEEL sends messages, which can be mapped quite easily (without any condition modifier in the DJ application). 3 buttons: the DECK SELECTOR (midi channel button on top), SHIFT button (bottom left) and BANK button (bottom right). The mode concept results in easy mapping even for complex multi-deck or multi-shift/layer needs.

DECK SELECTOR / MIDI CHANNEL – top button (4 modes):
0 = off, normal button with bicolor LED (green/red), free for I/O mapping to any DJ midi feature
1* = Two DECK mode, press & hold button to trigger momentary actions on 2nd deck
2* = Two DECK mode, button toggles between both decks – [default]
3 = Four DECK mode (A/B/C(D), toggle midi channel thru A>B>C>D>A.  LED’s: A= Green, B= Red, C= Green blinking, D= Red blinking

* In Two deck modes (mode 1 and 2 above) the user can customize in addition the ABCD deck alignment. This enhancement in latest firmware version adds 2 important benefits: 1) one unique 4-deck mapping can be used for all use-cases (no longer several mappings needed) and 2) user can easily toggle between 2 decks and in their 4 deck DJ software (without any modification in the mapping):

0 = A/B toggle: 1st deck = A (midi channel 1, LED green), 2nd deck = B (midi channel 2, LED red)
1 = A/C toggle: 1st deck = A (midi channel 1, LED green), 2nd deck = C (midi channel 3, LED red)
2 = B/D toggle: 1st deck = B (midi channel 2, LED green), 2nd deck = D (midi channel 4, LED red)
3 = C/D toggle: 1st deck = C (midi channel 3, LED green), 2nd deck = D (midi channel 4, LED red) 

SHIFT – bottom left button (3 modes):
0 = off, normal button with bicolor LED (green/red), free for I/O mapping to any DJ midi feature
1 = SHIFT momentary mode, modifies the messages of all other buttons as long you press and hold  – [default] 
2 = SHIFT toggle mode off, press and release to toggle between normal (LED green) and SHIFT (LED red)

BANK – bottom right button (4 modes):
0 = off, normal button with bicolor LED (green/red), free for I/O mapping to any DJ midi feature
1 = Two BANK momentary mode, activates 2nd layer, modifies all other buttons as long you press and hold
2 = Two BANK toggle mode, activates 2nd layer for all buttons, press again to jump back to 1st layer – [default] 
3 = Four BANK toggle mode off, allows 4 banks, toggle to select bank 1>2>3>4>1 etc


DARK WHEEL takes care that all control elements have unique notes, even if the user combines them at same time. DARK WHEEL firmware covers the complete logic, the user can focus on mapping DJ functions. This concept allows powerful mappings to be created very easily.

How can the user customize Dark Wheel modes and settings

Quite easy, no software or any tools are needed, DARK WHEEL firmware offers a power setup feature (similar to DARK FADER), we will describe in detail in manual, examples: 

  • How to activate 4 deck mode?:  Press and hold top DECK button on power ON init, now select your preferred 4th mode (3) via pressing the 4th hotcue button (below jogwheel).  Release all buttons, done.  In future the top buttons toggle between 4 decks.  DARK WHEEL stores all customizing permanently.
  • You need 2 banks in momentary mode (kind of an additional SHIFT)?: Press and hold bottom right BANK button on power ON init, now select your preferred 2nd mode (1) via pressing the 2nd hotcue button.  Release all buttons, done.  In future you have a second layer pressing and hold BANK button. 
  • All modes can be customized with same idea during power ON (holding a button, using hotcues to select mode): hold DECK button to define the DECK mode, hold SHIFT button to define SHIFT mode, BANK button for BANK mode, MID Bottom button to define ABCD mode. Hold SHIFT and BANK together to reset to default settings. To complete: Press Right Encoder, rotate to find best Jogwheel movement threshold.


User needs are very different, and we like this. We implemented a ‘mode’ concept, allowing you to customize DARK WHEEL to your needs. DARK WHEEL can be operated from a simple one deck controller with just few controls to a multi DECK, real SHIFT and multi BANK device. The mapping always stays simple, because the firmware covers all logic, buttons and status LED’s.

Midi Chart

Why do the BANK and SHIFT buttons send same messages in different layer?

To make user mapping much more easy. Many controllers are doing this wrong (or we assume the vendor forgot to think about it): if a BANK button would change the note of itself, then the button would no longer be ‘one’ unique BANK button or even more worse: the press note would be different to the following release note. This would make any mapping unnecessarily complex. DARK WHEEL protects these button notes (always same note) to avoid any headache or problems.

Why does the jogwheel not support different CC in SHIFT or BANK layer?

To avoid any risks during the mix.  Spinning jogwheel could stop a song if you press e.g. SHIFT before it is stable in position, because the message stream note gets modified (means the older one interrupted).  So it would be much too risky to use any Layer features for the jogwheel, so we kept it simple and did not add additional Layer CC messages.  We even could not see any value for ‘spinning’ on different Layer ;).  Yes, we know, why not use the jogwheel as FX parameter wheel on 2nd Layer?  You still CAN map this if the DJ app allows modifiers (e.g. Traktor), but it would be much too risky if the controller would modify the CC itself.  And of course the DECK selector works for jogwheel too, so both jogwheel CC messages can be mapped independently for 1, 2 or 4 decks.   

Does DARK WHEEL jogwheel support toggling between Pitch bend and Scratch/Move?

Yes, but only with a trick in mapping, because the full metal jogwheel has no dedicated platter or outer ring. In past we tested an automatically toggling (triggered from capacitive pressure level), but we learned: this would be far too risky for professional usage; a too strong touch during pitch bending stopped the song often accidently. So we decided for a 100% reliable workflow: Mapping an additional control as touching control, we decided for the Left Encoder Push, feels quite comfortable for us (user could remap also to any other control). To make it even more comfortable: we added additional features in default mapping, examples: Automatic Scratch mode in Play paused mode, locking touch platter for easier one-hand usage, different led color for pitchbend and Scratch mode etc.

The intended use of the DARK WHEEL jogwheel is not for scratching, the DARK WHEEL jogwheel messages are optimized for fine cue and grid adjustments (with high tick resolution) and for smooth pitch bending. The CC values are calculated dynamically (depending on acceleration, mapping between 0-127, not only simple 63/65 values which we have seen in cheaper controllers). In combination with the ball bearing and multi spin capability even a beat searching (over 4-16 bars) works well without the need to modify any actions in the mapping. We use about 600 TPR (ticks/turn) in the DJ application; this value range works best for all use cases.

What are ‘SEND/RECEIVE Enhancements to solve DJ app specific limitations’ ?

Even the powerful DJ Player Pro (DJPP) has missing midi mapping features. Examples: it is not possible in DJPP to map CC knobs as jogwheel touch OR realizing a latching jogwheel touch feature OR triggering DJPP SHIFT on different layer OR accessing the 16 FX pads directly without additional pad mode toggling buttons. Our solution: We added few additional note messages in our Dark Wheel firmware to overcome such restrictions. All mentioned gaps are solved; our DJPP default mapping offers all these features.

Why does SHIFT have 3 modes and BANK have 4 modes?

Yes, this is the only difference we made, for good reason: SHIFT offers up to 2 Layers, BANK up to 4 Layers, which means you have 8 (2x4) Layers already. If SHIFT would also offer a mode 4 (meaning 4 Layers) you would end up with 16 Layers; we are quite sure no user could memorize them all ; ) - even the midi protocol (127 noted per channel) would limit this. DARK WHEEL offers 8 Layers per deck (with about 110 different notes, 440 unique messages in 4 DECK mode), so we assume this should cover most mapping needs : ).

Let us know what you think about this midi mapping concept,
all ideas and feedback welcome ; )

Close Menu