Hoofdstuk 9. Geluid

Manolo De Santis

Inhoudsopgave

9.1. Hardware elementen
9.2. BIOS instellingen
9.3. De audio device configureren
9.4. De kernel audio devices configureren
9.5. Commando's
9.5.1. audioctl
9.5.2. mixerctl
9.5.3. audioplay
9.5.4. audiorecord

Bijgedragen door by Manolo De Santis

Dit hoofdstuk is een korte introductie tot het gebruik van geluidskaarten onder NetBSD (want wie wil nou een domme computer?).

9.1. Hardware elementen

Om geluid te krijgen op uw systeem moet u weten welke geluidskaart uw systeem heeft. Jammer genoeg is het vaak niet voldoende het merk en type van de geluidskaart te kennen omdat veel kaarten chipsets gebruiken die door andere fabrikanten zijn gemaakt. Daarom is het vaak nuttig als u ook weet welke chipset op de geluidskaart geļnstalleerd is. De NetBSD kernel herkent veel geluidskaarten en even naar dmesg kijken is vaak alles wat u hoeft te doen.

Tik daarom het volgende commando:

# dmesg | more
    

en zoek naar de geluidskaart en chipset. Als u geluk heeft hoeft u niks te doen omdat NetBSD automatisch veel kaarten herkent en configureert.

Soms werkt het geluid niet omdat de desbetreffende geluidskaart niet ondersteund is, of omdat u de kernel eerst verder moet configureren zodat NetBSD de kaart wel kan detecteren. De meeste geluidskaarten zijn tegenwoordig erg goedkoop en het is daarom de moeite waard om een andere kaart te kopen. Maar u kunt eerst een paar simpele stappen uitvoeren om te proberen of uw kaart door NetBSD ondersteud wordt.

9.2. BIOS instellingen

Deze sectie is alleen nuttig voor eigenaars van i386 PC's; op andere architecturen (bijvoorbeeld Amiga) bestaan de instellingen die in deze sectie beschreven worden niet. Het is belangrijk te te onderzoeken welke bus de kaart gebruikt om de kaart onder NetBSD te gebruiken.

De meeste kaarten gebruiken de ISA of PCI bus. Vrijwel alle moderne PC's gebruiken PCI kaarten of een geļntegreerde chipset. Geļntegreerde chipsets zijn veelal toegankelijk via de PCI bus.

Plug & Play (PnP) ISA kaarten zijn vaak moeilijker te configureren, voornamelijk omdat ze communiceren met de BIOS van de computer.

Op nieuwere machines (die geproduceerd zijn na 1997) hebben een BIOS optie die voor veel problemen zorgt bij het configureren van ISA PnP geluidskaarten (maar niet alleen geluidskaarten): deze optie heet gewoonlijk “PNP OS Installed” en kan vaak gevonden worden in het “PNP/PCI Configuration” menu (de namen kunnen afwijken in uw BIOS). Over het algemeen is het verstandig deze optie uit te schakelen (ofterwijl op “NO” te zetten) als u NetBSD gaat gebruiken.

Opmerking

op veel systemen werkt alles goed, zelfs als deze optie aan staat. Dit is sterk systeemafhankelijk.

9.3. De audio device configureren

Tijdens de installatie van NetBSD worden devices aangemaakt in de /dev directory. We zijn hoofdzakelijk geļnteresseerd in:

/dev/audio
/dev/sound
/dev/mixer
    

Als deze devices niet bestaan kunnen ze als volgt aangemaakt worden:

# cd /dev
# ./MAKEDEV all
    

Dit commando maakt alle devices, inclusief de audio devices.

De geluidskaart werkt nu waarschijnlijk zonder verder werk.

U kunt dit snel testen door een geluidsbestand te sturen naar de device (geluidsbestanden hebben gewoonlijk de .au extensie), maar als u geen geluidsbestand heeft kunt u gewoon een binair of tekstbestand gebruiken (natuurlijk hoort u dan niet veel zinvols...). Gebruikt /dev/audio of /dev/sound:

