Simulated DJ decks and mixers for testing software, hardware and emulators that speak Pro DJ Link. Drive them from a browser, HTTP API or scenario.
Try the browser demo · Real hardware setup · API and options
Python 3.8 or later. From a cloned repository or extracted release:
python -m deckbench --numbers 2,3,4 --onOpen http://127.0.0.1:8750/. No runtime dependencies to install.
You can also install the checkout with python -m pip install ..
The page controls play, cue, sync, master, tempo, loops and track loading. Its side panel shows events, scenarios, the mixer and network settings. The optional browser sound is the bench's, not the device under test's.
Local decks use 127.0.0.N. Run the device under test in the same network
namespace. If an emulator runs in WSL, run Deckbench there too.
Linux and Windows have full broadcast integration checks. On macOS, use an
Ethernet or VM bridge interface rather than the default loopback setup.
Native adapter support is implemented, with a dedicated CI job configured
for unicast and browser checks. Mac hardware validation is still pending.
See macOS setup and networking.
| Goal | Start here |
|---|---|
| Explore the interface without a network | Browser demo, simulated in the browser |
| Test an app or emulator locally | The command above, then scenarios |
| Put simulated decks beside real hardware | Network aliases, broadcast and ports |
| Use a phone as the screen of a running bench | Phone pairing and connection choices |
The bench provides discovery, statuses, beats, sync/master handover, track metadata and a simulated DJM. Model profiles vary packet shape and advertised capabilities. They are not complete emulations of those players. StagelinQ is planned.
deckbench.testing.Bench starts an isolated process, waits for readiness
and stops it when the context closes:
from deckbench.testing import Bench
with Bench(numbers=[2, 3], on=True) as bench:
bench.post("api/deck/2/tempo/126")
print(bench.output())Use JSON scenarios for timed actions and expectations, adapters for a device's controls and lamps, and the HTTP reference from any language.
- Protocol and verification limits
- Audio streaming and tracks
- Mixer and startup
- Network monitor and journal
- Hosting the browser app
- Development and reliable checks
- Protocol roadmap, including StagelinQ
The implementation follows public protocol analyses and is exercised through synthetic fixtures and integration tests. Packet-layout checks do not establish compatibility with every physical player. See protocol notes.
Report an issue with the version, OS, command, expected result and log. Redact tokens and private addresses. Follow releases on GitHub or Commit Collective.
Bug reports, testing on different setups, documentation fixes and protocol contributions are welcome. See the contribution guide for checks and what to include. Open an issue before starting a larger change.
MIT OR Apache-2.0, at your option. LICENSE-MIT · LICENSE-APACHE
