Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13...
-
Upload
beate-wess -
Category
Documents
-
view
112 -
download
0
Transcript of Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13...
![Page 1: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/1.jpg)
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
![Page 2: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/2.jpg)
Inhalt• Direct Sound• Soundpuffer• Kontrolle eines Sounds• WAV-Dateien laden• 3D-Sound• Echtzeiteffekte• Musik• Direct Sound in TriBase
![Page 3: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/3.jpg)
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
![Page 4: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/4.jpg)
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
![Page 5: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/5.jpg)
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“
![Page 6: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/6.jpg)
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
![Page 7: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/7.jpg)
Beispielprogramm
Beispiel 05-02 Soundpuffer
![Page 8: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/8.jpg)
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
![Page 9: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/9.jpg)
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
![Page 10: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/10.jpg)
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
![Page 11: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/11.jpg)
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
![Page 12: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/12.jpg)
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
![Page 13: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/13.jpg)
• 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
![Page 14: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/14.jpg)
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
![Page 15: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/15.jpg)
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
![Page 16: Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d7549795902118c97c3/html5/thumbnails/16.jpg)
Vielen Dank für Ihre Aufmerksamkeit!
Verwendete Literatur:David Scherfgen: 3D-Spiele-Programmierung. München, 2006, S. 418-480.