6. Risposte alle FAQ

Contenuti di questa sezione

Questa sezione risponde a diverse domande poste allo "Usenet news groups" e alle "mailing lists".

6.1 Cosa sono i vari "sound device files"?

Qursti sono i device file "standard" , alcune distribuzioni di Linux possono usare nomi lievemente diversi .

/dev/audio

Audio device compatibile con Sun workstation (solo una parziale implementazione; non supporta la "Sun ioctl interface " )

/dev/dsp

digital sampling device

/dev/mixer

sound mixer

/dev/mixer1

second sound mixer

/dev/patmgr0

Patch Manager (non implementato)

/dev/patmgr1

Patch Manager (non implementato)

/dev/sequencer

low level MIDI, FM, and GUS access

/dev/sequencer2

high level sequencer interface (parzialmente implementato)

/dev/midi00

1st raw MIDI port

/dev/midi01

2nd raw MIDI port

/dev/midi02

3rd raw MIDI port

/dev/midi03

4th raw MIDI port

/dev/sndstat

se lo leggi mostra lo stato del sound driver

/dev/audio1

for second sound card

/dev/dsp1

for second sound card

Il "PC speaker driver" usa i seguenti devices:

/dev/pcaudio

equivalente a /dev/audio

/dev/pcsp

equivalente a /dev/dsp

/dev/pcmixer

equivalente a /dev/mixer

6.2 Come posso eseguire degli esempi sonori?

I file (.au) delle workstation Sun possono essere eseguiti reindirizzandoli al device /dev/audio . I "Raw samples" possono essere eseguiti reindirizzandoli su /dev/dsp. E` preferibile usare comunque un programma tipo play , visto che riconosce la maggior parte di file e setta la scheda sonora al giusto "sampling rate", etc.

6.3 Come posso registrare un esempio sonoro?

Leggendo dal file /dev/audio o /dev/dsp si ricevono dei dati d'esempio che possono essere reindirizzati su un file. Un programma tipo vrec rende piú semplice il controllo di "sampling rate", durata, etc. Dovreste servirvi comunque di un programma mixer per selezionare il corretto device di input (sorgente suono).

6.4 Posso avere piú di una scheda?

Sono supportate fino a 2 schede sonore. E` possibile installare unaa Gravis UltraSound o una MPU-401 con una SoundBlaster, SoundBlaster Pro, SoundBlaster16 o ProAudioSpectrum16. Non é possibile avere una ProAudioSpectrum16 e una SoundBlaster allo stesso tempo (la PAS16 monta un emulatore SoundBlaster ). Inoltre non é possibile avere piú di una scheda dello stesso tipo allo stesso momento -- per esempio, la combinazione simultanea di una GUS + una seconda GUS non é possibile.

Puoi cambiare i parametri di configurazione della shceda sonora al boot time usando la riga di comando del "Boot Loader" (tipo LILO). Controlla il file provvisto con il "kernel sound driver" Readme.linux per i dettagli.

6.5 Error: No such file or directory for sound devices

