This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sound Wiedergabe in Opensim und SL
#1
Die Wiedergabe selbst ersteller Sounds ist ganz einfach.

In einem Audio Bearbeitungs Programm wie Audacity wird die eigene Aufnahme zuerst bearbeitet.
Sie muss auf <= 30 Sekunden gekürzt werden, auf Mono und 44.1 als .WAV abgespeichert sein.

Wenn man den Sound endlos braucht (zum Beispiel für Wasserfall) so macht man da auch gleich in Audacity.

Dann kann sie in den Simulator geladen werden.

Mit nachfolgenden 2 Scriptbeispielen läßt sich diese Sounddatei im Simulator wiedergeben.


Viel Spaß wünschen


Elfia & Tron


Beispiel 1: Endlos Sound Wiedergabe, zum Beispiel für Wasserfälle

Code:
// P417 Endlos Sound für Ambiente
// ermittelt Sounds im Prim und spielt den Ersten endlos ab
// Skript by Elfia und Tron  12.2018
// Skript darf frei verbreitet werden und in eigene Produkte ohne Beschränkungen eingebaut werden

interg debug = TRUE;  // Ausgabe für Entwicklung und Test [TRUE / FALSE]


float lautheit = 1.0;
string sound;

default
{
    state_entry()
    {
       integer soundanzahl = llGetInventoryNumber(INVENTORY_SOUND);  // Anzahl Sounds im Inventar ermitteln
       if(soundanzahl)
        {
           sound = llGetInventoryName(INVENTORY_ALL, 1);     // Namen des ersten Sounds im Inventar ermitteln
           if(debug) llSay(0,(string) soundanzahl +" Sound gefunden. Spiele Sound: " + sound + " ab");
           llLoopSound(sound, lautheit);                                 // Sound endlos abspielen
        }
    }

    touch_end(integer touched)
    {
       if (lautheit > 0.9) lautheit = 0.0;
       else lautheit += 0.1;
       llSay(0,"Lautstärke: "+ (string)(lautheit * 10));
       llLoopSound(sound, lautheit);                                 // Sound endlos abspielen      
    }

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


Beispiel 2: Zufällige Wiedergabe einer Auswahl verschiedener Vogelsounds mit variablen zufallsgesteuerten Pausen.


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 debug = TRUE;           // Ausgaben für Entwicklung und Test [TRUE / FALSE]

integer soundanzahl;        // Anzahl Sounds im Inventar
float basiswartezeit = 10.0;    // Basiswartezeit zwischen Sounds
float maxzufallsdelay = 10.0;      // Varianz Wartezeit zwischen Sounds damit kein Muster entsteht

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


    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) llResetScript();  // Bei Änderung des Inventars neue Soundzahl ermitteln
    }


    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 Ermittlung für RUHE zwischen Sounds (hier zwischen 10  bis 20 Sekunden)
        llSetTimerEvent(wartezeit);                 // Wartezeit einstellen
    }
}
The following 5 users say Thank You to Tron Mcp for this post:
  • Belze (08-23-2021), Coffeetime (08-22-2021), Lukas (08-22-2021), Maria Silberstein (08-22-2021), Sonnenschein (08-22-2021)
Zitieren
#2
Anmerkung:

In Opensim sind manche OSSL Sound Befehle scheinbar immer noch buggy.
Ich habe daher die funktionierenden standard LSL Befehle verwendet.
Bekanntes Problem dabei ist allerdings das die Lautstärke wohl in (0.90x) nicht einstellbar ist.
The following 1 user says Thank You to Tron Mcp for this post:
  • Sonnenschein (09-28-2021)
Zitieren


Gehe zu:


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