You load the sound data into memory. Then you loop through the data
finding the individual values in it that you care about. (you'll
probably end up skipping over some values as you scan the data for
speed's sake). Then, it depends on what the format of the audio data
is as to how you handle its drawing. For example, if its 8 bit data,
then you may have samples with an amplitude of 0-256 (AIFF). Some 8
bit formats have values of -128 to 128 (WAVE). 16 bit audio will have
values much larger values for the positive extreme.(0-65536, to be
exact).
Next, you create a picture object and match up the dimensions of that
picture to the amplitude extremes of the data. So, say you have sound
data that with amplitudes from -128 to 128. Align this with your
midpoint on the picture. If the Canvas is 256 pixels tall, then 128
is the midpoint vertically. This corresponds to the zero amp value in
the audio data. Because both the picture and the sound data in this
example has a "height" of 256 (ok, I'm fudging by one, but you get
the idea), you can simply add 128 to the audio amplitude and use that
as your y portion of a pixel coordinate. The x axis corresponds to time.
If the amp range is larger, then you have to squish it so it fits in
the dimensions of your picture. So, if you have a 16 bit sample with
an amplitude of 12345, and you know the midpoint is 32,768 (half of
65536), then you know that 12345 falls below the midline. You also
know that it falls 18.84% of the way up the y-axis. (12345/65536).
So, multiple the height of the picture by 0.1884 to find the y-
coordinate. The x position will be based on which sample you are
reading in (ie time). Again, you may need to skip over a certain
number of samples each iteration to make the speed reasonable.
(44,100 samples per second is a lot of samples to loop over). For
most waveforms, you won't notice any visual difference when you skip
samples, as long as the step size doesn't get too large.
hth,
Erick
On Aug 11, 2006, at 2:54 PM, Ayden wrote:
Thanks for the reply Greg. I have read the information referred to,
but I am
more interrested in the graphical diplay of the waveform data...
Any ideas
on drawing it on a canvas control?
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>