Dark Wheel

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

currently in beta Phase
Contact us

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 its 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 Feb. 03, 2020): 
Hardware is ready, Firmware in beta testing. Next step: documentation and final pricing. We start beta shipping now (February 2020). 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 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, clickless touch pressure sensitive (for CDJ and Vinyl mode) 
  • Encoder: 2 original Panasonic encoder, soft click (low pressure) push encoder, 20 TPR. Full metal  knobs with concave top shape
  • Tactile buttons: 8 original MEC switches (US made), with midi mappable bicolor LEDs (red/green, optionally: yellow/green and blue unicolor) 
  • LEDs: unicolor encoder feedback leds (midi mappable), bicolor LEDs for indicating Jogwheel operation mode (L: CDJ/Vinyl mode and R: midi message indicator) 
  • All control elements send midi messages. Activated SHIFT and BANK buttons (and any combinations) modify midi note of all other buttons and encoder. MIDI CHANNEL button on top allows to trigger 1, 2 or 4 deck with one Dark Wheel controller 


  • 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 sandwich pcb: Dark Wheel control elements carrier pcb, smd components soldered in SMT (surface-mount technology), CAD factory made, 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 chain
  • DC 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 less 80mA). Intended use: Optional power for USB OUT connected devices and Dark Wheel


  • Midi class compliant, no driver needed 
  • Highly user customizable via ‘Power-On Setup Mode’: Flexible DECK, SHIFT and BANK ‘modes’ enhance the behaviour of 3 buttons (from ‘normal’ buttons to multilayer/multi-deck features). Realizing user specific needs, simplifying complex mappings in the DJ software:
  • 4 MIDI CHANNEL modes (TOP knob behaviour): off (normal btn. only) – 2nd deck during hold (momentary) – toggle between 2 decks – toggle between 4 decks
  • 3 SHIFT modes (LEFT BOTTOM knob behaviour): off (normal btn. only) – shift momentary – shift permanently (toggle on/off behaviour)
  • 4 BANK modes (RIGHT BOTTOM knob behaviour): off (normal btn. only) – bank 2 momentary – toggle bank 1/2 – toggle bank 1-4 
  • JOGWHEEL: customizable touch threshold (Vinyl mode) and spin detection sensitivity

Dark Wheel Features

will come NEXT


Content will come soon


Overview, technical specifications, features, midi messages chart

Quick Guide

How to use Dark Wheel control elements

Customizing Guide

How to customize Dark Wheel, mode customizing, jogwheel calibration

Mapping Files

DJ Player Pro
Mapping file

(available soon)

Traktor Pro
Mapping file




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).  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?

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 – 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 (A/B), change midi channel for short deck B actions (press and hold)
2 = [default] Two DECK mode (A/B), change midi channel, toggle between Deck A (green) and Deck B (red) 
3 = Four DECK mode (A/B/C(D), toggle midi channel, toggle thru A>B>C>D>A.  As DARK WHEEL has a bicolor LED we added red/green blinking for Deck C and OFF for Deck D

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 = [default] SHIFT momentary mode, modifies the messages of all other buttons as long you press and hold
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 = [default] Two BANK toggle mode, activates 2nd layer for all buttons, press again to jump back to 1st layer
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.

Side step – How can the user customize these 3 modes

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, but here for 2 examples in summary: 

  • 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. 

Here is an example of how I currently use my DARK WHEEL with my favourite DJ application DJ Player Pro (DJPP):

  • I love 4 decks, so my top button channel is working in mode=3, I can use one DARK WHEEL for all 4 decks.
  • SHIFT is used in momentary mode=1, press & hold allows to access hotcue 5-8 (with hotcue 1-4 buttons below jogwheel), so of course we can trigger 8 hotcues with 4 DARK WHEEL buttons.
  • BANK works in mode=2 (2 banks latching), so I toggle once to activate totally different features. My first BANK covers all around hotcues, looping, beat jumps etc, jogwheel bending etc.  My second BANK covers all FX needs, the 4 buttons below jogwheel (I still call them ‘hotcue’ here) trigger all 8 pad FX, encoders are used for FX parameter etc. Technical details for our DJPP friends: with the automatically generated intrinsic messages (mapped to the DJPP pad mode function), DARK WHEEL is doing all for me, the BANK button is not even mapped.
  • I also mapped the DJPP application ‘shift’ to my bottom mid button, having all nice DJPP shift features in addition, both ‘SHIFT’ and my BANK button work perfect together.
  • What we miss in DJPP with DARK WHEEL:  The possibility to trigger both colors of the 4 hotcue buttons (for single vs. looped hotcues), maybe a DJPP release in future may offer this, but at least in Traktor Pro we can map this DARK WHEEL feature: yellow for single hotcues, green for looped hotcues…  nice ; )
  • Final comment: Of course all SHIFT/Layer features above and all LED keep consistent on deck change. DARK WHEEL can work like 2 or 4 different devices (and each device remembers all SHIFT or BANK Layer and LED status).


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 CDJ and VINYL mode behaviour?

Yes, hold SHIFT and touch the jogwheel knob; this toggles between both modes. This SHIFT + touch feature even works if SHIFT mode is deactivated. Once activated the touch platter (jogwheel knob) activates the CC19 message and can stop the song (scratch mode) if mapped in the DJ app. You always can map the ‘touch’ event (note 118) to any action if needed, but keep in mind that it also toggles between CDJ and VINYL mode.

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 ‘intrinsic' messages (1-6)?

This is a quite powerful detailed feature: DARK WHEEL sends messages even you did not press a button (automatically if SHIFT or BANK gets changed). It ‘informs’ the DJ application about the current mode (via virtual button ON/OFF events). This allows nice options in some DJ applications (e.g. DJPP): I mapped note ‘4’ to ‘Pad Mode FX’, so my pads (4 buttons below jogwheel) change from hotcue to FX mode automatically on my second bank. You could do similar with mappings with the BANK button (but the mapping would be much more complex, because the intrinsic events send 2 notes together (NoteOn and NoteOff), this makes the mapping much easier for the user).

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 : ).

Are there more parameters (beyond modes) which can be user customized?

Yes. We added two nice features to the jogwheel behaviour: Top platter touch sensitivity and rotation movement detection threshold. The DARK WHEEL jogwheel is built in full metal, so we could use the whole knob as a capacitive element (without any platter clicks or moving components). The user can customize via power setup, on which level pressure the note 58 and CC19 messages will be fired. This makes the jogwheel very flexible, even pitch bending (touching and rotating softly on top) works nice. The second parameter defines the detection threshold for smallest rotation movements. This allows customizing the rotation behaviour to highest resolution, avoiding any accentual messages and a stepless analog feeling. Works great, more details see Customizing Guide Manual.

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

Close Menu