The audiopianoroll is an interactive demonstration implemented in Matlab. It demonstrates the sound source separation algorithm proposed in my forthcoming PhD thesis. The separation algorithm is able to extract individual notes played by pitched musical instruments from a one-channel audio recording. The demonstration allows the user to listen to individual notes, move them in time, and change their pitches.
Create a directory for the demo. Download the audiopianoroll.zip file into the directory and unzip the files.
Download at least one of the following files MAT-files containing pre-calculated separated signals:
Start Matlab, change into the demo directory and start the demo with the command "startdemo". Select one of the loaded MAT files, and the demo starts. In UNIX systems, the demo requires that function playsnd is available for playback. The file can be downloaded from here.
Ech separated note is drawn with a filled patch (see the figure below). The location on the x-axis indicates the note timing, and the location on the y-axis shows its fundamental frequency. Variance in the vertical location is used to illustrate time-varying fundamental frequency, and the thickness of each note illustrates the approximated loudness of the note. The colors of the patches are irrelevant. The interface allows editing the signal by moving individual notes in time and pitch, and deleting, and copying notes.
The demo has been tested in Matlab versions 6 and 7 in Linux and Windows. I may not be help in all technical problems, but if you think there is a bug in the demo, please let me know.
The signals are excerpts from the RWC Music Database. Functions notenumber2freq.m and notefreq2number2.m are contributed by Anssi Klapuri. The separation algorithm utilizes the automatic music transcription algorithm by Matti Ryynänen.