Skip to content
commit-collectivePublic

About

Deckbench

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Deckbench

release tests

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.

Four simulated decks with transport controls, beat strips and a network event log

Try the browser demo · Real hardware setup · API and options

Start a local bench

Python 3.8 or later. From a cloned repository or extracted release:

python -m deckbench --numbers 2,3,4 --on

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

Choose a workflow

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.

Automate it

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.

Documentation

Verification and support

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.

Contributing

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.

Licence

MIT OR Apache-2.0, at your option. LICENSE-MIT · LICENSE-APACHE

About

Deckbench

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages