Difference between revisions of "Environment Sounds"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 104: Line 104:
** This continuously loops the sound.
** This continuously loops the sound.
** Only one at a time per prim. Playing another will stop the current sound.
** Only one at a time per prim. Playing another will stop the current sound.
----
Return to [[Good_Building_Practices]]

Revision as of 19:11, 15 July 2012

Environmental Sounds

There's a handful of ways to generate sound without an avatar in Second Life.

  • Sound clips
  • a parcel's music stream
  • a web page displayed on a prim

You can change all of them via scripting. The latter two can be set up without using scripts.

Soundtrack

If your build has a soundtrack or theme music that you want heard clearly across the parcel, consider using streaming music. It can be set in the About Land window. The llSetParcelMusicURL() call lets you change it via script.

You can play a series of sound clips in order, but there's no guarantee that the "song" will be heard as seamless.

Looping

Looping a sound clip can add ambiance. Consider it for nighttime bugs by a lake, a crowd murmuring, or the hum of electric signs.

<lsl> default {

   state_entry()
   {
       llLoopSound( llGetInventoryName( INVENTORY_SOUND, 0 ), 0.5 );
   }

} </lsl>

Shift-drag will allow you to create multiple copies of an object that will have their looping sounds synched together.

Synchronized

Do you want your ocean wave sounds to all synch up? Does your surreal build have a slow steady heartbeat?

Try this synchronized sound script.

Random

Short ambient sounds played randomly can make a space feel more alive.

Some good choices for this would be frogs, underbrush rustles and snaps, a distant car horn or squealing brakes.

Try this random sounds script.

Day/Night

Some sounds are best played during certain times of day. Consider birdsong, or bats and owls. If your build is taking advantage of a region's natural day/night cycle, you can alter your ambient sound selection by the time of day your region shows.

<lsl> integer IsSunUp() {

   vector sunPosition = llGetSunDirection();
   return ( sunPosition.z > 0 );

}

integer IsTwilight() {

   vector sunPosition = llGetSunDirection();
   if ( sunPosition.z > 0.0 && sunPosition.z < 0.15 )
       return TRUE;
   return FALSE;

} </lsl>

Try this daytime random sounds script.

Wind activated

Do your bushes rustle more or louder when the wind blows? What about wind chimes?

<lsl> float GetWindStrength() {

   return llVecMag(llWind(ZERO_VECTOR));

} </lsl>

Try this wind powered sounds script.

Loud

Using llTriggerSound multiple times in a row can make a sound seem much louder than calling it once. This can be useful for tower bells and explosions. Be careful using this; too many times can cause an unpleasant echo-like effect.

<lsl> integer n; for (n = 0; n < 5; ++n) {

   llTriggerSound(soundname, 1.0);

} </lsl>

Scripting comments

Sound clips

  • llTriggerSound()
    • Unattached - sounds occur where they're triggered.
    • Cannot be stopped with llStopSound().
  • llPlaySound()
    • Attached - sounds follow the object they are in if it moves.
    • Only one at a time per prim. Playing another will stop the current sound.
  • llLoopSound()
    • Attached - sounds follow the object they are in if it moves.
    • This continuously loops the sound.
    • Only one at a time per prim. Playing another will stop the current sound.

Return to Good_Building_Practices