JSyn - modular synthesis API for Java.
JMSL - Java Music Specification Language
PortAudio - cross platform audio I/O API for 'C'

Java Music Software - Synthesis | Composition | MIDI

If you have a music related project in Java that you would like to add then please contact us.

This list originally compiled by Tom Erbe.

name & webpage description Author/Contact other
ABC4J Parses, plays and displays scores using ABC music notation. Includes extensions for representing music using java objects, playing them using midi, and displaying them. Lionel Guéganton GNU GPL v2
AGENTBEATS AGENTBEATS is a java application used to generate progressive evolving beats or melodic sequences using interactively guided evolution of genetics based agents, engaged in some kind of artificial life simulations, representing beat-pieces; BEATAGENTS. Mikkel Bertelsen Freeware
CodeSounding Sonifies the execution of Java code based on the frequency of occurence of variaous operators. Roberto Mannai Freeware
Dolet Dolet for Finale is a plug-in for the Finale music notation program that reads and writes MusicXML files on Windows and Macintosh OS X. The plug-in is written in Java 1.4, plus some JNI code to interface with the Finale plug-in developer kit's C++ API. Michael Good Commercial, 30 day demo. Mac and Windows.
Frinika Frinika is a complete music workstation software containing sequencer, midi support, soft synthesizers, audio recorder, piano roll/tracker/notation editing and more. Running on Linux, Mac OSX and Windows and other. Written 100% in Java   GPL
Impro-Visor Impro-Visor is music notation software that assists the user in constructing jazz solos. It can also be used for lead sheets, transcription, exercises, etc. Bob Keller GPL
JFugue JFugue is a set of Java classes for music programming. It uses simple strings to represent musical data, including notes, chords, and instrument changes. JFugue also allows you to define music using patterns, and you can do interesting transformations on those patterns to come up with new musical segments that are derived from existing pieces of music. JFugue can write MIDI files. Dave Koelle freeware and open source
JamP JamP is a skinnable, pure Java MP3 player with playlists. Jens Hohl Freeware
JASS JASS (Java Audio Synthesis System) is a unit generator based audio synthesis programming environment written in pure Java. The environment is based on a foundation structure consisting of a small number of Java interfaces and abstract classes, which implement the functionality needed to create filter-graphs, or "patches". Unit generators are created by extending the abstract classes and implementing a single method. Patches are created by linking together unit generators in arbitrary complex graph structures. Patches can be rendered in real-time with special unit generators that communicate with the audio hardware, which have been implemented using the JavaSound API and through JNI for some platforms. Kees van den Doel Freeware
JavaMIDI JavaMIDI is a set of classes and a library that let you use a platform's MIDI capabilities from Java. JavaMIDI supports MIDI input and output and arbitrary-length system exclusive packets for Win32 platforms (Win95 and NT) and the Macintosh. The Mac version uses Opcode Systems' OMS. Robert Marsanyi
Java MIDI Kit The Java MIDI Kit is a set of Java classes designed to serve as the basis for platform-independent and OS-independent real-time interactive MIDI applications. The base classes may be used to build small, fixed configuration, stand-alone MIDI processing apps, or they may be used to build a MIDI-processing network server, which may be programmed and configured dynamically by a client application running on the same computer, or any computer on the same network. Michael McNabb GNU General Public License
JCsound A low-level Java driver for Csound, JCsound.Csound, and a high-level GUI shell for Csound, JCsound.CsoundManager Michael Gogins GNU General Public License
(alternate site)
jMax is a graphical programming environment for developing interactive real-time audio applications.  Free software/GNU LGPL
jMusic As a library of classes for generating and manipulating music, jMusic provides a solid framework for musical composition in Java. jMusic supports music composition with its music data structure based upon note events, and methods for working with that musical data. jMusic can read and write MIDI files, its own .jm files, and audio files. Andrew Sorensen and Andrew Brown GPL
JMSL - Java Music Specification Language JMSL is a Java API for experiments in interactive performance, composition, and intelligent instrument design. With JMSL, the composer/programmer can create stand-alone musical applications or deploy applets on the web. JMSL supports JSyn, MidiShare, MidiPort, and JavaSound.  Nick Didkovsky
Phil Burk
JSyn Real-time modular audio synthesis API for Java. JSyn has over 100 unit generators including band-limited oscillators, envelopes, filters, effects, etc. JSyn is open source on GitHub. Phil Burk Apache License V2
jVSTwRapper Write VST style plugins in Java. Wrap them with this tool and use them with your favorite host music application. Also support AU and LADSPA hosts across multiple platforms without recompiling. Daniel Freeware
KangaSound Editot Sound editor with support for editing of harmonic and enharmonic partials. KangaSound Freeware
LAoE LAoE means "Layer-based AudiO Editor" and it is an audiosample-editor suitable for manipulate sound, such as filtering, retouching, resampling, and effects, like reverb, echo, compress, expand, pitch-shift, time-stretch, and much more...  olivier gäumann  
Liquid Notes "The songwriting assistant that offers a controllable range of alternatives for chords and harmonies in a MIDI arrangement." Re-Compose Commercial
MidiChat MidiChat makes it possible to send and receive MIDI in realtime and chat with people around the world, using internet. The idea was born in the context of the Distributed Sound Lab. MidiChat is developed and programmed by Niels Gorisse. 
MidiChat starts with logging into a server, on which you can meet other users. After you have logged in into a channel and started MIDI, everything you play will be sent to everybody in the channel. Also, you receive MIDI which is sent by everyone in the channel. This way you can perform together in realtime with MIDI. You can also communicate with each other by typing text, just like regular IRC. .
Niels Gorisse Freeware
MidiFork Experimental controller for QuickTime musical instruments Ryan Francesconi Freeware, OS X, Windows
MIDIShare/Java The MidiShare/Java package is a set of Java classes which give access to most of MidiShare functions. It allows to develop Midi applications and Midi applets which can be embeded in Web pages. Midi applets/applications will be able to send and receive Midi events, schedules tasks and communicate in real-time with other Java Midi applets/applications or with non-Java MidiShare applications. Stéphane LETZ Freeware
MuSing MuSing is a beat generation program designed to produce striking, purely original rhythms. MuSing uses the powers of evolution to grow families of beats; you choose the best in the family to spawn a new generation. Everything you create is entirely original - there are no prefabricated beats or patterns! Brian Risk  
NoSuch MIDI NoSuch MIDI is a set of Java classes and native methods for doing MIDI on win32 systems. It is capable of MIDI device input, systemexclusives, realtime scheduling of output, and reading/writing of Standard MIDI Files. Tim Thompson Free for non-commercial use
Opus+ Opus+ creates musical compositions using an algorithm called Constrained Random Generation (CRG). It outputs Lilypond files for printing scores and MIDI files. Opus+ is open source and licensed under GPL3. Adrian Marriott and others. Free for non-commercial use
Skink Skink edits, displays and plays music notation (and will export MIDI) based on abc, which is an ascii based music notation system that has more than 20K tunes available. Wil Macaulay Freeware
Sonogram Sonogram is an in many forms configurable sound analysis tool. It analyses sound and speech signals with the methods of the "Fourier Tranformation" (FFT), "Linear Prediction Analyse" (LPC), "Cepstrum Analyse", Autocorrelation and the "Wavelet transformation". It was able to open the most common audio and video file formats and is written in Java2, so it should run on any platform where Java2 is available. Sonograms main goal is to be a little speech recognizer, which will be perhaps implemented next time. Christoph Lauer Sonogram is free for non commercial and research purposes.
SoniKWURM Desktop 3D Sound Rendering incorporating a Java GUI and a C processing engine Gary Kendall Freeware
SoundHelix Algorithmic music generator. Plays using JavaSound MIDI. Thomas Schuerger GPL
SoundHackJava Soundfile filtering and utilities; a Java port of the Macintosh application. Tom Erbe
Sean Rooney
tritonus tritonus is an implementation of the JavaSound API. It is currently based on JavaSound 0.86. What you see here is a very rudimentary implementation for Linux i386, but it is intended to implement the full API and to support different platforms.  Matthias Pfisterer GNU LGPL
WireProvider Based on the "Wire" by Niels Gorisse I wrote the "WireProvider". WireProvider is an implementation of seamless Midi-I/O using the extension mechanism of JavaSound. Just copy a DLL and a JAR and you get working(!) MIDI-Ports under Windows (tested under Win98 and Win2000). Gerrit Gehnen GNU LGPL