L'autore di questo capitolo (Audio) è Manolo De Santis
Questo capitolo vuole essere una breve guida per l'uso dell'audio su NetBSD, visto che nessuno amerebbe mai un computer muto...
Innanzitutto bisogna sapere con che tipo di chipset audio abbiamo a che fare. Infatti non basta sapere chi ha prodotto la scheda audio per riuscire a farla funzionare con NetBSD, perché a volte i chipset di certe schede sono prodotti da terze parti. Ma niente paura! Nella maggioranza dei casi il kernel di NetBSD è in grado di rilevare il dispositivo, per cui basta dare un'occhiata all'output prodotto da dmesg.
Quindi dare un bel:
# dmesg | more
per vedere quale chipset audio sia stato individuato. In molti casi non si deve neppure intervenire sul kernel perché NetBSD individua e autoconfigura (quasi!) ogni scheda audio con molta facilità.
A volte non si riesce a far funzionare l'audio solo perché il chipset della scheda non è supportato da NetBSD (e qui molta gente ha ben pensato di acquistare una nuova scheda) o solo perché bisogna perderci un pò di tempo sopra.
Ebbene, questa sezione sarà utile solo ai possessori di PC e compatibili, visto che su altre architetture (tipo Amiga) non serve a molto, se non a niente. La cosa più importante per utilizzare una scheda audio su un PC con NetBSD è la configurazione del BIOS. Infatti, bisogna sapere qual è il tipo di interfaccia della scheda audio in possesso.
La scelta è tra PCI e ISA.
Una scheda di tipo ISA è in genere più difficile da configurare, soprattutto perché il BIOS ci mette ogni tanto lo zampino...
Sui nuovi computer in commercio (quelli prodotti in genere dopo la fine del 1997) c'è un'opzione del BIOS che crea grossi problemi alle schede audio ISA su NetBSD. Questa è 'PNP OS Installed' (si trova in genere in 'PNP/PCI Configuration'). Ebbene se questa opzione è presente bisogna disabilitarla. Quindi, impostarla su 'NO'.
Nota: può anche darsi che il tutto funzioni pur lasciando la suddetta opzione abilitata, non si sa mai!
Durante l'installazione di NetBSD vengono creati tutti i device in /dev. A noi interessano principalmente:
/dev/audio /dev/sound /dev/mixer
Se essi non sono presenti li possiamo creare così:
# cd /dev # ./MAKEDEV all
In tal modo vengono ricreati tutti i device, compresi quelli relativi all'audio.
Bene, a questo punto è molto probabile che la scheda audio sia già pronta per l'uso.
Si può subito testarla inviando un qualsiasi file (anche di testo o binario) direttamente a /dev/audio oppure /dev/sound in questo modo:
# cat NomeDelFile > /dev/audio
oppure anche
# cat NomeDelFile > /dev/sound
Se è possibile sentire qualcosa, allora non ci sono problemi, tutto funziona correttamente perché la scheda è direttamente supportata dal kernel del nostro sistema.
In caso contrario bisogna configurare il kernel impostando i device relativi alla nostra scheda audio.
Le schede audio supportate da NetBSD sono moltissime, infatti nel kernel GENERIC della versione 1.5 del sistema operativo sono già abilitate tutte le opzioni relative.
Alcuni PC non hanno la cosiddetta scheda sonora, bensì un chipset audio integrato nella mother board, e tale funzione non è abilitata nel kernel GENERIC. Bisogna individuare queste linee proprio nel file di configurazione del kernel GENERIC:
# Plug-and-Play BIOS and attached devices #pnpbios* at mainbus? # mainboard audio chips #ess* at pnpbios? index ? # ESS AudioDrive #sb* at pnpbios? index ? # NeoMagic 256AV in sb mode #wss* at pnpbios? index ? # NeoMagic 256AV in wss mode #ym* at pnpbios? index ? # OPL3-SA3
A questo punto bisogna togliere i commenti per abilitare i chipset audio integrati e ricompilare il kernel.
Nota: personalmente credo sia meglio fare una copia del file di configurazione GENERIC e lavorare su di essa, lasciando quindi invariato il file originale, come spiegato nel Capitolo 7.
Tornando alle schede audio, talvolta si devono impostare manualmente anche gli IRQ e i DMA.
Per una prova si possono lasciare tutte le opzioni abilitate perché molti chipset audio possono funzionare solamente emulando un altro tipo di dispositivo.
Generalmente molti chipset sfruttano la compatibilità con SoundBlaster, OPL ma nella maggioranza dei casi l'audio funziona sfruttando WSS.
OPL è un sintetizzatore MIDI prodotto da Yamaha e ne esistono diverse varianti in commercio (tra cui OPL2, OPL3SA, OPL3SA2, ecc.). Posso dire che moltissime schede audio in commercio possiedono questo microchip oppure uno totalmente compatibile. Ad esempio tutti i chip prodotti da Crystal (tra cui i comuni CS423x) possiedono questo chip, ed è proprio quest'ultimo a permetterne il funzionamento con NetBSD!
WSS non è proprio un microchip, anzi... è l'acronimo di Windows Sound System. Infatti wss è un driver del kernel di NetBSD che supporta il sistema audio di Microsoft Windows. Molte schede audio funzionano con Windows proprio perchè aderiscono a questo standard, WSS appunto. La stessa cosa fortunatament e vale anche per NetBSD.
Personalmente ho avuto modo di provare svariate schede con NetBSD e posso dire che molte di esse funzionano solo se opl* e wss* sono abilitati nel kernel!
Nessun problema con le Sound Blaster originali Creative: funzionano tutte, compresa la Sound Blaster Live 1024!
Una volta che tutto funziona correttamente si possono disabilitare dal kernel le opzioni relative ai devices audio che non ci interessano.
NetBSD possiede delle utility progettate esclusivamente per il controllo e l'utilizzo dei device audio. Esse sono:
audioctl
mixerctl
audioplay
audiorecord
Apparso dapprima in NetBSD 1.3, serve per impostare determinate variabili, tra cui le frequenze di campionamento per riproduzione e registrazione. Per vedere ciò che è possibile impostare dare un bel:
# audioctl -a | more
Ad esempio, per ascoltare musica in qualità CD, dare:
# audioctl -w play=44100,2,16,slinear_le
Questo imposta la frequenza a 44100Hz, 2 canali audio, 16 bit e cambio dell'encoding.
Per vedere quali sono gli encoding supportati:
# audioctl encodings
apparirà una lista di tutti gli encoding supportati dalla scheda audio in uso.
Serve chiaramente a regolare il mixing audio e funziona in modo analogo ad audioctl.
Con questo è possibile ascoltare file audio, ma consiglio di procurarsi alcuni package che danno la possibilità di ascoltare svariati formati.
Utile per la registrazione dell'audio.