Migrate 32 engine definitions into validated startup-loaded TOML files and separate configuration and snapshots from scenario assembly. Add camera-based stereo propagation from shared pipe geometry, preserve exhaust character, tune carburetor mixtures and idle, use ignition cuts for carb engines, and support returning to the scenario menu. Validation: full Windows build and all 14 CTest checks passed.
2.1 KiB
Custom exhaust pulse character
Compared the previous src/scenario.cpp from HEAD with the updated implementation
using the same capture tool, default Rusanov solver, dry scene, 55% pedal,
3,000 RPM, 0.6 s warmup and 0.5 s recording. No gain normalization or added
noise/distortion was applied. Captures are in out/audio-character/.
Energy fractions below use both channels, discard the first 20% of the recording, remove DC and apply a Hann window. The denominator is spectral energy from 20 Hz to 6 kHz. Upper harmonics are above 1.5 times the aggregate firing frequency (RPM / 120 * cylinders); low orders are below 0.8 times that frequency. These are engineering checks on pulse character, not a perceptual realism score.
| Example | Upper harmonics, before ? after | Low orders, before ? after |
|---|---|---|
| Inline three | 78.6% ? 85.6% | <0.1% ? <0.1% |
| F20 inline four | 53.2% ? 87.0% | <0.1% ? 1.1% |
| Inline five | 51.6% ? 92.5% | <0.1% ? 0.3% |
| RB26 inline six | 21.4% ? 88.4% | <0.1% ? <0.1% |
| Long-stroke inline six | 29.0% ? 81.3% | <0.1% ? <0.1% |
| Big-block V8 | 40.3% ? 59.6% | <0.1% ? 23.2% |
| V10 | 84.6% ? 31.0% | <0.1% ? 14.4% |
| V12 | 52.2% ? 55.1% | 0.1% ? 19.7% |
The V10's energy shifts toward lower bank orders rather than simply becoming brighter. All eight updated examples also completed fixed-RPM captures at 1,000 and 6,000 RPM using the same warmup/duration/pedal. All 24 updated captures produced finite audio with zero clipping samples. Maximum rendered absolute amplitude across these captures was 0.524 full scale.
The catalog regression runs each example through one second of throttle and one second of pedal release. It checks finite audio, sustained positive RPM, zero pipe positivity repairs, big-block power, and the new topology flags. The desktop UI and physics regression tests cover the existing controls and base simulation.
For listening comparisons, match playback loudness: removing large collector volumes increases level as well as changing spectrum. Geometry and calibration remain estimates; these measurements do not establish a match to recorded engines.