PortAudio
Intro
PortAudio é uma biblioteca que facilita a construção de programas multi-plataforma para processamento de áudio. Seu programa funcionará em vários hosts: ALSA, OSS, CoreAudio (iOS), JACK...
Interessa saber que ele torna o acesso ao dispositivo de áudio transparente e descomplicado: basta concentrar-se na escrita da função de callback que é chamada pelo PortAudio quando o dispositivo de áudio estiver com fome.
Uma alternativa ao PortAudio é RtAudio, uma classe em C++, bastante simples e interessante.
Hello, World!
Para compilar, tenha o PortAudio instalado. No Ubuntu, basta instalar o pacote, mas caso deseje habilitar flags para debug, é interessante compilar do zero o PortAudio e definir algumas flags (habilitando bindings C++, host jack e informações de debug):
cd portaudio/ ./configure --with-jack --enable-cxx --enable-debug-output --prefix=/usr make -j 3 sudo make install
Comece por um arquivo de exemplo:
cp portaudio/examples/paex_saw.c saw.c gcc -lasound -lm -lpthread -pthread -lportaudio -o saw saw.c /usr/lib/libportaudio.so ./saw