Skip to content

Custom Sirens

Add your own siren tones by dropping WAV files into a folder — tLS builds the game audio for you.

Put .wav files in tLS's sirens/ folder and tLS builds them into siren tones your vehicles can use. There is no separate tool to install and nothing to author by hand.

It is one folder. The 12 tones tLS ships — wail, yelp, horn and the rest — are already in it as ordinary .wav files, built exactly the same way yours are. So you can add to them, replace one with your own recording, or delete one you do not want.

Add a tone

  1. Drop the files in. sirens/wail.wav becomes a tone called wail.
  2. Restart tLS — ensure tLS in the server console. Players who are already connected must reconnect to receive the new audio. A full server restart is not needed.
  3. Use it. In the editor's siren settings, enter your tone name. The soundset is tls_soundset, the same one tLS's own tones use.

The server console lists every tone it built, and names any file it skipped along with the reason.

Naming

A filename becomes a tone name in lower case, with anything outside a–z, 0–9 and _ replaced by _. A subfolder becomes a prefix, which is how you keep two agencies' tones apart.

FileTone name
sirens/wail.wavwail
sirens/My Siren-2.WAVmy_siren_2
sirens/lspd/wail.wavlspd_wail
sirens/bcso/wail.wavbcso_wail

Two files that reduce to the same tone name is treated as a mistake, not a merge: the second one is skipped and named in the console. Wail.wav and wail.wav collide, because the game lower-cases every asset name before looking it up.

Supported audio

Container.wav (RIFF)
EncodingPCM 8, 16, 24 or 32-bit, or IEEE float 32/64-bit
ChannelsAny. Mixed down to mono, because a siren is a point source in the world
Sample rateKept exactly as supplied, from 1 kHz to 192 kHz

Supply one clean cycle of the sound rather than a long repeated recording — tLS handles the looping when it plays the tone. For scale, the tones tLS ships with run from 0.07 s for a horn tap to 10 s for a slow wail.

What happens to files tLS cannot read

They are skipped by name, with the reason, and the rest of the pack still builds. tLS never substitutes silence for a file it did not understand, because a tone that plays nothing is indistinguishable from a tone that was never configured.

Console messageWhat to do
.mp3 is not supported — convert it to WAVConvert the file
has a .wav name but is not a RIFF/WAVE fileIt is some other format renamed. Re-export it
MS ADPCM is not supportedRe-export as PCM or float WAV
tone name "x" is already taken by yTwo files collide. Rename one
sample rate N is outside 1000..192000The file's header is wrong or it is not really audio

Where the files live

PathWhat it is
sirens/The audio. tLS's own 12 tones are here too, and it is the only folder to edit
client/audio/Generated. Rebuilt whenever sirens/ changes; edits here are lost

tLS only rebuilds when something in sirens/ has actually changed, so a normal restart with no new audio costs nothing.

Using the tones

Your tones are not a separate pack — they join tLS's own. Leave the soundset at tls_soundset and give the tone name you created:

SettingValue
Soundsettls_soundset
Toneany name from the table the console printed, e.g. lspd_wail

See Configuration for where siren settings are stored, and Usage for the controls that play them.

Licensing your audio

You are responsible for having the right to use any audio you add. Real-world siren recordings and commercial sound libraries frequently come with terms that forbid redistribution, and a tone you build into your server is distributed to every player who connects.

Still stuck? Support can answer it directly.

Was this page helpful?