Primary and Secondary Devices
Why Routling opens one ASIO device as the clock and attaches everything else as a secondary, and what that costs.
Routling has exactly one primary device and any number of secondary devices. The distinction determines timing and latency for everything you build.
The primary device#
The primary device is an ASIO device, and it drives the entire audio engine. Its callback is the heartbeat: every time the driver asks for a buffer, Routling processes the whole graph.
This is why the app requires ASIO to start. ASIO gives a reliable, low-latency, regular callback - the thing you want everything else synchronised to.
You choose it with Open Device, and you can only have one at a time. Change Device in the device menu swaps it.
Secondary devices#
Everything else attaches as a secondary:
- WASAPI, MME and Kernel Streaming devices
- App Capture and System Audio captures
- Routling I/O virtual devices
Secondary devices run on their own clocks, independent of the primary. Two separate clocks never tick at exactly the same rate - so the engine buffers between them and continuously adapts, absorbing the drift.
That buffer is the price of using anything other than your primary device.
What that costs#
| Path | Latency |
|---|---|
| ASIO in → ASIO out | The device buffer alone - lowest possible |
| ASIO in → secondary out | Device buffer + secondary buffer |
| Secondary in → secondary out | Both secondary buffers |
The secondary buffer is set in Preferences → Devices:
| Setting | Added latency | When |
|---|---|---|
| Unsafe | ~21 ms | Lowest latency on stable devices |
| Safer | ~43 ms | A good balance |
| Safest | ~85 ms | Maximum stability, recommended for WDM. The default |
Practical consequence: keep anything latency-critical - live monitoring, an instrument you are playing - on the primary ASIO device. Route streaming, playback and capture through secondaries, where tens of milliseconds do not matter.
Adding secondary devices#
Right-click the canvas and pick from the device categories:
| Category | API |
|---|---|
| WASAPI Devices | Modern Windows audio, moderate latency |
| WDM/MME Devices | Legacy, maximum compatibility, highest latency |
| Kernel Streaming | Lower latency than WDM, more direct |
Each shows its channel counts. Choose the API your device actually works best with; WASAPI is usually the right answer.
Device identity and reconnection#
Routling records a stable identifier for every device, not just its name - a WASAPI endpoint ID, or asio:<driver> for ASIO. Windows renames devices more often than you would expect, and the stable ID survives that.
When a device is renamed, Routling matches it anyway and logs Device "X" is now named "Y" - matched by stable ID.
When a secondary device disappears - unplugged, monitor turned off, HDMI sink asleep - its node stays on the canvas as a disconnected placeholder. It reconnects automatically when the device returns.
Refresh Devices (canvas right-click) does both jobs at once: rebuilds stale secondary streams, and rescans for hardware plugged in after startup.
Closing the primary device#
Closing the primary removes the nodes that belonged to it. Secondary devices stay active - the log confirms "removed N node(s), secondary devices remain active".
Related#
- Latency and Buffers - the numbers in detail
- App Capture and System Audio - capture as a secondary
- Troubleshooting - devices that will not open or disappear
ASIO® is a registered trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.