Sunday, February 3, 2008

the output method of add_glyph is now generating the correct result file format (i.e. N_1_3... for note, duration, stem up or down). This was performed via string manipulation of the gamera output tuple 'id_name'.
(01/28-01/31)

the predominant focus during these dates was to develop output that would mimic that of aruspix such that a proper means of comparison could be made. However, after an attempt towards this end, I had noticed that in order to do this, I would have to code a method that would take into account all the subtle variants possible within aruspix and gamera output, without having the output present at the time of coding - because we had decided to perform training as a later stage (if we had some data, trained to the original method attempted in Gamera - we would have had note.semiminim.down for example - and this could then be changed to aruspix form).

We then decided that a much better approach would be to avoid the gamera coding step entirely, and use fully the aruspix naming convention at the start (or at least a derivation thereof - which could later be pruned for proper syntax).

Tuesday, January 22, 2008

on friday (01.18.2008) and sunday (01.20.2008), I spent the morning and afternoon reviewing the classes and functions of the pitchfinding method. then I rewrote them (same functionality) but different syntax - to better understand where to go next.

important coming dates:
1/31 I will have a "clean" output with a naming convention that matches the aruspix output (including octave and so forth)

2/8 the pitchfinding algorithm will be completed,

by 2/22, the training will be completed and the writeup may begin.

Tuesday, January 15, 2008

in short:

1) I have been working on the pitch points for glyphs.

2) we've now decided to make a toolkit rather than a plugin

3) the framework of this toolkit is being prepared, and content will be supplied once framework is completed

4) my current class enrollment is: MUMT 611, with Prof. Ichiro Fujinaga and Machine Learning, with Prof Douglas Eck

Tuesday, January 8, 2008

Most of the work done today involved piecing together the web component of a presentation for thursday's MUMT611 class.

the presentation will exist here:
http://www.music.mcgill.ca/~hockman/MUMT_611/presentation_1/database_presentation.html

and will cover community-based discography databases. The main sites covered are MusicBrainz and Discogs, and supplemental material will be provided re: RollDaBeats, AllMusic, and others. The main purpose of this presentation will be to introduce the audience to the history and intent of these services, and the main services which they provide.

Monday, January 7, 2008

For the last week i have been getting back into the swing of python coding -> specifically extracting information from the output xml files containing glyph data. The idea is then to apply these to the stave information, for a pitch point. This is basically the ongoing focus of the work from last semester...in the next couple of days, I will be posting a list of objects and functions which will be used in this approach.


Tuesday, November 20, 2007

this morning i spent an hour training gamera. As final projects are quickly approaching, I have been spending a bit more time preparing for these, to avoid last minute rushes (as much as possible). For 614, I am attempting to make a content-aware effects unit, which should be pretty difficult for me, as I have never written a project in c++ before. I do, however, have a working framework in matlab, and have mapped out the outline already. It just remains to be seen if i can implement the code within the 2 1/2 week timeframe.

Friday, November 16, 2007

This last week I have been doing a lot of background mathematics brushups in eigenvector/value calculations - different methods used, along with an informal efficiency ranking of each. This is in preparation for my final project for 612, which will be towards using the high resolution techniques for an onset detection scheme for musical audio. Although not a new idea by any means, its new to me, and is a completely different method than say, fft based phase, energy or complex domain approaches which i have used in the past.

I have been training Gamera with prepared early sheet music over the past week as well.

Wednesday, November 7, 2007

today I spent all morning and part of the afternoon on the wiki entry that explains the new findings based on the newly implemented changes (see last entry)...

Tuesday, November 6, 2007

For the last two weeks I have been quite busy with coursework, but here and there I have had brief moments to finish odds and ends. After posting the results of the staff removal analysis, I received feedback from Christoph Dalitz who has recommended that I try the rotate() plugin to get better results from linetracking.He has also noted that we should be using 'all', not 'bars' for the crossing_symbols parameter.

Therefore, my entire day has been spent editing the code from mstaves and the scripts that i am using for the test. I have since rerun the experiment, and have posted the images on the website.

The link to the files is:
http://coltrane.music.mcgill.ca/GEMM/images/main.php

I will revise my results today and re-post the results on the gamera board by tomorrow morning.

Thursday, October 25, 2007

Last night (10.24.2007) and this morning (10.25.2007), I am making some minor edits on the wiki, such as changing names of test sets to more clearly define them...also making another edit of the text before it gets sent out for others to read...

the next step, to be tackled in the coming week(end?) will be to begin writing a split function for gamera, which directly cuts the glyphs in half. there are already split-x and split-y commands, but these look for minimums. 2 approaches seem valid to me...1) to cut the plane directly in half, and 2) find first black pixels on either side of plane and then perform a simple averaging method to find the median-x point (for a split-x type of command) to use as a slice point.

...oh, and i started drinking coffee again...

Monday, October 22, 2007

On friday (10/19/2007), I wrote the staff removal evaluation summary for the wiki, and chose selected images which demonstrated the errors for comparison between the two best performers of the set - fujinaga and skeleton. This can be found here:

http://coltrane.music.mcgill.ca/DDMAL/index.php/Evaluation_of_staff_removal_algorithms


This morning (10/22/2007) I have added some more information to the wiki.

