# VirtIO Sound

This document explains the setup and usage of the Virtio sound device. The Virtio sound device is a paravirtualized sound card device.

## Linux kernel support

Virtio sound requires a guest Linux kernel built with the `CONFIG_SND_VIRTIO` option.

## Description

Virtio sound implements capture and playback from inside a guest using the configured audio backend of the host machine.

## Device properties

The Virtio sound device can be configured with the following properties:

> - `jacks` number of physical jacks (Unimplemented).

> - `streams` number of PCM streams. At the moment, no stream configuration is supported: the first one will always be a playback stream, an optional second will always be a capture stream. Adding more will cycle stream directions from playback to capture.

> - `chmaps` number of channel maps (Unimplemented).

All streams are stereo and have the default channel positions `Front left, right`.

## Examples

Add an audio device and an audio backend at once with `-audio` and `model=virtio`:

> - pulseaudio: `-audio driver=pa,model=virtio` or `-audio driver=pa,model=virtio,server=/run/user/1000/pulse/native`

> - sdl: `-audio driver=sdl,model=virtio`

> - coreaudio: `-audio driver=coreaudio,model=virtio`

etc.

To specifically add virtualized sound devices, you have to specify a PCI device and an audio backend listed with `-audio driver=help` that works on your host machine, e.g.:

    -device virtio-sound-pci,audiodev=my_audiodev \
    -audiodev alsa,id=my_audiodev