lunedì 12 settembre 2011

Cattura audio con arecord

Arecord è un programma, fornito dal pacchetto alsa-utils, che in pratica funziona da registratore, ossia vi permette di catturare qualunque suono in riproduzione sul vostro pc GNU/Linux. L'apposita man page (man arecord) tuttavia non spiega affatto come selezionare il device sul quale arecord dovrà restare in ascolto. Ecco come fare:

Digitiamo in un terminale il comando:
$ amixer contents
seguiranno parecchie linee di output, quello che interessa a noi è l'interfaccia "Capture Source", per esempio sulla mia macchina ottengo:
numid=68,iface=MIXER,name='Capture Source'
  ; type=ENUMERATED,access=rw------,values=2,items=8
  ; Item #0 'Mic'
  ; Item #1 'CD'
  ; Item #2 'Video'
  ; Item #3 'Aux'
  ; Item #4 'Line'
  ; Item #5 'Mix'
  ; Item #6 'Mix Mono'
  ; Item #7 'Phone'
  : values=4,4
Values=4,4 indica che arecord utilizza come periferica di cattura 'Line', cioè un qualunque dispositivo collegato all'ingresso audio della sound card (per esempio un microfono).
Se invece volessimo catturare,ad esempio, l'audio di un gioco o di una radio in streaming dobbiamo spostare la cattura su 'Mix' con il comando:
$ amixer cset numid=68,iface=MIXER,name='Capture Source' 5
(attenzione al numid! Potrebbe essere diverso sulla vostra macchina). Per controllare che il comando abbia avuto successo potete eseguire nuovamente 'amixer contents' e verificare che values riporti '5,5' ovvero la periferica 'Mix'.

Per registrare, ad esempio, in formato wav - qualità CD (audio 16 bit - 44100 Hz) diamo:
$ arecord -f cd -t wav miofileaudio.wav
La combinzione Ctrl+C interrompe la registrazione e salva il file 'miofileaudio.wav'