jMusic: Music Composition in Java

An introduction to jMusic.

by Andrew Sorensen and Andrew Brown

jMusic is a programming library written for musicians in the Java programming language. While still developing, this project hopes to achieve a library that is simple enough for newbie programmers but sophisticated enough to enable composers to accomplish real work, whatever form that may take. jMusic is designed to be used as a compositional medium, therefore it is primarily designed for musicians - not computer programmers. However, many people find jMusic a useful API for music software development, in particular for digital instrument making.

What is jMusic?

jMusic is:

- A research project that started life at the Queensland University of Technology (QUT) music department in the late 1990s.

- A computer assisted composition environment. jMusic is designed to assist the compositional process by providing an open but partially structured environment for musical exploration; it can also be used for musical analysis and computer music education.

- A Java package. Programming in jMusic is programming in Java, not in a meta-language or scripting environment. This means that the full power and cross platform independence of Java is maintained, it also means that the more you know about Java programming the more useful jMusic will be to you. Learning jMusic can be a fun way to gain Java programming skills while focusing on making music.

- A Music API. jMusic is a tool for instrument building as well as music making. Java applications can be written using jMusic components. These components include a musical data structure with associated modification and translation classes as well as some graphical user interface elements. With jMusic you can create your own composing tools and environment.

- Free. jMusic is an open source package distributed under the GNU General Public Licence. It is being developed by folk passionate about computer music making and developing tools for themselves and others to create music with. We hope you might become a part of that community and contribute to and benefit from the development of jMusic as well.

- Simple to learn, powerful to use. jMusic is easy to understand because it builds upon conventions of traditional western music. As well, interfacing jMusic with other music software is facilitated by easy importing and exporting of MIDI files and audio files. This means that your current knowledge and tools are not discarded when you start jMusic. jMusic provides an increasingly diverse range of visualisation and audiation utilities to help composers see and hear the current state of thier composition. Because jMusic has full access to the Java language and support structures, your jMusic work can be as extensive as Java allows (and that is VERY extensive).


Tutorials introduce you to the basic jMusic data structures and the way that they interact with Standard MIDI files (from here in referred to as SMF) and audio files. These tutorials will try to be as basic as possible often explaining programming techniques and ideas along the way. It is, however, assumed that you have some understanding of the Java programming language and a good Java reference book beside the computer. It is also assumed that you are musically literate and understand common music notation terminology.

There are a few more essentials that you must have before continuing with jMusic - install it. The jMusic class files contain the java byte code which make up the jMusic library (jmusic.jar) which you will need, along with the inst directory, to add to your Java CLASSPATH. See the download pages to get the jMusic class files and information on installing jMusic.

A word of warning - this code is constantly evolving and your best bet of an updated, and therefore more groovy and fulfilling, jMusic tree is to compile from source files rather than use the jmusic.jar file, which is not so hard really. The latest version of jMusic source is available via CVS.

And finally our email addresses, for when the shit really hits the fan. You'll find we're extremely caring persons who will help you with any problems you may have, NOT. But seriously, we will try to get back to you within a day or two.

Good luck and happy music making.

Andrew & Andrew


The following people have provided significant support and additions to the jMusic classes and/or tutorials:

Andrew Troedson, Adam Kirby, Rene Wooller and Tim Opie.

jMusic is supported by the following organisations:
Exploding Art
SourceForge                                                                                                                                                                                                                                                                                                                                                                               Logo

jMusic Tutorial Index