Java Sound & Music Software for Linux, Part 3

With this installment I complete my survey of Java-based sound and music applications that run under Linux. Again I've focused mainly on production software.

MIDI And Java

The Java Sound API contains strong support for MIDI, but I was surprised to find no full-size MIDI sequencers written for Java. Happily, JavaSound's MIDI capabilities are well-exploited by a variety of applications.

JSynthLib

If you own a MIDI hardware synthesizer you may have discovered that editing and storing new sounds can be a cumbersome task when performed from the synthesizer itself. In the late 1980s a flourishing market existed for software that could control remotely the editing process for a MIDI-enabled synth. At first these programs were written only for specific machines (e.g. a Roland D50) or a family of machines (e.g. the Yamaha DX/TX series), but later development tended towards the so-called universal synth editor/librarian that could ostensibly edit and store sound patches for any synthesizer.

Figure 1: JSynthLib

The JSynthLib (Figure 1) project aims to provide a universal synth editor for all Java-savvy platforms. At this point the public release supports almost forty synthesizers, though that support varies in depth. Some machines (like my Yamaha TX802 and Kawai K4r) enjoy complete support for all their features, while others have only partial support. Alas, the last public release was three years ago, and while JSynthLib remains useful it could certainly use some helping hands to put it on-track for expanded support for more machines and to complete support for feature sets on the synths already supported by the program.

Music Instruction

Bob Keller's Impro-Visor is an "improvisation advisor", i.e. it's a program that helps an improviser learn how to play over arbitrarily complex chord progressions. There's really nothing quite like Impro-Visor: It's not primarily an accompaniment generator a la Band In A Box, nor is it a mere software version of Music Minus One, though it is capable of functioning in those roles. It assists the musician with harmonic analysis and suggests possible routes for the improvisation to take through the chord changes. Its name reflects its intent, it advises the player regarding optimal note choices available and will generate a variety of possible takes for the soloist to consider. Impro-Visor is truly unique software, highly recommended to anyone learning the tangled ropes of the art of the musical improvisor.

Figure 2: Guitar Codex Plus

The needs of budding Linux guitar heroes and heroines are well-served by some helpful Java music software. Guitar Codex Plus (Figure 2) is for guitarists who want to learn more about chords and scales as they are played on the instrument. It can be used as a chord dictionary, a chord/scale display generator, an arpeggio finder, and more. The program represents these elements in common guitar tablature and realizes them via MIDI, so the player can hear every example and alter tempo, key, and even instrumentation as desired. The Guitar Scale Assistant is a similar program with an excellent display and more than 600 scales for instant representation in the fingerboard view.

Figure 3: TuxGuitar

TuxGuitar (Figure 3) is advertised as a "multitrack tablature editor and player". Tablature is an instrument-specific form of music notation, but unlike standard Western notation tablature (better known simply as tab) is non-abstract, i.e., it is in effect a kind of map that indicates where the fingers should go. Tab's immediacy has great appeal to beginners, and a vast assortment of pieces in tab is available on the Web. TuxGuitar supports the popular GuitarPro and PowerTab tab formats, both of which add many features to the basic tab seen most frequently in the Web repositories.

Music Notation

Java's graphics capabilities are sufficiently refined to display the variety of signs and symbols required by standard Western music notation. The JMSL environment includes a standard score entry module for composers who wish to work in Ye Olden Ways, and a notation interface is also supported by the JMusic environment.

Figure 4: jEdit with the LilyPondTool plugin

jEdit is a popular text editor for Java. Though primarily designed for programmers, jEdit has many attractions for the normal non-programming user, including a plugin architecture to expand jEdit's already-impressive capabilities. Bertalan Fodor's LilyPondTool (Figure 4) is one such plugin that adds a complete environment to jEdit for creating, editing, viewing, and printing scores in the superb LilyPond music typesetting language. The jEdit/LilyPondTool combo is true powerhouse for LilyPond users looking for an all-in-one score production environment, and I consider it highly recommended software for the compleat Linux music studio.

Skink is a Java-based GUI front-end for the abc music notation software. I've written about Skink in a previous article, so I won't rehash that material here. It suffices to say that, like the LilyPondTool, Skink brings together the components needed for a complete system to edit, display and render abc music notation files, putting all the needed tools into one container.

I must also mention abc4j, a library written "... for music notation in general and abc notation in particular". The project is relatively new, but it may be of particular interest to programmers working with standard notation displays in Java.

Java Drum Machines/Rhythm Programmers

