Skip to content
This repository was archived by the owner on Jun 4, 2026. It is now read-only.

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

This repository is no longer maintained and will not receive further updates.

All functionality from this project has been moved, adapted, and integrated into: https://github.com/g0ldyy/fh6-universal-radio

Please use fh6-universal-radio for future updates, fixes, and development.

FH6 Radio Bridge

FH6 Radio Bridge routes audio that is already playing on your Windows PC into the Forza Horizon 6 radio path.

It is source-agnostic: browser audio, a music player, Spotify, YouTube Music, local files, or any other app can be routed through a virtual audio device and captured by the bridge.

Features

  • Captures audio from a selected WASAPI input device or from default playback loopback.
  • Converts audio to 48 kHz stereo float32 PCM.
  • Sends PCM to the game-side hook through a named shared-memory ring buffer.
  • Installs a version.dll proxy hook into the FH6 Content folder.
  • Replaces the selected radio slot metadata with FH6 Radio Bridge / External Audio.
  • Live dashboard at http://localhost:8420/.
  • Dashboard controls:
    • output volume;
    • previous / play-pause / next / restart current;
    • race start action: None, Next track, Restart current;
    • Next song hook: quickly change station away and back within 1 second to skip the song;
    • loudness normalization;
    • 5-band EQ: 60 Hz, 250 Hz, 1 kHz, 4 kHz, 12 kHz, ±6 dB per band.
  • Optional hook-side race/station event monitor.
  • Installer and uninstaller generated in every manual release package.
  • Fails safe: if a game pattern/signature is not found, the hook logs a warning and stays inert instead of crashing the game.

How it works

Audio source / browser / player
        -> virtual audio cable or default loopback
        -> FH6RadioBridge.exe
        -> 48 kHz stereo float32 DSP chain
        -> shared memory ring buffer
        -> version.dll game hook
        -> FH6 radio stream / FMOD DSP replacement path

The bridge does not download, decrypt, or bypass DRM for any music service. It only captures audio already playing on the user's system.

Requirements

For using a packaged release:

  • Windows 10 or newer.
  • Forza Horizon 6 installed locally.
  • Optional but recommended: HiFiCableAsioBridge or another virtual audio cable for routing one app into the bridge.
  • Optional but recommended: AuRo - A Chrome Extension to pick an audio output device for HTML5 audio and video elements

For building from source:

  • .NET 8 SDK.
  • Visual Studio 2022 or Build Tools 2022 with the Desktop C++ workload.
  • Windows 10/11 SDK.
  • CMake.
  • PowerShell 5.1 or newer.

Build

From the repository root:

.\scripts\package_release.ps1

The generated release appears under:

artifacts\FH6RadioBridge-manual-<timestamp>\
artifacts\FH6RadioBridge-manual-<timestamp>.zip

Build parts separately:

.\scripts\build_bridge.ps1
.\scripts\build_hook.ps1

Clean local build outputs:

.\scripts\clean.ps1

Install packaged release

Extract FH6RadioBridge-manual-<timestamp>.zip and run:

Install.bat

The installer asks for the FH6 Content folder, for example:

Z:\XBOX\Forza Horizon 6\Content

The installer performs these actions:

  • checks that FH6 is not running;
  • verifies that the selected folder looks like the FH6 Content folder;
  • backs up existing files where applicable;
  • patches local RadioInfo_*.xml radio metadata;
  • copies GameFiles\version.dll to the game folder;
  • creates fh6-radio-bridge\install_manifest.json;
  • enables radio audio, game events, and the FMOD injector flag.

Command-line install examples:

.\Install.bat -GameDir "Z:\XBOX\Forza Horizon 6\Content"
.\Install.bat -GameDir "Z:\XBOX\Forza Horizon 6\Content" -Force

Use -Force only when you intentionally want to replace an existing version.dll; the installer will create a backup.

Run

Start the bridge:

BridgeRadio.bat

It will:

  1. list available capture devices;
  2. ask for the device index;
  3. start FH6RadioBridge.exe;
  4. open http://127.0.0.1:8420/ automatically.

