15 KiB
Sound realism improvement plan
Goal
Make engine sound emerge from the simulated engine and its surroundings. The 1D fluid model should provide the coherent pressure and flow behavior; separate acoustic source and propagation models should represent phenomena the 1D model cannot resolve. The real-time path should remain affordable, deterministic when requested, and diagnosable by source.
Current sound path and limitations
The four-stroke and two-stroke scenarios currently pass intake and exhaust
open-end volume flow to OutdoorAudio. It derives a compact monopole pressure
signal from the time derivative of that flow, applies distance and ear delays,
simple image-source reflections, and an approximate late reverb. The engine's
3D scene supplies source/listener positions, but visible geometry does not yet
control detailed acoustic propagation.
This captures coherent engine pulses, but has no direct model for turbulent noise at valves, throttle plates, sharp area changes, bends, collectors, or pipe exits. A nonzero flow or a large opening alone is not evidence that an audible turbulent source should be active. The 1D pipe state is cross-section averaged; it cannot resolve vortices, transverse velocity, or separated shear layers. The first-order pipe update also adds numerical damping, which can soften pulses before they reach the acoustic renderer.
1. Separate acoustic sources
Represent and capture each major sound contribution independently before mixing them:
- Coherent intake and exhaust pulses: derive from simulated pressure and volume-flow waves at ports and mouths.
- Intake aerodynamic noise: generate at the throttle, valves, filter, bends, contractions, and other restrictions when their local operating conditions and geometry support turbulent flow or separation.
- Exhaust aerodynamic noise: generate at exhaust valves, collectors, abrupt expansions/contractions, and outlets where jets or separated flow are expected.
- Combustion events: retain cycle timing and add afterfire or misfire sounds only when the combustion/fuel model predicts those events.
- Mechanical sources: add valve train, injector, gear, belt, and rotating imbalance sources as their physical models become available.
Each source should have an independent output/capture channel and enable control. This makes level and spectral calibration possible without masking errors by changing unrelated sources.
Flow-noise source model
Use local flow and feature data to estimate source strength, rather than mapping area or mass flow directly to noise. Useful inputs include:
- mass or volume flow, density, local velocity, and flow direction;
- upstream/downstream pressure and pressure drop;
- effective opening area and area ratio;
- hydraulic diameter, edge radius/sharpness, bend angle, and expansion ratio;
- gas temperature and viscosity, for Reynolds-number estimates;
- opening motion and rate of change for valves and throttle plates.
Use these inputs to estimate whether the feature creates a jet, separation, or vortex shedding, and how strongly it is excited. Reynolds number is a useful regime indicator, not an audible-noise switch. Mean flow alone should not force a noise source to be audible. A smooth, well-matched passage and an abrupt, partly closed restriction should produce different results at comparable flow.
For an initial real-time model, use a seeded, band-limited stochastic source with a smooth operating-point envelope and a short stateful correlation time. Shape its spectrum and level from local flow power/jet speed, pressure drop, feature geometry, and a calibrated source model. Avoid unfiltered white noise, hard on/off thresholds, and arbitrary random pops. Keep stochastic source generation out of the conserved pipe state in the first implementation; this avoids changing mass, momentum, or energy merely to create audio.
Treat unsteady separated flow as a modeled source, not a directly measured quantity in the current 1D cells. Proxies such as rapid changes in flow or pressure, reversals, and valve motion may modulate the source, but they do not resolve turbulent fluctuations. For higher-fidelity source data, use transient 3D CFD/LES or measurements at selected features and reduce those results to a real-time source model.
2. Improve pipe and component acoustic coupling
Diagnose wave loss before changing the model
Build small repeatable interface cases and record pressure on both sides of an interface:
- Send a pressure pulse through an equal-area straight connection.
- Measure reflection and transmission at T/Y junctions.
- Connect a pipe to a known volume and vary the volume and opening geometry.
- Repeat at several cell sizes, CFL/time-step settings, and flux schemes.
- Track incident, reflected, and transmitted wave energy, mass/energy
balance,
limited_fluxes, and positivity repairs.
If pulse loss decreases with mesh refinement, spatial numerical diffusion is a major contributor. If loss is concentrated at an interface and does not converge with refinement, improve the boundary/junction model. Compare with analytic acoustic impedance/scattering results where applicable and with measured junction data for realistic geometries.
Zero-volume pipe junctions
The current ideal N-way junction uses a zero-storage Rusanov star state. Improve this with a characteristic junction solve that enforces mass and energy conservation while accounting for each branch's area, orientation, flow direction, and pressure-wave impedance. Add calibrated geometry-dependent losses where the junction is not ideal. Validate frequency-dependent reflection and transmission, not just steady flow or conservation.
Pipe-to-volume transitions
The current pipe-to-component connection uses an orifice/nozzle boundary and a shared component pressure/state. Represent the actual entry geometry where it matters: opening area, contraction/expansion, short profiled transitions, and calibrated discharge/loss coefficients. A shared volume pressure is appropriate for a well-mixed compact reservoir, but may be too simple for a collector or plenum with strong spatial pressure differences. Use resolved pipe sections or a richer multi-port model where those differences materially affect pulse transfer.
Pipe wave resolution
Compare the current first-order Rusanov update with higher-order limited finite-volume schemes that preserve shocks without excessive damping. Measure waveform, phase, and spectrum convergence with mesh and timestep refinement. Retain robust positivity handling and conservation checks. Do not select a scheme on shock-tube error alone; validate acoustic pulse propagation and engine-relevant frequencies as well.
3. Add acoustic networks between flow ports and listener
Separate the simulated fluid flow network from the acoustic radiation network. For each source, represent how its sound travels through connected ducts, plenums, filters, resonators, and mufflers before it radiates. Options include:
- Transfer matrices / frequency-domain network models: efficient for linear acoustic behavior and useful for calibrating duct and chamber resonances.
- Digital waveguides / delay-line networks: suitable for real-time, time-domain wave travel, reflections, and frequency-dependent losses.
- Reduced-order component models: compact state-space filters derived from measured or higher-detail simulations for complex elements.
Model acoustic reflection, transmission, resonance, and attenuation at junctions and openings. Include frequency-dependent losses from wall friction, viscothermal effects, and porous/absorptive parts where data supports them. Use separate paths for intake and exhaust so changes to one system do not unintentionally alter the other.
4. Use the 3D environment for propagation and radiation
The engine's 3D placement can improve more than stereo panning, provided the scene contains usable acoustic geometry and materials. Give each source a position, orientation, size, and frequency-dependent directivity. Relevant sources include intake mouth, individual or grouped exhaust outlets, engine surfaces, valve train, and drivetrain.
Use scene geometry for:
- Directivity: tailpipe and intake radiation vary with direction and frequency; source orientation should affect the listener signal.
- Occlusion and diffraction: engine parts, chassis, bodywork, and nearby obstacles can block or bend sound. A simple visibility test is useful only for the frequencies where geometric acoustics applies.
- Early reflections: compute paths from actual ground, walls, vehicle body, and nearby surfaces, with material-dependent reflection and absorption.
- Late reverberation: derive or tune the diffuse tail from the environment rather than relying only on fixed scene presets.
- Listener motion: update source/listener distance, direction, delay, and Doppler shift consistently; smooth changes without breaking phase/history.
Use a hybrid propagation model. Ray tracing is relatively efficient for high-frequency reflections and occlusion. Low frequencies require wave or modal methods because they diffract and form strong cavity/vehicle resonances. A boundary-element, finite-element, or finite-difference time-domain (FDTD) solve can be run offline for representative geometry, then reduced to filters or modal data for real-time playback. The visible engine mesh alone is not enough: acoustic propagation also needs appropriate geometry detail and surface impedance/absorption data.
5. Calibration and validation
Record real intake and exhaust audio at fixed engine speed, load, throttle, and microphone position. Keep recordings unnormalized and disable automatic gain for comparisons. Add transient throttle sweeps and lift-off cases after the steady points.
Compare:
- engine-order peak frequencies, amplitudes, and phase/timing;
- broadband noise level and spectral shape;
- intake/exhaust level balance;
- transient envelope and throttle response;
- changes with listener position and direction;
- reflection/decay behavior in each environment.
Use separate source captures and bypassable acoustic stages to identify where an error enters. Calibrate source strength first, then duct/network filtering, then 3D radiation and environment. Avoid compensating for a weak physical source by boosting reverb or global gain.
Implementation status and scope
-
Every scenario TOML now supplies
[simulation] cells_per_meter. The desktop exposes a per-scenario resolution stepper with background mesh rebuild and engine restart, retaining each selection during the app session. The desktop calibration/geometry editor has been removed. Uniform and profiled pipe resolution is controlled by the shared density, preserving geometry/volume. -
Source-separated captures are implemented for intake, both exhaust emitters, and valve contact, with a separate shared diffuse-tail capture, per-source metrics, and capture-tool solo controls. Desktop UI controls remain future work.
-
Rusanov, HLLE, and HLLC are already selectable for comparison. The V8 uses finite-volume port-coupled fittings; zero-storage junctions remain a comparison path.
-
3D CFD/LES work is out of scope. Use the 1D model, reduced acoustic source models, and measurements for this improvement effort.
-
Pulse benchmarks are implemented: 408 straight/split, zero-storage junction, and finite-volume fitting cases across meshes, timesteps, and flux solvers. See
docs/ACOUSTIC_BENCHMARK.mdfor methodology, limitations, and findings. -
Findings: straight-pipe numerical attenuation converges with refinement; zero-storage junction scattering has additional mesh-independent error; small finite-volume fittings can require tighter component timesteps.
-
A production-selectable
musclpipe solver now compares limited second-order MUSCL-Hancock/HLLC against the original solvers via F3 or--solver muscl. Automatic desktop gain defaults off. Pulse attenuation improves, with original conservation/robustness checks retained. The sweep now covers 408 cases. -
A nonlinear characteristic zero-storage exhaust junction is available with
--junctions characteristic, alongside volume and legacy comparison modes. It supports unequal areas, branch orientation, automatic flow reversal, enthalpy/species mixing, and configurable direction-dependent turning losses. Equal/unequal-area acoustic scattering and 500/1000 Hz phase/gain checks are included; seedocs/JUNCTION_SOLVER.mdfor scope and limitations. -
Next: listen at fixed operating points, check spectra and performance across engine families, and investigate component coupling timestep stability before changing acoustic source strength. The new mode remains opt-in for evaluation.
Suggested implementation order
- Add source-separated captures and per-source diagnostics.
- Build pulse reflection/transmission tests for straight connections, junctions, and pipe-volume boundaries.
- Determine whether junction loss or first-order pipe diffusion dominates; improve the responsible model and validate convergence.
- Add a flow/geometry-driven intake restriction-noise source with deterministic seeded, band-limited output and a separate capture channel.
- Add corresponding exhaust valve/collector/outlet sources; model afterfire only when supported by combustion state.
- Add an acoustic network (waveguide or reduced-order transfer model) for intake and exhaust ducts and volumes.
- Use 3D geometry for source directivity, occlusion, early reflections, and listener motion; add offline wave-based/acoustic calculations for important low-frequency resonances as needed.
- Calibrate against controlled microphone recordings and retain objective regression measurements alongside listening tests.
References and further reading
- Li et al., LES-FEM coupled analysis and experimental research on aerodynamic noise of the vehicle intake system (2017): https://doi.org/10.1016/j.apacoust.2016.09.009
- Ih et al., Prediction of intake noise of an automotive engine in run-up condition (2009): https://doi.org/10.1016/j.apacoust.2008.03.007
- Morel et al., Modeling of Engine Exhaust Acoustics (1999): https://doi.org/10.4271/1999-01-1665
- Parrondo et al., Noise transmission through duct divisions in air circuits (2006), experimental scattering coefficients for duct junctions: https://www.sciencedirect.com/science/article/abs/pii/S0022460X06002239
- Lang and Mindt, Entropy-Preserving Coupling Conditions for One-dimensional Euler Systems at Junctions (2017): https://arxiv.org/abs/1704.04035
- Hu, Morfey and Sandham, Sound radiation in turbulent channel flows (2003): https://doi.org/10.1017/S002211200200277X