Recorded motorcycle sound
The current engine intentionally aims for a larger-displacement character: lower operating RPM, recorded exhaust body, distinct gas changes and rev matching, with an intermittent top-end limiter. The user's preference for a deeper motorcycle over the first sportbike revision drove this direction. Subjective acceptance and playback in the running Unity build remain pending.
The former main engine combined continuous sine harmonics with bright speed-dependent noise. It has been replaced by recorded RPM layers. The quiet Honda CRF250 idle used in the old background layer is retained for the historical comparison but is no longer loaded by the current engine.
Recordings and attribution
| Source | Author and license | Use |
|---|---|---|
| Suzuki GSX1100E recording1 | delphidebrain, CC BY4.0 | Idle and lower exhaust body |
| Suzuki GSX1100E recording2 | delphidebrain, CC BY4.0 | Low/mid/high mechanical layers, shifts, rev matching and throttle lift |
| Kawasaki Ninja ZX6R Burnout | Hurry_Joe33, CC0 | Early, unclipped rev plateau as upper exhaust body; brief throttle transient |
| Honda Hornet600 onboard | martian, CC0 | Darker closed-throttle body |
These are excerpts of the ordinary public HQ MP3 previews linked by the source pages. The original WAV downloads require login and were not fetched. Source MP3s, source-page snapshots, exact download URLs, SHA-256 hashes, licenses and edits are recorded in RECORDED-AUDIO.json. The authors and manufacturers do not endorse the game. This is a composite fictional motorcycle voice, not a recording of one bike over its complete operating map.
All delivered excerpts are modified through selection, mono conversion, filtering, gain adjustment and either loop crossfades or short transient fades. Attribution and the modification notice accompany the packaged game in THIRD-PARTY-NOTICES.md. The original source checkout retains the recordings and scripts in Assets/Rampage/Resources/Audio/Sources~, which Unity excludes from runtime assets. A third GSX recording was inspected but is not used by the current bank.
Source bands and processing
For an even-firing four-stroke inline four, there are two firing pulses per crank revolution. A candidate exhaust pulse frequency multiplied by30 gives an approximate RPM. Spectral peaks and their harmonics support the following estimates; mechanical resonances, missing fundamentals, recording position and RPM drift prevent tachometer-level certainty.
| Delivered loop | Selected source interval | Estimated RPM anchor | Evidence |
|---|---|---|---|
| Idle | GSX1,37.10–39.90s | 1,580 | Fundamental around53–54Hz, with roughly109Hz and163–167Hz harmonics |
| Low | GSX2,16.25–18.85s | 2,400 | About80.75,162.84 and242.25Hz |
| Mid | GSX2,23.15–24.90s | 4,160 | About138.62 and275.89Hz |
| High mechanical | GSX2,25.10–27.00s | 4,500 | About150.73 and301.46Hz |
| Overrun | Hornet,94.15–96.15s | 4,180 | About138.62 and278.59Hz; helmet recording is strongly bass-weighted |
| Upper body | Ninja,3.20–4.75s | 5,390 | Roughly178–183Hz with350–361Hz harmonics |
| Lower body | GSX1,28.20–31.50s | 1,900 | Approximately62–66Hz and multiples |
The broad GSX mechanical layers retain their original upper detail. In the earlier preview02, the dark Ninja plateau became the entire high layer, removing most upper harmonic energy. The current mix uses it as an additional body layer and keeps GSX mechanical detail. Its purpose is a deeper voice with transient texture, rather than simply low-passing the whole engine.
The processor decodes mono44.1kHz, removes DC, applies zero-phase third-order filters, finds a closely matching tail within45ms of the chosen endpoint, and makes a correlation-compensated equal-power splice. The loop boundary is rotated to adjacent source samples. All endpoint adjustments, filters and gain factors are recorded in the manifest. Transients receive25ms edge fades. Output is PCM16 with deterministic triangular dither. The12 runtime WAVs total 2,508,888bytes. Unity metadata and the importer preserve PCM, sample rate, decompression on load and preloading.
The air bed is original deterministic pink-spectrum noise, restricted chiefly to155–1050Hz and shaped by a periodic12-second gust envelope. It contains no intake tone or bright continuous white-noise layer. Its gain starts above45km/h, rises gradually and remains low.
Runtime behavior
RecordedEngineLayer retains the existing public Bike, Profile, Racing, Initialize and IsAvailable contract. Its default MixLevel is now0.60; AudibleRpm and AudibleGear expose its audio state. RaceAudio supplies only the separate air bed, controlled by effects volume. Engine volume controls recorded player and rival motors; AudioListener continues to apply master volume.
BikeController now owns one authoritative physical transmission; the independent cosmetic audio gearbox has been removed. Gear, RPM, load, shift cuts, rev matching and the limiter are shared by propulsion, sound and HUD. Automatic/manual behavior, short-press capture and the exact contracts are documented in TRANSMISSION.md. Its idle/redline remain1,120/6,200RPM, while actual gear selection now changes drive response.
Upshifts briefly interrupt combustion gain and play a real release excerpt. Downshifts raise a0.28-second rev-match envelope and play a different rising rev excerpt. Gas opening and lift use separate recordings and armed low/high trigger thresholds, so a progressive Xbox trigger movement produces a single event. Holding the trigger does not repeat it. Physical brake assistance reduces audio load through AppliedBrake01.
The current transmission's sixth-gear redline reference is215km/h at stock tuning, and every manually held gear can reach its own limiter. A9Hz soft cut affects both drive and recorded gain. Releasing throttle immediately clears the cut. Preview04 used the earlier cosmetic205km/h reference; it is retained as historical listening evidence and is not a test of current physical gearing.
Player sources crossfade adjacent mechanical bands, blend lower/upper body and overrun, and use one finite transient source. Rivals each own one continuous spatial source. A global selection pass stops outgoing voices before admitting at most four nearest eligible rivals within55m; exact distance ordering and stable-ID ties make the cap independent of Update order. Culled rivals keep their physical transmission state because it belongs to the bike, independently of audio selection.
Pause stops engine/air playback and freezes the physical transmission. Results and menus fade player loops and stop rivals. ResetVersion changes clear audio event cursors; only BikeController resets the gearbox. Sequence-numbered physical events prevent missed or repeated shifts across render/FixedUpdate gaps. Shared resource clips are cached and never destroyed by individual riders. The engine components have no per-sample managed synthesis callback.
Checks and listening files
Current physical transmission verification has 48/48 managed checks, separate from this bank's 47/47 digital asset/preview checks. Preview04 additionally retains 31/31 historical cosmetic-state checks against its archived source. Those historical checks are not evidence for the new physical transmission. All reports include source hashes; no Unity, audio device or GPU workload is launched by these checks.
Delivery checks confirm source/license hashes, all12 output hashes, mono44.1k PCM, no clipped samples, import settings and preserved preview bytes. The seven edited recording loops have boundary steps below their normal adjacent-sample95th percentile. The generated periodic air's boundary step is0.020569:1.065times its95th percentile and below its99th percentile. That is a natural slope in periodic band-limited noise, not evidence of a discontinuity. This check does not claim an audible click is absent.
AudioPreviews/README.md describes the four saved listening files. 04 uses the exact archived C# state that was production code when it was generated. It reaches the limiter at11.5–14.0s, lifts at14s, rev-matches at17.57/18.23/18.93s and reapplies gas at19s. Its PCM peak is0.236755, RMS0.047319, with zero clipped samples. It is an offline historical reconstruction; current physical transmission, Unity resampling, loop-start phase, scheduling and the complete in-game mix are not measured by this file. Tires, rivals and environment are excluded.
The agent cannot hear audio input. Numerical checks and user-listenable files do not establish perceptual quality. The current main Unity6.3 build still needs integrated listening after the user's driver-update pause; no AAA quality acceptance is claimed.
Reproduce
From the repository root, with system Python3, NumPy/SciPy, ffmpeg and the existing Unity6.3 installation:
& 'Assets/Rampage/Resources/Audio/Sources~/run_audio_verification.ps1'
$env:OPENBLAS_NUM_THREADS='1'
$env:OMP_NUM_THREADS='1'
python 'Assets/Rampage/Resources/Audio/Sources~/build_sportbike_audio.py'
python 'Assets/Rampage/Resources/Audio/Sources~/verify_sportbike_audio.py'
The first command compiles current Runtime sources, reproduces preview04's archived state and validates existing assets. Current drivetrain checks use Assets/Rampage/Tests~/run_transmission_verification.ps1. The audio renderer refuses to replace published04 with differing bytes. Archived v2/v3 scripts and manifests document earlier previews; run those processors only in a separate copy, since their original output paths predate the preservation guard.