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
202 Hack "202 Hack" is a shareware Java application which converts sequence information stored in standard MIDI files (SMF) into a format compatible with Roland MC-202ª sequences. Users have the capability to choose up to 2 MIDI channels (1-16) whose note information is extracted from the MIDI file and converted into the "internal" and/or "external" sequences of the 202. Accent and Portamento can also be coded as described below, as well as some post-processing tricks to generate "Roland TB-303ª-like" slides. The output of 202 Hack is an audio file (.wav format) which can then be played by your computer into the 202's "tape in" jack. Dan Nigrin Shareware
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
Balaftuna Balaftuna is an XY MIDI controller. You can assign to it the MIDI Event you like for the X coordinate, the MIDI Event you like for the Y coordinate, and the range for both. Shay Leon Freeware
CodeSounding Sonifies the execution of Java code based on the frequency of occurence of variaous operators. Roberto Mannai Freeware
CPS CPS is a realtime interactive programming environment for audio, MIDI and other media & I/O. Patches are build by placing
objects and making wires between them. Areas of interest are sound design, algorithmic composition, DSP, electronic/computer music and education. CPS can be used in any realtime situation where sound plays a role.
  Commercial, Windows only
Dolet 3 Dolet 3 for Finale is a plug-in for the Finale music notation program that reads and writes MusicXML 1.1 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.
Elody Elody is a music composition environment based on a visual functional language, a direct-handling user interface and Internet facilities. It is written in Java and uses the real-time MIDI services of MidiShare.
Elody allows algorithmic descriptions and transformations of musical structures and compositional processes. Its design tries to promote a creative and experimental attitude (including for the programming activity), as well as Internet users collaboration.
Working with Elody consists in building new musical expressions: musical objects as well as programs, by combining or composing other musical expressions. The user interface is based on drag&drop and visual functionalities. Each user action results in an immediate sound and graphical feedback.
Yann Orlarey, Stephane Letz, Dominique Fober  
FM Beatbox FM Beatbox is a software synthesizer inspired by Korg ER-1.  
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
javaDAW javaDAW is a Java Sequencer for playing and manipulating MIDI files. javaDAW is completely built in Java and uses the VST plugin solution of Martin Roth. This means most common VST plugins can be used. In javaDAW you may create MIDI clips and add midi notes to each clip with a click of your mouse. Assign a VST Plugin to a track and hit the play button. Frank Deden ?
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
JaWavedit I was baptized to the name of JaWavedit for being the Wave-Editor born in Java. That means that I feel at home in the Sun, an Apple, or a Window. I'm said to be cute and easy to handle. But to get o the point, I offer you: 

- loading/saving of any .wav/.au files 
- playing, looping, winding 
- display the wave in any zoom 
- change frequency, balance and volume while playing 
- handle any frequency in 8 and 16 bit 
- a fancy and functional look 
- speaking 3 languages (English, Deutsch and Francais) 
- a module concept, which allows to extend me 
- the open standard giving you the oppertunity to write your own modules 
- making me just as well a development platform for any kind of audio processing 

florian & niels PostcardWare
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
JCSelf A generator for Csound using a stochastic method. JCself is a program that generates an 'orchestra file' and a 'score file' in the Csound-format. Peter Heeren Freeware
JDSP JDSP is an audio signal processing application where the processing functions are written by you - the user. Using code written in the Java programming language, you enter the math in a text window and JDSP crunches source files and churns out hand-processed AIFF files.

This is not like editing patches in an effects box or on a synth. There are no "building blocks" of DSP functions which you route signals through. Instead, you program the low-level DSP algorithms yourself; using good old fashioned math. ;-)

Steev Coco Requires Java 1.1 or higher, QuickTime 4 or higher, and QuickTime For Java.  Currently only runs on the Mac and Windows.  Future versions will eliminate the QT requirement but won't be able to playback sounds without it.  [
(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  
nebula_m81 is a multi_platform [?] fixed implementation of the usisk system. usisk is the first multithreaded system for parallel retrieval and utilization of url data in signal processing. listening to data.  =cw4t7abs  
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
R6B_8 It s a little proggy which can only send midi message to output devices, like groove box or expanders .. the cool thing is that you can sync your external devices. The next release (coming soon) uses the client / server architecture and allows a pool of clients which are sync by a main server sequencer.  
Rocky Rocky is a sequencer for 22 tone equal temperament. Peter Blasser Freeware
Schroeder Schroeder is a sampled audio editing application for the Java platform. To use it, you need a Java 1.2 runtime, like the Sun JRE. David Veldhuizen Open Source
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. Screen shots [1] [2] [3] Christoph Lauer Sonogram is free for non commercial and research purposes.
SoundCalc It's a calculator/unit-converter which "freely and simultaneously converts between: Frequency, Note Names, MIDI Note Numbers, Wavelengths, SampleRates, FrameRates, BPM, more." Steev Coco Shareware
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
SoundSpace SoundSpace currently allows users to graphically create, edit, and save text files used by the space extensions of CSound. Space takes a series of points given as a time in seconds and tenths of seconds and Cartesian (x-y) coordinates and using a source sound file creates a file that 'moves' along these points over time. This information is read from a text file. Mark Haslam Freeware
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
Wire Wire is an addition to Java Sound 0.86 on the MS Windows platform. With Wire, Java Sound0.86 is capable of receiving and sending MIDI from and to external MIDI devices, which isn't included standard with Java Sound 0.86. However, Java Sound will be the standard package for music & MIDI on the Java 2.0 platform.  Niels Gorisse 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