- C++ 74.6%
- PowerShell 19.7%
- Inno Setup 3.9%
- CMake 1.8%
| assets | ||
| installer | ||
| scripts | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| CMakeLists.txt | ||
| LICENSE | ||
| README.md | ||
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.