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.
Similis sum folio de quo ludunt venti.
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- Designing Electronics with Linux
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Dynamic DNS—an Object Lesson in Problem Solving
- Using Salt Stack and Vagrant for Drupal Development
- Build a Skype Server for Your Home Phone System
- New Products
- Why Python?
- Validate an E-Mail Address with PHP, the Right Way
- A Topic for Discussion - Open Source Feature-Richness?
- Tech Tip: Really Simple HTTP Server with Python
22 min 19 sec ago
- Reply to comment | Linux Journal
30 min 20 sec ago
- Understanding the Linux Kernel
2 hours 45 min ago
5 hours 14 min ago
- Kernel Problem
15 hours 17 min ago
- BASH script to log IPs on public web server
19 hours 44 min ago
23 hours 20 min ago
- Reply to comment | Linux Journal
23 hours 52 min ago
- All the articles you talked
1 day 2 hours ago
- All the articles you talked
1 day 2 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?