Files
FluidSimCpp/verification/CUSTOM_EXHAUST_CHARACTER.md
max bf8621ad39 Load engines from TOML and improve scenario audio and carb tuning
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.
2026-10-24 03:24:35 +02:00

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.