Sound Suite

Getting started

Install the San Andreas Sound Suite, understand what each resource owns, and complete the first two-client acceptance pass.

Resource
San Andreas Sound Suite
Version
Sound 1.5.16 · Dispatch 1.0.0 · Radio 1.0.0
Updated
Updated August 21, 2026
Resource GitHub
Browse documentationSan Andreas Sound Suite
Guide pagesGetting started
Sections
01 / Overview

How the suite is divided

The suite separates rendering, scheduling, vehicle state, and local programming so each resource has one clear authority boundary.

ComponentResponsibilityRequired by
san_andreas_sound 1.5.16Positional playback, vehicle acoustics, diagnostics, streamer mode, and xSound/InteractSound compatibility.Radio streamed sources and any script that calls its audio APIs.
san_andreas_dispatch 1.0.0Six independent synchronized local call schedules and public scanner metadata. It does not play audio.Optional local scanner programming.
san_andreas_station_pack 1.0.0Optional server-owned station catalog and deterministic program clock.Optional Server Radio source.
san_andreas_radio 1.0.0Vehicle permissions, head unit, source selection, scanner profiles, playlists, timestamps, and synchronized vehicle state.The complete in-vehicle experience; requires OneSync.
Content Builder 0.5.3Local configuration, Dispatch, and station-pack packaging workbench.Optional developer/server-owner tool; never an ensured FiveM resource.

Sound can run by itself. Dispatch supplies state to Radio or another consumer and has no renderer. Radio can run without Dispatch by using configured scanner URLs. Station Pack is optional, and the Content Builder stays on a developer computer.

The server synchronizes descriptors and timestamps rather than audio bytes. Each client loads and renders media locally, while network IDs identify shared vehicles safely across clients.

02 / Requirements

Requirements and safe defaults

RequirementApplies toDetails
FiveM cerulean runtimeAll runtime resourcesKeep the exact folder names from the release.
OneSyncsan_andreas_radioDeclared as a hard manifest dependency.
Framework or databaseNoneThe four runtime resources have no framework or database dependency.
Node.js 20+ and npmContent Builder onlyA current supported Node.js LTS release is recommended.
Authorized browser-playable mediaStreams and imported mediaA URL that plays is not necessarily CORS-compatible with full Web Audio processing.
  • New vehicle radios start powered off.
  • No third-party Satellite Radio or external scanner URL is active in the release configuration.
  • Dispatch supplies local scanner calls only when installed and mapped.
  • The Station Pack contains only the separately licensed demonstration media documented by the repository.
  • Add only streams, recordings, artwork, and compatibility cues that the server may use and redistribute.
03 / Installation

Install the runtime resources

Copy the selected resource folders into the server resources tree without renaming them, then start providers and catalogs before Radio.

Recommended complete-suite orderserver.cfgcfg
ensure san_andreas_sound
ensure san_andreas_dispatch
ensure san_andreas_station_pack
ensure san_andreas_radio

Dispatch and Station Pack are optional. Omit their ensure lines when their sources are not needed. Sound must precede Radio and every script that uses its exports or compatibility aliases.

The Content Builder directory is not a FiveM resource. Keep it outside the FXServer resources tree and never add it to server.cfg.

  1. Confirm each folder name exactly matches its manifest resource name.
  2. Confirm OneSync is enabled before starting Radio.
  3. Watch the server console while the resources start, especially Dispatch and Station Pack catalog validation.
  4. Join in a normal vehicle, start its engine, and open Radio with the mapped key (Q by default) or /saradio.
  5. Power Radio on and test one native GTA station plus every installed streamed source.
  6. Enter an eligible scanner vehicle and test the mapped scanner key (J by default).
  7. Repeat the synchronization test with a second client before production deployment.
04 / Operation

Player controls and normal vehicle behavior

CommandArgumentsContextDescription
/saradioClientOpen or close the main vehicle head unit.
Radio keyQ by defaultClientPlayer-remappable head-unit control.
/saradiotrackClientPrint the current native GTA station and track metadata to F8.
/sascannerClientToggle synchronized scanner power for the current eligible vehicle.
Scanner keyJ by defaultClientPlayer-remappable scanner-power control.
/scannerhudClientToggle only the local scanner display preference.
/streamermodeon | off | statusClientMute or restore all San Andreas Sound-managed output on this client without changing shared timing.
san_andreas_sound_statusClientPrint renderer and spatial diagnostics in F8.
  • SOURCE cycles Local Radio, Satellite Radio, optional Server Radio, and Bluetooth. The tuner changes stations only inside the active source.
  • The custom volume slider controls managed streamed sources. GTA-native Radio follows each player's GTA music-volume setting.
  • MINI toggles the local compact display; MOVE unlocks dragging and resizing; COLOR selects a local accent or returns to automatic station colors.
  • Accessory power can keep a powered radio alive after engine shutdown until the configured driver door opens. A later engine start restores retained state.
  • With PreserveNpcRadio enabled, taking over an NPC-driven vehicle can preserve that NPC's active GTA station once. Empty vehicles still follow the normal powered-off default.
  • Compatible direct media responds to doors, windows, roof, optional trunk enclosure, listener relationship, distance, and occlusion. HTML and YouTube fallbacks have reduced processing.
05 / Migration

Replace xSound or InteractSound

  1. Search every active resource for xsound exports, xsound:stateSound, xSound:songStopPlaying, InteractSound_CL, InteractSound_SV, and interact-sound dependencies.
  2. Inventory every external URL and local cue. Confirm rights and preserve required third-party notices before copying any media.
  3. Remove the original xsound and interact-sound start lines, then ensure san_andreas_sound before every legacy caller.
  4. Copy only approved local cues into san_andreas_sound/web/sounds and update obsolete cfx-nui asset URLs. Do not merge the old provider's Lua, HTML, JavaScript, or manifest.
  5. Add manifest file patterns for approved formats that are not already packaged.
  6. Exercise each real caller's playback, mutation, callback, completion, distance, fade, and cleanup behavior, then restart the caller and Sound independently.
  7. Disable a compatibility surface only after the full resources tree has been searched and every caller has migrated.
server.cfgcfg
ensure san_andreas_sound
ensure your_fuel_resource
ensure your_phone_or_door_resource
ensure san_andreas_radio

# Do not also start these originals.
# ensure xsound
# ensure interact-sound
06 / Verification

First acceptance pass

  1. Use at least two clients and two vehicles.
  2. Test radio off/on, native GTA Radio, and every installed managed source.
  3. Tune two vehicles to the same Satellite or Server Radio program at different times and compare alignment; also confirm different stations remain independent.
  4. Move a source vehicle around a listener, then test inside, outside, another vehicle, multiple door/window states, an opted-in trunk, an open-cabin boat, and world occlusion.
  5. Test scanner profile precedence, standby/receiving metadata, synchronized power, native-scanner suppression, and a configured URL fallback.
  6. Test driver and passenger permissions, pause/unpause, engine and accessory state, exit/re-entry, vehicle deletion, and NPC takeover.
  7. Restart Sound, Dispatch, Station Pack, and Radio one at a time. Confirm no duplicate or orphaned audio and no effect on unrelated vehicle resources.
  8. Inspect san_andreas_sound_status for renderer, started state, profile, enclosure, occlusion, effective volume, attachment, sync group, and errors.