Grain Analysis - Mean Amplitude and Dominant Frequency
Hi - I am trying to analyze the mean amplitude and dominant frequencies of individual grains within a larger sample, then organize those grains in a list according to these attributes. I realize that this is a job better suited for non-real time analysis, such as MATLAB, but would like to be able to do it in Max as to record a sample and organize its grains in real time. I am struggling with an approach making use of [avg~], [pitch~] and [gate] but am not having very much luck. I was curious if anyone could give some suggestions or post a basic patch to nudge me in the right direction.
Thanks for your help!
I don't really have anything overly useful to say other than you might want to have a look at the IRCAM ftm library for storage and sorting. It's very fast and flexible. There is also gbr from IRCAM (might come with ftm, can't remember) which does some nifty stuff with audio...
ftm.ircam.fr
check the catart package, it does exactly this
pa
Do you know lisp programming? This would be easy to do in lisp:
Thanks for the replies :)
i should stress that i'm not very concerned about the list sorting, that's simple enough to do with coll and a few objects, or even with js. i'm much more interested in solutions for the grain amp and freq analysis. would lisp help for this, brad?
are the ftm objects useful for the grain analysis? Or just list sorting? on my computer, it seems the ftm objects can't be opened. im on mac os x, 10.6. It says "the following disk image cannot be recognized." would someone be able to post the externals (if they are useful for grain analysis) ?
on a sample (or event vector) level, lisp probably wouldn't be best. It's good at structuring lists, doing all kinds of data-manipulation, etc. If you're asking about the direct analysis of the incoming audio data stream, then you'll probably have to do some C-coding or find an external that can do this (maybe FTM? I don't know that package well... or maybe Eric Lyon's FFTease objects have something that could help).
for the frequency analysis, you could maybe use zsa.freqpeak~ from the zsa.descriptors (http://www.e--j.com/?page_id=83) package to get the highest n peaks from a signal. run it over your windowed data.
the zsa objects are incredible. precisely the kind of thing i was looking for. many thanks, tdaeik (and to mikhail and ej).
I'm trying to do something similar using zsa.freqpeak where I want to get the highest n peaks from a signal every a window time of 100 ms. For now I'm using a metro to output the result from zsa.freqpeak every 100ms but I wonder if there is a more robust approach.