Ben, Your going to want to perform an FFT (Fast Fourier Transform) and move from the time domain to the frequency domain.
And to be more specific I believe you are gonna want to perform a Discrete Fourier Transform. I know a lot of work has been done on this in C and perhaps you could find something and port it over to Actionscript. There could be a problem computing all of that in real time though. best of luck greg On Wed, Jun 24, 2009 at 9:19 PM, Juan Pablo Califano < califa010.flashcod...@gmail.com> wrote: > Hi > > 1) From the docs: > > > http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/media/Sound.html#extract()<http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/media/Sound.html#extract%28%29> > The audio data is always exposed as 44100 Hz Stereo. The sample type is a > 32-bit floating-point value, which can be converted to a Number using > ByteArray.readFloat(). > So, each sample is 32 bits, that is 4 bytes. If you read less than four > bytes, you're discarding part of the data; if you read more, you're mixing > samples. This could also happen if your reads are not 4 bytes aligned. > > 2) Not sure if I misunderstood what you meant, but the number of samples > extracted is calculated here: > > var extract:Number = Math.floor ((sound.length/1000)*44100); > > And is not a power of 2. It seems like the total samples, rounded down. > (seconds of audio data * samples per second). > > 3) I'm by no means an audio programming expert, but I think that should be > possible. Don't how performant it would be doing it in AS, in real time, > though. Neither I know algorithms for it, but look up audio frequency > analisys, you might find some pointers. By the way, I don't your imaging is > wrong. Digital audio data is a finite/discrete representation of a sound > wave. > > > Cheers > Juan Pablo Califano > > > 2009/6/24 ben gomez farrell <b...@yellow5labs.com> > > > Hey guys, > > I'm just digging into the Sound.extract feature in FP10. I've been using > > code found at http://www.bytearray.org/?p=329 to learn from, but have a > > few questions. I'm able to create a waveform and draw to the stage, but > > want to take it beyond that. > > > > Basically the code I have is this: > > > > var samples:ByteArray = new ByteArray(); > > var extract:Number = Math.floor > ((_sound.length/1000)*44100); > > _sound.extract(samples, extract); > > var step:int = samples.length/4096; > > do step-- while ( step % 4 ); > > > > samples.position = 0; > > for (var c:int = 0; c < 4096; c++) { > > left = samples.readFloat(); > > right = samples.readFloat(); > > samples.position = c*step; > > } > > > > My questions are: > > > > 1. I understand incrementing the byteArray read position by a step > > amount. What I don't understand is why the step amount needs to be a > > multiple of four? I get some very wacky results from my readFloat() if I > > don't do this. > > > > 2. Anybody know why the number of samples we're taking is a power of > > two? Is this important, maybe just for graphic performance? > > > > 3. Here's the big one - is it possible to isolate amplitude at certain > > frequencies - to get something like you'd get from computeSpectrum? I > guess > > I'm overly confused by the data I'm getting back from the byte array and > how > > to dig deep with it. The way I imagine this byteArray in my head is that > > each position in the byteArray, one by one, would be a composite > amplitude > > of all frequencies at a small point in time. I think I must be imagining > > this data wrong - and you'll probably cringe at my composite amplitude > > remark cause it'll probably make no sense. > > > > Thanks - and again, I really think I have some huge knowledge gap in how > > sound data is used and read. Can anyone help? > > ben > > _______________________________________________ > > Flashcoders mailing list > > Flashcoders@chattyfig.figleaf.com > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders