[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!
D A Q A R T A
Data AcQuisition And Real-Time Analysis
Scope, Spectrum, Spectrogram, Signal Generator
Science with your sound card!