Recommended setup with a virtual cable:

  1. Set your music app/browser output to CABLE Input or Hi-Fi Cable Input.
  2. In BridgeRadio.bat, choose the matching capture side: CABLE Output or Hi-Fi Cable Output.
  3. Keep the bridge running.
  4. Launch FH6.
  5. Select the replaced FH6/Streamer radio station slot in game.

Bridge can also be run manually:

.\Bridge\FH6RadioBridge.exe --list-devices
.\Bridge\FH6RadioBridge.exe --device-index 3
.\Bridge\FH6RadioBridge.exe --loopback-default

Dashboard

Open:

http://localhost:8420/

Useful local API endpoints:

GET  /api/state
GET  /api/metadata
GET  /api/config
PUT  /api/config
POST /api/control/previous
POST /api/control/playpause
POST /api/control/next
POST /api/control/restart
POST /api/hook/event

The DSP chain is applied producer-side before audio reaches the game:

capture -> resample 48 kHz stereo -> loudness normalization -> 5-band EQ -> output volume -> limiter -> shared memory

Loudness normalization is streaming RMS/AGC-style. It does not pre-scan whole tracks because the bridge captures already-playing audio instead of owning the source files.

Race start action and Next song hook

The hook can send race/station events to the bridge. The bridge decides whether to act based on dashboard settings.

  • Race start action:
    • None — do nothing;
    • Next track — skip when a race begins;
    • Restart current — try to restart current media when a race begins.
  • Next song hook:
    • quickly change the radio station away and back within 1 second to skip the current song.

If the current game build changes internal patterns/offsets, these automations remain inactive and the hook log explains why.

Uninstall packaged release

Close FH6 and run:

Uninstall.bat

Command-line example:

.\Uninstall.bat -GameDir "Z:\XBOX\Forza Horizon 6\Content"

The uninstaller disables flags, restores radio XML from backup, removes the installed proxy DLL, and restores a previous version.dll backup when one exists.

Logs and troubleshooting

Hook log:

<FH6 Content>\fh6-radio-bridge\logs\hook.log

Open log through helper script:

.\Scripts\show_hook_log.ps1 -GameDir "Z:\XBOX\Forza Horizon 6\Content"

Common checks:

  • If http://localhost:8420/ does not open, make sure BridgeRadio.bat is still running.
  • If the dashboard opens but there is no audio, verify that the selected capture device receives signal in Windows sound settings.
  • If using VB-CABLE/Hi-Fi Cable, route the source app to the cable input and select the cable output in the bridge.
  • If the hook logs pattern not found or unsupported Forza image size, the current game build is not recognized by that feature.
  • If shared memory falls back from Global\... to Local\..., run the bridge and game in the same privilege mode. Usually both should run normally, not as administrator.

Repository layout

bridge/src/FH6RadioBridge/   Bridge app, dashboard/API, capture, DSP, shared-memory writer
bridge/src/TestReceiver/     Standalone shared-memory receiver for testing
hook/src/                    version.dll proxy, shared-memory reader, FMOD/radio hook, game events
scripts/                     build, package, install, uninstall, diagnostics
docs/                        architecture, IPC, legal/safety, development notes

Safety and legal notes

  • This project is not affiliated with Microsoft, Playground Games, Turn 10, Forza Horizon, Spotify, YouTube, Yandex, or any other music service.
  • This project does not include game files or third-party mod binaries.
  • This project modifies local game files when installed; keep backups and use at your own risk.
  • Do not use modified game binaries/files in contexts where they may violate a game's terms or online play rules.

See also:

docs/SAFETY_AND_LEGAL.md
THIRD_PARTY_NOTICES.md

License

GPL-3.0 is recommended for public distribution of this repository. Add a LICENSE file before publishing.

This project was developed with reference to fh6-universal-radio. See THIRD_PARTY_NOTICES.md.

About

External audio bridge for Forza Horizon 6 radio with live dashboard, device capture, volume control, loudness normalization, 5-band EQ, and in-game radio hooks.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages