Ridirigere l’output audio di un programma sull’input di un altro con Pulseaudio

Pulseaudio è il sistema che usa Linux per gestire i dispositivi audio.
Pulseaudio consente a più applicazioni di usare lo stesso hardware e di usare eventualmente hardware presente su altre macchine in rete.
L’architettura è abbastanza complessa, per approfondire consiglio la pagina in inglese su Wikipedia.
Lo scopo di questo post è spiegare come dire ad una applicazione che fa uso dei segnali audio in ingresso di fare in modo di usare come sorgente l’output di un altra applicazione.
Per esempio possiamo usare gqrx per sintonizzare un segnale RTTY e fldigi per demodulare lo stesso.
Fondamentale è installare pavucontrol e padsp, può far comodo anche padevchooser.
Installare al solito con il comando apt-get.

sudo apt-get install pavucontrol padevchooser

Con pavucontrol è possibile fare in modo che un programma registri l’output di un altro che sta facendo playback.
Padsp è un wrapper che consente di wrappare le applicazioni che usano OSS ( /dev/dsp ) su pulseaudio, è fondamentale perchè consente poi di fare il routing audio delle applicazioni che usano OSS con pavucontrol.
In pratica si lancia l’applicativo come parametro di padsp.
Es. padsp /usr/bin/firefox
Pavucontrol mostra le applicazioni che correntemente usano i dispositivi audio in riproduzione e registrazione.
Se vogliamo che un programma in registrazione prelevi il suono dall’output di un altro programma, è sufficiente selezionare nel tab “Recording”, come “capture”, l’opzione “Monitor of “.
Es “Monitor of Internal Audio Analog Stereo”.

decodifica codice morse con fldigi e pulseaudio
decodifica  RTTY con fldigi e pulseaudio
decodifica  PSK31 da websdr con fldigi tramite pulseaudio

Ho fatto delle prove usando le radio online di websdr, i risultati sono eccellenti come si vede dagli screenshot sopra.
L’output audio delle applet di websdr con Chrome è visto come ingresso dal decoder fldigi, in questo modo si riescono a sentire in cuffia e demodulare contemporaneamente segnali RTTY o codice morse o PSK31 sintonizzati sulla radio web remota.
Chrome va lanciato tramite padsp per fare in modo che l’uscita audio delle applet sia vista da pulseaudio

padsp /usr/bin/google-chrome

Gli esempi sopra sono focalizzati sull’utilizzo di programmi di decodifica di modulazioni digitali ma il concetto può essere esteso a qualsiasi altra applicazione.
Esempio si potrebbe voler registrare uno stream audio proveniente dal browser con audacity.

Riferimenti

  • No Related Post