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
- Drop the files in.
sirens/wail.wavbecomes a tone calledwail. - Restart tLS —
ensure tLSin the server console. Players who are already connected must reconnect to receive the new audio. A full server restart is not needed. - 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.
| File | Tone name |
|---|---|
sirens/wail.wav | wail |
sirens/My Siren-2.WAV | my_siren_2 |
sirens/lspd/wail.wav | lspd_wail |
sirens/bcso/wail.wav | bcso_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) |
| Encoding | PCM 8, 16, 24 or 32-bit, or IEEE float 32/64-bit |
| Channels | Any. Mixed down to mono, because a siren is a point source in the world |
| Sample rate | Kept 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 message | What to do |
|---|---|
.mp3 is not supported — convert it to WAV | Convert the file |
has a .wav name but is not a RIFF/WAVE file | It is some other format renamed. Re-export it |
MS ADPCM is not supported | Re-export as PCM or float WAV |
tone name "x" is already taken by y | Two files collide. Rename one |
sample rate N is outside 1000..192000 | The file's header is wrong or it is not really audio |
Where the files live
| Path | What 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:
| Setting | Value |
|---|---|
| Soundset | tls_soundset |
| Tone | any 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.
tLS
Still stuck? Support can answer it directly.
Was this page helpful?
TIMMYG Studios