# llTriggerSoundLimited

*LSL function*

```lsl
void llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west);
```

- `string sound`: Name of a sound in the prim's inventory, or a UUID.
- `float volume`: Volume level to set, between 0.0 (silent) and 1.0 (loud).
- `vector top_north_east`: Top-north-east boundary position vector in region coordinates.
- `vector bottom_south_west`: Bottom-south-west boundary position vector in region coordinates.

- Energy: 10

Plays **sound** at **volume**, centered at but not attached to the object, limited to the box defined by vectors **top_north_east** and **bottom_south_west**

If the object moves the sound does not move with it.

Use [llPlaySound](/functions/llPlaySound/) to play a sound attached to the object.

```lsl title="How to use" frame="terminal"
llTriggerSoundLimited("", 0.0, ZERO_VECTOR, ZERO_VECTOR);
```

## Caveats

- Unlike [llSetSoundRadius](/functions/llSetSoundRadius/), the sound audibility is determined by **avatar** position and not camera position.
- If the script is attached and the parcel has avatar sounds turned off, an error is shouted on [DEBUG_CHANNEL](/constants/DEBUG_CHANNEL/): "Too many sound triggers."

## Examples

<details open>
<summary>Example 1</summary>

```lsl collapse={5-33, 39-45}
/*
    Single Prim llTriggerSoundLimited Helper by Daemonika Nightfire.

    Just use this script in a single prim and make the prim as big as your room.
    If you then click on the prim, the sound will only be triggered inside and you will get a message with a finished LSL code.
    You can simply copy this code to the clipboard and use it in your actual script.

    Important:
    You cannot rotate the prim, the code needs global coordinates.
*/

string sound = "c704dbd8-53b1-246d-e197-b486e92da45b"; // use here your own sound uuid

////////// nothing to do below this line \\\\\\\\\\
default
{
    state_entry()
    {
        llSetStatus(STATUS_PHANTOM, TRUE);
        llSetRot(ZERO_ROTATION);
    }

    touch_start(integer total_number)
    {
        llSetRot(ZERO_ROTATION);
        vector my_pos = llGetPos();
        vector my_scale = llGetScale();

        float _X = my_scale.x/2;
        float _Y = my_scale.y/2;
        float _Z = my_scale.z/2;

        vector bottom_south_west = <my_pos.x - _X, my_pos.y - _Y, my_pos.z - _Z>;
        vector top_north_east    = <my_pos.x + _X, my_pos.y + _Y, my_pos.z + _Z>;

        llTriggerSoundLimited(sound, 1.0, top_north_east, bottom_south_west);

        llOwnerSay("\nllTriggerSoundLimited(\"" + sound + "\", 1.0, " + (string)top_north_east + ", " + (string)bottom_south_west + ");");
    }

    on_rez(integer Dae)
    {
        llResetScript();
    }
}
```

</details>

<details>
<summary>Example 2</summary>

### Secret Collision Sound

This will play a sound on collision, only to the person who collided with it.

It can be used for haunted houses where you want to add confusion, since others wont hear!

```lsl collapse={1-8, 14-22}
string sound = "a9da4612-5d4b-662a-050a-c821c394991f"; // squeaky toy

playSoundAt(key avatar, string sound, float volume)
{
    if (llGetAgentSize(avatar)) // Make sure theyre actually present
    {
        vector pos = (vector)llList2String(llGetObjectDetails(avatar, [OBJECT_POS]),0); // Their position
        list scale = llGetBoundingBox(avatar); // The corners of their bounding box
        vector corner2 = pos+llList2Vector(scale,1); // Top northeast corner of their bounding box
        vector corner1 = pos+llList2Vector(scale,0); // Bottom southwest corner of their bounding box
        llTriggerSoundLimited(sound, volume, corner2, corner1); // Play sound in their location only
    }
}
default
{
    collision_start(integer n)
    {
        key bumper = llDetectedKey(0);
        float volume = 1.0; // Volume is affected by distance like llPlaySound!
        playSoundAt(bumper, sound, volume);
    }
}
```

</details>

## History

Added in [SL 0.4.0](http://secondlife.wikia.com/wiki/Version_0.4.0)

## Known issues

From the issue templates included by the wiki article:

- SVC-4897 (nf): **llSetSyncTime**() - a function for synchronising client side effects

## See also

### Functions

- [llPlaySound](/functions/llPlaySound/)
- [llTriggerSound](/functions/llTriggerSound/)
- [llSetSoundRadius](/functions/llSetSoundRadius/)

---

*Source: [LlTriggerSoundLimited](https://wiki.secondlife.com/wiki/LlTriggerSoundLimited) on the Second Life Wiki. Content from the Second Life Wiki articles LlTriggerSoundLimited (revision 1216710, 2024-05-24), Template:Issues/SVC-4897 (revision 1050552, 2010-10-02), Template:LSL Function/inventory (revision 1191151, 2014-06-07) and Template:LSL Function/position (revision 1169387, 2012-06-18), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llTriggerSoundLimited/
