[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: music pitch tracking

On 29 Mar 2009 at 12:08, James W. Beauchamp wrote:

> What is needed is a system that is accurate to a few cents but can also
> cover a wide range of pitch, at least 3 octaves, but 7 would be great.
> It should be able to handle a wide variety of waveforms, drop outs, a
> fair amount of noise and inharmonicity, and it should be able to handle
> very fast changes in pitch, i.e., it should be able to accurately
> transcribe virtuosic passages (64th notes, etc.), as well as glides,
> vibrato, and portamento.
> Besides displaying the data on a log(f0) vs. time chart, the system
> should also be able to generate the data to a file for subsequent
> post-processing research. Conversion to MIDI and musical notation are
> nice features, but these are already available in programs once the
> log(f) data is provided.

On the face of it, the upcoming Daqarta version 5.00 does 
pretty much what you ask, in real time.  It covers 7 
octaves or more, but they are not the 7 everyone really 
wants since they are the 7 at the high end... stuff around 
100 Hz (male voices) and below is not handled well.

Handles any waveform, including missing fundamental, and a 
fair amount of noise.  You can restrict the frequency range 
to reduce out-of-band noise if you know the desired input 
range. Haven't tested inharmonicity as such, but that might 
be a problem if the fundamental is weak.  Don't know how 
you define drop-outs... if there is no input above an 
adjustable threshold, the note stops.  

Resolves notes to 1 msec (though 10 msec is more 
representative), and tracks glides, portamento, and 
vibrato.  However, while the display shows a smooth glide, 
for MIDI output a change in pitch (beyond a value of 
hysteresis that you set) is regarded as a new note, so the 
result is a staircase rather than a smooth glide.  I guess 
I could make smooth glides optional, with some hueristic to 
decide whether to step or glide based on rate of change.  
But the problem with real-time tracking is that you can't 
wait to see what happens before deciding how to handle any 
given situation.  Any time spent waiting adds response 
latency, which is a real problem when trying to listen to 
yourself and the MIDI output.  

The display is a log(f) display, with an optional keyboard 
background.  This is just a pattern of black and white (or 
any colors you choose) horizontal bars for the piano keys, 
though of course here the black and white keys are the same 
width because they are the same log(f) width.  The tracked 
pitch is shown as a colored line, with the color scaled 
according to loudness.  (It's the same color that you'd see 
on the color spectrogram.)

Anyway, I said "on the face of it" because I am sure this 
won't be the answer to anyone's prayers.  It's probably 
fine for vocal training like the Passaggio program that 
John mentioned, but what I really wanted was to be able to 
play real-time MIDI music by humming... and humming (at 
least for typical low male voices) is what it handles 
worst.  Whistling is handled pretty well, but even here it 
turns out that real-time performance is a can of worms.  

You have to do everything *very* carefully, since the pitch 
trackerisn't smart enough to ignore lots of little details 
that we easily ignore when just listening to a live 
performance (fret noise, breath, etc).  It wants to turn 
everything into a note!   I think learning to "play" this 
is going to be just like learning to play an instrument... 
it's certainly not going to turn anyone into an overnight 

But is *is* a lot of fun... especially with goofy stuff 
like laughter, speech, or room noises. The MIDI-played note 
can be set to an offset of the tracked pitch, so feedback 
from speaker to mic can be a real trip!  

Best regards,

Bob Masta
            D A Q A R T A
Data AcQuisition And Real-Time Analysis
Scope, Spectrum, Spectrogram, Signal Generator
    Science with your sound card!