Skip to content

Releases

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 18:51

Added

  • [devtools] Developer Mode (#39): a control API and cdj3k-emu ctl, --headless, --ephemeral (a throwaway copy of slot N as slot N+4) and a read-only debug window. Reference: docs/control-api.md

Modified

  • [network] On macOS 15, where vmnet refuses bridged mode for the app and isolates host-mode instances from each other, both modes go through a root socket_vmnet bundled with the app. Starting it asks for the admin password; it stops when no slot uses it (#47)
  • [emulation] The service-mode combo is held until the app sends its first panel frame, instead of for a fixed 5 s (#38)

Fixed

  • [ui] Slow jog turns reached the deck as a still platter: below about 53°/s at JOG ADJUST 0.5 (#42)
  • [ui] Hot cue pad brightness did not render correctly
  • [ui] The CDJ-3000 nav pod bloom spilled onto the extended screen beside BACK
  • [ui] The first rotary or BEAT LOOP turn after a guest restart moved more than one row (#39)
  • [emulation] A track on a hot-attached FAT drive whose name had non-ASCII characters failed to open with E-8302
  • [emulation] A USB drive's partitions could be read before the drive reported its size (#39)
  • [emulation] Shutdown and quit, slot settings that could lose a slot's identity, and smaller fixes in the guest, firmware, update and UI code
  • [build] QEMU's meson install failed on Linux hosts (missing vhost-user-gpu)

Downloads

Host Package
macOS 15 or later universal
Windows 10 2004 or later arm64 · x64
Debian, Ubuntu aarch64 · x86_64
Fedora, RHEL, openSUSE aarch64 · x86_64
Any Linux distribution aarch64 · x86_64
Pull requests

What's Changed

  • fix: shutdown, quit and slot settings fixes after 0.4.0 by @nsaintot in #36
  • Hold the service-mode combo until the app's first MOSI frame by @nsaintot in #38
  • feat: developer tools, ephemeral slots and E2E by @nsaintot in #39
  • fix(panel): show the hot cue pads' drive level by @nsaintot in #41
  • fix(ui): send slow jog turns to the deck by @nsaintot in #42
  • fix(ui): keep CDJ-3000 nav pod bloom off the extended screen by @nsaintot in #43
  • test(streams): fix flaky jog_shm test on macOS CI by @nsaintot in #44
  • fix(qemu): build vhost-user-gpu so meson install succeeds on Linux by @erhan- in #45
  • fix(initramfs): mount hot-attached FAT drives with utf8 by @9c5s in #48
  • fix(net): reach vmnet through a root socket_vmnet on macOS 15 (#47) by @nsaintot in #49

New Contributors

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 17:56
17d24f1

Added

  • [emulation] CDJ-1500X support (#26): its own slate, with a tilt view of the front panel and USB slot
  • [mods] Deck mods (#31): per-slot mods in Manage Emulation › Manage Mods. Add an archive or a folder, or Add from URL…; reorder, switch each mod on or off, and read each mod's status and journal after a boot. Emulation › Enable Mods switches them all. Format: docs/mods.md
  • [updates] Auto-updater (#16): checks at launch, every 6 hours and from Check for Update…; offers Skip This Version, Remind Me Later, and automatic download and install
    • macOS: Sparkle installs the new .dmg at restart
    • Windows and AppImage: the update downloads while the decks play and installs at restart, or at quit with Later
    • .deb and .rpm: the package is downloaded and verified to the downloads folder; the app shows the apt or dnf command that installs it
    • The update feeds are signed with Ed25519
  • [build] CI runs a sentrux quality gate (#33)

Modified

  • [ui] Delete, Restart and install on a slot that another window runs act at once and show that window's reply, also when it is minimized (#32)
  • [packaging] The .rpm requires library sonames instead of Fedora package names, so it installs on openSUSE (#27)
  • [build] egui 0.36; building from source needs Rust 1.95 (#29)

Fixed

  • [emulation] The usb mount was lost after a network mode change (#28)

Removed

  • [build] boot.sh and unpack-initramfs.sh (#33)

Downloads

Host Package
macOS 15 or later universal
Windows 10 2004 or later arm64 · x64
Debian, Ubuntu aarch64 · x86_64
Fedora, RHEL, openSUSE aarch64 · x86_64
Any Linux distribution aarch64 · x86_64
Pull requests

What's Changed

  • ci: release naming stability by @nsaintot in #24
  • feat: auto-updater (#16) by @nsaintot in #25
  • feat: CDJ-1500X support by @nsaintot in #26
  • fix(rpm): depend on sonames, not distro package names by @nsaintot in #27
  • fix: CDJ-3000 networking, jog stutter on local macOS builds, USB after network change by @nsaintot in #28
  • build: egui/eframe 0.29 → 0.36, Rust 1.99.0 (MSRV 1.95) by @nsaintot in #29
  • feat: deck mods by @nsaintot in #31
  • feat: per-window socket instead of request files by @nsaintot in #32
  • refactor: sentrux quality gate, structural sweep and style guide by @nsaintot in #33
  • fix(streams): read the LCD mappings through atomic loads by @nsaintot in #34
  • ci: release notes from the tag message by @nsaintot in #35

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 21:22

What's Changed

Added

  • [platform] Windows host (#17), x64 and arm64 installers
    • (sub-bullets unchanged)
  • [platform] Linux host (#13), x86_64 and aarch64 as .deb, .rpm and AppImage
    • (sub-bullets unchanged)
  • [platform] Intel Macs (#21): one universal app; Intel runs under TCG, flagged by a TCG menu
  • [emulation] Rekorbox LINK support (#11)
  • [ui] Root SSH option in the setup window, for development purpose
  • [packaging] SHA256SUMS.txt with every release; releases are built and smoke-tested by CI (#22, #23)

Modified

  • [platform] macOS 15.0 or newer is required (was 13)
  • [firmware] Firmware provisioning runs inside a throwaway guest; the host needs no shell tools
  • [firmware] The CDJ-3000X cabinet now opens noticeably faster: ~4 s instead of ~34 s under TCG; an already-installed slot needs Reinstall to get this improvement
  • [emulation] Software emulation keeps up: the CDJ-3000X plays at 1x under TCG and the X server thread is no longer starved
  • [emulation] USB attach and PC Link sent during boot are no longer lost; the deck's USB menu no longer stays grayed after a firmware install
  • [emulation] Fewer false cautions at boot: no E-8307 for the deck's own PC Link gadget, no E-7026 WLAN module error (#12)
  • [audio] The CDJ-3000X no longer plays silence under TCG
  • [network] Network bridges are now cleaned after use (Linux, macOS TAP)
  • [ui] The boot shade clears on the deck's first panel frame instead of x paints of the screen (#12)
  • [ui] Jog Haptics shows only when a Force Touch trackpad is present; Instances no longer marks a killed slot as running
  • [packaging] Release files are named CDJ3K-Emulator-<version>-<os>-<arch>

Removed

  • [packaging] The unused copy of the firmware's kernel modules in the app bundle
  • [build] bundle.sh, replaced by packaging/macos/{stage,build}.sh

Downloads

Host Package
macOS 13+, Apple silicon CDJ3K-Emulator-0.3.0.dmg
Debian / Ubuntu, x86_64 · aarch64 CDJ3K-Emulator-0.3.0-linux-x86_64.deb · CDJ3K-Emulator-0.3.0-linux-aarch64.deb
Fedora / RHEL, x86_64 · aarch64 CDJ3K-Emulator-0.3.0-linux-x86_64.rpm · CDJ3K-Emulator-0.3.0-linux-aarch64.rpm
Any distribution, x86_64 · aarch64 CDJ3K-Emulator-0.3.0-linux-x86_64.AppImage · CDJ3K-Emulator-0.3.0-linux-aarch64.AppImage

Full Changelog: v0.2.0...v0.3.0

v0.3.0-rc1

v0.3.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@nsaintot nsaintot released this 30 Sep 21:43
1a4f47a

First release candidate with Linux support, beside macOS. Built from #13 at 1a4f47a.

Downloads

Host Package
macOS 13+, Apple silicon CDJ3K-Emulator-0.3.0-rc1.dmg (notarized)
Debian / Ubuntu, x86_64 · aarch64 cdj3k-emu_0.3.0-rc1_amd64.deb · cdj3k-emu_0.3.0-rc1_arm64.deb
Fedora / RHEL, x86_64 · aarch64 cdj3k-emu-0.3.0-rc1-1.x86_64.rpm · cdj3k-emu-0.3.0-rc1-1.aarch64.rpm
Any distribution, x86_64 · aarch64 CDJ3K-Emulator-0.3.0-rc1-x86_64.AppImage · CDJ3K-Emulator-0.3.0-rc1-aarch64.AppImage

Checksums are in SHA256SUMS. The Linux packages need glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+) and install to /opt/cdj3k-emu.

Linux

  • aarch64 with KVM uses hardware acceleration. x86_64 runs under software emulation (TCG): a slower deck and occasional audio pops. A gauge beside the slot pill says so, and why.
  • Audio through PipeWire; Pro DJ Link bridged on a NIC (macvtap) or a bridge; USB passthrough through udisks.
  • Requires GL 3.3, Wayland or X11, PipeWire, udisks2, and 3 GiB free in /dev/shm.
  • KVM and real-time audio on native aarch64 Linux have not been measured yet: reports welcome.

All platforms

  • Firmware provisioning runs inside a throwaway guest, so the host needs no shell tools.
  • The setup window has a visual Root SSH option for development.

v0.2.0

Choose a tag to compare

@nsaintot nsaintot released this 24 Sep 17:27
5fc3e66

What's Changed

Added

  • [emulation] CDJ-3000X support (#10): runs beside the CDJ-3000. Touchscreen, Device Library Plus, PC Link, and install from the deck's .UPD or its ISO
  • [pc-link] PC Link (#8): the deck appears to macOS as USB-HID + USB-MIDI hardware for djay, Traktor, Ableton and other DAWs. The PC Link menu item is the cable; several instances can be plugged in at once
  • [ui] Emulation manager/Slot selector: new slates to manage the handle the slots and emulation models
  • [ui] LEDs: adjusted the rendering pipeline with false color (real world leds) instead of straight RGB pass

Modified

  • [network] No more admin prompt for vmnet networking (#7): QEMU opens vmnet itself, and instances share one segment by UUID. TAP mode still asks for admin
  • [firmware] Firmware installs run beside a running emulation and go in at the slot's next start; a failed install no longer empties the slot
  • [emulation] Launching a slot another window already owns brings that window forward
  • [emulation] The service-mode button combo is held more reliably at boot
    • [ui] Knob positions and some other settings moved from the app-wide settings to each slot's; an existing install loses them once
  • [ui] "Restart MIDI Services" and the raw-disk "Retry" dialogs now act
  • [build] Building from source needs Rust 1.88

Fixed

  • [network] vmnet no longer hangs on macOS 26+
  • [network] TAP mode: the bridge stays up while QEMU starts; the guest no longer ends up with a 169.254 address

Removed

  • [mods] In-tree EP122 mods, the EP122 Mods menu item, --no-mods and the STEMS sidecar. The mods ship separately from cdj3k-mods
  • [network] The bundled socket_vmnet daemon

Full Changelog: v0.1.2...v0.2.0

Installing the .dmg

Mount the DMG and drag the .app to Applications. Notarized and stapled; no quarantine workaround needed.

CDJ3K-Emulator-0.2.0.dmg SHA-256: d2d0d88b2edeb7286b6bc5500ebaef778c19c612623ec88a25e6acf92dcf70af

v0.1.2

Choose a tag to compare

@nsaintot nsaintot released this 11 Sep 11:35
256e881

What's Changed

Added

  • [packaging] Self-contained, notarized app: Homebrew dylibs are bundled, signed with a timestamped Developer ID, notarized and stapled. No Homebrew needed (fixes #2)
  • [mods] Emulation > EP122 Mods toggle, off by default and saved per instance; --no-mods turns it off for one launch
  • [mods] EP122 mods from cdj3k-mods, linked into the shim, with the STEMS sidecar (stemd_client)
  • [emulation] CDJ3K_EMU_TCG=1 selects TCG over HVF

Modified

  • [network] Host-only mode is DHCP-less and renamed Host-only (link-local)
  • [network] The shared socket_vmnet daemon stays up while any instance uses it; quitting the first instance no longer cuts the network for the others
  • [emulation] Guest RAM raised to 3 GiB (no more oom-killer events)
  • [emulation] Raw syscall failures report their own errno instead of EPERM
  • [docs] README: dead doc links fixed

Full Changelog: v0.1.1...v0.1.2

Installing the .dmg

Mount the DMG and drag the .app to Applications; no quarantine workaround needed from this release

CDJ3K-Emulator-0.1.2.dmg SHA-256: ff35b434c49b6dee591103b45d5edb5e666b30b6cc927b8389e92535a21f0dba

v0.1.1

Choose a tag to compare

@nsaintot nsaintot released this 13 Jun 13:31
d1a25ef

What's Changed

Added

  • [network] Host-only (link-local) mode: instances join one shared socket_vmnet segment, visible from the host (#1)

Modified

  • [network] Host-only and bridged modes share the same socket_vmnet paths (#1)
  • [docs] README: duplicate audio and SPI sub-CPU entries removed, stale ALC entry corrected, demo GIFs added

Full Changelog: v0.1.0...v0.1.1

Installing the .dmg

The bundled .dmg is not signed. Gatekeeper will refuse to open it with "CDJ3K Emulator is damaged and can't be opened". After mounting the DMG and dragging the .app to Applications, clear the quarantine bit:

xattr -dr com.apple.quarantine "/Applications/CDJ3K Emulator.app"

v0.1.0 — initial public release

Choose a tag to compare

@nsaintot nsaintot released this 14 May 04:28
a3ec493

First public release of cdj3k-emu

See the README for what's in scope (and what isn't) and the NOTICE for the third-party license inventory.

Getting the firmware

cdj3k-emu does not ship Pioneer firmware. Supply your own .UPD file and decryption key — the in-app Install Firmware wizard handles the rest. Only firmware 3.00 or newer (Rockchip RK3399) is supported; see Firmware compatibility.

Installing the .dmg

The bundled .dmg is not signed. Gatekeeper will refuse to open it with "CDJ3K Emulator is damaged and can't be opened". After mounting the DMG and dragging the .app to Applications, clear the quarantine bit:

xattr -dr com.apple.quarantine "/Applications/CDJ3K Emulator.app"

Then launch normally. macOS 13+ on Apple Silicon required; 15+ recommended for in-kernel vGIC. (hardware accelarated)