Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Vogelstimmen Soundscript
#1
Hier ein kleines Script für den Advents Kallender:

Es spielt endlos verschiedenen Vogelstimmen.

Dazu liest es alle Sounddateien aus die im Prim sind.
Diese müssen im Format .WAV mit Samplingrate 44.1KHz ud Mono vorliegen.

Die Wiedergabe Reihenfolge wird per Zufall ausgewählt.

Zwischen 2 Sounddateien erfolgt eine zufällige Pause im dessen Größe im Script einzustellen ist.
Diese Pause setzt sich aus einer Basispause  (Variable  "basiswartezeit") und einer Zufallsverzögerung von 0 bis "maxzufallsdelay" Sekunden zusammen.
Dabei ist zu beachten das die Länge der längsten .WAV Datei kleiner sein muss als die Basiswartezeit.

Mit der Variable "maxzufallsdelay" kann man die Stille dazwischen einstellen, damit das Gezwitscher nicht Nerven anfängt, und realistisch bleibt.

Anmerkung: die Lautstärke Einstellung habe ich nicht eingebaut, da nach meinen Tests aktuell diese Einstellung in OpenSimulator 0.91 nicht funktioniert.




Code:
// Skript by Elfia und Tron 12.2018
// Skript darf frei verbreitet werden und in eigene Produkte eingebaut werden
// Einzige Beschränkung: Das Skript selbst muss aber kostenfrei und fullperm bleiben und der Header intakt

integer soundanzahl;           // Anzahl Sounds im Inventar
float basiswartezeit = 10.0;   // muss länger sein als längste Sounddatei
float maxzufallsdelay = 10.0;  // addiert zufällige Stille zwischen Sounds

default
{
    state_entry()
    {
       soundanzahl = llGetInventoryNumber(INVENTORY_SOUND);  // Anzahl Sounds im Inventar ermitteln
       llSay(0,"Anzahl Sounds: " + (string) soundanzahl);
       if(soundanzahl) llSetTimerEvent(1.0);                 // Wartezeit bis erstes Abspielen
    }


    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) llResetScript();
    }


    timer()
    {
        float zufall =  llFrand((float)soundanzahl);    // Zufallszahl für Sound ermitteln
        integer aktsound = llRound(zufall) -1;          // und korrigieren
        if(aktsound < 0) aktsound = 0;                  // Fehler mit negativen Index verhindern

        string vogelsound = llGetInventoryName(INVENTORY_ALL, aktsound); // Name des gewählten Sounds aus Inventar ermitteln
        llPlaySound(vogelsound, 0.5);                   // Sound einmal abspielen

        float wartezeit = basiswartezeit  + llFrand(maxzufallsdelay);     // Wartezeit von 10  bis 20 Sekunden festlegen
        llSetTimerEvent(wartezeit);                     // Wartezeit einstellen
    }
}
Antworten }
Thanks given by: Achim


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste