<!-- fivemad.com, Markdown source of https://fivemad.com/docs/tools/vehicle-sirens -->
> Source: https://fivemad.com/docs/tools/vehicle-sirens
> Section: Tools
> Tags: carcols.meta, sirens, sirenSettings, emergency lights, siren id
> Tool: https://fivemad.com/tools/vehicle-sirens
> Last updated: 2026-09-22
> Site map for assistants: https://fivemad.com/llms.txt

# Vehicle Sirens Editor

Edit carcols.meta siren settings with a live preview and a 32 step pattern grid, export carcols.meta, and find free or clashing siren ids on your server.

The Vehicle Sirens Editor builds and tunes emergency lighting for GTA V vehicles. You edit every siren light's colour, direction, rotation, flash and 32 step pattern with a live preview on the real vehicle layout, set the timing, and export a `carcols.meta`. The **Siren ID check** tab reads all your carcols and carvariations files and shows which siren ids are taken, free or clashing.

## What it is for

Siren settings are hard to write by hand: each one has 20 lights, each light has two 32 bit patterns stored as big decimal numbers, and you cannot see the result without restarting and driving into the dark. The editor shows the pattern as a grid you paint with the mouse and plays it on the vehicle, so you can build a wig wag or a rotator bar in minutes.

The id checker solves the other common problem on emergency vehicle servers: two packs that use the same siren id, so one set of cars shows the wrong lights.

## How siren settings work

A siren setting is one `<Item>` in the `<Sirens>` block of a `carcols.meta`. It has an `id`, timing for the whole set (`sequencerBpm`, `timeMultiplier`), how the cast light behaves (falloff and cone angles), head and tail light patterns, and a list of exactly 20 lights. Light 1 is drawn at the model's `siren1` bone, light 20 at `siren20`. A light with no matching bone on the model is skipped, so the same setting looks different on different cars.

The vehicle picks its setting in `carvariations.meta` with `<sirenSettings value="ID" />`. That number must match the `id` in carcols.meta. 0 means no sirens.

Every light has a 32 bit `sequencer`: one bit per beat at `sequencerBpm`, 1 is on and 0 is off. The file stores it as an unsigned decimal. Step 1 in the grid is the leftmost (highest) bit. `4294967295` is always on, `2863311530` is 1010..., `1431655765` is 0101.... At 300 BPM a full 32 step pattern takes 6.4 seconds. Flashing lights use the `flashiness` sequencer, rotators (`rotate` true) the `rotation` one.

## Quick start

1. Pick a game setting on the left (search by id, name or vehicle model), or click **New setting**, or **Import carcols.meta**.
2. To build your own lights from a game setting, click **Copy to new id**. It copies the setting to the next free id from 100 up.
3. Press **Play** in the **Preview** panel and paint steps in the **Patterns** grid.
4. Click a lamp in the preview (or a light name in the grid) and edit it in the **Light** panel.
5. Set the timing and cone values in the **Setting** panel.
6. Open the **carcols.meta** tab under the editor and copy or download it. Use the **carvariations** tab to see where the id goes, and the **fxmanifest** tab for the resource manifest.

Your work is saved in this browser. Links like `?id=16` open a game setting, `?tab=ids` opens the id checker, and `?view=rear` starts the preview in the rear view.

## The setting list

The list has two groups:

- **Yours**: settings you edited, copied, created or imported, with a badge (**edited**, **new**, **import**) and where they came from ("copy of 1", "from carcols.meta").
- **Game**: the 21 game settings (ids 0 to 20, build 3889) from the base game and DLCs, with the vehicles that use each one. Id 0 is a placeholder that nothing uses.

Each row shows a strip of the first eight light colours.

### Editing a game setting vs copying it

You can edit a game setting in place. It then shows as **edited** and exports with its game id, which replaces that id for every vehicle that uses it (for example id 1 is `police/sheriff`). The id box is locked for game settings. For your own car, use **Copy to new id** instead.

**Reset (N)** puts the setting back to what it was loaded as (the game values, the import, or the state when you copied it). **Remove** drops your own settings from the list.

## Header and warnings

The **id** and **name** fields sit at the top. Ids above 255 or below 1 turn the box red. Amber warnings appear when:

- `lightInnerConeAngle` is not smaller than `lightOuterConeAngle`.
- The setting has more or fewer than 20 lights.
- `sequencerBpm` is 0 or below.
- The id is 0, or above 255.

## Preview

The preview draws the lights on a vehicle layout, seen from the **Top** or the **Rear**.

| Control | What it does |
| --- | --- |
| Model select | **Auto** uses a vehicle that uses this setting (or `police`), **Generic layout** uses a neutral layout, or pick any of the listed models. |
| Play / Pause | Plays the pattern at the setting's BPM. Starts paused if your system asks for reduced motion. |
| Step | Advances one sequencer step. |
| Restart | Back to step 1. |
| 0.25x, 0.5x, 1x | Playback speed. |

Click a lamp in the preview to select that light. If the model has no bone for some of the lights, a note under the preview tells you how many are not drawn (the game skips them too).

The timing, which lights are lit on which step, multiples, colours and lamp positions follow the setting. Glow size, beam length, brightness and rotator speed are approximations, so always check the result in game.

## Patterns

The **Patterns** panel shows one row of 32 steps per light. Click a cell to toggle it, or click and drag to paint. The current playback step is highlighted.

| Mode | What the grid edits |
| --- | --- |
| In use | The rotation pattern for rotators, the flash pattern for the rest. |
| Flash | Every light's `flashiness` sequencer. |
| Rotation | Every light's `rotation` sequencer. |

Below it, **Head and tail lights** has four rows (left and right head, left and right tail) for flashing the car's real lights, with a **useRealLights** switch. Guides advise at most 4 flashes in a row.

## Light

Pick a light with the numbered buttons or the `siren1` to `siren20` dropdown. The header says whether it is a rotator, flasher or not lit, and whether it casts a spot light, a round light or only a corona.

**Colour to all** gives every light this colour. **Settings to all** copies every field except the colour and the patterns to the other lights.

### Switches

| Switch | What it does |
| --- | --- |
| `rotate` | Spins the light (rotator). Uses the rotation pattern. |
| `flash` | Flashes the light. Uses the flash pattern. |
| `light` | Casts real light on the world, not only a corona. |
| `spotLight` | Cone shaped light instead of a round glow. Rotators need it to look like they spin. |
| `scale` | Corona grows with `scaleFactor` while lit. |
| `castShadows` | The cast light makes shadows. Costs performance; game files keep it off. |

### Colour

Use the colour picker, type `0xAARRGGBB` in the text box, or click a preset: Red `FFFF0300`, Blue `FF0019FF`, Amber `FFFFAA00`, White `FFFFFFFF`, Green `FF00FF0D`, Magenta `FFFF00FB`. Game lights use alpha `FF`; the tool tells you when yours is lower.

### Numbers

| Field | What it does | Range |
| --- | --- | --- |
| `intensity` | Brightness of the light cast on the world. | 0 to 10 |
| `scaleFactor` | Corona size while flashing when `scale` is on. | 0 to 255 |
| `lightGroup` | Lamp group. Game files use 0 to 3. | 0 to 255 |

### flashiness and rotation

Each has its own block, and the one in use is highlighted:

| Field | What it does |
| --- | --- |
| `sequencer` | The 32 step pattern. Pick from **Presets...** (Always on, Off, Alternate A/B, Pairs A/B, Quads A/B, Half A/B, Triple flash A/B), shift it one step left or right, invert it, or type it as decimal, `0x` hex, `-1` or a 32 character bit string. |
| Direction dial | Click a dot to point the light front, back, left, right or diagonal. The top of the dial is the front of the car. |
| `delta` | Facing in radians: 0 front, 1.5708 left, 3.1416 back, -1.5708 right. |
| `start` | Start angle, added to delta. |
| `speed` | Spin speed for rotators. |
| `multiples` | Flashes inside one lit beat. |
| `direction` | Flips the spin direction. |
| `syncToBpm` | Ties the timing to `sequencerBpm`. |

The light also shows its own warnings, for example rotate and flash both on, neither on, an empty pattern, or a rotator without `spotLight`.

### corona

`intensity` (0 hides the corona), `size` (0 hides it too), `pull` (pulls the corona towards the camera so it shows through the lamp glass) and `faceCamera`.

## Setting

| Field | What it does | Default for a new setting |
| --- | --- | --- |
| `sequencerBpm` | Beats per minute. Game lightbars use 150 to 300. | 300 |
| `timeMultiplier` | Scales the BPM. 2 plays the pattern twice as fast. | 1 |
| `lightFalloffMax` | How far the cast light reaches, metres. | 10 |
| `lightFalloffExponent` | How hard the light fades towards the max distance. | 10 |
| `lightInnerConeAngle` | Full brightness part of each spot cone, degrees. | 2.29061 |
| `lightOuterConeAngle` | Edge of each spot cone, degrees. | 70 |
| `lightOffset` | Offset of the cast light from the lamp. Game lightbars use 0. | 0 |
| `textureName` | Corona texture. Leave it at `VehicleLight_sirenlight`. | `VehicleLight_sirenlight` |

The four head and tail light sequencers also have their pattern tools here, each with a `...Multiples` value. If a setting has fewer than 20 lights, **Fill up to 20 lights** adds blank, unlit ones.

A **New setting** starts with 20 lights: red on odd lights, blue on even ones, flashing in turns.

## Importing

Click **Import carcols.meta**, paste a whole carcols.meta, its `<Sirens>` block or one siren `<Item>`, and press **Parse**, or use **Open files** to load several files at once. Kits and lights in the file are ignored. Signed sequencers like `-1` are read too. Missing or odd fields are filled with defaults and listed under **field warnings**. The message also tells you when an imported id is also a game id. Importing the same file again replaces its settings instead of adding copies.

## Output

The tabs under the editor:

| Tab | What you get |
| --- | --- |
| carcols.meta | A carcols.meta with every setting in your export: edited game settings, copies, new and imported ones. |
| carvariations | Where to put each id in your vehicle's carvariations.meta. |
| fxmanifest | A ready `fxmanifest.lua`. |
| Settings | Every exported setting with its changed fields, a **Copy Item** button (one setting to paste into an existing Sirens block) and a button to drop it from the export. |

### carcols.meta

```xml title="carcols.meta"
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
  <Sirens>
    <Item>
      <id value="100" />
      <name>my_sirens</name>
      <timeMultiplier value="1.000000" />
      <lightFalloffMax value="10.000000" />
      <lightFalloffExponent value="10.000000" />
      <lightInnerConeAngle value="2.290610" />
      <lightOuterConeAngle value="70.000000" />
      <lightOffset value="0.000000" />
      <textureName>VehicleLight_sirenlight</textureName>
      <sequencerBpm value="300" />
      <leftHeadLight>
        <sequencer value="0" />
      </leftHeadLight>
      <!-- rightHeadLight, leftTailLight, rightTailLight -->
      <leftHeadLightMultiples value="1" />
      <rightHeadLightMultiples value="1" />
      <leftTailLightMultiples value="1" />
      <rightTailLightMultiples value="1" />
      <useRealLights value="true" />
      <sirens>
        <Item> <!-- siren1 -->
          <rotation>
            <delta value="0.000000" />
            <start value="0.000000" />
            <speed value="3.000000" />
            <sequencer value="4294967295" />
            <multiples value="1" />
            <direction value="false" />
            <syncToBpm value="true" />
          </rotation>
          <flashiness>
            <delta value="0.000000" />
            <start value="0.000000" />
            <speed value="1.000000" />
            <sequencer value="2863311530" />
            <multiples value="1" />
            <direction value="true" />
            <syncToBpm value="true" />
          </flashiness>
          <corona>
            <intensity value="50.000000" />
            <size value="1.100000" />
            <pull value="0.200000" />
            <faceCamera value="false" />
          </corona>
          <color value="0xFFFF0300" />
          <intensity value="0.500000" />
          <lightGroup value="0" />
          <rotate value="false" />
          <scale value="true" />
          <scaleFactor value="2" />
          <flash value="true" />
          <light value="true" />
          <spotLight value="true" />
          <castShadows value="false" />
        </Item>
        <!-- siren2 to siren20 -->
      </sirens>
    </Item>
  </Sirens>
</CVehicleModelInfoVarGlobal>
```

A carcols.meta that only has a `<Sirens>` block is fine. If your vehicle resource already ships a carcols.meta, paste the setting's `<Item>` (use **Copy Item** on the **Settings** tab) into its Sirens block instead of adding a second file with the same id.

### carvariations.meta

```xml title="carvariations.meta"
<Item>
  <modelName>yourcar</modelName>
  <!-- colors, kits, plateProbabilities... stay as they are -->
  <sirenSettings value="100" />
</Item>
```

For a copy of a game setting, the tab fills in a vehicle that used the original id. Edited game settings need no carvariations change, their vehicles already point at that id.

### fxmanifest.lua

```lua title="fxmanifest.lua"
fx_version 'cerulean'
game 'gta5'

files {
  'data/carcols.meta',
  'data/carvariations.meta',
}

data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'
```

Save the files in a `data` folder next to this manifest and `ensure` the resource. Leave out the carvariations lines if the vehicle resource already loads its own.

## Siren ID check

The **Siren ID check** tab reads files and tells you which ids are in use.

1. Drop `carcols.meta` and `carvariations.meta` files on the **Files** box (several at once, from every siren resource on your server), or paste the text of a file and click **Add**.
2. Leave **Include the game's ids** on to see clashes with game settings. Turn on **Include my editor settings** to check what you built in the editor.
3. Read the results.

| Result | What it shows |
| --- | --- |
| Id map 0 to 255 | A 16 by 16 grid: game ids, yours, warnings and clashes. Hover a cell for details. |
| Problems / Ids in your files / Free ids (1 to 254) | Counts. |
| Next free ids | Ids you can copy, from 100 up, then the gap above the game's ids. Plus the list of free ranges. |
| Vehicles with more than one id | A model pointed at different ids by different carvariations files. The last one loaded wins. |
| Ids table | Each id, where it is defined, which models use it, and its status. |

| Status | Meaning |
| --- | --- |
| Clash | Defined more than once. Only one definition wins. |
| Replaces game | Same id as a game setting. Every game vehicle on that id gets your lights. |
| Not defined | A carvariations entry points at an id no loaded carcols (or the game) defines. |
| Unused | Defined, but no loaded carvariations points at it. |
| Over 255 | Only works with the SirenSetting Limit Adjuster on every client. |
| OK | Defined once, no clash. |

Files over 20 MB are skipped. Nothing is uploaded.

## The 255 id limit

- The id is a single byte in both carcols and carvariations, so ids go up to 255. 0 means no sirens and the Limit Adjuster reserves 255, so 1 to 254 is the safe range.
- The game uses ids 1 to 20 at build 3889, and Rockstar adds more with DLCs, so start your own ids higher. The tool suggests ids from 100 up.
- FiveM does not raise the limit ([citizenfx/fivem#2612](https://github.com/citizenfx/fivem/issues/2612) is still open). The client side SirenSetting Limit Adjuster allows higher ids, but every player has to install it.

> [!WARNING]
> Two resources with the same siren id do not crash anything, which is why the problem goes unnoticed. Run every carcols.meta on your server through the Siren ID check before adding a new pack.

## Common mistakes

- **Id in carcols does not match carvariations.** Put the same number in `id` and `sirenSettings`.
- **Editing a game setting when you meant to make your own.** That changes every vehicle on that id. Use **Copy to new id**.
- **Rotate and flash both on.** The game handles one mode per light. Pick one.
- **Rotator without `spotLight`.** It becomes a round glow and the spin cannot be seen.
- **Fewer than 20 lights.** Use **Fill up to 20 lights** so the `<sirens>` list is complete.
- **A second carcols.meta with the same id** inside a pack that already has one. Merge the Item into the existing Sirens block.

## Limitations

The preview is a guide, not the game renderer: glow, beam length, brightness and rotator speed are approximate. The tool only reads and writes the `<Sirens>` part of carcols.meta; kits and lights are ignored on import and not written. Everything runs in your browser.

## Related tools

- [Vehicle Handling Editor](/docs/tools/vehicle-handling-editor)
- [Vehicle Pack Validator](/docs/tools/vehicle-pack-validator)
- [fxmanifest.lua Generator](/docs/tools/fxmanifest-generator)
- [Model Hash Browser](/docs/tools/model-hash-browser)
