Car engine sound emulation for future electic cars. ideas ?

Everything and anything, but nothing about the LinuxSampler project.
Post Reply
Posts: 80
Joined: Wed Jan 23, 2008 8:30 pm

Car engine sound emulation for future electic cars. ideas ?

Post by sbenno » Sat Aug 02, 2008 1:04 am

I posted this on the LAD list but it might be interesting for non LAD readers too, since LS is a sampler and perhaps with some
additions it could do the things described below:

since the price of fossil fuels is quickly going up to unsustainable levels the mass production of electric cars
is only a couple years away. (there are already a few nice around but not yet high volume production and cost an arm and a leg)

One peculiarity of electric cars is that they emit almost no noise and sometimes engine noise could come handy.
For example blind people or even distracted pedestrians about to cross a street cannot hear electric cars coming which
can lead to accidents, injuries and even loss of life.
There are already electric car companies offering artificial engine sound in their cars.

A linux based embedded system would probably be a nice candidate to provide such functionality. (ARM cpu, some RAM and audio DAC,
or even a nano-itx x86 board which could do other additional things at the same time, in-car computer etc)
A nice system would be one which allows pluggable sounds, for example ferrari or porsche sound :)
My question is what's in your opinion the best method to simulate realistic car sounds without making the system too complex or too costly.
I was thinking whether multisampling the engine sound at various RPMs (rotations per minute, frequency proportional to RPM) could be a solution
or if some kind of synthesis would be needed.
The sound generator should in theory take only one input variable, the motor's RPM (which can expressed as 0..100%) and then generate
a sound with a frequency proportional to the RPM.

A few ideas that come to mind which could provide varying degrees of realism (I don't know because I did not try).

1) sampling an engine sound at middle RPM and then pitchshifting it with formant correction up and down.
easy to do but probably does not sound so good at extreme pitchshifting ranges.

2) sampling an engine sound at various RPMs, the more the better let's say more times per octave and then using some sort
of sample pitching (standard interpolation or pitchshifting like rubberband) and then crossfade between samples.
But if the samples to be crossfaded need probably to be phase-aligned otherwise it could lead to chorus style artifacts etc.

3) sampling a full, very slow RPM sweep both upwards (min to max) and downwards (max to min), lets say a couple of min per direction.
Then the sound generator figures figures out the RPM direction (by comparing two subsequent values or some shortterm mean value) and then
plays the sound using the right position in the wave. So for example if you floor the accelerator you have to play the upwards audio wave
but you have to skip lots of parts so you need some trick to make it sound smoothly (time-compression comes to mind but I'm not sure if it is ideal)
Not sure how hard it would be to sample those sound sweeps. You need to accelerate very slowly which can be tricky. Perhaps you need some
servo motor which can precisely move either the accelerator pedal or is attached directly to the accelerator cable. Not very userfiendly.

4) sample the engine sound at various RPM. feed into a DSP algorithm which analyzes the timbre and then builds a model for a synthesizer.

any other ways I am missing ?

What's the best trade off between realism and complexity in your opinion ?

Thanks for your comments.


User avatar
Posts: 632
Joined: Wed Jan 23, 2008 11:25 pm
Location: Linköping / Tranås, Sweden

Re: Car engine sound emulation for future electic cars. ideas ?

Post by dahnielson » Thu Aug 07, 2008 9:46 am

Anders Dahnielson

Ardour2, Qtractor, Linuxsampler, M-AUDIO Delta 1010, Axiom 61, Korg D12, AKAI S2000, E-MU Proteus 2k, Roland R-5, Roland HP 1300e, Zoom RFX-1000, 4GB RAM x86_64 Intel Pentium Dual 1.80GHz Gentoo Linux

Post Reply