No description
  • C++ 74.6%
  • PowerShell 19.7%
  • Inno Setup 3.9%
  • CMake 1.8%
Find a file
2026-10-29 14:32:42 +02:00
assets init 2026-10-29 14:32:42 +02:00
installer init 2026-10-29 14:32:42 +02:00
scripts init 2026-10-29 14:32:42 +02:00
src init 2026-10-29 14:32:42 +02:00
.gitignore init 2026-10-29 14:32:42 +02:00
AGENTS.md init 2026-10-29 14:32:42 +02:00
CMakeLists.txt init 2026-10-29 14:32:42 +02:00
LICENSE init 2026-10-29 14:32:42 +02:00
README.md init 2026-10-29 14:32:42 +02:00

Q5 Playback

Independent Windows x64 ASIO playback driver and tray settings app for the Qudelix-5K USB DAC. Version 0.2.0.

The driver provides stereo output through event-driven WASAPI exclusive mode and the existing Windows USB audio driver. There are no recording inputs, resampling, or added audio queues. The original minimum-buffer version has been tested successfully in REAPER by the device owner.

Install

Run dist/Q5-Playback-Setup-0.2.0-x64.exe and accept the Windows administrator prompt. Close DAWs and exit the Q5 Playback tray app before installing, upgrading, or uninstalling.

Setup installs into Program Files, registers ASIO automatically, and adds Q5 Playback to Windows Installed Apps with an uninstaller. It also creates Start menu entries. Desktop and Windows-login tray shortcuts are optional; the login shortcut applies to all users. Installer files are currently unsigned.

An existing development registration is updated to the installed DLL. The development files remain in the workspace. Uninstalling removes the installed driver registration rather than restoring that old development registration. User preferences are retained for reinstallations. No Windows USB driver or Qudelix firmware is replaced.

In your DAW:

  • REAPER: Preferences > Audio > Device > Audio system ASIO > driver Q5 Playback, outputs Qudelix Left and Qudelix Right.
  • Ableton: Preferences/Settings > Audio > Driver Type ASIO > Audio Device Q5 Playback, stereo output 1/2.

Start at 48 kHz with the default lowest-latency profile. Ableton compatibility still needs confirmation in the application.

Settings and tray

Open Q5 Playback from Start, click its tray icon, or use your DAW's ASIO Configuration button. A second launch opens the existing settings window. Right-click the tray icon to open settings or exit the app. The icon is restored if Windows Explorer restarts.

Available settings:

Setting Behavior
Lowest latency Hardware minimum, approximately 3 ms
Balanced Approximately 6 ms for more processing headroom
More headroom Approximately 10 ms for heavier projects
Default sample rate Initial rate: 44.1, 48, 88.2, or 96 kHz; the DAW can override it
Close to tray Keep the app running when its window is closed

Click Apply, then reopen the ASIO driver in the DAW to apply audio changes. Settings are per user, stored under HKCU\Software\Q5 Playback, and are read once during driver initialization. They are not applied to an existing audio session. The tray app does not process audio; exiting it leaves DAW playback running. The device connection indicator does not claim that a DAW is streaming or show its active sample rate.

The host buffer size is fixed to the native size negotiated for the saved profile and sample rate. A DAW must accept that size. At 48 kHz the three profiles use 144, 288, and 480 samples respectively. Profile durations are approximate; Windows may round to a supported frame count.

Exclusive access reserves the output from buffer creation until disposal, even when DAW transport is stopped. Other applications may be unable to play through it. Enable exclusive access in Windows sound settings. After a disconnect or worker failure, reopen the driver; automatic reconnect is not implemented. Only one ASIO host can use the device at a time.

Other applications stay silent after closing the DAW

Exclusive playback can interrupt an existing browser audio session. If sound does not resume after completely closing the DAW, refresh the playing page or restart playback in that application. Refreshing Thorium restored audio in the observed case, while Windows output selection, mute, and volume were correct and a new shared-mode stream could open successfully.

The tray app does not reserve the output. Simultaneous DAW and other-app playback is not supported by this exclusive-mode version; it would require a shared-mode backend. For diagnosis, build and run q5-diagnose.exe from the build's Release directory. It reports default outputs, Qudelix volume and mute, audio sessions, and whether a silent shared-mode stream can start.

Latency measurements

The connected device identifies as 0A12:4007 and supports packed 24-bit stereo PCM at these observed minimum buffer sizes:

Rate Buffer Duration
44,100 Hz 132 frames 2.993 ms
48,000 Hz 144 frames 3.000 ms
88,200 Hz 265 frames 3.005 ms
96,000 Hz 288 frames 3.000 ms

These are Windows/device buffer values, not measured analog output latency. Firmware DSP, DAC processing, and DAW/plugins can add delay. The driver reports Windows stream latency rounded up to whole samples.

Build and test

Requires Visual Studio 2022 C++ Build Tools, Windows SDK, and CMake. The development machine uses D:\BuildTools; the script also discovers other Visual Studio installations. The static C++ runtime is included, so users do not need a separate Visual C++ redistributable for these binaries.

.\scripts\fetch-sdk.ps1
.\scripts\build.ps1
.\build-v0.2\Release\q5-probe.exe
.\scripts\test-audio.ps1
.\scripts\test-ui.ps1

The build directory defaults to build-v0.2, preserving the originally tested driver under build. The SDK download is pinned to Steinberg's ASIO 2.3.4 archive and verified with SHA-256. Run scripts/make-icon.ps1 to regenerate the included icon from its vector drawing instructions.

Audio tests send silence through the actual DLL and device at all four rates and all three profiles. They check time-info and legacy callbacks, sample positions, invalid buffer requests, rate-change restrictions, stop/restart, and DLL lifetime. UI tests check preference persistence, close to tray, single-instance reopening, and clean exit, and write a window preview under the build directory. Tests restore the preferences they temporarily change. Close DAWs and the settings app before running tests. Silent tests do not prove glitch-free playback under a loaded DAW project.

Package

Install Inno Setup 6, or place its portable compiler at tools/inno/ISCC.exe:

.\scripts\package.ps1

The result is an EXE installer and matching source ZIP in dist. The installer includes that source archive and the complete SDK used for the build. Inno Setup manages the Windows uninstaller and registry cleanup. Installer/uninstaller execution requires administrator rights and must be verified in an elevated Windows session; the development session does not have those rights. Setup does not forcibly close DAWs.

For development-only manual registration, administrator PowerShell can run scripts/register.ps1; its -Uninstall flag removes that registration. Use Windows Installed Apps to uninstall a packaged installation.

Source layout

  • src/audio.hpp: endpoint selection, PCM negotiation, exclusive-stream initialization and alignment retry.
  • src/driver.cpp: COM/ASIO interface, audio worker, timing and buffer lifecycle.
  • src/settings.hpp: shared per-user preference storage and validation.
  • src/settings-app.cpp: native Windows settings window and tray lifecycle.
  • src/probe.cpp, src/smoke.cpp: capability probe and silent ASIO host.
  • installer/q5-playback.iss: installer, shortcuts, registry and uninstaller.

Normal audio rendering inside the driver performs no allocations, logging, or mutex acquisition. No kernel driver, firmware changes, vendor binary analysis, or REA dependency is needed for this implementation.

Licensing

Project source is GPL-3.0-only; see LICENSE. The build uses the GPLv3 option offered by the Steinberg ASIO SDK, which retains its own notices under third_party/asio-sdk/ASIOSDK. Distributions include corresponding source. ASIO is a trademark of Steinberg Media Technologies GmbH. This project is independent of Steinberg and Qudelix.