WaoN - a wave-to-notes transcriber 0.2

    Copyright (C) 1998-2006 Kengo Ichiki <kichiki@users.sourceforge.net>
                            All Rights Reserved

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


                       is a Wave-to-Notes transcriber
                        (last updated on 1/10/1999)
   News| WaoN?| Features| Platform| Formats| Screenshot| Tips| Download|
                     BUGS| TODO| Links| History|| gWaoN
What's new?

     * Jan 10, 1999 : start gWaoN page.
What is WaoN?

   WaoN is a Wave-to-Notes transcriber, that is, the inverse of '
   timidity' (and its descendants timidity++, and timidity with Gtk+).
   ("WaoN" also has a meaning of harmony of notes or chord in Japanese!)
   My original intention is to pick up voicing of harmony from sound of
   my favorite pianists. (I have no talent to do so, but computer will
   :-) But there is no functional application of this kind on Unix
   platform, as far as I know. So that I start writing WaoN by myself.
   WaoN is released under the GNU General Public License.

     * read wav file and write standard MIDI file format 0.
     * stdin/stdout can be used as input/output file.
     * no explicit limits of number of notes at a time or along the time.
     * patch file (wav) can be used.
     * pitch shift.

   I believe that WaoN is generic, but developed on FreeBSD.

   WaoN's native format as sound-input is WAV, and that as note-output is
   standard MIDI format 0. If you have SoX, you can use almost all sound
   format as input. In addition, if you have timidity or some midi player
   which could read standard MIDI file from stdin, you can play resultant
   midi file on time. See also Tips.
Screenshot ("WaoN" is not a GUI application but ... :-)

$ ./waon --help
WaoN - a Wave-to-Notes transcriber, version 0.1a
Copyright (C) 1998 Kengo ICHIKI

Usage: ./waon [option ...]
  -h --help     print this help.
  -v --version  print version info.
  -i --input    input wav file (DEFAULT stdin)
  -o --output   output mid file (DEFAULT 'output.mid')
        options -i and -o have argument '-' as stdin/stdout
  -p --patch    patch file (DEFAULT no patch)
  -c --cutoff   log10 of cut-off ratio to scale velocity of note
                (DEFAULT -5.0)
  -r --relative log10 of cut-off ratio relative to the average.
                (DEFAULT no relative cutoff
                = absolute cutoff with the value in -c option)
  -k --peak     peak threshold for note-on, which ranges [0,127]
                (DEFAULT 128 = no peak-search = search only first on-event)
  -t --top      top note [midi #] (DEFAULT 103 = G8)
  -b --bottom   bottom note [midi #] (DEFAULT 28 = E2)
        Here middle C (261 Hz) = C3 = midi 60. Midi # ranges [0,127].
  -a --adjust   adjust-pitch param, which is suggested by WaoN after analysis.
                unit is half-note, that is, +1 is half-note up,
                and -0.5 is quater-note down. (DEFAULT 0)
  -n            sampling number from WAV in 1 step (DEFAULT 2048)
  -s --shift    shift number from WAV in 1 step
                (DEFAULT same in the value in -n option)
  -w --window   0 no window (DEFAULT)
                1 parzen window
                2 welch window
                3 hanning window
                4 hamming window
                5 blackman window
                6 steeper 30-dB/octave rolloff window

$ ./waon -i duet-suite.wav -n 1024 -p piano1.wav -r 1
WaoN : Reading Wave file: Microsoft PCM format,
        1 channel, 11025 samp/sec, 11025 byte/sec, 1 block align,
        8 bits/samp, 9922500 data bytes.
WaoN : Reading Wave file: Microsoft PCM format,
        1 channel, 44100 samp/sec, 88200 byte/sec, 2 block align,
        16 bits/samp, 106848 data bytes.
WaoN : end of file.
WaoN : difference of pitch = -0.077538 ( + 0.000000 )
WaoN : # of notes = 26617


   I think that the default setting (2048 samples for FFT, no window,
   etc) is enough to judge how "WaoN" works.
   Here are some more tips.
   Ex.1) if you need more resolution in time, use -s (--shift) option as
          $ ./waon -i waltz4DB.wav -o waltz4DB.mid -w 3 -n 4096 -s 2048
   Ex.2) you can use stdin and stdout, so that you can use timidity to
          play resultant midi file on time.
          $ cat dolphineD.wav | ./waon -i - -o - | timidity -id -
   Ex.3) if you want to analyse MP3,
          $ mpg123 -m -s reflectD.mp3 | sox -t raw -r 44100 -s -w - -t
          wav - | ./waon -i -

   WaoN version 0.1 (source waon-0.1.tar.gz) is now available.
   You need FFTW library to compile WaoN. (Of course, you could use your
   favorite FFT routine easily by modifying WaoN's source a little bit.)

    1. ...

    1. stereo
    2. improve algorithms
    3. give some examples and instructions here
    4. make GUI for WaoN in order to adjust parameters (with Gtk+)

  Referenced softwares and documents
     * SoX: Sound eXchange
          + original site
          + ver.12.15
     * standard MIDI Files 0.06
     * FFTW - C library for FFT used in WaoN.
     * Gtk+: the GIMP toolkit ; but gWaoN is not yet functional.
  Similar projects
     * Timidity - a MIDI to WAVE converter and player
          + original site (up to 0.2i)
          + timidity with Gtk+ (0.2j or later).
          + timidity++
     * " A Parallel Conversion of WAV files to MID files" by John Markus
       and William Lee Sims (containing a source code Wav2Mid.c).
     * Inst2Midi, which converts a monophonic audio source into MIDI
       Data. (on SGI)
     * sharewares on Windows... Song Raita, Saihu no Tatsujin.
  Other useful sites
     * Some Interesting Sound & MIDI Software For Linux (mirror1,
       mirror2) : an extensive list of softwares on unix (especially
       Linux) platform.
     * The Standards Page : containing documents on various formats (like
       standard MIDI format).
     * Wotsit's Format : yet another site on various formats (like MIDI,
       WAV, etc).

     * Jan 10, 1999 : start gWaoN page.
     * Jan 6, 1999 : add BUGS section, update TODO list.
     * Dec 29, 1998 : first release of "WaoN" version 0.1. See download
     * Dec 13, 1998 :
          + catch up with the state before the accident at last; equal to
            that on Dec 5, 1996.
          + change the name of this project and development is
            concentrated on non GUI version.
     * Nov 26, 1998 :
          + signed up geocities to have web page for this project.
          + delete programs by accident ;-<
     * Oct 1998 : start writing Gtk+ programs of GUI for 'wav2mid'.
     * Dec 5, 1996 : freeze developing the first generation.
     * Dec 3, 1996 : start original program named 'wav2mid'.
   News| WaoN?| Features| Platform| Formats| Screenshot| Tips| Download|
                     BUGS| TODO| Links| History|| gWaoN
    e-mail: ichiki@geocities.com
         Copyright (c) 1998,1999 Kengo ICHIKI. All rights reserved.