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.

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 (für SL) gekürzt werden, auf Mono und 44.1 als .WAV abgespeichert sein.
In Opensim gehen laut eigenen Versuchen 59,9Sec.


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

Update 14.06.2020: Version 2 geht nun auch in Opensim mit Lautstärkeregelung per touch

Code:
// P417 endless Soundloop für Opensim by Tron V2
// Geht auch in Opensim mit Lautstaerken Steuerung
// automatic detects soundfiles at inventory change
// start automatic loop playback of Soundfile
// allows Volume change by prim touch in 11 steps

string sound;
integer mastervolume = 10;

default
{
    on_rez(integer start) {llResetScript();}

    state_entry()
    {
       llStopSound();
       if(llGetInventoryNumber(INVENTORY_SOUND) > 0)
        {
           sound = llGetInventoryName(INVENTORY_SOUND, 0);
           llWhisper(0,"starting playback of soundfile " + sound + "\nadjust volume by touch in 1/10 steps");
           llStopSound();
           llLoopSound(sound, (float)mastervolume /10);
        }
        else llWhisper(0,"could not detect any soundfiles in prim ");
    }


    touch_end(integer touched)
    {
       llStopSound();
       llSleep(0.3);
       mastervolume--;
       if( mastervolume < 0) mastervolume = 10;
       llWhisper(0,"Volume: "+ (string)(mastervolume));
       llLoopSound(sound, (float)mastervolume /10);
    }


    changed(integer change)
    {
        if (change & ( CHANGED_INVENTORY | 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
    }
}
Zitieren


Nachrichten in diesem Thema
Sound Wiedergabe in Opensim und SL - von Tron Mcp - 21.08.2021, 18:23

Gehe zu:


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