Hardware
What Open DJ 1.0 alpha has been used with, and how far each piece has been checked. Deck A is what the Mac app does today and which controllers and audio devices have been seen working; Deck B is the USB export targets and the controller work that needs a source checkout.
Mac app or source checkout.
The Mac app is macOS on Apple silicon only. Some hardware works in it; some needs Open DJ running from a source checkout in Chrome or Edge.
The 1.0 alpha app draws its window with macOS's own web view (Tauri and WKWebView), which has no WebMIDI, so its MIDI panel says MIDI is not supported there and never asks for access. The audio engine can read MIDI by itself, but the engine shipped inside the app is built without that feature. Controllers work when Open DJ runs from a source checkout in Chrome or Edge. The source is planned to open on Mon 5 Oct 2026; see building from source. Moving the app to an Electron shell, which has Web MIDI, is a v1.1 plan (open PR #3867), not this build; see the roadmap.
| Hardware | Mac app, 1.0 alpha | Source checkout in Chrome or Edge |
|---|---|---|
| MIDI controllers | Not in the app | Four mapped controllers See the tables below. |
| Main audio output | macOS default output Choose the device in macOS Sound settings. The app's own output pickers do not work in this build yet. | Pick main and cue devices |
| Headphone cue on a second device | Not yet Built, waiting for a test on a Mac. Until then, cue on the one output: practice mode or split-cable mode. | Works |
| USB stick, import | Import tracks Files stay on the stick. It uses the folder import, so no BPM, key or beatgrid comes from the stick, and tag reading in the packaged app is not yet verified (PARITY-15 is open). | Import tracks, with tags |
| USB stick, export for Pioneer players | Not in the app | Command line, untested on players See USB export targets. |
CTRL-04, NAE-17, CUEOUT-09, CUEOUT-14, CUEOUT-22, INSTALL-13, CAT-06
Tested live.
Tested means someone played a set on it. Each row names the date and the evidence.
| Controller | Status | Date and evidence |
|---|---|---|
| Pioneer DDJ-400 | Played live | The project README, edited Sat 15 Aug 2026, records that the rig has been played live on a DDJ-400, run from a source checkout in a browser. A regression test in the source dates a bug found during a DDJ-400 set to Fri 7 Aug 2026, with the DDJ-400 as the audio interface; the place is not recorded. Two decks are mapped; jog wheels, beat sync and effects on the controller are not. |
README.md, PARITY-TODO.md, CUEOUT-05
Mapped but untested.
These controllers have a map in the source, built from the maker's published MIDI list or a community map. No set played on them is recorded in the README, the parity list or the session notes.
| Controller | Status | How far it has been checked |
|---|---|---|
| Pioneer DDJ-FLX4 | Mapped, untested in a set | Map built from the official AlphaTheta MIDI message list. On Fri 18 Sep 2026 a capture tool listened to a real unit and confirmed 42 MIDI messages against the maker's list, from a sweep of about half the surface; transport, hot cue pads and browse were not swept. 13 of the map's 65 bindings are confirmed on hardware. |
| Pioneer DDJ-FLX10 | Mapped, untested | Map built from the official MIDI message list and tested with synthetic messages. Its hardware checklist in the source is unticked. |
| Reloop Mixtour | Mapped, untested | Map built from a community Mixxx mapping of Reloop's MIDI map. Tested with synthetic messages; its hardware checklist is unticked. The same map answers to a Mixtour Pro; its extra controls are not bound. |
CTRL-01, CTRL-02, CONTROLLER-QA.md
Not supported.
What does not work today, in either the Mac app or a source checkout.
| What | Status | Why |
|---|---|---|
| Any MIDI controller in the Mac app | Not supported | No WebMIDI in macOS's web view, and the shipped engine has no MIDI input. |
| Controllers without a map | Not supported | In Chrome or Edge the MIDI panel's log shows every message such a controller sends, but no message runs a command until someone writes a map. |
| Jog wheels, scratching, effects, sampler | Not mapped | Left out of every current map on purpose, except that the DDJ-FLX4's Color FX knob drives the channel filter. The controls show up in the log. |
| Controller screens and meters over HID | Not supported | Features such as the DDJ-FLX10 jog screens run over an undocumented USB protocol, not MIDI. |
| Timecode vinyl (DVS) | Not supported | Not built. |
| A controller's own headphone jack for cue | Not supported | Chrome reported a DDJ-400 as a two-channel output, so its headphone pair is out of reach. From a source checkout, pick a second output device for cue. On one output, use practice mode (cue blended into the main output) or split-cable mode (main on the left, cue on the right). |
Audio devices seen working.
Devices Open DJ has been seen playing through, and where the evidence comes from. This is not a compatibility list.
| Device | Where | Evidence |
|---|---|---|
| MacBook built-in speakers | Mac app | The app's audio logs recorded on Wed 9 Sep 2026 show it playing to the built-in speakers on a MacBook. |
| Bluetooth headphones as the macOS output | Mac app | A Bluetooth output appears in the same logs. On Wed 2 Sep 2026 a phone call took a pair of Bluetooth headphones and Open DJ, running in a browser, went silent; the Mac app now detects that stall and offers to switch output. Bluetooth on the cue is for auditioning, not beatmatching. |
| Pioneer DDJ-400 built-in sound card | Source checkout in a browser | Used as the main output for the Fri 7 Aug 2026 set preparation. Its headphone jack was not reachable for cue (see Not supported). |
AUDIOLIVE-01, AUDIO-DEVICE-01, CUEOUT-03
USB export targets.
The source can write the newer Pioneer library file onto a stick. These players are targets, not yet tested on hardware.
| Player | Status | Notes |
|---|---|---|
| CDJ-3000X | Target, not yet tested on hardware | Reads OneLibrary. |
| OPUS-QUAD | Target, not yet tested on hardware | Reads OneLibrary. |
| OMNIS-DUO | Target, not yet tested on hardware | Reads OneLibrary. |
| XDJ-AZ | Target, not yet tested on hardware | Reads OneLibrary. |
What the export does
It is a command-line tool in a source checkout. It adds playlists and track details to the OneLibrary file (exportLibrary.db) on a stick that rekordbox has already exported. It does not write the older Device Library file (export.pdb), the analysis folder or the audio, so it does not make a gig stick on its own.
Players that read only the Device Library, such as the CDJ-3000 and XDJ-XZ, are not targets of this path.
Why it refuses by default
Writing to a stick is behind the same gate as writing to rekordbox. In a source checkout it refuses unless MDT_REKORDBOX_WRITEBACK_ENABLED=1 is set. The Mac app clears that setting before it starts its engine, so the app cannot write to a stick at all. See the rekordbox migration notes.
CAT-06, SYNC-ONEWAY-01, INSTALL-13
Controller work in the source.
Built and tested in the source, not in the Mac app build.
MIDI in the audio engine
The Rust audio engine can open a mapped controller itself with odj-audio serve --midi, using the same maps as the web UI. It needs a build with the midi feature. The engine inside the Mac app is built with the device feature only and answers that it has no MIDI input.
Checking a map against a real controller
A capture tool, tools/controller-probe/capture.py, listens to a controller through CoreMIDI, walks its controls one at a time and grades them against the expected map. It recorded the DDJ-FLX4 round on Fri 18 Sep 2026 in its free-listening sniff mode.
NAE-17, CTRL-02