Audio mit Scripten programmieren ed
Es gibt zwei Audio-Konzepte: Musik und Sound. Beide werden aus Dateien geladen und nur über ihre Indizes (Typ int) angesprochen.
Table of Contents
Musik ed
Musik spielt im Hintergrund und ist nicht davon abhängig, von wo aus sie gehört wird. Musikdateien können in stereo sein.
Die Dateien dürfen länger sein, da sie beim Abspielen immer nur stückweise geladen werden.
- Laden einer Datei mit MusicLoad
- Abspielen mit MusicPlay
- Pausieren mit MusicPause
- Stoppen mit MusicStop
VolumeMusic regelt die allgemeine Musik-Lautstärke.
Erlaubte Formate:
- ogg
Beispiel:
void main()
// ein Lied laden
int m = MusicLoad("ein Lied.ogg")
// Lied als Schleife abspielen
MusicPlay(m, true)Sound ed
Sounds sind punktförmige Geräuschquellen innerhalb der 3d-Welt. Sie werden leiser, je weiter der Zuhörer entfernt ist und unterliegen bei Bewegung der Quelle oder des Zuhörers einem Dopplereffekt (werden höher/schneller, wenn sich Quelle und Zuhörer aufeinander zubewegen und tiefer/langsamer, wenn sie sich von einander entfernen). Auch die Blickrichtung des Zuhörers beeinflusst den Klang.
Sound-Dateien dürfen nur in mono sein!
Außerdem sollten die Dateien eher klein sein, da sie komplett geladen werden Hauptspeicher. Dafür können mehrere Sounds derselben Datei parallel benutzt werden, wobei die Daten wiederverwendet werden.
Als Position, Geschwindigkeit und Blickrichtung des Zuhörers wird automatisch die Hauptkamera (Kaba/Variable/Cam) benutzt.
- Laden einer Datei mit SoundLoad
- Platzieren in der Welt mit SoundSetData
- Abspielen mit SoundPlay
- Pausieren mit SoundPause
- Stoppen mit SoundStop
- Löschen mit SoundDelete
Oder einfacher:
- Laden, platzieren und abspielen mit SoundEmit (wird automatisch gelöscht, wenn zu ende)
VolumeSounds regelt die allgemeine Sound-Lautstärke.
Erlaubte Formate:
- wav
- ogg
Beispiel:
#define _engine_sound var_i[4]
// ein Auto als Geraeusch-Quelle
void OnInit(model this)
// Motoren-Geraeusch laden
this._engine_sound = SoundLoad("wroom.wav")
// endlos abspielen
SoundPlay(this._engine_sound, true)
void OnDelete(model this)
// aufraeumen nicht vergessen!
SoundDelete(this._engine_sound)
void OnIterate(model this)
// Geraeusch platzieren
SoundSetData(this._engine_sound, this.pos, this.vel, 100, 10000, 1, 1)
// Leertaste -> Hupe
if GetKeyDown(KeySpace)
SoundEmit("honk.wav", this.pos, this.vel, 100, 10000, 1, 1, false)