[LAD] Car engine sound emulation for future electic cars. ideas ?

Benno Senoner benno.senoner at googlemail.com
Sat Aug 2 00:00:01 UTC 2008


Hi all,
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)
http://en.wikipedia.org/wiki/Electric_car

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.

cheers,
Benno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxaudio.org/pipermail/linux-audio-dev/attachments/20080802/2f5ab9de/attachment.html>


More information about the Linux-audio-dev mailing list