Welcome to the Chopanalyser

[image of music]

Click Chopin!



Established notations have evolved to be very efficient at conveying information between their users. You wouldn't find a mathematician writing
"The value of a function is its argument multiplied by itself; the rate of chage of the function with respect to the argument is twice the argument."
...instead of...
y = x²;
dy/dx = 2x.
because the sheer verbosity obscures the meaning. Similarly, music notation continuously evolved to convey what a performer should play with neither too great nor too little scope for interpretation.

It is rather surprising, then, that now music information retrieval has become such a hot topic (as of June 2007), although there are a large number of projects which claim to deal with musical information, most, if not all, do not address the issue of displaying data from performance measurements or musicological analysis in the context of the score.

Expecting musicians to use applications which do not produce results in score form at all useful is like expecting a mathematician or physicist to read a paper in which the use of standard mathematical notation has been disallowed.

At Glasgow University's Centre for Music Technology we have a project which will enable us to describe and store performance aspects of a piece of music using computer databases, and to search these databases using musically-relevant queries. An enabling technology for this activity is PML (Performance Markup Language) which can describe a musical performance in the same way HTML describes the appearance and layout of a web page.

One of the tools emerging from this work gives us the ability to mark up musical scores with detailed performance data. At the summer colloquium Listening to Music, Jennifer MacRitchie played Chopin's A Major Prelude Op 28 No 7. The performance was converted to PML and has been stored in a database.

Now it's your chance!

Compare your performance of Chopin's Prelude with the virtuoso's! The ClickChopin applet above, thanks to Java(TM)'s "Write once, run [almost] anywhere" technology (but if you're using Windows, see the release notes below), you can play like the pros.

  1. Play through the melody (shown at the top of the page) using the mouse, using what you consider appropriate expression (note lengths rather than just clicks). Your computer will record your performance.
  2. If you make a mistake or are dissatisfied with your performance, you can press the "start again" button at any time. The status at the bottom of the applet will change to "Reset".
  3. When you've finished, click "Performance Over". The gesture timing of your performance will be sent to our server in the CMT. The gesture time is the interval between the note's attack (mouse click) and the note's release (mouse release).
  4. Our server will cross-reference it with the expert's, and produce a score. Each note in the score will be annotated with a bar graph, showing the difference between the gesture time you used and the gesture time the pianist used in the original performance.
This is just a bit of fun: nobody expects there to be a really good match. For a start, you don't have the luxury of the sustain pedal enjoyed by Jenni as she was sitting at the Steinway! The serious point is that you have executed a remote database query (albeit a very simple one) on performance data which was stored in a database using a portable file format, and that the results were returned to you in a form which will be useful to musical users.

Release Notes

Per-platform issues

Linux
You need to have java run-time installed to use the applet. You can download this from Sun(TM) (you'll need the Java SE run-time at least) or install the relevant package from your distribution. For example, if you run iceweasel (aka FireFox) on Debian, apt-get install sun-java6-plugin did the job for me. Depending on your setup, you may experience latency issues. See below.
Mac OS-X
Good heavens, it really does "Just Work"!
Windows
Oh dear. The standard Java download for the Windows platform doesn't have any soundtables installed, so unless you have a hardware MIDI sythesiser connected to your machine, the applet will remain silent. You have to download the soundbanks from Sun and manually install them in the right place. See this page on Sun's web site.

Latency Issues

Coding any real-time musical instrument places quite severe demands on the host, and this can be manifested by an uncomfortably long delay between the mouse click and the note starting. This is worst on Windows machines, and isn't too good on the Linux machine I used to write the applet (both running version 1.6 of the Sun Java runtime environment). That said, the Linux box has a sound card which cost US$10 or less, so perhaps I shouldn't complain! I couldn't find a Windows machine on which it performed well; if you're on Windows I hope it works for you. The Mac (my Powerbook G4) had no latency I could hear.

This file contains the source code which might be the cause of the problem. If so, it's my fault... My limited understanding of the Java sound system is that there's a class (BufferControl?) with a method to set the audio buffer length (maybe something like BufferControl.setBufferLength(20);?) but since I'm only using the audio system through the MIDI framework, it's not immediately clear to me how to achieve that. If some kind person could tell me, I'd happily incorporate it in the applet! email me here: nick AT n-ism DOT org (making the obvious anti-spam changes) and I'll be most greatful. Preferably the fix shouldn't involve any JMF or other large downloads.

Nick Bailey, June 2007