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).
-o 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)
- Remarks:
- Implemented by wave2midi.cpp.
Copyright ©1996-2006 Steven Blackburn - About
MaART - MaART on
SourceForge