Audio mit Scripten programmieren ed
Es gibt zwei Audio-Konzepte: Musik und Sound.
Table of Contents
Musik ed
Klasse: Music.
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 LoadMusic
- Abspielen mit Music.play
- Pausieren mit Music.pause
- Stoppen mit Music.stop
- Löschen mit delete
VolumeMusic regelt die allgemeine Musik-Lautstärke.
Erlaubte Formate:
- ogg
Beispiel:
Music *m = LoadMusic("ein Lied.ogg")
void main()
// ein Lied laden
m.play(true) // 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!
- Laden einer Datei mit LoadSound
- Platzieren in der Welt mit Sound.set
- Abspielen mit Sound.play
- Pausieren mit Sound.pause
- Stoppen mit Sound.stop
- Löschen mit delete
- Abspielen mit SoundPlay
- Laden, platzieren und abspielen mit EmitSound (wird automatisch gelöscht, wenn zu ende)
- 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
Sound *engine_sound
overwrite void onInit()
// ein Auto als Geräusch-Quelle
class Car : Model
engine_sound = SoundLoad("wroom.wav")
overwrite void OnInit()
engine_sound.play(true)
// Motoren-Geräusch laden
overwrite void onDelete()
// endlos abspielen
delete(engine_sound)
overwrite void onIterate()
// aufräumen nicht vergessen!
engine_sound.set(pos, vel, 100, 10000, 1, 1)
overwrite void OnIterate()
void OnIterate(model this)
// Geräusch platzieren
EmitSound("honk.wav", pos, vel, 100, 10000, 1, 1, false) SoundSetData(this._engine_sound, this.pos, this.vel, 100, 10000, 1, 1)
// Leertaste -> Hupe
if GetKeyDown(KeySpace)
SoundEmit("honk.wav", pos, vel, 100, 10000, 1, 1, false)
SoundEmit("honk.wav", this.pos, this.vel, 100, 10000, 1, 1, false)