[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


232. Gestione della scheda audio

La scheda audio essenziale è semplicemente un mixer audio comprendente diversi ingressi e una o più uscite. I dispositivi più importanti relativi alla scheda audio sono `/dev/audio' e `/dev/dsp'. In particolare, il primo permette di trasmettere alla scheda dei file in formato digitale Sun, ovvero quelli che normalmente hanno l'estensione `.au'. Volendo gestire l'audio in modo diretto, attraverso questo file di dispositivo, occorre convertire i file audio nel formato Sun, e questo si ottiene di solito attraverso l'applicativo Sox. Nello stesso modo, leggendo da questo file di dispositivo, si ottiene un file in formato digitale Sun del segnale gestito o generato dalla scheda audio. In pratica:

cat mio_file.au > /dev/audio

questo comando serve a eseguire il file `mio_file.au', mentre il prossimo

dd if=/dev/audio of=registratore.au bs=8k count=8

serve a registrare per otto secondi (ogni secondo è un blocco di 8 Kbyte) generando il file `registratore.au'.

232.1 Aumix

Aumix è un applicativo per la gestione delle funzionalità di miscelazione e di equalizzazione della scheda audio. Può essere usato in modo interattivo, e in questo caso il programma richiede lo schermo di un terminale a caratteri, oppure direttamente attraverso le opzioni della riga di comando. In particolare, nella modalità interattiva mostra solo i canali audio che possono essere controllati effettivamente.

Il funzionamento di Aumix e degli altri programmi analoghi non è perfetto. Alle volte possono apparire dei controlli che di fatto non producono alcun risultato. Purtroppo questo dipende dalla qualità del codice scritto nel kernel per la gestione della scheda audio di cui si dispone.

232.1.1 Funzionamento interattivo di Aumix

La figura 232.1 mostra il funzionamento interattivo di Aumix, che si ottiene avviando l'eseguibile `aumix' senza indicare alcun argomento. In particolare si fa riferimento a una scheda audio SoundBlaster standard a 16 bit.

aumix  ++++++++++++++++++++++++++++++O+++<Vol      ++++++++++++O+++++++++++++
       ++++++++++++++++++++++++++++++O+++ Bass     ++++++++++++O+++++++++++++
Quit   ++++++++++++++++++++++++++++++O+++ Trebl    ++++++++++++O+++++++++++++
Load  PO+++++++++++++++++++++++++++++++++ Synth    ++++++++++++O+++++++++++++
Save   ++++++++++++++++++++++++++++++O+++ Pcm      ++++++++++++O+++++++++++++
Keys   O+++++++++++++++++++++++++++++++++ Spkr
Mute  PO+++++++++++++++++++++++++++++++++ Line     ++++++++++++O+++++++++++++
      RO+++++++++++++++++++++++++++++++++ Mic
      PO+++++++++++++++++++++++++++++++++ CD       ++++++++++++O+++++++++++++
       O+++++++++++++++++++++++++++++++++ Mix
       O+++++++++++++++++++++++++++++++++ IGain    ++++++++++++O+++++++++++++
       ++++++++++++++++++O+++++++++++++++ OGain    ++++++++++++O+++++++++++++
       0             Level            100          L         Balance        R

Figura 232.1: Esempio del funzionamento di Aumix in modalità interattiva.

Tanto per rendersi conto di questa variabilità nell'apparenza di Aumix, si può osservare anche la figura 232.2 che mostra cosa accade con una vecchia scheda SoundBlaster a 8 bit.

aumix  ++++++++++++++++++++++++++++++O+++<Vol      ++++++++++++O+++++++++++++
      PO+++++++++++++++++++++++++++++++++ Synth    ++++++++++++O+++++++++++++
Quit   ++++++++++++++++++++++++++++++O+++ Pcm      ++++++++++++O+++++++++++++
Load  PO+++++++++++++++++++++++++++++++++ Line     ++++++++++++O+++++++++++++
Save  RO+++++++++++++++++++++++++++++++++ Mic
Keys  PO+++++++++++++++++++++++++++++++++ CD       ++++++++++++O+++++++++++++
Mute   0             Level            100          L         Balance        R

Figura 232.2: Aumix con una vecchia scheda a 8 bit.

I canali stereofonici hanno anche la possibilità di essere bilanciati, come si vede intuitivamente dalle figura. Per selezionare un canale si possono utilizzare i tasti [freccia su] e [freccia giù]; per passare alla regolazione del bilanciamento si può utilizzare il tasto di tabulazione, [Tab], e così anche per tornare indietro all'elenco dei canali. Infine i tasti [freccia sinistra] e [freccia destra] permettono di regolare il volume del canale o di cambiare il bilanciamento, a seconda di dove si trova il cursore. È interessante notare che anche il mouse funziona, se gestito attraverso il demone `gpm'.

A fianco di alcuni livelli di volume appare la lettera «P», oppure la lettera «R». La prima sta per play, mentre la seconda sta per record. In pratica, i canali contrassegnati con la lettera «P» rappresentano un segnale in ingresso nel mixer audio, diretti semplicemente all'amplificatore finale (le uscite normali della scheda audio). Invece, i canali contrassegnati con la lettera «R», oltre che essere diretti all'amplificatore finale, sono utilizzati per la campionatura del segnale (di solito uno soltanto), ed è ciò che si riesce a leggere dal dispositivo `/dev/audio'.

Generalmente è solo il canale del microfono ad avere la sigla «R», e questo per ovvie ragioni. Tuttavia, è possibile modificare il comportamento di alcuni canali utilizzando la [barra spaziatrice], oppure il mouse (basta fare un clic sulla lettera per scambiarne il valore).

Tastiera Descrizione
pagina su, freccia su Passa al canale precedente.
pagina giù, freccia giù Passa al canale successivo.
Tab, Invio, >, < Scambia tra la regolazione del livello e del bilanciamento.
+, freccia destra Sposta il cursore a destra.
-, freccia sinistra Sposta il cursore a sinistra.
| Centra il bilanciamento.
Spazio Scambia la modalità di registrazione e di esecuzione.
S, s Salva le impostazioni nel file di configurazione.
L, l Carica le impostazioni dal file di configurazione.
K, k Mostra un guida sull'uso della tastiera.
M, m Azzera o ripristina il volume generale.
Esc, Q, q Termina il funzionamento.

Tabella 232.1: Alcuni comandi utili per l'uso di Aumix in modo interattivo.

232.1.2 Avvio di Aumix

aumix [<opzioni-di-canale>] [<altre-opzioni>]

L'eseguibile `aumix' è tutto ciò che compone l'applicativo omonimo. In modo particolare, le opzioni possono servire per regolare il volume di un certo canale (purché questo abbia una corrispondenza con la scheda audio disponibile effettivamente), oppure per conoscere il livello attuale o ancora per scambiare le modalità «R» (record) e «P» (play).

Alcune opzioni di canale

-v <percentuale>|q[uery]

Definisce o richiede di conoscere il valore del volume generale, espresso in forma percentuale rispetto al massimo.

-s <percentuale>|q[uery]

Definisce o richiede di conoscere il valore del volume del sintetizzatore, espresso in forma percentuale rispetto al massimo.

-w <percentuale>|q[uery]

Definisce o richiede di conoscere il valore del volume di una riproduzione digitale (PCM), espresso in forma percentuale rispetto al massimo. Si tratta del volume dell'esecuzione di un brano contenuto in un file.

-l <percentuale>|q[uery]|R|P

Definisce o richiede di conoscere il valore del volume della linea di ingresso esterna, espresso in forma percentuale rispetto al massimo. Se si utilizza la lettere `R' o la lettera `P', si intende passare alla modalità di registrazione o a quella di esecuzione.

-m <percentuale>|q[uery]|R|P

Definisce o richiede di conoscere il valore del volume del microfono, espresso in forma percentuale rispetto al massimo. Se si utilizza la lettere `R' o la lettera `P', si intende passare alla modalità di registrazione o a quella di esecuzione.

-c <percentuale>|q[uery]|R|P

Definisce o richiede di conoscere il valore del volume del canale relativo al lettore CD, espresso in forma percentuale rispetto al massimo. Se si utilizza la lettere `R' o la lettera `P', si intende passare alla modalità di registrazione o a quella di esecuzione.

Altre opzioni generali

-L

Carica le impostazioni dal file di configurazione `~/.aumixrc', e in sua mancanza dal file `/etc/aumixrc'.

-q

Interroga lo stato di tutti i canali esistenti e mostra il risultato attraverso lo standard output.

-S

Salva le impostazioni nel file `~/.aumixrc'.

Esempi

aumix -v 70

Regola il volume generale al 70%.

aumix -m 0 -l R

Regola il volume del canale microfonico a zero e indica la linea di ingresso come canale in registrazione.

232.1.3 Configurazione

La configurazione di Aumix consiste semplicemente dei file `~/.aumixrc'. Il file di configurazione personale viene creato utilizzando l'eseguibile `aumix' con l'opzione `-S', oppure quando il programma funziona in modalità interattiva, attraverso la pressione del tasto [s]. Il file di configurazione non viene caricato automaticamente: lo si può richiedere attraverso l'opzione `-L', oppure attraverso il tasto [l].

Quando viene caricata la configurazione, se il file `~/.aumixrc' manca, Aumix fa riferimento a `/etc/aumixrc', che potrebbe essere ottenuto semplicemente copiando una configurazione personale che si ritiene adatta a livello generale, in mancanza d'altro.

A titolo di esempio viene mostrato il contenuto di uno di questi file di configurazione, dove il significato delle righe che lo compongono dovrebbe essere intuitivo.

vol:76:76:P
synth:0:0:P
pcm:0:0:P
line:0:0:P
mic:0:0:R
cd:0:0:P

Alcune distribuzioni GNU/Linux utilizzano Aumix per memorizzare e ripristinare le regolazioni della scheda audio. In pratica, nella procedura di inizializzazione del sistema si fa in modo di salvare in un file, presumibilmente `/etc/.aumix', i valori utilizzati per ultimi durante la fase di arresto, mentre dallo stesso file vengono riletti durante la fase di avvio.

232.2 Esecuzione e registrazione di brani campionati

Per verificare il funzionamento del sistema di registrazione e di riproduzione di brani campionati, si possono usare direttamente i dispositivi `/dev/audio' e `/dev/dsp'. Entrambi permettono di leggere il risultato di una campionatura e di riprodurre gli stessi brani se questi vengono scritti sugli stessi dispositivi.

Il primo dei due file di dispositivo, `/dev/audio', fa riferimento al formato standard della Sun, semplificato al massimo. I file audio con questo formato hanno normalmente l'estensione `.au'. Il secondo, `/dev/dsp', rappresenta un formato audio grezzo.

Per «registrare» da questi dispositivi, basta leggerli e inviare ciò che si ottiene verso un file normale. Lo stesso file può essere diretto al dispositivo attraverso cui è stato generato, ottenendone la riproduzione. Tuttavia, per registrare occorre selezionare un canale dalla scheda audio, specificando che per questo è abilitata la registrazione. In generale si può trattare del canale microfonico, di quello del CD e della linea di ingresso esterna. In pratica, utilizzando Aumix, si tratta di avviare l'eseguibile `aumix' con l'opzione `-m', `-c' o `-l', rispettivamente, con l'argomento `R'. In queste condizioni, ogni 8 Kbyte corrispondono a un secondo di riproduzione audio, di conseguenza, si può utilizzare uno dei due comandi seguenti per campionare e memorizzare per un minuto in un file.

dd if=/dev/audio of=registratore.au bs=8k count=60

dd if=/dev/dsp of=registratore bs=8k count=60

Per riprodurre questi file, si devono utilizzare gli stessi dispositivi da cui sono stati generati. Rispettivamente, valgono i due comandi seguenti.

cat registratore.au > /dev/audio

cat registratore > /dev/dsp

232.3 Wavtools

Wavtools è un altro pacchetto per l'esecuzione e la registrazione di file audio in formato WAV. Utilizza in particolare il dispositivo `/dev/dsp'. Si compone di quattro eseguibili: `wavr' e `gwavr' per la registrazione; `wavp' e `gwavp' per l'esecuzione.

wavr [<opzioni>]

gwavr [<opzioni>]

wavp <file-wav>

gwavp <file-wav-gsm>

In pratica, non c'è bisogno di opzioni per eseguire un file attraverso `wavp' o `gwavp'. La lettera «g» iniziale di `gwavr' e `gwavp', indica che si tratta della versione predisposta per un formato WAV compresso utilizzando l'algoritmo GSM.

Alcune opzioni di wavr e gwavr

-f <file-wav>

Specifica il file da registrare.

-r <frequenza-campionamento>

Specifica la frequenza di campionamento. Alcuni valori comuni sono: 44100, 22050, 11025 e 8000.

-d <dimensione-campione>

Definisce la dimensione del campione in bit. Di solito si usano i valori 8 o 16.

-c 1|2

Definisce il numero dei canali: uno per una registrazione monofonica, due per una registrazione stereofonica.

-l <n-secondi>

Programma la durata della registrazione.

232.4 Xwave

Xwave è un applicativo relativamente completo per la registrazione, la modifica e l'esecuzione di brani musicali registrati in vari formati, in particolare in WAV RIFF. Si tratta di un applicativo per X. Nella figura 232.3 si vede il pannello principale dopo aver caricato un file WAV.

183.jpg

Figura 232.3: Pannello principale di Xwave.

Il programma eseguibile che svolge tutto il lavoro è `xwave'. Non richiede opzioni, e il suo funzionamento è intuitivo. È interessante la possibilità offerta di modificare un brano, per esempio usando il taglia-incolla (basta selezionare una porzione della traccia con il mouse), oppure introducendo degli effetti.

Può darsi che la registrazione non sia perfetta, ma questo è un particolare trascurabile rispetto alle altre possibilità di questo applicativo.

232.5 Mpg123

Mpg123 è un applicativo specializzato per l'esecuzione di brani memorizzati in formato MP3. È difficile trovarlo nelle distribuzioni GNU/Linux a causa della sua licenza, che per quanto «libera» pone qualche limitazione alla distribuzione. Mpg123 si compone in pratica solo dell'eseguibile omonimo: `mpg123'.

mpg123 [<opzioni>] {<file-mp3>|<uri-http>}

L'eseguibile in questione è ricco di opzioni e di possibilità; tuttavia dovrebbe bastare l'indicazione del file MP3 come unico argomento per iniziare la sua esecuzione attraverso la gestione dell'audio del sistema operativo (in pratica si arrangia a inviare i dati al dispositivo `/dev/audio' o `/dev/dsp', che deve avere i permessi necessari).

Una particolarità di Mpg123 è quella di poter caricare direttamente un file attraverso il protocollo HTTP. Per esempio:

mpg123 mio_file.mp3

avvia l'esecuzione del file `mio_file.mp3', mentre:

mpg123 "http://www.brot.dg/brano.mp3"

esegue direttamente il file che si ottiene dall'URI `http://www.brot.dg/brano.mp3'. Eventualmente, per questo è possibile servirsi anche di un proxy. Per maggiori dettagli si può consultare la pagina di manuale relativa: mpg123(1).

232.6 Sox

Sox è attualmente lo strumento più importante di conversione di file audio. In linea di massima, Sox è in grado di convertire da un formato a un altro, anche se i passaggi da una frequenza di campionatura a un'altra non danno risultati ottimi, e inoltre riesce a introdurre degli effetti interessanti.

Meritano attenzione alcuni effetti che Sox permette di introdurre attraverso la rielaborazione digitale del segnale: è possibile estrarre solo una porzione delle frequenze audio; si possono introdurre effetti di eco e di vibrato; è possibile invertire il brano.

Una particolarità di Sox è quella di distinguere i formati audio in base all'estensione dei nomi dei file (in quasi tutti i casi). La tabella 232.2 riporta l'elenco di alcuni di questi; per un elenco completo e una descrizione più dettagliata si può consultare la pagina di manuale sox(1).

Estensione/tipo Descrizione
.8svx Amiga 8SVX.
.au AU della Sun Microsystems.
.dat Audio espresso in formato testo.
.smp TurtleBeach MediaVision.
.voc SoundBlaster VOC.
.wav MS-Windows WAV RIFF.
ossdsp Formato del dispositivo `/dev/dsp'.

Tabella 232.2: Alcuni dei formati audio gestiti da Sox.

232.6.1 $ sox

sox [<opzioni-generali>] [<opzioni-di-formato>] <file-in-ingresso> [<opzioni-di-formato>] <file-in-ingresso> [<effetti>]

`sox' è l'eseguibile che svolge tutto il lavoro dell'applicativo Sox. Purtroppo la sintassi è un po' confusa, e lo schema che si vede qui è già una semplificazione di quella completa. In generale è necessaria l'indicazione di un file in ingresso e di uno in uscita. Per stabilire il formato di un file si fa riferimento all'estensione utilizzata nel nome; eventualmente si possono realizzare anche delle pipeline indicando un trattino orizzontale (`-') al posto del nome del file corrispondente (in ingresso o in uscita), però in questo caso occorre indicare un'opzione apposita per specificare il formato a cui si fa riferimento.

Le opzioni di formato si applicano al file indicato subito dopo; in pratica, quelle che appaiono prima del file in ingresso, si riferiscono a questo, mentre quelle indicate dopo il file in ingresso, riguardano il file in uscita.

Gli effetti che Sox è in grado di generare si indicano attraverso delle parole chiave collocate alla fine della riga di comando, dopo l'indicazione del file in uscita.

Alcune opzioni generali

-V

Emette una serie di informazioni sulle fasi del processo di elaborazione. Serve per avere un rapporto chiaro delle trasformazioni che sta applicando Sox.

-v <volume>

Permette di cambiare il volume del segnale. Il valore 1.0 rappresenta il livello iniziale: valori inferiori diminuiscono il volume, mentre valori superiori lo aumentano.

Alcune opzioni di formato

-t <tipo-di-file>

Permette di specificare il formato del file successivo (in ingresso o in uscita), attraverso una stringa che rappresenta l'estensione normale di questo (`.au', `.wav', ecc.).

-r <frequenza-di-campionamento>

Permette di specificare la frequenza di campionamento del file successivo (in ingresso o in uscita), attraverso l'indicazione di un numero che rappresenta la frequenza in Hz. In generale, è più probabile l'utilizzo di questa opzione in riferimento a un file in uscita.

-c <n-canali>

Permette di specificare il numero di canali audio del file successivo (in ingresso o in uscita). Come si può intendere, uno rappresenta un file monofonico, due stereofonico, e quattro quadrifonico.

Alcune opzioni che rappresentano un effetto

band <frequenza-centrale> <ampiezza>

Applica un filtro passa-banda. Gli argomenti di questa opzione sono valori numerici che si riferiscono a una frequenza in Hz.

highp <frequenza-filtro>

Applica un filtro passa-alto a partire dalla frequenza indicata come argomento. In pratica, le frequenze inferiori risulteranno molto attenuate.

echo <ritardo> <volume>

Inserisce un effetto eco in cui il ritardo è espresso in secondi, e il volume è riferito all'unità, per cui si utilizzano normalmente dei valori inferiori a uno per indicare un'attenuazione relativa.

vibro <velocità> <profondità>

Inserisce un effetto vibrato. La velocità indica la frequenza della vibrazione nel volume del segnale, mentre la profondità indica il volume dell'oscillazione di questo.

reverse

Inverte il corso del brano. Potrebbe servire in particolare per scoprire dei messaggi nascosti che siano stati introdotti ad arte nel segnale audio.

Esempi

sox prova.wav prova-vibrato.wav vibro 5 0.7

Legge il file `prova.wav' (di tipo WAV, data l'estensione) e lo trasforma nel file `prova-vibrato.wav', mantenendo le stesse caratteristiche riguardo alla campionatura, ma aggiungendo un effetto vibrato.

sox prova.wav prova-eco.wav echo 1 0.7

Legge il file `prova.wav' (di tipo WAV, data l'estensione) e lo trasforma nel file `prova-eco.wav', mantenendo le stesse caratteristiche riguardo alla campionatura, ma aggiungendo un effetto eco.

sox prova.wav prova-1000.wav band 1000 500

Legge il file `prova.wav' (di tipo WAV, data l'estensione) e lo trasforma nel file `prova-1000.wav', mantenendo le stesse caratteristiche riguardo alla campionatura, ma filtrando il segnale in modo da selezionare in particolare le frequenze da 750 Hz a 1250 Hz.

sox prova.wav -t .wav - band 1000 500 > prova-1000.wav

Come nell'esempio precedente, ma in questo caso il file in uscita viene ottenuto attraverso lo standard output, e per questo occorre specificare il tipo con l'opzione `-t'.

Non vengono mostrati esempi in cui si cambia il formato dei file audio, perché si tratta di un'operazione delicata e per questo è meglio leggere la documentazione originale. In particolare, non conviene tentare di ridurre la frequenza di campionatura, perché di solito il risultato è pessimo.

232.6.2 $ play, rec

play <file>

rec <file>

Sox è accompagnato generalmente da due script: `play' e `rec'. Il loro scopo è quello di facilitare l'ascolto e la registrazione, facendo affidamento sulle capacità di Sox di convertire al volo il formato di questi file. Quando non si ha la possibilità di utilizzare Wavplay, questa potrebbe essere l'unica risorsa per riuscire a gestire con un minimo di comodità le funzionalità audio.

A volte, questi script sono errati, probabilmente per un piccolo errore di sintassi nella scrittura di una struttura di selezione (`case'). Per semplificare le cose, viene mostrato il contenuto essenziale di questi due script. L'esecuzione di un brano registrato in un file avviene in pratica con un comando come quello seguente:

sox <file-da-eseguire> -t ossdsp -w -s /dev/dsp

Naturalmente, prima del file potrebbero essere aggiunte altre opzioni, se lo si ritiene opportuno; nello stesso modo si potrebbero aggiungere delle opzioni riferite a effetti da inserire nell'audio, indicandole alla fine del comando. In modo analogo, si può registrare un file:

sox -t ossdsp /dev/dsp <file-da-registrare>

Valgono le stesse considerazioni fatte per il caso dell'esecuzione di un brano, in particolare, le opzioni riferite al file che si vuole ottenere vanno messe subito prima di questo file, cioè dopo l'indicazione del dispositivo `/dev/dsp'.

232.7 8Hz-mp3

8Hz-mp3 è un programma che è stato disponibile gratuitamente, ma che pare avere qualche problema (si veda a questo proposito http://www.8hz.com/mp3/index.html). 8Hz-mp3 è in grado di convertire file WAV RIFF, o PCM, in MP3. In generale, conviene limitarsi alla conversione a partire da file WAV RIFF, dal momento che questi contengono nell'intestazione tutte le informazioni necessarie a conoscere il modo in cui sono campionati. L'eseguibile `8hz-mp3' è tutto ciò che compone questo programma:

8hz-mp3 [<opzioni>] <file-in-ingresso> <file-mp3-generato>

L'uso normale di 8Hz-mp3 non richiede alcuna opzione. Per la precisione, senza opzioni, 8Hz-mp3 si aspetta che il file in ingresso sia in formato WAV RIFF, e genera un file MP3 con la qualità migliore che è in grado di ottenere.

Alcune opzioni

-c

Imposta nel file MP3 il bit `copyright'. Senza questa opzione, questo bit non viene attivato.

-o

Imposta nel file MP3 il bit `original'. Senza questa opzione, questo bit non viene attivato.

-q <n-qualità>

Definisce esplicitamente il livello di qualità che si intende ottenere nel file MP3. Il valore predefinito è zero, che corrisponde alla qualità migliore. Valori superiori allo zero, fino a un massimo di 30, indicano qualità progressivamente inferiori.

Esempi

8hz-mp3 01.wav 01.mp3

Converte il file `01.wav' nel file `01.mp3', utilizzando le impostazioni predefinite.

for i in *.wav ; do 8hz-mp3 $i $i.mp3 ; done

Attraverso la shell, attiva un ciclo con il quale vengono convertiti tutti i file che terminano con estensione `.wav' in MP3, creando altrettanti file, che si distinguono perché hanno in più l'estensione `.mp3'.

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]