Software Projects

This page provides background information on software projects that I am or have been involved in, as well as links to the corresponding Java code and executable classes. Related documents and publications are also linked to where appropriate.

Interested parties are welcome to modify or use any of this software free of charge, as long as it is cited. All software is implemented in Java and distributed based on a GNU General Public License. No warranties of any kind are express or implied.

Mature Software Projects

jMIR (software suite for research in automatic music classification)

jMIR is an open-source software suite for use in music information retrieval (MIR) research in automatic music classification. It can be used to study music in both audio and symbolic formats as well as to mine cultural information from the web and manage music collections. jMIR also includes software for extracting features, applying machine learning algorithms and analyzing metadata.

The primary emphasis of jMIR is on providing software for general research in automatic music classification. The main goals of the project are as follows:

More information on jMIR is available on the jMIR SourceForge page. jMIR consists of a number of different software components that are described both here and on the jMIR SourceForge page. These components include:

There are also plans to implement the following additional components:

There are many publications on the jMIR components. These can be seen in the publications section of this web site.

DOWNLOAD jMIR

Performance gesture analyzer

Software for statistically analyzing the performance gestures of musicians. Implemented using MatLab, Java and the Optotrack motion tracking system. In addition to basic analysis functionality, further features include dynamically time warping gestural data in order to synchronize performances based on audio signals and generating artificial video visualizations of marker movements. Those desiring access to the code should contact Prof. Marcelo Wanderley for permission. This particular research involved the study of clarinet players. More information is available on the clarinet gestural analysis home page.

The following publication is relevant to this project:

Wanderley, M., B. Vines, N. Middleton, C. McKay, and W. Hatch. 2005. The musical significance of clarinetists’ ancillary gestures: An exploration of the field. Journal of New Music Research 34 (1): 97-113.

SpeciesChecker (counterpoint error checker)

Software that analyzes species counterpoint for technical errors. This software can also randomly generate technically correct cantus firmi. Implemented using Java. More information is available on the SpeciesChecker home page.

The following publication is relevant to this project:

McKay, C. 2002. SpeciesChecker: A system for automatically proofreading species counterpoint. Undergraduate Thesis. University of Guelph, Canada.

Initial Prototypes, Demonstration Software and Toy Software

SPRATE (musical interactive performance system)

Software for extracting control information in real-time from the audio signals produced by musicians so that they can perform with computer accompanist systems. Implemented in Java using a client/server architecture. The code is not yet publicly available. A PowerPoint presentation presentation is available from the MGSS 2005 Symposium. The following publication is also relevant to this project:

McKay, C. 2005. Approaches to overcoming problems in interactive musical performance systems. Presented at the McGill Graduate Students Society Symposium.

Transcriber (polyphonic audio transcription system)

Software that automatically transcribes audio data from solos or duets into MIDI scores. This software is still being developed. It makes use of both MatLab and Java. More information is available on the Transcriber information page.

The following paper is relevant to this project:

McKay, C and W. Hatch. 2003. Transcriber: A system for automatically transcribing musical duets. Course Paper. McGill University, Canada.

eDobro (slide-guitar inspired hyper-instrument)

A sensor-controlled instrument based on the slide guitar paradigm. Includes a number of software mappings in Max/MSP to enhance learnability and flexibility. This project is still in progress.

The following paper is relevant to this project:

McKay, C. 2002. The eDobro: An implementation of design strategies intended to diversify and expand the use of computer music controllers. Course Paper. McGill University, Canada.

ScoreReader (interpreting scans of Medieval manuscripts)

Software for processing digital scans of medieval scores in order to convert them to symbolic music data. Some basic work has been done on eliminating bleed through and on detecting bar lines, but the project is still in the initial stages of development, and there is much to be done. Originally implemented using Java. More information is available on the bleed through removal and horizontal line detection web pages. More information on the project overall can be found on the DDMAL home page.

Laurent Pugin and John Ashley Burgoyne are currently continuing this work using Aruspix and Gamera.

Pericles (electronic election software)

Software system for designing and running secure customized elections over ther Internet. Implemented in Java. Requires a MySQL server. More information is available on the Pericles home page.

MultiNetworks (multi-neural network classifier)

Software for generating and using arrays of feedforward neural networks. More information is available on the MultiNetworks home page. Implemented in Java.

GenAlg (genetic algorithm demonstrator)

A demonstration of how genetic algorithms can be used to solve problems using various different methods and parameters. More information is available on the GenAlg home page. Implemented in Java.

ImageProcessor (image processing demonstrator)

A demonstration of how various image processing algorithms can be implemented and used. More information is available on the ImageProcessor home page. Implemented in Java.

Journey (file transfer software)

Software for transferring files over the Internet using the FTP, Telnet or Windows File Sharing protocols. More information is available on the Journey home page. Implemented in Java.

BiConnect4 (game)

Simple ASCII version of of the Connect-4 where pieces can be dropped horizontally as well as vertically. More information is available on the BiConnect4 home page. Implemented in Java.


-top of page-