Thursday, February 26, 2009
Pulling an all-nighter to get paper for AES completed
Nearly finished the first draft of my paper for the AES 126th Convention in Munich. It's looking good. Nearly 8 pages in total - just within the limits I believe. Maybe my supervisors will trim it down, short back and sides, and leave me to brush up over the weekend. Deadline is this coming Tuesday March 3rd. My first paper...
Did Dudley Ryder have it right 294 years ago?
I recently read an article about diary keeping and found the comment by GoloshtheFox on the same page, very interesting:
Not everybody is the same, but I can certainly see the pattern unfolding in blogs and social networking sites such as Facebook. They are in some way a keep-note on aspects of each of our lives. We post our pictures, post our notes, post our blogs, keep track of the activities of our friends etc.
These are a few thoughts I've tried to digest and liberate through the wonderful medium of the internet. Keeping this blog, has certainly helped me in my work. Now back to the grind :-)
"Dudley Ryder, a prolific eighteenth-century London diarist, had the following to say on the matter of diaries 294 years ago:
‘It is certainly very useful to accustom ones self to write down ones thoughts. It both brings one to a good style and readiness of words and also helps very much to disgest our thoughts and bring them into a method and fastens them in the memory. - (27 August 1715)."
Not everybody is the same, but I can certainly see the pattern unfolding in blogs and social networking sites such as Facebook. They are in some way a keep-note on aspects of each of our lives. We post our pictures, post our notes, post our blogs, keep track of the activities of our friends etc.
These are a few thoughts I've tried to digest and liberate through the wonderful medium of the internet. Keeping this blog, has certainly helped me in my work. Now back to the grind :-)
The GUI has arrived!
So, I've spent the past two days (and a bit) learning about Matlab GUI and developing a simple (but useful) GUI application for the onset detection and note separation. I'm pretty happy with the results, bearing in mind this is still the alpha version and it needs to be tried and tested.
Here are a few graphics:
Time plot for Double Bass E1B1

Post-processed onset plot for Double Bass E1B1 with cutoff boundaries for the extracted notes:

I still need to add parameter options for smoothing and threshold. These parameters are currently set to constant in the application.
Here are a few graphics:
Time plot for Double Bass E1B1

Post-processed onset plot for Double Bass E1B1 with cutoff boundaries for the extracted notes:

I still need to add parameter options for smoothing and threshold. These parameters are currently set to constant in the application.
Tuesday, February 24, 2009
Wow, onsets are very interesting
My algorithm is working a treat so far. My previous post regarding the onset characteristics of the Double Bass was touching on an important attribute of music instruments. As I go along through the instrument families, the onset characteristics of the instruments are plain to see.
For example, taking the IOWA sample for the Viola:

Note the sharp onset for the Viola. Of course, the importance of onsets in musical instrument recognition has been well documented in the literature so this is no great discovery. However, it is very interesting when one sees the characteristics for themselves through their own work.
Some papers which have studied onset detection and musical instrument recognition:
For example, taking the IOWA sample for the Viola:

Note the sharp onset for the Viola. Of course, the importance of onsets in musical instrument recognition has been well documented in the literature so this is no great discovery. However, it is very interesting when one sees the characteristics for themselves through their own work.
Some papers which have studied onset detection and musical instrument recognition:
- Kitahara et al 2006 Instrogram - A New Musical Instrument Recognition Technique Without Using Onset Detection NOR F0 Estimation
- Bello, J.P. et al. 2004 - On the use of phase and energy for musical onset detection in the complex domain
- Bello, J.P. et al. 2005 - A Tutorial on Onset Detection in Music Signals
- Dixon, S. 2006 - Onset Detection Revisited
- Duxbury, C., Bello, J.P., Davies, M., Sandler, M. 2003 - A combined phase and amplitude based approach to onset detecion for audio segmentation
- Duxbury, C., Bello, J.P., Davies, M., Sandler, M. 2003 - Complex Domain Onset Detection for Musical Signals
- Lacoste, A., Douglas, E. 2006 - Machine Learning for Note Onset Detection
- Lacoste, A., Eck, D. 2005 - A Supervised Classification Algorithm for Note Onset Detection
- Leveau, P. ISMIR 2004 - Methodology and tools for the evaluation of automatic onset detection algorithms in music
Monday, February 23, 2009
Onset detection - it's tricky business
I ran into some complications with extracting some notes. The instrument I was looking at was the Double Bass. The IOWA file can be found here.
Here's a demonstration of the problem encountered.

Taking a closer look at note 'G' :

The spurious peaks detected in the audio sample proved problematic for my algorithm. I suspect that this being an 'arco' sample, the problem could be due to vibrato?? Anyway, my work around involved adding more thresholds. I noticed that there tend to be short periods of non-peak activity in the actual notes themselves. This was causing some confusion. To overcome this I added a min-gap time threshold so these gaps would not interfere. It took a while! So to continue and no doubt, there will be other issues. I'm still to get started on the front end...!
Here's a demonstration of the problem encountered.

Taking a closer look at note 'G' :

The spurious peaks detected in the audio sample proved problematic for my algorithm. I suspect that this being an 'arco' sample, the problem could be due to vibrato?? Anyway, my work around involved adding more thresholds. I noticed that there tend to be short periods of non-peak activity in the actual notes themselves. This was causing some confusion. To overcome this I added a min-gap time threshold so these gaps would not interfere. It took a while! So to continue and no doubt, there will be other issues. I'm still to get started on the front end...!
Friday, February 20, 2009
Iowa notes separated successfully
I've been working on some onset detection algorithms and trying to separate the IOWA music samples so I can build up a database of instrument notes. The code I use is based on an adaptation of Mikel Gainza's code...which in turn is based on the following papers:
Duxbury, C. et al. - Complex Domain Onset Detection for Musical Signals
Bello, J.P. et al. - On the use of phase and energy for musical onset detection in the complex domain
I got the algorithms working in MATLAB today. Here's a run through of a simple example:
Music sample: Tuba, file: Tuba.pp.C1B1.aiff
Processed using complex onset detection:
Time plot

Onsets detected
Smoothed onsets

Smoothed onsets with applied threshold

Detected peaks for note C1

Resultant note wav files:
All the resultant .wav files from this example can be found here.
I'm going to add a front end in Matlab so the various parameters can be manipulated to suit the wav file under investigation. This should prove a useful tool for many once it is completed.
Duxbury, C. et al. - Complex Domain Onset Detection for Musical Signals
Bello, J.P. et al. - On the use of phase and energy for musical onset detection in the complex domain
I got the algorithms working in MATLAB today. Here's a run through of a simple example:
Music sample: Tuba, file: Tuba.pp.C1B1.aiff
Processed using complex onset detection:
Time plot

Onsets detected

Smoothed onsets

Smoothed onsets with applied threshold

Detected peaks for note C1

Resultant note wav files:
All the resultant .wav files from this example can be found here.
I'm going to add a front end in Matlab so the various parameters can be manipulated to suit the wav file under investigation. This should prove a useful tool for many once it is completed.
Subscribe to:
Posts (Atom)