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.
Practical Task Scheduling Deployment
July 20, 2016 12:00 pm CDT
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.Register Now!
- SUSE LLC's SUSE Manager
- My +1 Sword of Productivity
- Tech Tip: Really Simple HTTP Server with Python
- Managing Linux Using Puppet
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Non-Linux FOSS: Caffeine!
- Returning Values from Bash Functions
- Rogue Wave Software's Zend Server
- Doing for User Space What We Did for Kernel Space
- Parsing an RSS News Feed with a Bash Script
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide