Vehicle Sound Effects - user-grinch/ModelExtras GitHub Wiki

Available from ModelExtras v2.0+

🔊 Vehicle Sound Effects

ModelExtras features an immersive, dynamic 3D Vehicle Sound System that plays realistic spatial audio cues during vehicle interactions, engine states, emergency operations, and heavy machinery operations.

Built-in effects use files in ModelExtras/audio/. The regular effect loader searches .mp3, .wav, and .ogg for the expected base filename; siren sounds use the path configured on each siren state.


📂 Sound File Directory Structure

Place replacement audio files inside ModelExtras/audio/ using these base names:

Sound File Trigger Event Affected Vehicles
engine_start.wav Starting the vehicle engine Automobiles, Trucks, Vans
bike_engine_start.wav Starting a bike or motorcycle engine Motorcycles, Quadbikes
indicator_on.wav Turn signal or hazard light engaged Player vehicle
indicator_off.wav Turn signal or hazard light disengaged Player vehicle
switch_toggle.wav Toggling fog lights, spotlights, or high beams (when headlights active) Player vehicle
airbreak.wav Releasing air brakes after deceleration Heavy vehicles (Trucks, Buses, Monster Trucks)
reverse.wav Reversing / Backup warning beeper Heavy vehicles in reverse gear
backfire.wav High-RPM pop-and-bang backfire explosions & gear shifts Sports cars & high-performance models
door_chime.mp3 Warning chime while a qualifying vehicle door is open Selected vehicles by default
brake_pad.mp3 Brake-pad squeak while braking at low speed Selected vehicles when enabled
Custom siren audio paths Per-state sound value in siren JSONC (switched via CTRL + 1..9) Siren states that specify matching audio paths

⚙️ INI Configuration (ModelExtras.ini)

You can individually toggle, adjust volume, or configure which vehicle models receive heavy vehicle sound effects:

[SOUND]
; Master switch for all ModelExtras sound effects
SoundEffects = True
SoundMult = 0.6

; Air brake release sound for big vehicles
GlobalAirbreakSound = True

; Engine start/stop audio
GlobalEngineSound = True

; Turn signal tick on/off audio
GlobalIndicatorSound = True

; Reverse backup beeper for big vehicles
GlobalReverseSound = True

; Play sound effects for AI traffic vehicles too
NonPlayerVehicles = True
DoorChimeSound = True
DoorChimeOnlySelected = True
DoorChimeVolume = 0.7
BrakePadSound = False
BrakePadOnlySelected = True
BrakePadVolume = 0.7

[TABLE]
; List of model IDs classified as big vehicles (Buses, Trucks, Heavy Machinery, Monster Trucks)
BigVehicleModels = 403, 406, 407, 408, 414, 416, 427, 428, 431, 433, 437, 443, 455, 456, 486, 498, 499, 508, 514, 515, 524, 525, 528, 530, 532, 544, 552, 573, 574, 578, 588, 601, 609
DoorChime_VehicleModels = 400, 401, 402, 405, 409, 410, 411, 413, 415, 416, 418, 420, 421, 422, 426, 429, 436, 440, 445, 451, 458, 459, 470, 477, 480, 482, 489, 490, 492, 496, 500, 505, 506, 507, 516, 517, 526, 527, 529, 533, 540, 541, 546, 547, 550, 551, 554, 558, 559, 560, 561, 562, 565, 579, 582, 585, 587, 589, 596, 597, 598, 599, 602, 603
BrakePad_VehicleModels = 401, 404, 410, 412, 413, 418, 419, 420, 421, 422, 423, 426, 434, 436, 438, 439, 440, 442, 458, 459, 466, 467, 474, 475, 478, 479, 482, 483, 489, 491, 492, 496, 500, 504, 505, 507, 508, 516, 517, 518, 526, 527, 529, 534, 535, 536, 540, 542, 543, 545, 546, 547, 549, 550, 551, 554, 555, 565, 566, 567, 575, 576, 580, 582, 585, 589, 600, 604, 605

The optional per-vehicle JSONC overrides are sound.door_chime and sound.brake_pad (boolean) and take precedence over their selected-model lists. The loader searches .mp3, .wav, then .ogg for the built-in door_chime and brake_pad names.


🎧 Spatial 3D Audio & Exit Persistence

Siren audio is configured per state using its sound field, for example "sound": "audio/siren3.wav"; the path is relative to ModelExtras/. Ctrl + 1..9 selects a configured siren tone/state sound. There are no built-in siren_tone1.wav ... siren_tone9.wav files. Siren paths are loaded as written.

The audio system uses positional playback. Configured siren streams can continue at the vehicle position after the player exits.