jMusic Home Page



(Programs written using jMusic)

ChordATune – Ia an Emotion Based Melody Harmonizer for Piano Music, developed by Amani Soysa. The main objective of my project was to create a system that would automatically harmonize (accompany) a tune based on user emotions as well as a desired genre of music (swing, rock, disco, march etc.). Therefore, the harmony would vary depending on the selected genre and the level of happiness or sadness of the user. The system is very useful especially to young music learners (as explained by many young music enthusiastic who reviewed the system) to learn how a single tune could be harmonized in many ways. The system not only harmonized music, but provided users with generated manuscript notations of the harmonized piece as well as guitar fret sheet notations. Additionally the system has the capability to add drum beats to the harmonized piece based on the selected genre. The user has the option to provide input simply as a MIDI file, or create his/her own music using the virtual piano function or the manuscript editor.

ChordATune interface

ChordATune is a huge success and was awarded with one of the three Merit awards presented at the Asia Pacific ICT Alliance Awards (APICTA) 2009 held in Melbourne, Australia. ChordATune was selected to represent Sri Lanka at APICTA after winning 3rd place in the Tertiary category at the National Best Quality Software Awards (NBSQA) 2009 held in Colombo, Sri Lanka. NBSQA is an annual competition organized by the British Computer Society of Sri Lanka (BCSSL) that is held with the aim of recognizing outstanding achievements of individuals and organizations. Further, ChordATune was awarded 3rd place at the Cutting Edge exhibition held at the Informatics Institute of Technology. Cutting Edge is an annual exhibition held at IIT to assess and recognize academic projects completed during the course of the year; the projects are judged and awarded by experts from the IT industry. 

