FFT-polyphonic pitch tracking and 256 list-limits

Christopher's icon

Dear Maxers,

I'm trying (perhaps in vein) to track pitches, or rather contours on a grand piano. I'm hoping to get an estimate, within a minor third or so of the highest pitch in any given chord or arpeggio independent of dynamics. I've tried fiddle~, pitch~, and sigmund~ without much success. I've also used the jit.poke~-spectrogram.pat. To get any kind of accuracy in the bass, where 28Hz covers the an entire lower, octave I'm using an FFT size of 4096 samples. However I can't really get at all the data generated. [jit.spill] seems to be limited to a list-length of 256. I tried using two of them with an offset and then combining them, but [zl join] also seems to have a 256 length limit, and [capture] doesn't have any outlets (I wish the spectrograph object let you at the FFT data it uses). So my questions (so far) are

-How get at all the FFT data coming out of the fft~/cartopol~ objects to other than using [jit.poke~] and [jit.spill]?
-How to form lists with more than 256 elements?
-Any tips for polyphonic pitch/contour estimation?

Thanks for any ideas,

Christopher

Jean-Francois Charles's icon

Maybe processing your data as Jitter matrices would work?
Otherwise, you may use lists longer than 256 elements by specifying an argument to some of the list processing objects (see zl help file or reference, for instance). I'm speaking Max 5, by the way.
Jean-François Charles.