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.
39 lines
2.1 KiB
Markdown
39 lines
2.1 KiB
Markdown
# 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.
|