Three programs caught my attention in my search for Java percussion/rhythm software. Ollie Glass's Breakage resembles a typical software drum machine complete with step-sequencer/pattern editor, samples browser/loader, and the expected transport controls. However, Breakage adds humanization and swing controls, probabilistic pattern morphing, and a neural network accompaniment trainer. Definitely not a typical drum machine. MuSing evolves rhythm patterns and loops from existing beat sets. The program's GUI is a bit unusual, but as I wrote in a previous review of MuSing I found that the interface is easy to learn and use. Patterns (audio or MIDI) are loaded into the program, and a single click generates musical variations. The orDrumbox presents the familiar pattern-based GUI (Figure 5) along with some handy tools for randomizing and otherwise modulating your basic material. The program is designed for experimentation and fast results, and I must confess that I did not want to stop playing with orDrumbox and its controls.

Figure 5: orDrumbox

The Java DAW

Perhaps the limitations of the Java Sound API have discouraged developers from creating the Java digital audio workstation (DAW), but fortunately it hasn't stopped some of them from trying.

XO Wave is designed to function more as a high-quality mastering suite than a DAW, but it can certainly serve duty as a principal hard-disk recording system. Its design biases favor CD mastering and podcast preparation, the program supports multitrack audio recording and editing, and its audio engine gets its gas from the PortAudio API. Hence, XOWave also supports JACK, if your build of PortAudio includes JACK.

Figure 6: Frinika

Frinika is an audio/MIDI sequencer with a variety of interfaces for music composition, including a piano-roll display (Figure 6), a tracker-style composer, and a standard music notation view. It also includes support for JACK via the JJack system (see Part 1 of this series). I was unable to test its JACK support, but the system falls back to the standard Java Sound API for its audio and MIDI I/O capabilities. When I played a demonstration file with the program's default settings the playback was choppy. However, the audio settings can be tuned, and there is still hope for a stable connection with JJack.

DJ Java

Only one DJ mixer is represented on the Linux DJ page at linux-sound.org, but that one program is a peach. UltraMixer is a commercial full-featured mixer for professional DJs, but a free edition is also available. Alas, the free version is not so feature-rich as the full-blown professional edition (see the UltraMixer features comparison page for the complete story). I was also unable to determine whether the program supports JACK. Perhaps a user can clarify that question ? Despite this uncertainty UltraMixer is obviously a well-designed product with a large and active user-base (the program is also available for Windows and the Mac, of course), and it is definitely worth the attention of the serious Linux DJ.

Soundfile Editors

The Java audio software armory includes some notable soundfile editors, each with some remarkable feature or features. The oddly-named AudioCutter Cinema includes unique tools for working with surround sound, Olivier Gräumann's LAoE (Layer-based Audio Editor) offers a large selection of processing modules and an unusual approach to editing, and the Eisenkraut editor enjoys the benefits of connectivity with OSC, JACK, and the SuperCollider3 audio synthesis and processing environment. Alas, development of AudioCutter and LAoE appears to have languished. Eisenkraut shows great potential with an excellent display (Figure 7) and the possibilities afforded by SuperCollider3. However, it requires a substantial number of external resources, and the benefit of its full power depends upon the user's knowledge of SuperCollider3.

Figure 7: Eisenkraut

Incidentally, Eisenkraut is not the only audio application that leverages the power of SuperCollider3 in the Java environment. Meloncillo is an assistant for composing sounds in space and for plotting their trajectories. A helpful GUI generates data sets that can be evaluated and performed by SuperCollider3 or CSound. The unreleased Scream software also uses SuperCollider3 as the audio engine for its AmbiPan and AmbiGranuSampler. Scream's screenshots look very interesting, but the project appears to have languished.

Outro

I found some applications that will open under Linux but will not perform to full capacity. For example, Balaftuna is a neat x/y controller for translating mouse movements to MIDI messages. Unfortunately its MIDI capability relies upon a component available only for Windows. The source code is open and free, but until someone re-writes the affected code the program will open but it will not function under Linux.

I hope you've enjoyed this trek through the domain of music and sound software for Java. During the research phase I discovered many applications that I had not known previously, and I now have a batch of Java audio/MIDI programs that I intend to explore more fully. I've already gone further into some of those applications, so there's a good chance that some of the programs I've presented will be reviewed more completely in future articles. Meanwhile I encourage readers to suggest their own favorites (Java-based or otherwise) for my perusal.

Next up, a review of discoDSP's new Discovery synthesizer, the first commercially available native Linux VSTi plugin.

______________________

Similis sum folio de quo ludunt venti.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

They just keep popping up...

Dave Phillips's picture

More Java sound & music software :

Mars Software - various interesting sound apps

The IBM Glass Engine - explores the music of Philip Glass

