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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.