Audio mit Scripten programmieren ed

Es gibt zwei Audio-Konzepte: Musik und Sound.

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.

VolumeMusic regelt die allgemeine Musik-Lautstärke.

Erlaubte Formate:

Beispiel:

void main()
    # ein Lied laden
    Music *m = LoadMusic("ein Lied.ogg")

    # Lied als Schleife abspielen
    m.play(true)

Sound ed

Klasse: Sound.

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 (cam) benutzt.

Oder einfacher:

VolumeSounds regelt die allgemeine Sound-Lautstärke.

Erlaubte Formate:

Beispiel:

# ein Auto als Geräusch-Quelle
class Car extends Model
    Sound *engine_sound

    override void on_init()

        # Motoren-Geräusch laden
        engine_sound = SoundLoad("wroom.wav")

        # endlos abspielen
        engine_sound.play(true)

    override void on_delete()

        # aufräumen nicht vergessen!
        delete(engine_sound)

    override void on_iterate(float dt)

        # Geräusch platzieren
        engine_sound.set(pos, vel, 100, 10000, 1, 1)

        # Leertaste -> Hupe
        if GetKeyDown(KEY_SPACE)
            EmitSound("honk.wav", pos, vel, 100, 10000, 1, 1, false)