View
34
Download
1
Category
Preview:
DESCRIPTION
Sound und Musik. Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: Prof. Dr. Manfred Thaller Referent: Tobias Kemper. Inhalt. Direct Sound Soundpuffer Kontrolle eines Sounds - PowerPoint PPT Presentation
Citation preview
Sound und Musik
Universität zu KölnHistorisch Kulturwissenschaftliche InformationsverarbeitungWS 12/13Softwaretechnologie II (Teil 1): Simulation und 3D ProgrammierungDozent: Prof. Dr. Manfred ThallerReferent: Tobias Kemper
Inhalt• Direct Sound• Soundpuffer• Kontrolle eines Sounds• WAV-Dateien laden• 3D-Sound• Echtzeiteffekte• Musik• Direct Sound in TriBase
Direct Sound• Komponente von DirectX
• Mischen einer unbegrenzten Anzahl an Sounds• Nutzung von Echtzeiteffekten• 3D-Sound (!)• Alle Sounds werden in Soundpuffern organisiert
• Mixer mischt alle spielenden Soundpuffer zu einem zusammen und schreibt das Ergebnis zum Abspielen in den primären Soundpuffer
Direct Sound• Schnittstellen: IDirectSound8 und IDirectSoundBuffer8
• Abzählen der Geräte mit DirectSoundEnumerate
• Die DirectSound-Schnittstelle IDirectSound8 wird durch DirectSoundCreate8 erzeugt
• Mit IDirectSound8::SetCooperativeLevel setzt man die Kooperationsebene von Direct-Sound
Soundpuffer• Soundpuffer mit IDirectSound8::CreateSoundBuffer erzeugen • Ein Primärer und mehrere Sekundäre für die einzelnen Sounds
• Drei Parameter : -Zeiger auf eine DSBUFFERDESC-Struktur -Adresse eines Zeigers auf die Schnittstelle
-nicht verwendeter Parameter (NULL)
• Struktur DSBUFFERDESC beinhaltet verschiedene Informationen über den Soundbuffer, die Größe (Länge) des Soundpuffers und sein Format
• Flags zu „Sonderwünschen“ auf Seite 424
• Das Format (Audioformat) bestimmt die Soundqualität: Sampling-Frequenz, Anzahl der Bits pro Sample und die Anzahl der Kanäle
• Um IDirectSoundBuffer8 zu erhalten wird die COM-Methode QueryInterface aufgerufen
• -> Mehr Fähigkeiten als die „Normale“
Soundpuffer• Soundpuffer sperren
• Ringförmiger Soundpuffer (Looping)• Stückweises Füllen mit Streaming• Abspiel- und Schreibcursor
g_pSound->Lock(0, //Sperren abPosition 0, //Anz zu sperr Bytes (void**)(&pSamples), //Zeiger 1 &dwNumBytes, //Zeiger 2 NULL, NULL, DSBLOCK_ENTIREBUFFER)//Flag Gesamt/Teil
Beispielprogramm
Beispiel 05-02 Soundpuffer
Kontrolle eines Sounds• IDirectSoundBuffer8::Play spielt einen Soundpuffer ab
• Mit Stop wird er angehalten
• SetVolume setzt die Abspiellautstärke eines Soundpuffers• –10000 (totale Stille) bis 0 (Originallautstärke)• Soundpuffer Flag DSBCAPS_CTRLVOLUME setzen!
• Balance mit der SetPan-Methode• –10000 bedeutet 100% links und 0% rechts, +10000 bedeutet 0%
links und 100% rechts
• Die Frequenz eines Sounds lässt sich mit SetFrequency anpassen
WAV-Dateien laden• unkomprimierte PCM-Rohdaten
• bestehen aus einem Header und mehreren Chunks
• LoadWAVFile• WAV-Dateien können direkt geladen und in den
Soundpuffer geschrieben werden
3D Sound• Sound und Hörer besitzen eine Position und eine
Geschwindigkeit• Effekte und Geräuschspositionen können simuliert werden
• IDirectSound3DBuffer8 steht für einen 3D-Soundpuffer• QueryInterface auf einem Soundpuffer aufrufen, der mit dem Flag
DSBCAPS_CTRL3D erstellt wurde und nur einen Kanal hat
• 3D-Algorithmus:• DS3DALG_NO_VIRTUALIZATION (einfach und schnell)• DS3DALG_HRTF_FULL (realistischstes Ergebnis, viel Rechenzeit)• DS3DALG_HRTF_LIGHT (fast so gut wie „FULL“ , weniger Rechenzeit)
• Hörerschnittstelle IDirectSound3DListener8 repräsentiert den virtuellen Hörer
3D Sound• SetPosition und SetVelocity weisen dem 3D-
Soundpuffer bzw. dem Hörer eine Position und einen Geschwindigkeitsvektor im Raum zu
• SetOrientation -> Orientierung für den Hörer
BEISPIELPROGRAMM 3D Sound Bsp. 05-04
Echtzeiteffekte• Sounds in Echtzeit verändern: Echo, Verzerrung,
Widerhall
• muss mit dem Flag DSBCAPS_CTRLFX erstellt worden sein
• Effekte dem Soundpuffer zuweisen, bevor er abgespielt wird und während er nicht gesperrt ist
-> SetFX
• Jeder Effekttyp besitzt eine eigene Schnittstelle, über die man die Effektparameter einstellen kann
• Über die Methode GetObjectInPath des Soundpuffers
• Mit IDirectSound3DListener8::SetDopplerFactor und SetRolloffFactor die Intensität des
Dopplereffekts beziehungsweise der Schallabschwächung über- oder untertreiben
Echtzeiteffekte
Musik• DirectShow für alle Multimediaformate
• alle Audio und Videodaten durchlaufen ein Filtersystem
• Schnittstelle IMediaControl erlaubt Kontrolle über Play, Pause und Stop
• Über IMediaSeeking lässt sich der Abspielcursor verschieben und die Geschwindigkeit verändern
Direct Sound in TriBase• tbDirectSound• tbSound• tbMusic
• automatische Berechnung der Geschwindigkeit des Hörers
• Laden von Sounds und Musik
• weitere Methoden zum Generieren der Schnittstellen
• BEISPIELPROGRAMM 05-06
Vielen Dank für Ihre Aufmerksamkeit!
Verwendete Literatur:David Scherfgen: 3D-Spiele-Programmierung. München, 2006, S. 418-480.
Recommended