Repository navigation
Releases: Stijn-Jacobs/cdj-nxs2-qemu
Release list
v0.0.7
What's new since v0.0.6
CDJ-2000NXS2: no more sudden silence
The NXS2 could lose its sound for good partway through a track, most often after pressing MASTER TEMPO. The emulated DSP finished an SPI transfer too early, so its own interrupt handler wiped the "done" signal and the audio stalled. Transfers are now timed to the DSP's own cycle: in 21 test runs with MASTER TEMPO none went silent, against 1 in 10 before.
Virtual deck
- The four HOT CUE pads (A-D) in the
--appwindow press the real panel keys. Pad A is confirmed to set and recall a cue; B-D use the same firmware path but are not yet checked on a running deck. BANK and CALL/DELETE are still unwired.
Fixes
- CDJ-2000 and CDJ-2000NXS: the tempo fader works. The panel reported its centre position as zero, so the firmware ignored the fader. Thanks to Erhan (#4).
- DSP module build: on a USB stick without artist tags the profile play never loaded a track. Every player now loads it from the TRACK list. Thanks to Erhan (#5).
- DSP module build: a failed profile play stops at once and says why, instead of waiting two minutes and ending in a Python traceback.
- Linux: sound works on a plain Linux host, not only under WSL. Thanks to Erhan (#3).
- XDJ-700: the short white diagonal lines under the overview waveform are gone. They were the cue markers, drawn slanted by the emulated 2D graphics engine.
Update patcher (experimental, untested on real hardware)
- A patched
.UPDkeeps the MAIN section's S0 header record, and anything after the last section is carried through unchanged. - No patched update has been tried on a real deck yet. Flash at your own risk.
Full Changelog: v0.0.6...v0.0.7
v0.0.6
What's new since v0.0.5
Real time on more players
The XDJ-700, CDJ-900NXS and XDJ-1000MK2 now play in real time with sound, once ./setup.sh has built their DSP module. Every older player except the CDJ-900 now does. All of them stay experimental; the README's feature matrix says what works on each.
Pro DJ Link on the older players (experimental)
- The CDJ-2000, CDJ-2000NXS and CDJ-900 board no longer believes its network cable is unplugged, so it can send on Pro DJ Link.
DJLINK=1(or--djlink on) puts an older player on the Pro DJ Link network with its own DHCP server. It is off by default.- Measured on the CDJ-2000NXS: it takes an address, announces itself and agrees player numbers with a CDJ-2000NXS2. Browsing the other player's USB is not checked yet.
README
- The feature matrix shows the new real-time and sound results and Pro DJ Link on the CDJ-2000NXS.
Full Changelog: v0.0.5...v0.0.6
v0.0.5
What's new since v0.0.4
More players
Seven older players now boot their own firmware, each on its newest official release. All are experimental; the README's player table and its feature matrix (under "Feature matrix per player") say what works on each.
- CDJ-2000 (4.33), CDJ-2000NXS (1.44) and XDJ-1000 (1.13) play from USB in real time with sound, once
./setup.shhas built their DSP module. - XDJ-1000MK2, XDJ-700, CDJ-900NXS and CDJ-900 load and play from USB, below real time (the sound is chopped).
- Touch screens work on the XDJ players, and the older players have keyboard shortcuts in their windows.
- Running decks can be saved and restored (
SNAPSHOT=idle|loaded).
README
- Reorganised, with stale and repeated text removed, and a feature matrix per player (collapsed, under "Supported players") that is updated from measured results.
DSP module
./setup.shbuilds each player's DSP module from two short plays of your own firmware (about 20-40 minutes), and asks first.--skip-dspleaves it out. The one-hour recording-based build is gone.- The module is stamped with what it was built from. When the generator, the DSP core or the firmware changes,
./start.shdoes not load the old one, says so, and./setup.shbuilds it again. - Without a module
./start.shshows a banner saying how to build it.
New mods
All are off by default and switched on in ./setup.sh; each has its own page under mods/.
- Phrase (
phrase): a coloured band along the overview, one colour per phrase of the track (intro, verse, chorus, ...), CDJ-3000 style. - TCNet (
tcnet): the deck is a TCNet Master node, so ShowKontrol, Resolume and lighting desks follow its position, BPM and track. - USB-MIDI clock (
usb_midi): Start, Stop, Continue and a steady 24-per-beat clock over the rear USB port.
Fixes
- CDJ-2000NXS2: a paused deck with MASTER TEMPO on is silent instead of looping its last buffer, and the DSP clock follows a slow host at start-up instead of falling behind.
- Older players: a paused deck is silent, audio runs at 44.1 kHz instead of 40 kHz, and the DSP skips its idle loop.
- Setup: answers are no longer lost or misread, a newly chosen player is remembered, and a player without images no longer counts as installed.
- XDJ-1000MK2: its firmware installs, and it no longer starts the NXS2.
- macOS: the Blackfin core builds with clang.
Full Changelog: v0.0.4...v0.0.5
v0.0.4
What's new since v0.0.3
New mods
All are off by default and switched on in ./setup.sh. Each is a real firmware patch, and mods/patch_update.py can write it into a .UPD for a real deck (untested on real hardware). Each has its own page under mods/.
-
Ableton Link (
ableton_link): the deck joins Ableton Link as a peer, so Ableton Live or any Link app follows its tempo and beat. Tested against Ableton Live 12 and rekordbox Performance mode. -
OSC (
osc): the deck sends its beats and state as OSC messages on UDP broadcast port 50010, for lighting desks and scripts:- per beat:
/cdj/<player>/beat,bar,timing; - state:
playing,state,loaded,end,master,sync,masterdeck,track; - events:
load,play,stop,cue,loop.
scripts/net/osc_relay.pypasses them on to apps on the same PC. - per beat:
-
3-band waveform (
three_band): the centre waveform and the overview are drawn in three bands (low blue, mid amber, high white), CDJ-3000 style, from the track's own 3-band analysis. Tracks without it keep the stock colours.
Connect apps on your PC
- TAP mode (Windows, one deck):
DJLINK=tap:CDJ-Linkputs the deck on a TAP network adapter, so rekordbox and Ableton Live on the same PC see it on Pro DJ Link. rekordbox can browse and load tracks onto the deck.scripts/net/tap_setup.ps1does the one-time setup; see "Connecting rekordbox and Ableton Live on this PC" in the README. - Rear USB-B port: the deck's USB device port is now emulated and connects as the real deck's USB device.
scripts/net/usb_midi_port.pyturns it into a MIDI port on your computer (loopMIDI on Windows) and replays the traffic at the deck's own pace.
Fixes
- Touch screen: a mouse click no longer registers twice when the mouse moves while held.
- Network: incoming frames are held while the deck's receive buffer is full instead of being dropped, so tracks loaded from rekordbox arrive whole. The TAP adapter's MTU is capped at 1500, which fixes E-8309 on rekordbox loads.
- A paused deck no longer repeats its last audio buffer.
- Closing the Terminal or the screen window now stops the whole emulator. It used to leave the boards running, which on macOS made the next launch fail with error -47.
- Linux release build: fixed the build failing on compiler warnings.
Under the hood
- MAIN firmware mods share a hook layer, so several mods can patch the same spot in the firmware.
- The board and DSP core sources are split into their own modules.
- First models for the older CDJ-2000 and CDJ-2000NXS boards and the CDJ-2000 display processor. These are not usable yet.
Full Changelog: v0.0.3...v0.0.4
v0.0.3
v0.0.2
v0.0.1
What's Changed
New Contributors
Full Changelog: https://github.com/Stijn-Jacobs/cdj-nxs2-qemu/commits/v0.0.1