22.08.2013 Views

Att hantera digitala ljudbibliotek Christoffer ... - Umeå universitet

Att hantera digitala ljudbibliotek Christoffer ... - Umeå universitet

Att hantera digitala ljudbibliotek Christoffer ... - Umeå universitet

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Att</strong> <strong>hantera</strong> <strong>digitala</strong> <strong>ljudbibliotek</strong><br />

<strong>Christoffer</strong> Lindmark<br />

3.2 Programmering och ljud<br />

3.2.1 C/C++<br />

<strong>Att</strong> använda sig av ljud vid programmering är något som skiljer både i<br />

svårighetsgrad och i tillvägagångssätt beroende på vilket<br />

programmeringsspråk det gäller. Detta avsnitt kommer till största delen<br />

att handla om C och C++ eftersom det är de populäraste språken, men<br />

också för att de är de språken som klarar av mest. Eftersom Java har<br />

använts i utvecklingen av programmet återfinns en mer utförlig studie i<br />

ljud för Java i kapitel 4.<br />

I programmeringsspråken C eller C++ finns det ont om riktiga<br />

standarder. Däremot finns det istället massor av lösningar vilket kan ge<br />

en programmerare stor valfrihet att välja vilken slags lösning som<br />

passar denne bäst. Det som kanske är den avgörande faktorn för vilken<br />

lösning för ljud programmeraren väljer torde vara i vilken applikation<br />

ljudet skall användas. En spelprogrammerare kan till exempel dra stor<br />

fördel av att ha färdiga 3D-funktioner för ljud, medan det för en som<br />

programmerar ip-telefoni är bättre med en lägre nivå på funktionerna<br />

där varje sample 1 går att komma åt.<br />

En annan aspekt som bör tas hänsyn till är att C/C++ är<br />

plattformsberoende språk. Detta betyder att program inte kan köras på<br />

andra operativsystem än det de är kompilerade för utan att kompileras<br />

om. Vissa funktionsanrop med mera behöver inte heller fungera<br />

likadant på alla operativsystem. För programmeraren betyder detta ofta<br />

mycket extra jobb för att göra programmet tillgängligt på olika<br />

plattformar. Många lösningar fungerar därför bara på ett begränsat<br />

antal operativsystem.<br />

Ett vanligt verktyg för spelutvecklare är OpenAL [3][4]. OpenAL är<br />

designat i första hand för att spela upp 3D-ljud. Det består av tre olika<br />

objekt: källa, buffert och lyssnare. Ljuden lagras in i buffertarna som<br />

buffertarna kan sedan kopplas ihop med en eller flera källor. Källorna<br />

representerar positioner i ett lyssningsrum där ljudet är tänkt skall<br />

komma från. Det tredje objektet, lyssnaren, representerar den tänkta<br />

personen som skall lyssna på ljudet. OpenAL räknar sedan ut hur ljudet<br />

skall omvandlas för att personen skall uppleva den önskade 3Deffekten.<br />

OpenAL är nära sammankopplat med grafikverktyget<br />

1 Ett sample är det värde som den <strong>digitala</strong> signalen har under ett samplingsintervall.<br />

En CD-skiva som är samplad med 44100 Hz har till exempel 44100 stycken samples per<br />

sekund och kanal.<br />

9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!