16
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

Sound und Musik

  • Upload
    cissy

  • View
    36

  • Download
    1

Embed Size (px)

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

Page 1: Sound und Musik

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: Sound und Musik

Inhalt• Direct Sound• Soundpuffer• Kontrolle eines Sounds• WAV-Dateien laden• 3D-Sound• Echtzeiteffekte• Musik• Direct Sound in TriBase

Page 3: Sound und Musik

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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

Beispielprogramm

Beispiel 05-02 Soundpuffer

Page 8: Sound und Musik

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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

• 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: Sound und Musik

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: Sound und Musik

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: Sound und Musik

Vielen Dank für Ihre Aufmerksamkeit!

Verwendete Literatur:David Scherfgen: 3D-Spiele-Programmierung. München, 2006, S. 418-480.