Thursday, October 18, 2007

after looking at jlibrary, and consultation with Andrew, we've decided to go with "Gallery", an online content management system for visual media. Quite a cool software! The images are now up online at:

http://coltrane.music.mcgill.ca/GEMM/images/main.php


now i am working on the writeup for the evaluation of these methods...will be done shortly...


Wednesday, October 17, 2007

Wednesday (10.17.2007)

Today I am going to upload the entire set of test images hopefully using jLibrary, then write a small progress report explaining the decision as to which stave removal algorithm I thought to operate best...
afterwards, I will be creating a separate folder containing those images which present reasons why this decision was made.

Tuesday, October 16, 2007

since the last post, I have been quite busy...

Melissa and I have finally received our belongings from the states, and are now in the process of organizing all of our "stuff".

With the ICASSP paper submitted, I had made a quick webpage with some results to hear. that site can be found at:

http://www.music.mcgill.ca/~hockman/ARTMA/examples.html

Apart from that, I have been quite busy with coursework for Phillipe's DSP class. I've had only short periods of time to devote to the job this past week...over the next two weeks however, I don't foresee any barriers to getting more work done on pitch fields analyzed within gamera.

Wednesday, October 10, 2007

On friday, the ICASSP submission was due, so there were several last minute revisions that needed to be in place before the weekend was through (since they dont actually close the submissions until first thing monday morning). So on the TWELVE hour journey to NYC for AES, I was able to finish that as well as become more familiar with the subtleties of the mathematical substitutions behind fourier transforms... On the way back on Monday, (10/08/2007) I was able to make significant headway on the pitch field script. Between Monday and Wednesday (10/10/2007), I have been able to accomplish pitch field extraction from the stave removal algorithms. The next step of the process is to iteratively export glyphs from Gamera, and analyze the pitch points from the centers of the noteheads:). In other news, Melissa has just moved up here this last weekend, and the furniture/clothing/studio/etc has just arrived today (10/10/2007)...

Tuesday, October 2, 2007


today i had a splitting headache...not sure what brought it on, as i usually dont get them...

anyways, i left the lab at arount 2:30, relaxed then got started on the actual coding of the pitch fields stuff. things are going much easier this time around for this part of the project, and ive gotten some background information from marni about the extremities of the pitches represented in the music we are looking at... (as well as clef information). Variable field information is coded such that new staff positioning provides fully adjustable fields. for each line of music. Next step will be (finally!) looking at the output of gamera's glyph data and determining pitch centers...

Thursday, September 27, 2007

monday (09.24) through wednesday (09.26) I have been working on a paper for ICASSP, as well as digesting the mathematical transformations presented in Phillipe's class. Today (thursday, 09.27) I will be starting to develop a pitch point analysis algorithm.

Friday, September 21, 2007

after a not so simple fix, i was able to use graphic converter to change the database to the two forms of each pic that were needed. I then simply made two versions of the script, batchConvert_A.py and batchConvert_B.py. The results are currently being run, and I assume that it will take a good portion of the evening.

But this part of the script is completed. Next I will need to start looking at pitch height... most likely on monday afternoon.

here is the code for batchConvert_B.py ... although i should note that this blogger doesnt seem to care for indents much.


import os
import sys

from gamera.core import *
from gamera.toolkits.musicstaves import musicstaves_rl_simple
from gamera.toolkits.musicstaves import musicstaves_rl_carter
from gamera.toolkits.musicstaves import musicstaves_rl_fujinaga
from gamera.toolkits.musicstaves import musicstaves_rl_roach_tatem
from gamera.toolkits.musicstaves import musicstaves_linetracking
from gamera.toolkits.musicstaves import musicstaves_skeleton
init_gamera()

source_folder = ['/Users/jasonos/SRI_B/']
target_folder = ['/Users/jasonos/SRI_B_conversion/']
folder_contents = os.listdir("/Users/jasonos/SRI_B/")[1:]

line_removal = ["rl_simple",
"rl_carter",
"rl_fujinaga",
"rl_roach_tatem",
"linetracking",
"skeleton"]

for i in range(0,len(folder_contents)):
source = folder_contents[i]
target_subfolder = str(target_folder)[2:-2] + source[:-4]
os.system("mkdir %s" % (target_subfolder))
os.system("cp %s %s" % ((str(source_folder)[2:-2]
+ "/" + source), str(target_subfolder)))

# gamera commands
image = load_image(str(source_folder)[2:-2]+source)
onebit = image.to_onebit()
onebit_name = source[:-4]+".png"
onebit.save_PNG(onebit_name)

os.system("mv %s %s" % (onebit_name, target_subfolder))
image = onebit

# music staves stuff
for n in range(0, len(line_removal)):
ms = eval("musicstaves_" + line_removal[n]
+ ".MusicStaves_" + line_removal[n]
+ "(image)")
ms.remove_staves(crossing_symbols = 'bars')
no_staves_img = ms.image.image_copy()
rl_name = source[:-4] + "_" + line_removal[n] + ".png"
no_staves_img.save_PNG(rl_name)
os.system("mv %s %s" % (rl_name, target_subfolder))

today I'm wrestling with the gamera script again to use the linetracking and skeleton utilities algorithms - shouldn't take too long...famous last words...