Pitch Detection for Piano ?
I have problem detecting the pitch of a signle melodic line from piano with fiddle~. I thought monody pitch detection should not be a problem but unfortunately during the decay process of a note, the pitch analysis result will fluctuate.
Even if I rasie the amplitude threshold in fiddle~ for pitch detection, it still fluctuate a lot.
I am thinking of catch the pitch data when there is an a attck to filter out wrong data. But maybe my idea is not practical, because it does not seem to work as I thought.
Are there any better suggestions ?
Thank you so much.
i’ve tried with piano before too, seems to be a bit of a nightmare – maybe you could use average~ – that way you could gate the results from fiddle so it only recognises it at certain volume
Otherwise You could have a look at Pitch~ and Analizer – which I believe impliment fiddle with some extra options.
Why dont you just use part of the initial attack and throw
away the unsteady part. Here is something you could try…
1. Run initial piano signal through an envelope follower. This will
keep track of the original shape of the note.
2. as each note is played, play a certain number of ms of the note,
and hold (repeat) the last frame of samples. Ideally you would
be working with fft frames.
3. gate the modified signal with the enveloped signal. This should
the tail variances.
4. then feed it to fiddle
—– Original Message —–
From: Tristram Cox
Date: Friday, March 16, 2007 1:39 pm
Subject: [maxmsp] Re: Pitch Detection for Piano ?
> i’ve tried with piano before too, seems to be a bit of a nightmare
> – maybe you could use average~ – that way you could gate the
> results from fiddle so it only recognises it at certain volume
> Otherwise You could have a look at Pitch~ and Analizer – which I
> believe impliment fiddle with some extra options.
> Good luck
I find using [speedlim] on the output of fiddle makes a noticable difference for stability. Or for even more accurate results:
1. run the signal through fft analysis, or [analyzer] object.
2.unpack the data and multiply the amplitudes to emphasise peaks in the spectrum.
3. repack the data and send it through fiddle with the emphasised spectrum.
4.use speedlim on the output of fiddle~
Forums > MaxMSP