ChordATune is an interactive AI system developed using Hidden Markov Model and Dynamic Programming and used JMusic for musical composition and Musical analysis . Further there are two IEEE papers publish under ChordATune.

  1. Interactive Machine Learning for Incorporating User Emotions in Automatic Music Harmonization. Proceeding of the 5th International Conference on Information and Automation for Sustainability (ICIAfS'10).
  2. ChordATune - An Emotion based Melody Harmonizer for Piano Music. Proceedings of the The Second International Conference on Technology for Education (T4E'10) IIT Bombay, Mumbai.
The developer is very thankful to the jMusic research group for thier wonderful piece of work.

AI Bass Mutations

This series of software and music albums by Frank Ni and available on iTunes and elsewhere, were written with jMusic.

iTunes screen shot

The Elevated Pitch project started by John Reddin at Trinity College and also worked on by James McDermott, uses genetic algorithms with aesthetic selection to modify generative grammars that  produce simple meody and accompaniment music suitable as Elevator Music. They have an applications that can can be downloaded for you to generate music and then select the one you prefer. The project uses jMusic as a music engine.

Elevated Pitch screenshot


The Impro-visor program by Bob Keller and his students, generates jazz solo's over a provided chord progression. The solos and displayed on a stave and can be played back with appropriate swing feel and a "built-in" rhythm section. The program is quite fully featured and there is a Yahoo! group set up for discussion and dissemination of the program.

It is great to see research efforts like jMusic assisting other research efforts.

Here is an example page and a tutorial and below is a screen shot.
Impro-visor screenshot
Download the application and get the source code here.


CodeSounding is a Java sonification library built using jMusic. With it you can produce computer-generated music from your source code. The sonification process consists of a post-processing operation on source files, which adds callback methods on "if", "for", and other statements, in a process that is called token stream rewriting. Callbacks are structured around the Template design pattern so the real sonification algorithm is interchangeable and configured at runtime. Sonification is therefore based not on the static source code structure but on the dynamic behaviour during code execution.

Code parsing in CodeSounding has been developed using the ANTLR parser, and music is generated using the ABC language/notation (see Guido Gonzato's and Chris Walshaw's sites) with either the jMusic library or the JACK audio server for audio rendering. There is a YouTube video demonstration availible here.

Red Wine Music

Red Wine Music is a Web-based music composition environment for people who want to create music through computer interaction and learn the basics of enology (winemaking).

It is intended for all computer users regardless of age and professional background. It is a software program that promotes deterministic, algorithmic music composition and is an alternative to proprietary software tools in the same domain.

RWM is a project initiated by Malisa Santigul with programming help from Somkiat Puisungnoen and Praween Kuvanonda of Infomania Thailand. It is written in Java with the integration of jMusic. RWM is free and does not require any download or installation. It is compliant with most Web browsers.

A musical exmaple generated by RWM.

Perfect Ear: the aural training companion

This program was developed for by Suzanne Morton for her final year of Computing at Imperial College London. It aims to provide music students with a tool to practise aural skills without the help of a teacher. It covers simple interval, cadence, time signature and chord position recognition. It has rhythm exercises where the user plays the rhythm back on the keyboard and an incorrect note test where a user listens to a phrase and corrects the score. A terminology quiz is included to test knowledge of Italian musical terms. The program can randomly generate an 8 chord musical phrase each time it is needed.

Perfect ear screen shot


jMusic has a wrapper for the Processing environment called jm-Etude written by Daniel Dihardja. This allows some of the jMusic functionality to be used within Processing which is an environment designed for generative visual art.

Here are some news items about jm-Etude.    (13 june 2006)

Melody Generation using genetic algorithms

Participate in the aesthetic selection of melodies to help the research of Mr. Lo Man Yat at the Univerity of Essex in the UK, or simply listen back to the melodies generated with his application using jMusic. Here is the site.

MIDI to Text converter

The Midi2Text program creates a text file from the data in a MIDI file. Each note's start time, pitch, duration and dynamics are stored in atab-delimited text file. The text file can then be read into other applications, such as a spreadsheet, for data analysis or further processing.

The Midi2Text program was written to assist statistical analysis of music by Andrew R. Brown.

screen shot

Download the application and get the source code here.

Music Histogram

A program by Andrew R. Brown that shows graphical views of the data from a MIDI file. The program will show pitch, duration, dynamic, and pan statistics.
Pitch Histogram View

Download a copy now, or see the source code.

Autonamous Monk

This application is a collection of Java programs by Paul Reiners that convert cellular automata into melodies.

CA monk     CA visual example
Vist the application's  web site to download and read the article at IBM on the software.

MIDI Messer

This application messes with MIDI files. Open a file, choose the type of process to apply and an input value, listen to the change, then save the modified MIDI file. Created by Andrew Brown, this application exposes some of jMusic's Mod class methods with an easy to use interface.

MIDI Messer screen shot
Download the application and/or the source.


Jscore is a program that uses JMusic and JLex (lexical analyzer generator) to convert a XML-based score into a MIDI file. Source code and instructions (in Italian) are at the site. JScore was written by Roberto Bertaccini.



This application, written by Andrew R. Brown, allows the user to composer music made up of cyclic patterns. Musical attributes can be treated separately and cycled in or out of phase. A number of parts can be overlaid to form a complex texture.

NIAM is an acronym for N Is After M, in homage the the conceptual debt that this program owes to David Zicarelli's M software on the Macintosh.

Download the application or the source code. Here is an older version that uses QuickTime rather than JavaSound for playback.

Phrase Analysis

This application, written by Adam Kirby, does statistical analysis on a jMusic phrase. It reads phrases as saved in MIDI files or jm score files. The appropriate key and mode can be selected so that stats on melodies in different keys can be compared. The results for individual files can be viewed in the application, or all currently analysed melodies can be exported to a tab delimited text file for viewing in a spreadsheets or other stats package.

Details of the feature analysis can be found in the jMusic documentation for this class (and supporting classes) or in published papers on the research which used this application.

The supporting classes (in the jm/tools/) directory may be useful for the construction of other analysis applications built in jMusic. Thanks Adam!

Music Theory Environment

This program, written by Jerry K, provides a computer environment which facilitates the finding of musical patterns and relationships between chords, scales, intervals, keys.

Check it out at:

Melodic Extension

This application, written by Andrew Brown and Adam Kirby, allows a user to write a melody on the top stave and for the computer to suggest a possible extension to the melody on the lower stave. This is designed to provide support and inspiration to those learning the art of melody writing. The application provides suggestions based on statistical analysis of many 'classical' melodies and various genetic algorithm (GA) processes to select 'good' suggestions. Significant conceptual assistance was provided by Michael Towsey. Read about the research surrounding this in our published papers.

LEMu (Live Electronic Music)

(50% size)

This application, written by Rene Wooller, Nick Coleman and Andrew Brown, generates music which is played back via MIDI in real time. LEMu is designed for live performance where the operator makes changes to the intensity and mix of drum, bass, chordal, and lead parts. It has been common in LEMu performances for other live players to play along as well.

LEMu is based on generating short (1 - 4 beat) scores which are looped for playback and updated each time the 'compose' button is clicked. The generative processes by which the music is created were designed by Rene and Nick who are undergraduate music students at QUT and created this application after just 8 months of jMusic/Java study.

Hear examples of LEMu performances on the music page. Vist Rene's LEMu web site for the latest developments.

Band Machine

A automatic music generator - not unlike Band-In-A-Box - written by Andrew Troedson. See the scource code and explanation in the Band Machine tutorial.

Supported by the following organisations:

Exploding Art

SourceForge Logo