Difference between revisions of "LlLoopSoundMaster"

From Second Life Wiki
Jump to navigation Jump to search
m (<lsl> tag to <source>)
m (States should not be used for something so simple as a toggle. Modified the example.)
Line 18: Line 18:
The script below can be added to an object, to toggle a SoundMaster on and off. Note that the script requires a sound in inventory called MasterLoop, or you need to change the argument in the function for it to work. This script is a slight modification to the script [[Toggle_States]], adding only the llLoopSoundMaster and [[llStopSound]] to make it work.
The script below can be added to an object, to toggle a SoundMaster on and off. Note that the script requires a sound in inventory called MasterLoop, or you need to change the argument in the function for it to work. This script is a slight modification to the script [[Toggle_States]], adding only the llLoopSoundMaster and [[llStopSound]] to make it work.
<source lang="lsl2">
<source lang="lsl2">
//This integer (actually a boolean) will be used to manage the toggle effect.
integer soundState = FALSE;
string soundClip = "MasterLoop";
default {
default {
     state_entry() {
     state_entry() {
Line 25: Line 28:
     }
     }
     touch_start(integer num_detected) {
     touch_start(integer num_detected) {
         // when touched, switch to state named 'on'
         // when touched, soundState inverts its current boolean value.
         state on;
         soundState = !soundState;
    }
if(soundState)
}
{
 
// run this code when entering soundState 'on'
state on {
// displays green "ON" as floating text above the prim
    state_entry() {
llSetText("ON", <0,1,0>, 1.0);
        // run this code when entering state 'on'
llLoopSoundMaster(soundClip, 1.0);
        // displays green "ON" as floating text above the prim
}else
        llSetText("ON", <0,1,0>, 1.0);
{
        llLoopSoundMaster("MasterLoop", 1.0);
// when touched, stop sound & switch back to the default state
    }
llStopSound();
    touch_start(integer num_detected) {
}
        // when touched, stop sound & switch back to the default state
        llStopSound();
        state default;
     }
     }
}
}

Revision as of 12:14, 19 April 2016

Summary

Function: llLoopSoundMaster( string sound, float volume );

Plays attached sound looping at volume, declares it a sync master.

• string sound a sound in the inventory of the prim this script is in or a UUID of a sound
• float volume between 0.0 (silent) and 1.0 (loud) (0.0 <= volume <= 1.0)

Caveats

  • If sound is missing from the prim's inventory and it is not a UUID or it is not a sound then an error is shouted on DEBUG_CHANNEL.
  • If sound is a UUID then there are no new asset permissions consequences for the object.
    • The resulting object develops no new usage restrictions that might have occurred if the asset had been placed in the prims inventory.
All Issues ~ Search JIRA for related Bugs

Examples

// for an uploaded .wav file called "MasterLoop" in inventory
llLoopSoundMaster("MasterLoop", 1.0);

The script below can be added to an object, to toggle a SoundMaster on and off. Note that the script requires a sound in inventory called MasterLoop, or you need to change the argument in the function for it to work. This script is a slight modification to the script Toggle_States, adding only the llLoopSoundMaster and llStopSound to make it work.

//This integer (actually a boolean) will be used to manage the toggle effect.
integer soundState = FALSE;
string soundClip = "MasterLoop";
default {
    state_entry() {
        // run this code when entering the default state
        // displays red "OFF" as floating text above the prim
        llSetText("OFF", <1,0,0>, 1.0);
    }
    touch_start(integer num_detected) {
        // when touched, soundState inverts its current boolean value. 
        soundState = !soundState;
		if(soundState)
		{
			// run this code when entering soundState 'on'
			// displays green "ON" as floating text above the prim
			llSetText("ON", <0,1,0>, 1.0);
			llLoopSoundMaster(soundClip, 1.0);
		}else
		{
			// when touched, stop sound & switch back to the default state
			llStopSound();
		}
    }
}

See Also

Functions

•  llLoopSound Plays a sound attached indefinitely.
•  llLoopSoundSlave
•  llPlaySoundSlave Plays a sound attached once.

Deep Notes

Search JIRA for related Issues

Signature

function void llLoopSoundMaster( string sound, float volume );