wave2midi - Pitch track audio to output MIDI
wave2midi [options] FILE1 FILE2
Converts wave audio, FILE1, into a MIDI file, FILE2. It does this by pitch tracking, making use of the Harmonic Product Spectrum peak, removing incidentals, and using a power threshold to detect note periods. Changes in frequency are also used to identify note periods. This is a monophonic solution, intended for tracking whistling or humming.
The polyphonic method is implemented as a bank of filters which are aligned on MIDI note frequencies.
The following options are supported:
-h Applies the Harmonic Product Spectrum directly after the FFT (i.e. before further processing.
-p Enable polyphonic mode. This is implemented as a bank of filters which are aligned on MIDI note frequencies. The results are about as advanced as the method employed in achieving them (i.e. not very).
FILE Output a FILE with a list of the dominant pitches (in Hertz) for each time slice.
Options will be added to specify the block size, currently fixed at 512 bytes
Things to do for wave2midi:
implement a simple, slow but reliable set of filterbanks for MIDI notes
convert from wave_sample to real_array at the in_buffer stage
smooth the pitch estimation before synthesis (though amplitude might be the real problem)
add support for more than one channel (e.g. stereo). Merge them?
allow different windows to be used
add live audio input/output (rtaudio libary looks useful)
develop objective tests with different audio inputs (humming/whistling, synthesised, cd)
- Implemented by wave2midi.cpp.
Copyright ©1996-2006 Steven Blackburn - About
MaART - MaART on