Glad you like it! -Gerry
On 2011-11-24 , at 00:05 , allandt bik-elliott wrote: > holy crap - i've been playing with this so far and it's amazing - thanks so > much for your help > > a > > On 23 November 2011 14:44, allandt bik-elliott <alla...@gmail.com> wrote: > >> fantastic - thanks very much >> >> a >> >> >> On 23 November 2011 14:33, Gerry Beauregard <gerry.beaureg...@sonoport.com >>> wrote: >> >>> My real-time spectrum analyzer code would be a good place to start. >>> http://www.audiostretch.com/spectrum/ >>> >>> It grabs audio from the mic, applies a Hanning analysis window, does an >>> FFT, converts to a log-magnitude (dB scale) spectrum, and plots the >>> spectrum at regular time intervals. It doesn't go quite so far as >>> extracting the pitch/note, but that's mostly a matter of finding the first >>> big peak in the spectrum, and doing a bit of interpolation around the peak >>> to get sub-FFT-bin accuracy. >>> >>> Code can be found here: >>> >>> http://gerrybeauregard.wordpress.com/2010/08/06/real-time-spectrum-analysis/ >>> >>> It relies on my FFT which can be found here: >>> http://gerrybeauregard.wordpress.com/2010/08/03/an-even-faster-as3-fft/ >>> >>> -Gerry >>> >>> >>> >>> On 2011-11-23 , at 22:11 , allandt bik-elliott wrote: >>> >>>> hey guys >>>> >>>> does anyone have any references / links to help me understand how to >>>> extract the note / tone / pitch from a sound captured from a mic >>>> >>>> i have a view to deal with the mic and i am capturing the output >>> correctly >>>> but i need to understand how to check it for specific pitch ranges >>>> >>>> here is my class so far - i'd like the controller to be able to apply >>> some >>>> logic to decide how the app should respond from there (using >>>> controller.updateAudioSample(audioChunk);) >>>> >>>> [CODE] >>>> package uk.co.publicis.toothbrushdetectorapp.views >>>> { >>>> // imports >>>> ... >>>> public class MicView extends View implements IView >>>> { >>>> private var _mic : Microphone; >>>> public function MicView(model:Model, controller:Controller=null) >>>> { >>>> super(model, controller); >>>> init(); >>>> } >>>> private function init():void >>>> { >>>> if (Microphone.isSupported) >>>> { >>>> _mic = Microphone.getMicrophone(); >>>> _mic.enableVAD = true; >>>> _mic.encodeQuality = 0; >>>> _mic.rate = 8; >>>> } >>>> } >>>> /* INTERFACE uk.co.publicis.toothbrushdetectorapp.views.IView */ >>>> public function destroy():Boolean >>>> { >>>> disable(); >>>> _mic = null; >>>> return true; >>>> } >>>> public function enable():Boolean >>>> { >>>> if (Microphone.isSupported) >>>> { >>>> _mic.addEventListener(ActivityEvent.ACTIVITY, handleActivity); >>>> // odd behaviour - if this is not added here, no ActivityEvent.ACTIVITY >>>> will be captured either. >>>> // makes it impossible to start / stop capturing the SAMPLE_DATA on >>>> ACTIVITY events >>>> _mic.addEventListener(SampleDataEvent.SAMPLE_DATA, handleSampleData); >>>> } >>>> return true; >>>> } >>>> public function disable():Boolean >>>> { >>>> if (Microphone.isSupported) >>>> { >>>> _mic.removeEventListener(ActivityEvent.ACTIVITY, handleActivity); >>>> _mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, handleSampleData); >>>> } >>>> return true; >>>> } >>>> private function handleActivity(e:ActivityEvent):void >>>> { >>>> if (e.activating) >>>> { >>>> controller.activate(); >>>> } >>>> else >>>> { >>>> controller.deactivate(); >>>> } >>>> } >>>> private function handleSampleData(e:SampleDataEvent):void >>>> { >>>> var audioChunk:ByteArray = e.data as ByteArray; >>>> controller.updateAudioSample(audioChunk); >>>> } >>>> public function get model():TBDModel >>>> { >>>> return _model as TBDModel; >>>> } >>>> public function get controller():TBDController >>>> { >>>> return _controller as TBDController; >>>> } >>>> } >>>> } >>>> [/CODE] >>>> >>>> thanks in advance >>>> a >>>> _______________________________________________ >>>> 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 _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders