Using Wave Goodbye

Screenshot

To convert a wave file to a midi file just open the wave file, analyse it and save the midi file! Once a midi file has been saved it may also be played.

If it was really that easy to get good results then all those parameters would not be needed. To get the best results some fiddling will be required.

Tuning The expected frequencies are based on A5=440Hz. This can be altered by up to 50 cents each way (half a tone) to produce a better fit with any possibly out-of-tune recordings. After a piece has been partly or fully analysed the automatic facility may be used to detect the most likely tuning. This is the only parameter which requires a full re-analysis after it has been altered. All other parameters only require the piece to be re-filtered.
Polyphony Not quite what is normally meant by polyphony. This is the number of new notes that can start at once. Current notes can carry on playing.
Minimum chord component When several notes are playing simultaneously, any notes with an amplitude lower than a percentage of the loudest current note will be filtered out.
Neighbouring notes threshold When two adjacent notes are played then the amplitude of the weaker must be at least a certain percentage of that of the stronger, otherwise it is filtered out. This is mainly to help with low note recognition, where playing just one note produces a frequency spread of several notes during analysis.
Overall minimum component The amplitude of the weakest note saved in the midi file as a percentage of the loudest note in the whole piece.
Amplitude fluctuation The frequency analysis does not lead to a smoothly decaying amplitude of each note because of the influence of other notes. If the amplitude at each analysis segment falls within a band around a running average then it is smoothed automatically. This helps with further analysis. For a new note to start while the same note frequency is still playing (ie repeating a note while the sustain pedal is in use on a piano) the new note amplitude must be 10% above the allowed fluctuation of the running average over the last few samples.
Phase analysis Another low note recognition routine. When two adjacent notes are detected then an additional analysis may be used based on measuring the phase of each note throughout the sample. This is a slow procedure, but because it is only used for pairs of notes (after the neighbouring notes threshold filter has been used) it only adds about 20-30% to the time taken for analysis. However, during any very quiet parts of the music such as any silence at the start and end, it will be used for almost each note and its neighbour, greatly slowing down the analysis during the silence. In practice it is of little value and will probably be removed before the final version is released.
Single sample noise removal Strong harmonics may occasionally give rise to spurious notes. Checking this option will remove any notes which are only present for a single sample interval.
Notes start loudest Certain instruments, such as any keyboard instrument, have control over the volume of a note at the start, after which the volume can only decay. Enabling this option will enforce this, compensating for any possible weak starts from the analysis.
Draw Spectrum Analyser Pretty, but unnecessary. During the filtering stage after a full analysis the frequency spectrum can be displayed throughout the piece as the note map is built. During re-filtering without a full analysis the spectrum is never displayed because of the time delay involved.


To do list
Add real monophonic mode
Proper polyphony control
Add support for instrument signature files to improve harmonic rejections
Handle compressed wave files (done - ver 0.2)
Allow post-analysis parameter tweaking (done - ver 0.2)
Improve low note recognition (done - vers 0.2 and 0.9)
Change tuning to cents instead of percents (done - ver 0.9)
Midi note editor (basic version done - ver 0.9)
Create a decent looking website and instruction manual (improved for ver 0.9)
Include midi file player (done - ver 0.9.1)


Page last updated 25th November 2000