About This Guide

This chapter includes:

What you'll find in this guide

The Audio Developer's Guide is intended for developers who wish to write audio applications using the QNX Sound Architecture (QSA) drivers and library.

This table may help you find what you need in this guide:

To find out about: Go to:
The structure of an audio application Audio Architecture
Playing and recording sound Playing and Capturing Audio Data
The structure of a mixer Mixer Architecture
Audio library functions Audio Library
How to code a .wav player in C wave.c example
How to code a .wav recorder in C waverec.c example
How to code a mix_ctl in C mix_ctl.c example
Why libasound.a isn't offered LGPL License Agreement
Terms used in this guide Glossary

Note: You should have already installed QNX Neutrino and become familiar with its architecture. For a detailed overview, see the System Architecture guide.

The key components of the QNX Audio driver architecture include:

Audio system manager.
deva-ctrl-*.so drivers
Audio drivers. For example, the audio driver for the Ensoniq Audio PCI cards is deva-ctrl-audiopci.so. For more information, see the entries for the deva-* audio drivers in the QNX Neutrino Utilities Reference.
Programmer interface library.
<asound.h>, <asoundlib.h>
Header files in /usr/include/sys/.

Typographical conventions

Throughout this manual, we use certain typographical conventions to distinguish technical terms. In general, the conventions we use conform to those found in IEEE POSIX publications. The following table summarizes our conventions:

Reference Example
Code examples if( stream == NULL )
Command options -lR
Commands make
Environment variables PATH
File and pathnames /dev/null
Function names exit()
Keyboard chords Ctrl-Alt-Delete
Keyboard input something you type
Keyboard keys Enter
Program output login:
Programming constants NULL
Programming data types unsigned short
Programming literals 0xFF, "message string"
Variable names stdin
User-interface components Cancel

We use an arrow (→) in directions for accessing menu items, like this:

You'll find the Other... menu item under Perspective-->Show View.

We use notes, cautions, and warnings to highlight important messages:

Note: Notes point out something important or useful.

Caution: Cautions tell you about commands or procedures that may have unwanted or undesirable side effects.

WARNING: Warnings tell you about commands or procedures that could be dangerous to your files, your hardware, or even yourself.

Note to Windows users

In our documentation, we use a forward slash (/) as a delimiter in all pathnames, including those pointing to Windows files.

We also generally follow POSIX/UNIX filesystem conventions.

Navigation buttons

At the top and bottom of our HTML docs, you'll see some or all of these buttons:

Use this button: To move:
Previous To the previous part of the document.
Contents “Up” in the document:
  • In a prose book, this typically takes you to About This Guide.
  • In a reference book, it takes you to the listing of items that start with a given letter. For example, if you're looking at the docs for abs(), this button takes you to the listing of the functions that start with A.
Keyword index To the keyword index.
Next To the next part of the document.

Technical support

To obtain technical support for any QNX product, visit the Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.

What's new in QNX Neutrino 6.5.0

Voice conversion
The libasound library now supports devices that have more than two channels, and it provides a mechanism that lets you configure how the voice converter plugin replicates or reduces the voices or channels. For more information, see Controlling voice conversion in the Playing and Capturing Audio Data chapter.
This structure now includes a sw_mixer_subchn_name member that you can use to assign a name to the software mixer subchannel.
Get the current voice conversion structure for a channel
snd_pcm_plugin_read(), snd_pcm_plugin_write(), snd_pcm_read()
These functions indicate an error of EIO if the channel isn't in the prepared or running state.
Set the current voice conversion structure for a channel
Data structure that controls voice conversion
wave.c, waverec.c, mix_ctl.c
We've updated these examples.
Get the size of the next fragment to write
Get the maximum possible fragment size
Set the system's source mode

What's new in QNX Neutrino 6.4

Create a connection and handle to a mixer device specified by name
Create a handle and open a connection to an audio interface specified by name

What's new in QNX Neutrino 6.3

Get the number and names of control switches for the mixer
Get a mixer switch setting
Adjust a mixer switch setting
Information about a mixer's switch
A sample application that captures the groups and switches in the mixer

What's new in QNX Neutrino 6.2

The QNX Sound Architecture has evolved away from ALSA. You should reread this entire guide.

What's new in QNX Neutrino 6.1

Changed content

Removed the SND_PCM_CHNINFO_BATCH flag because it was deprecated in the source code.

Copyright © 2000–2010, QNX Software Systems GmbH & Co. KG. All rights reserved.