ProxyMusic - bindings to provide MusicXML interface for Java-based music notation apps

ALICE - a music composition system that learns by listening

The Shape Of Song - graphics of sound

CodeSounding - the sound of code

I missed adding Tom Erbe's original page on Java soundapps, so here it is :

Java Music Projects

For more Java sound apps see the JARS list :

JARS Multimedia Apps

The JARS list is especially helpful if you're looking for players and other utility applications.

Similis sum folio de quo ludunt venti.

CodeSounding v1.5: now with JSyn and Pure Data

robermann's picture

CodeSounding is an open source sonification framework which makes possible to hear how any existing Java program "sounds like", by assigning instruments and pitches to code statements (if, for, etc) and playing them as they are executed at runtime. In this way the flowing of execution is played as a flow of music and its rhythm changes depending on user interaction.
The precompiled Linux packages have been updated to version 1.5. They include menu links to scripts showing how to use ABC/MIDI, jjack and jMusic-based processors. Check them on the OpenSuse Build Service (http://software.opensuse.org/search?q=codesounding&baseproject=ALL&lang=...).

new javaDaw

Frank Deden's picture

Hello Dave, i have created a javaDaw which runs under Windows XP but will be ported to linux soon (i hope). The daw is completely build with java but isn't finished yet. It uses the VST plugin implementation of JVSTHost of Martin Roth and it performs well under windows xp. I can easilly run 20 plugins over 6-7 tracks.

It can be downloaded form www.midiworks.nl.

Maybe it is intreresting for your linux journal. At this moment i am not experienced in working with linux but porting javaDaw to Linux will be a good testcase.

regards Frank Deden

No software metronomes?

Anonymous's picture

I would like to suggest the inclusion of a simple free java metronome called Javtronome that can be found at www.javtronome.org. I might be accused of beating my own drum because I wrote it.

MEAPsoft and JJack update

Dave Phillips's picture

I keep finding gems:

MEAPsoft

The MEAPsoft site is a winner, with logos such Computers Doing Strange Things with Audio and Rearranging Audio Since 2005. I'm eager to test the program, it looks like cool fun.

Also, I heard from Jens Gulden that a JJack update is in the works now. I'll post any new reports.

Best,

dp

Similis sum folio de quo ludunt venti.

Java and JACK-connectable MIDI

Arnout Engelen's picture

Afaics, JJack only supports the waveform processing part of JACK, not MIDI (neither ALSA MIDI nor JACK MIDI).

I wonder which Java libraries can be used to read and/or write JACK-connectable MIDI applications in Java

jjack jack midi

Arnout Engelen's picture

I created a patch to do very basic JACK MIDI OUT though JJack. See https://lists.berlios.de/pipermail/jjack-users/2009-January/000099.html - it only wraps the Jack API (that was fairly straightforward given some assumptions), and doesn't do anything to plug into the Java Sound API (no idea how hard that would be).

and two more...

Dave Phillips's picture

jVSTwRapper is a helper for developers who want to write multi-platform VST/VSTi (and AudioUnit and LADSPA) plugins. JVstHost is a multi-platform host for VST/VSTi plugins. Again, I haven't tested these programs yet myself, and I welcome any reports and/or opinions regarding them.

Best,

dp

Similis sum folio de quo ludunt venti.

and yet one more....

Dave Phillips's picture

A member of the Linux Audio Users group asked about the possibility of converting PDF scores to MIDI. Another member responded by pointing to a link for the Java-based
Audiveris Music Scanner. According to its Web site the software is "a complete music scanner going all the way from the scanned music sheet input to the MusicXML output". I have not yet tested it, but it's high on my list now.

Best,

dp

Similis sum folio de quo ludunt venti.

Webinar
One Click, Universal Protection: Implementing Centralized Security Policies on Linux Systems

As Linux continues to play an ever increasing role in corporate data centers and institutions, ensuring the integrity and protection of these systems must be a priority. With 60% of the world's websites and an increasing share of organization's mission-critical workloads running on Linux, failing to stop malware and other advanced threats on Linux can increasingly impact an organization's reputation and bottom line.

Learn More

Sponsored by Bit9

Webinar
Linux Backup and Recovery Webinar

Most companies incorporate backup procedures for critical data, which can be restored quickly if a loss occurs. However, fewer companies are prepared for catastrophic system failures, in which they lose all data, the entire operating system, applications, settings, patches and more, reducing their system(s) to “bare metal.” After all, before data can be restored to a system, there must be a system to restore it to.

In this one hour webinar, learn how to enhance your existing backup strategies for better disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible bare-metal recovery solution for UNIX and Linux systems.

Learn More

Sponsored by Storix