Devi creare i device files per il sound driver . Controlla la sezione sulla "Creazione dei device files" . Se ci sono, assicurati che abbiano il corretto {intraducibile} "minor and major number" (alcune vecchie distribuzioni di Linux sui CD-ROM non creano i "device files" corretti al momento dell' installazione).

6.6 Error: No such device for sound devices

Non avete eseguito il boot con un kernel compilato con il supporto del sound driver o la configurazione dell' "I/O address" non corrisponde al vostro hardware. Controllate se avete usato il kernel giusto e verificate che il settaggio dei parametri della vostra scheda, assegnato in fase di configurazione del "sound driver", corrisponda esattamente al settaggio della scheda stessa.

6.7 Error: No space left on device for sound devices

Puó succedere se provate a registrare dati attraverso : /dev/audio o /dev/dsp senza aver creato i necessari "device file". Il "sound device" ora é un file normale , ed ha riempito la vostra partizione. Dovete eseguire lo script documentato nella sezione Creazione dei "Device Files" in questo documento.

6.8 Error: device busy for sound devices

Il "sound device" puó essere usato da un solo processo per volta. Probabilmente qualche altro process stà usando il "device" in questione. Uno dei metodi per determinare questa probabilitá é di usare il comando "fuser":

% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

In questo esempio, il comando "fuser" ci mostra come il processo numero 265 abbia aperto il device. Per accedere nuovamente al "sound device" si deve apettare che il processo termini o si procede ad un "kill" del processo stesso.

6.9 Ricevo costantemente l'errore : device busy!

In sintonia con Brian Gough, per le schede SoundBlaster che usano il canale DMA 1 c'è un conflitto potenziale con il "tape driver" QIC-02, che usa sempre il canale DMA 1, causando l'errore "device busy" . Se state usando FTAPE, dovreste avere questo driver abilitato. Controllando nell' FTAPE-HOWTO si desume che l'uso del driver QIC-02 non é indispensabile per l'uso di FTAPE; basta solamente il driver QIC-117 . Riconfigurando il kernel abilitando il driver QIC-117 e non il driver QIC-02 si permette ad FTAPE ed al "sound-driver" di coesistere.

(I seguenti chiarimenti sono proposti da Harald Albrecht albrecht@igpm.rwth-aachen.de)

Alcune schede sonore supportano l'uso del canale DMA 0. Il programma di configurazione del "sound driver" permette questa opzione, e il kernel viene compilato senza problemi, ma accedendo al "sound device" si riceve un messaggio d'errore del tipo "device busy".

Il motivo é che il kernel di Linux riserva il canale DMA 0 per il "refresh" della DRAM . Questo non sará valido ancora a lungo visto che le moderne schede 386/486 usano una propria logica per il "refresh". Potete comunque correggere il problema cambiando questa linea nel file /usr/src/linux/kernel/dma.c:

static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = {
                1, 0, 0, 0, 1, 0, 0, 0
};

Cambiate il primo 1 con uno 0; questo abilita il canale DMA 0. Non fatelo invece con il canale DMA 4 visto che é in cascata e non funzionerebbe! La riga di codice dovrebbe diventare cosí :

static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = {
                0, 0, 0, 0, 1, 0, 0, 0
};

Ricompilate il kernel ed eseguite il reboot del sistema.

6.10 Playback parziale di un file sonoro digitale

Il sintomo é normalmente che l'esempio sonoro suona per circa un secondo e poi si blocca completamente oppure riporta un errore tipo : "missingRQ" o "DMA timeout". Probabilmente avete i settaggi degli IRQ or DMA sbagliati. Verificate che la configurazione del kernel corrisponda ai settaggi della vostra scheda (jumper.IRQ,DMA) e che gli stessi non siano in conflitto con qualche altra scheda installata nel sistema.

Un' altro sintomo é l'esempio sonoro che provoca un "loop". Questo é normalmente causato da un conflitto di IRQ .

6.11 Eseguendo files MOD si verificano delle pause

L'esecuzione dei file MOD usa un grande lavoro di CPU . O avete una quantitá eccessiva di processi attivi o il vostro computer é troppo lento per l'esecuzione in "real time". Avete alcune possibilitá:

Se avete una scheda Gravis UltraSound , dovete usare uno dei programmi per eseguire i file mod scritti specificatamente per la GUS (e.g. gmod).

6.12 Errori di compilazione quando compilo applicazioni sonore

La versione 1.0c e precedenti del "sound driver" usavano uno schema diverso ed incompatibile dell' ioctl() . Cerca di ottenere il nuovo codice o effettua i necessari cambiamenti per adattarlo al nuovo "sound driver". Controlla il Readme file del "sound driver" per i dettagli.

Controlla comunque di usare l'ultima versione del soundcard.h e del ultrasound.h quando compili l'applicazione. Guarda le istruzioni per l'installazione all'inizio di questo testo.

6.13 SEGV quando eseguo "sound binaries" [applicativi} che prima funzionavano

Questo é probabilmente lo stesso problema affrontato nella domanda precedente.

6.14 Quali sono i bug e le limitazioni nel "sound driver"?

Controlla il file Readme ed il file CHANGELOG inclusi con i sorgenti del kernel del "sound driver" .

6.15 Cosa prevedono tutte le opzioni di configurazione del "sound driver"?

Durante la configurazione del "sound driver", viene compilato ed eseguito il programma configure. Questo programma pone delle domande e provvede a generare gli "header file" local.h che definiscono la configurazione della scheda sonora .

Il file di configurazione definisce (o non definisce) i seguenti simboli :

Symbol                  Meaning
======                  =======
KERNEL_SOUNDCARD        enable/disable sound driver
EXCLUDE_PAS             ProAudioSpectrum support
EXCLUDE_SB              SoundBlaster support
EXCLUDE_ADLIB           AdLib support
EXCLUDE_GUS             Gravis UltraSound support
EXCLUDE_MPU401          MPU-401 MIDI interface support
EXCLUDE_UART6850        6850 MIDI UART support
EXCLUDE_PSS             Professional Sound System support
EXCLUDE_GUS16           Gravis UltraSound support
EXCLUDE_GUSMAX          Gravis UltraSound Max support
EXCLUDE_MSS             Microsoft Sound System support
EXCLUDE_SBPRO           SoundBlaster Pro support
EXCLUDE_SB16            SoundBlaster 16 support
EXCLUDE_AUDIO           Digitized voice support
EXCLUDE_MIDI            MIDI interface support
EXCLUDE_YM3812          FM synthesizer (YM3812/OPL-3) support
EXCLUDE_SEQUENCER       MIDI sequencer support
EXCLUDE_PRO_MIDI        SoundBlaster Pro MIDI support
EXCLUDE_CHIP_MIDI       MIDI on CHIP support
SBC_BASE 0x220          SoundBlaster I/O base address
SBC_IRQ                 SoundBlaster IRQ number
SBC_DMA                 SoundBlaster DMA channel
SB16_DMA                SoundBlaster 16 DMA channel
SB16_MIDI_BASE          base address of SoundBlaster 16 MIDI port
PAS_IRQ                 ProAudioSpectrum IRQ number
PAS_DMA                 ProAudioSpectrum DMA channel
GUS_IRQ                 Gravis UltraSound IRQ number
GUS_DMA                 Gravis UltraSound DMA channel
GUS_BASE                base address of Gravis UltraSound
MPU_IRQ                 MPU-401 IRQ number
MPU_BASE                base address of MPU-401 port
DSP_BUFFSIZE            DMA buffer size

Alcune altre definizioni vengono create, settando alcune cose tipo il livello di revisione del "sound driver" e la data e l'ora di esecuzione del programma "configure".

Ci sono poi altri parametri che non vengono settati dal programma "configure" . Se avete bisogno di cambiarli, editate il file sound_config.h.

Per disabilitare il "sound driver", eseguite make config e rispondete "no" alla domanda "Sound card support?" .

6.16 Dov'é la documentazione degli ioctls() etc. del sound driver?

Esiste una documentazione parziale nella Hacker's Guide to VoxWare, momentaneamente disponibile in forma di bozza. L'ultima versione é la bozza 2 , ed'é reperibile su : ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound . Notare che questa é una directory nascosta e non appare nella lista delle directory. Se esegui un ftp e fai un cd (NomeDirectoryNascosta) e successivamente esegui un comando dir i files sono qui.

6.17 Che tipo di CPU devo usare per eseguire o registrare senza pause?

Non é semplice rispondere a questa domanda, dipende da :

In generale, qualsiasi computer 386 dovrebbe riuscire ad eseguire campioni o musica sintetizzata in FM su una scheda a 8 bit senza alcuna difficoltá.

L'esecuzione dei file MOD comporta , comunque, un considerevole uso delle risorse della CPU . Alcune misurazioni sperimentali hanno dimostrato che suaonado a 44kHz si usa oltre il 40% di velocitá su un computer 486/50 e un 386/25 esegue solo con molta difficoltá campioni piú veloci di 22 kHz (questo con una scheda a 8 bit tipo SoundBlaster). Una scheda come la Gravis UltraSound esegue maggiori funzioni a livello hardware , ed usa minori risorse della CPU .

Questa affermazione prevede che il computer non stia eseguendo altri task con un uso intensivo della CPU .

La conversione di files sonori o l'aggiunta di effetti speciali usando un' utility tipo Sox é molto piú veloce se disponete del coprocessore matamatico. Il "kernel driver" non esegue nessun calcolo "floating point", purtroppo.

6.18 Problemi con una PAS16 ed un "Adaptec 1542 SCSI host adaptor"

(la seguente spiegazione é stata fornita da : seeker@indirect.com)

Linux riconosce la 1542 all'indirizzo 330 (default) o 333, e la PAS permette l'emulazione della MPU-401 solo all'indirizzo 330. Anche se avete disabilitato la MPU-401 via software, qualcosa vá tranquillamente in conflitto con la 1542 se si trova al suo indirizzo di default . Spostando la 1542 all'indirizzo 333 fá funzionare tutto.

In aggiunta, sia la 1542 che la PAS-16 usano un DMA a 16-bit , cosicchè se campionate a 16-bit 44KHz stereo e salvate il file su un drive SCSI attaccato alla 1542, preparatevi ad incontrare problemi. I DMAs si sovrappongono e non c'é il tempo sufficiente per un "refresh" della RAM, e vi trovate un bel messaggio ``PARITY ERROR - SYSTEM HALTED'' , senza rendervi conto di quale sia stata la causa. Ancora peggio alcuni rivenditori di terze parti raccomandano, con i tape drives QIC-117 , di settare i tempi on/off del bus come il 1542 anche se sono piú lunghi del normale. Procuratevi il programma SCSISEL.EXE dalla BBS della Adaptec o da qualche altro sito di internet, abbassate il "time" BUS ON o incrementate il BUS OFF finchè il problema scompare, poi muovetelo di una tacca o piú in avanti. . Lo SCSISEL cambia i settaggi della EEPROM , cosí la modifica diventa permanente e non avete bisogno di aggiungere una riga nel CONFIG.SYS del DOS , e potete boottare direttamente Linux ignorando i driver del DOS . Prossimo problema : risolto!

Ultimo problema - i vecchi chipset Symphony riducevano drasticamente i cicli di I/O per velocizzare i tempi di accesso al bus. Nessuna delle varie schede che ho usato hanno dato problemi con il timing ridotto ad eccezione della PAS16. La BBS della Media Vision propone il programma SYMPFIX.EXE che ,si suppone, curi il problema facendo girare un bit di diagnostica nel controller del bus della Symphony, ma non é garantito totalmente. Hai bisogno di:

La giovane Microsystem propone un upgrade della scheda che importa per circa $30 (US); altri venditori dovrebbero comportarsi allo stesso modo se riuscite a dimostrare chi altro importa la motherboard (Buona fortuna!). Il problema é nel chip dell'interfaccia per il bus ProAudio, peró molto piú lontano di quanta non sia la mia ansia; Nessuno compra una scheda sonora da $120 e la piazza su un bus AT a 6MHz . La maggior parte si avvale di un computer a 25/40Mhz tipo 386/486 , e dovrebbe riuscire ad ottenere perlomeno 12MHz di velocitá del bus se i chips sono disegnati correttamente. Uscita dal pulpito!!! (scala sinistra).

Il primo problema dipende dal chipset usato sulla vostra motherboard, dalla velocitá del bus e da altri settaggi del BIOS , e le fasi della luna. Il secondo problema dipende dalle opzioni di "refresh" (nascoste o sincronizzate), dallala velocitá del canale DMA del 1542 e (possibilmente) la velocitá di accesso I/O al bus. Il terzo lo si determina chiamando la Media Vision e chiedendo quale tipo di chip Symphony é incompatibile con il suo design lento. Attenzione , pensavano - le 3 o 4 volte che ho chiamato - che io abbia il cervello danneggiato. Dovevo essere molto astuto e diffidare di qualsiasi cosa mi dicevano su qualche pezzo di hardware, visto che non conoscevano molto bene neanche il loro.

6.19 Problemi con un sintetizzatore FM sulla SoundBlaster Pro 1

La nuova SB Pro ha un chip OPL-3 FM , ma la vecchia versione 1 usava il chip OPL-2. Il "sound driver" prevede la presenza di un chip OPL-3. La versione 2.5 e successive del sound driver correggono questo problema.

6.20 E` possibile registrare ed eseguire simultaneamente un pezzo?

Dipende dall'hardware, questo non é possibile con la maggior parte delle schede sonore . L'unica scheda supportata che é in grado di farlo é la ProAudioSpectrum16. Controlla la sezione sulla "bidirectional mode" nella Hacker's Guide to Voxware per ulteriori informazioni.

(Le ultime (evasive) news:Il "sound driver" 3.0.1 ora supporta la " select() system call" per il /dev/dsp ed il /dev/audio. Questo dovrebbe essere utile per applicativi bidirezionali. Controlla il file CHANGELOG.)

6.21 La mia SB16 é settata con IRQ 2, ma il "configure" del kernel non lo prevede.

Su '286 e macchine successive, l' IRQ 2 si trova in cascata con il secondo interrupt del controller. Equivale all' IRQ 9.

6.22 Sono supportate la SoundBlaster AWE32 o la SoundBlaster16 ASP ?

La Creative Labs non vuole rilasciare informazioni sulla programmazione per la ASP e per il chip Emu usati con questa scheda. Finchè non cambiano la loro politica , il supporto di queste schede per Linux non ci sará.

La scheda Gravis UltraSound ha capacitá similari alla AWE32, ed' é supportata da Linux. Schede basate su altri DSPs tipo la Analog Devices ADSP-21xx saranno supportate in futuro.

6.23 Se sto usando Linux, e rebootto la macchina con DOS, ricevo degli errori e le applicazioni sonore non funzionano.

Questo puó succedere dopo un "soft-reboot" al DOS. Alle volte il messaggio di errore fá riferimento, erroneamente, ad un errore nel file CONFIG.SYS .

La maggior parte delle attuali schede sonore hanno la possibilitá di settare IRQ e DMA via software. Se usate settaggi differenti per Linux e per MS-DOS/Windows, potreste avere problemi. Alcune schede non accettano nuovi parametri senza un reset completo (i.e. spegnere il computer o usare il pulsantino di reset).

La soluzione piú semplice a questo problema consiste nell'effettuare un reboot completo tramite il pulsantino di reset o lo spegnimento della macchina anzichè un "soft reboot" (e.g. Ctrl-Alt-Del).

La soluzione corretta consiste nel settare gli stessi IRQ e DMA sia con MS-DOS che con Linux (o non usare DOS :-)).

6.24 Problemi usando DOOM con Linux

Gli utilizzatori del porting del gioco della "ID software" DOOM per Linux dovrebbero essere interessati a queste notizie.

Per un corretto risultato sonoro usate la versione 2.90 o successive del "sound driver"; ha il supporto per la nuova modalitá "real-time DOOM mode".

I campioni sonori sono a 16-bit. Se avete una scheda a 8-bit c'é un programma che si chiama sndcvt che converte i dati da 16 a 8 bit al volo. Dovete applicare la patch al "DOOM sound server"; i dettagli sono spiegati nel file README .

Se DOOM risultasse lento sul vostro sistema, disabilitando il sonoro (basta rinominare il file sndserver) dovrebbe aumentare le prestazioni.

Per default DOOM non supporta la musica (come nella versione DOS ). Il programma musserver aggiunge il supporto per la musica a DOOM per Linux. E` reperibile a questo indirizzo : ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz .

6.25 Come posso ridurre eventuali rumori di fondo della mia scheda sonora?

Usando cavi di buona qualitá e provando la scheda in slot differenti dovrebbe aiutarvi a ridurre i disturbi. Se la scheda ha un controllo del volume ,potete provare diversi settaggi (il massimo é probabilmente il migliore).

Se usate un programma di mixer potete accertarvi che altri dispositivi di input siano settati a zero. (e.g. microphone)

Alcune schede sono disegnate semplicemente con cavi e componenti poco buoni e sono molto propense ai disturbi di fondo.

Finalmente, sul mio sistema ho scoperto che la opzione no-hlt alla riga di comando del kernel riduce il livello di disturbo. Questa comunica al kernel di non usare l'istruzione "halt" mentre si esegue l' "idle process loop" Potete inserirla manualmente al boot, o inserirvela con il comando append = "no-hlt" nel file di configurazione di LILO .

6.26 Posso eseguire i pezzi, ma non registrarli.

Se puoi eseguire ma non registrare, prova questi passaggi:

6.27 La mia scheda sonora "compatibile" funziona solo se la inizializzo prima con il DOS.

Alcuni cloni di schede sonore non sono compatibili al 100% con i registri della scheda originale ; questi contengono, alle volte, una circuiteria extra tipo mixers. Dovreste riuscire comunque ad usarli con Linux se prima li inizializzate con MS-DOS, ed eseguite un "soft boot" per Linux (i.e. Ctrl-Alt-Delete).

Un utilizzatore mi ha inoltre riportato che ha avuto migliori risultati usando LOADLIN piuttosto di LILO per boottare Linux dopo aver inizializzato la sua scheda sotto MS-DOS (questo accadeva con una scheda sonora della Diamond ).,

In veritá potrebbe funzionare sí e no. La soluzione giusta é ottenere dal costruttore informazioni sulle differenze della scheda in questione ed aggiungerle al "sound driver". Questo é stato fatto, ad esempio, per la scheda Sound Galaxy NX Pro.

6.28 La mia 16-bit SoundBlaster "compatibile" funziona solo a 8-bit con Linux.

Le schede sonore a 16-bit descritte come "SoundBlaster compatibile" in realtá sono compatibili solo con la 8-bit SoundBlaster Pro. Tipicamente hanno una modalitá a 16-bit che non é però compatibile con la SoundBlaster 16 e neppure con il "sound driver" di Linux.

Se peró la vostra scheda risulta compatibile con il Microsoft Windows Sound System, dovreste riuscire a farla lavorare a 16-bit se abilitate il supporto per il WSS nel "Linux sound driver". Dovrete inoltre (probabilmente) inizializzare la vostra scheda con il DOS per farla funzionare.

6.29 Dove posso reperire applicazioni sonore/musicali per Linux?

Qui ci sono alcuni buoni siti di internet per la ricerca di applicativi per il "sound" su Linux :

6.30 E` possibile compilare il sound driver come un modulo(da usare con insmod)?

Il "sound driver" ora é supportato anche come un "kernel loadable module". Controlla il file : Readme.modules per i dettagli e le spiegazioni su come compilarlo ed usarlo.

6.31 Posso usare la scheda sonora per rimpiazzare il "beep" della console?

Procurati il programma oplbeep , che si trova ftp://sunsite.unc.edu/.pub/linux/apps/sound/oplbeep-alpha.tar.gz

Alternativamente, con alcune schede sonore puoi connettere l'output del PC speaker alla scheda cosicchè tutti i suoni usciranno dalla scheda stessa.

Prossimo Capitolo, Precedente Capitolo

Indice di questo capitolo, Indice generale

Inizio del documento, Inizio di questo capitolo

¤1 sĖ