No meu esforço com o som do Linux, acabei desabilitando o auto-registro do Pulse Audio (assim ele não reinicia quando desligado):
Adicione autospawn=no
a ~/.pulse/client.conf
.
- Pare com
pactl exit
- Comece com
pulseaudio
Fazendo material de som ao vivo ou algo parecido, encerro o PA e só executo o JACK. Nenhuma ponte de PA Eu nunca obtive latência satisfatoriamente reduzida usando PA ou JACK + PA.
Este artigo parece dar uma boa introdução às camadas, que também menciona Phonon
.
Você talvez tenha lido isso e também não esteja atualizado, mas talvez aproxime-o de um entendimento: Linux Music Workflow: Mudando do Mac OS X para o Ubuntu com Kim Cascone . Observe o diagrama acima do título "Fluxo de trabalho" . (Que você também pode encontrar aqui em diagrama esquemático do JACK .) Leia também os links, por exemplo. o topo Introdução ao Linux Audio , mesmo que a partir de 2004 ele ofereça uma visão rápida da ALSA.
Embora eu não esteja familiarizado comigo mesmo, acredito que uma boa abordagem é dividir o aprendizado em várias partes.
- Entenda o ALSA
- Entenda o JACK (especialmente porque você quer fazer um trabalho de estúdio.)
- Entenda o Pulse Audio
nessa ordem. Não é de admirar que se lute com o som do Linux. Isso tem muito a ver com a história e como tudo evoluiu. É também por isso que, se alguém quiser realmente entendê-lo, é bom aprender a história dele. Assim, novamente - ALSA é um bom lugar para começar. Faça algum sniffing no OSS. E trabalhe seu caminho.
A forma rápida de poder fazer com que ela funcione é qualquer um desses guias .
Simplisticamente; A ALSA faz parte do kernel e sabe como lidar com vários hardwares. O JACK, assim como o Pulse Audio, usa API para controlar e interagir com o hardware. O ALSA também pode ser usado sozinho como um servidor de som. Aplicativos usa JACK / PA API para fazer o trabalho de som multi-thread.
Uma visão rápida do seu sistema pode ser obtida executando o script alsa-info.sh
encontrado aqui .
Um diagrama muito simplificado de uma vista borrada mostrando algumas das conexões:
+------------------------------------------------+
| SOUNDCARD |
|------------------------------------------------| _____ __
| ___________ | / \/ \
| | ADC | <---- analog in --[o---7 :===========|==|==|=[';]
| -----|----- | \____7 \__/
| __________ AMP | |
| | MIXER |----+------o |
| +---|---+-- AMP_____|______ | _______
| | | DAC | ---> analog out -[o------[ o o o ] ♫ ♬ ♪ ♩ ♭ ♪
| | +----------+ | | |
| | | | (o) |
| -- -+---^-- --v-- -- -- --^-- --v-- --+-- | | |
| CONTROLS | | ((0)) |
| | |_______|
| |
+------------------------------||----------------+
||
ADC: Analog to digital ||
DAC: Digital to analog |- udev trigged and mounted
_______________________________||________________
| |
| KERNEL |
|¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ -|-|-|-|- ¨ ¨ ¨ ¨ ¨|
| |
| ALSA API <--> [Device Drivers] |
| ^ | module-alsa-card +--------|--
| | | | |
+---------|--|---------------------------| Memory Buffer I/O
: | v | |
| +----|---|--
| JACK ------------ PULSE AUDIO --------------+ |
| sinks | |--
| * hardware-access-points * hardware-sink | | Uses ALSA API for HW I/O
| * virtual-devices * mediaplayer-sink | | Mixing, Control etc.
| * recorder-sink | |
| * ... | |--
| | |
|-----------------|------|--------------------|---|
| APPLICATIONS -----------------+ |
|-------------------------------------------------|
| |
| Software based mixing |
| |
+-------------------------------------------------+