Currently there is no processing in clam that does polyphonic pitch detection as you ask for. We have a monophonic pitch detection (FundamentalFrequency output in SMSAnalysisCore) and harmony detection (the TonalAnalysis processing). The later gives the harmony, not the concrete notes (meaning set of notes not considering their octaves with weights of probability (PitchProfile output, is the probability for each pitch starting at G). That's quite convenient if you are looking for chords but not enough to extract polyphonic scores. TonalAnalysis uses internally many inner classes, one of them is the one you are asking, ConstantQTransform, but those classes are not exposed as a clam processings although in the wiki they are displayed as such just as a way to illustrate how the algorithm works.
Read this: http://clam-project.org/wiki/Network_Editor_tutorial#Tonal_Analysis Anyway the ConstantQTransform code in clam is quite modular and optimized. Feel free to use in our own project it as long as you keep the copyrights and respect the GPL. If you use the ConstantQTransform consider that each note adds, besides a peak at the fundamental pitch, a lot of harmonics (evenly placed peaks in frequency) that contaminates the detection higher ptich notes. I suggest playing with the SMS related networks and your guitar to understand what happens. MelCepstrum is more about timber identification than pitch detection. http://en.wikipedia.org/wiki/Mel-frequency_cepstrum If you want to contribute clam with your own algorithm for polyphonic detection you are very wellcome. In the wiki you can find how to setup your extensions and we will help you as we can. Regards. David. On Wednesday 27 April 2011 11:16:48 Rene Dohmen wrote: > I asked almost the same question a month ago. > I hope yours gets answered > ;-) > > On Wed, Apr 27, 2011 at 5:17 AM, Nathan Stewart <swarf...@gmail.com> wrote: > > I'm digging into clam - and not finding a lot of documentation, even in > > the source. > > I'm trying to look into the perennial polyphonic pitch detection, however > > I have a laundry list of constraints I'm willing to live with that > > hopefully might make it easer. > > I'm trying to do Guitar to MIDI, and so far the following have occurred > > to me: > > 1) I don't care if its real time, though it would be nice of course. > > 2) I'm not trying to process completely arbitrary mixed instrument > > soundscapes - one instrument, with a straightforward(?) harmonic > > structure. 3) There are a maximum of N note polyphony, where N is almost > > always 6. 4) The up to 6 notes must be composed of either open strings, > > or within 4 frets of any other fretted note. (Not completely got my head > > around how this helps, but I think it could be useful) > > 5) The range is approximately 4 octaves > > 6) We can slap any filtering on there that helps. > > > > And of course discrimination of octaves vs harmonics is a tough problem. > > > > I've taken a look at TonalAnalysis and the MelSpectrum widgets, and I > > don't fully grasp whats coming out of either. > > The TonalAnalyis PitchProfile is a vector of floats, but what do they > > mean? Where does the line form for slaying this particular dragon? > > > > Also - I built and installed CLAM/processing, can see > > libclam_processing.so, but the NetworkEditor has no ConstantQTransform > > widget available. > > > > _______________________________________________ > > clam-devel mailing list > > clam-devel@lists.clam-project.org > > http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org _______________________________________________ clam-devel mailing list clam-devel@lists.clam-project.org http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org