Brent Brown email (remove spam text)
> I need to know how the sound information is stored in a WAV file and how I
> can programmatically raise the volume of the sound in a WAV file.
> Any hint welcome
> Thank you
> Duilio Foschi
Not so [OT] because you can do this on a PIC. Here's some ideas.
Assuming a simple mono 8 bit per sample recording, there is a
about 20 bytes or so of header information at the start of the file
and then the audio samples are stored as 8 bit values. The data is
"biased" with a 7Fh DC offset so that silence is recorded as 7Fh.
Kind of like a single rail audio amplifier would be biased at half the
supply voltage. For simple play back from a micro with a PWM
output just send each byte to the PWM register sequentially at the
original sample rate. Put an RC filter on the output and
capacitively couple it to an audio amp. A little rough by hey - it
works! Even play back the header bytes, they go by so fast you
hardly hear a scratch.
Back to the subject, to digitally amplify a .wav file you would need
to do something like this for each 8 bit sample:
- Remove the offset by subtracting 7Fh for data above 7Fh or
subtracting from 7Fh for data below 7Fh
- Multiply by your amplification factor
- Put the offset back in by adding 7Fh or subtracting from 7Fh as
- Store it or play it
You are limited to what you can do in an 8 bit file before clipping.
Using 16 bit intermediate maths helps by letting you do stuff like
this: for 10% increase in volume, multiply by 11 then divide by 10.
Electronic Design Solutions
16 English Street
Hamilton, New Zealand
Ph/fax: +64 7 849 0069
Mobile: 025 334 069
In reply to: <199910160848.KAA08636@shuttle.etruria.net>
See also: www.piclist.com/techref/index.htm?key=wav+files
You must be a member of the
piclist mailing list
(not only a www.piclist.com member) to post to the