Skip to content

Audio Devices

MZAP supports three types of audio output devices. The device type is configured via settings before initialization.

The legacy Windows audio API. Provides the widest hardware compatibility but highest latency.

  • Use when: Maximum device compatibility is needed
  • Latency: ~50-100ms
  • Mode: Shared (other apps can use the device simultaneously)

Windows Audio Session API — the recommended choice for most installations.

  • Use when: Good balance of latency and compatibility is needed
  • Latency: ~10-30ms
  • Mode: Exclusive (dedicated access) or shared
  • Buffer: Configurable, default 50ms

Audio Stream Input/Output — designed for professional audio hardware.

  • Use when: Lowest latency and multi-channel I/O are required
  • Latency: ~1-10ms
  • Mode: Exclusive
  • Inputs: ASIO input channels are available as audio capture sources
  • Drivers: Requires ASIO-compatible hardware or ASIO4ALL

When you click Initialize Devices, MZAP:

  1. Initializes a silent internal device for stream operations
  2. Enumerates all devices of the configured type
  3. Filters out duplicate “Default” pseudo-devices
  4. Realizes your saved zones on the matching devices
  5. Starts the level metering service

Zones are user-defined rather than created one-per-channel automatically — see Zones and Players.

MZAP detects when devices are connected or disconnected. Use Refresh Devices to re-enumerate without restarting the application.

Refresh is incremental — it no longer tears down and rebuilds the whole audio engine:

  • Devices that are still connected, and any audio currently playing through them, are left completely untouched. There is no audio gap.
  • Newly connected output devices are added and their zones are realized; newly connected input/loopback devices get input players created automatically.
  • Disconnected output devices are removed; their zones go offline and routes to them are cleared. Disconnected input/loopback devices keep their input players as offline placeholders so routing and assignments survive a reconnect.
  • When a device is (re)connected, the players and zones routed to it keep their saved volume and mute settings — a newly-added device no longer plays at full volume ignoring the muted state shown in the UI.

The device, zone, and player-routing views scale cleanly to interfaces with many channels (e.g. a 64-channel Dante Virtual Soundcard):

  • Device cards show the first 16 zone/input chips and fold the rest behind a “+N more” toggle, so cards stay a consistent height. Chips are ordered by hardware channel.
  • The device detail Zones list and the player-routing zone grid gain a filter box and bounded-height scrolling once there are more than 16 zones.
  • To create a zone on every free channel at once, use Create all zones on the device detail page — see Bulk-create zones.

The Devices screen supports custom drag-and-drop ordering, matching the Players and Zones screens. Drag a card by its grip handle to reorder; output devices and input devices are reordered independently within their sections, and the chosen order is remembered with the workspace.

Device and input names containing non-Latin characters (for example Cyrillic) display correctly. They are read from the audio engine as UTF-8.