# cat filename > /dev/audio
    

of

# cat filename > /dev/sound
    

Als u iets hoort wordt de geluidskaart ondersteund door NetBSD en is het herkend en geconfigureerd door de kernel tijdens het starten van het systeem. Als dat niet het geval is moet u de kernelinstellingen wijzigen voor de geluidskaart in uw systeem (met de aanname dat uw kaart/chipset ondersteund wordt).

9.4. De kernel audio devices configureren

NetBSD ondersteunt een grote hoeveelheid geluidskaarten en de GENERIC kernel detecteert en configureert de meeste kaarten.

Veel Plug & Play kaarten worden standaard niet door de GENERIC kernel ondersteund. U moet een eigen kernel configureren om ze te kunnen gebruiken. Zoek naar de volgende (of vergelijkbare) regels in het GENERIC bestand:

# 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
    

Verwijder het commentaarteken voor de “pnpbios” regel en de regel die uw geluidskaart beschrijft.

Opmerking

als u een eigen kernel maakt is het beter met een kopie van de GENERIC file te werken.

Soms is het nodig handmatig de IRQ en DMA instellingen voor de chipset te configureren.

Als u nog steeds problemen heeft kunt u proberen alle geluidsdevices in de kernel aan te schakelen omdat sommige geluidskaarten ook werken met de emulatie van een andere kaart.

Veel chipsets hebben SoundBlaster en OPL compatibiliteit, maar veel werken met WSS emulatie.

OPL is een MIDI synthesizer die geproduceerd is door Yamaha; er zijn veel OPL varianten (bijv. OPL2, OPL3SA, OPL3SA2, etc.). Veel geluidskaarten gebruiken dit component of een component dat compatible is. Chips die geproduceerd zijn door Crystal hebben bijvoorbeeld allemaal deze chipset en daarom werken ze met NetBSD.

WSS is geen microchip, het is de afkorting voor Windows Sound System. Wss is de naam van de NetBSD kernel driver die het geluidssysteem van Microsoft Windows ondersteunt. Veel geluidskaarten werken met Windows omdat ze voldoen aan deze standaard (WSS) en hetzelfde geldt voor NetBSD.

Als het goed is zou u geen problemen moeten hebben een Creative SoundBlaster werkend te krijgen onder NetBSD: bijna alle kaarten worden ondersteund, inclusief de SoundBlaster Live 1024.

Als alles naar behoren werkt kunt u de kerneldevices die niet gebruikt worden uitschakelen.

9.5. Commando's

NetBSD heeft een aantal commando's die gebruikt kunnen worden met geluidskaarten:

  • audioctl

  • mixerctl

  • audioplay

  • audiorecord

9.5.1. audioctl

Audioctl is verschenen in NetBSD 1.3 en kan gebruikt worden om handmatig een aantal variabelen in te stellen die te maken hebben met audio I/O, zoals de frequenties voor het afspelen of opnemen van geluid. De beschikbare parameters kunnen getoond worden met het volgende commando:

# audioctl -a | more
      

Om bijvoorbeeld naar CD kwaliteit muziek te luisteren kunt u het volgende commando gebruiken:

# audioctl -w play=44100,2,16,slinear_le
      

Dit commando stelt de frequentie in op 44100Hz, met 2 audiokanalen, 16 bits geluid en slinear_le codering.

U kunt de ondersteunde coderingen zien met:

# audioctl encodings
      

Dit commando toont een lijst van alle coderingen die door uw geluidskaart ondersteund worden.

9.5.2. mixerctl

Dit commando wordt gebruik om de mixer te configureren en heeft een interface die vergelijkbaar is met die van audioctl.

9.5.3. audioplay

Met dit commando kunt u geluidsbestanden afspelen. Voor ondersteuning voor meer formaten (bijvoorbeeld MP3) e.d. kunt u beter een geluidsprogramma uit de package collectie gebruiken.

9.5.4. audiorecord

Dit commando kan gebruikt worden om geluid op te nemen.