Sound: two-layer engine architecture + rotary pipeline for the RX-7
CI / quality (push) Successful in 43s

- SoundController rebuilt around idle+rev loop crossfading (real racing
  game approach): idle layer barely pitch-shifts (keeps engine character),
  rev layer carries the speed range; crossfade window 5%-45% of top speed
- Per-car CAR_SOUNDS table so the RX-7 gets real 13B rotary loops while
  other cars keep the generic set
- docs/ROTARY_SOUND.md: full record->loop->upload pipeline for capturing
  the owner's REAL RX-7 (extract audio from video, zero-crossing cut +
  equal-power crossfade seam, normalize, ogg, Studio upload, wire IDs)
- Toolbox rotary rips evaluated and rejected: unauditionabe off-platform,
  short/unloopable, murky rights; the real car beats any rip
This commit is contained in:
2026-07-22 01:57:16 -04:00
parent 2ae3bf8bdb
commit b2cc917942
3 changed files with 145 additions and 50 deletions
+7 -5
View File
@@ -25,11 +25,13 @@ to owner + son. Cars persist between sessions. CI green on a self-hosted runner.
- [x] **Chase camera**: scriptable follow cam while seated — damped chase with
look-ahead, flat horizon (ignores car pitch/roll), speed-based FOV kick.
`src/client/CameraController.luau`. Tune constants after playtest.
- [x] Sound: engine loop (pitch tracks speed, volume swells with throttle) +
tyre squeal on lateral slip / hard braking. `src/client/SoundController.luau`.
Asset IDs are placeholders from safe sources (Roblox Resources engine loop,
ProSoundEffects squeal) — audition in Studio and swap in the SOUNDS table
if they don't fit. Boost sound deferred until boost exists.
- [x] Sound: two-layer engine (idle + rev loops crossfaded by speed — keeps
engine character instead of chipmunking one loop) + tyre squeal on lateral
slip / hard braking. `src/client/SoundController.luau` with per-car sound
sets (`CAR_SOUNDS`).
- [ ] **RX-7 rotary audio**: record the REAL car's 13B (owner has it + video),
process into idle/rev loops on the workstation, upload, fill `CAR_SOUNDS`.
Full pipeline: `docs/ROTARY_SOUND.md`. Generic loop is the stand-in.
**Exit test:** the RX-7 is genuinely fun to just drive around. Ship nothing else
until this is true.