Upbeat about Updates
More noteworthy items from the Linux audio world, including news about some long-awaited releases.
MusE has had an uneven development history. The project first took shape as an audio/MIDI sequencer with notation capabilities until Werner Schweer (MusE's original designer) extracted the notation parts and turned them into the excellent MuseScore (MScore). Alas, directed work on MusE slowed for a while, but now we have a revived and revivified MusE 1.0 rc2 (Figure 1). As the rc2 indicates, this version is the second release candidate, so if no further egregious bugs or annoyances are found, this version will serve as the 1.0 public release. The MusE developers encourage users to stress test this candidate as hard as possible.
MusE follows a fairly typical design for a modern audio/MIDI sequencer. Its Linux-specific features include support for the ALSA and JACK audio/MIDI systems (including the recent JackMIDI), LADSPA and other plugin architectures, and the LASH session handler. As Figure 1 illustrates, audio data is represented by amplitude waveform displays, while MIDI data is ordered in a common piano-roll display. Multichannel I/O is supported for audio and MIDI streams, and device synchronization can be handled with JACK, MIDI clock or MMC (MIDI Machine Control) messages.
Unfortunately, an in-depth review will have to wait. Meanwhile, the release candidate is ready for testers, so visit the Web site, download and install the package, then put it under some stress. And, be sure to file your reports to the developers; you'll sleep better knowing you've done the right thing.
The latest release of James McCartney's SuperCollider3 is luring me back into the fold. Version 3.3 is filled with new features and bug fixes, but its strongest attraction for me is its use of the SwingOSC software to provide a graphics component common to all SuperCollider-friendly platforms. This development is a work-in-progress with the eventual goal of supporting widget sets currently available only to Mac users, and when that goal is reached, it should be possible to run graphics-enabled SuperCollider code on any supported platform.
Figure 2 shows an example GUI project with sliders for controlling the reverb, resonance and volume of a synthesizer design. The interface is built from Java graphics primitives and wears the familiar GTK look and feel (well, it's what Java thinks is a GTK look and feel). Communications between the GUI and the synthesizer is handled by OSC messages, and the audio output is immediately responsive to the slider movements. It's all very cool stuff, especially when one considers the large body of SuperCollider3 code that includes integral GUIs. And, I hope to see full support for more widget sets, such as the excellent ixiQuarks, a set of GUI components designed for live coding and other improvisational audio work.
Other neat features include coding environment enhancements for emacs and vi/vim, MIDI I/O, better support for 64-bit environments and some new and/or improved ugens (SC3-speak for unit generators). For the complete list of improvements in SuperCollider3, see the Changelog in the source code's build directory.
Speaking of source code, I built version 3.3 on an OpenSUSE 10.2 system with no troubles. SuperCollider3 utilizes the scons build system, so I simply ran this command to compile the program :
scons QUARKS=1 PREFIX=/home/dlphilp/
Quarks are addons that provide a wide range of audio and graphics functions; you definitely want the build to include the quarks. The PREFIX has been set to my local home, although, of course, you can install SuperCollider anywhere you prefer. However, be sure you read the documentation regarding expected paths and locations, or you may find yourself with a complete but non-working installation.
If you prefer a binary installation, you can download DEB and RPM packages from the SuperCollider3 Web site, or check your distribution's software repositories to see if they've updated to the latest and greatest version.
I set up emacs to recognize and support SuperCollider code, established my JACK and SwingOSC settings in ~/.sclang.sc, opened a test file, evaluated it and got the results shown in Figure 2. Alas, I wasn't always so fortunate, and there still are many SC3 projects that don't run so easily in Linux. However, I'll cheerfully admit that I'm still learning how to use SuperCollider, and the remaining difficulties may well be due to this problematic user. There are a lot of neat features to explore in this release, so if you've considered getting into SuperCollider3, now is the time.
The simple appearance of Olivier Guilyardi's Jackbeat (Figure 3) might deceive you. It seems to be a small-scale rhythm programmer, when, in fact, it's a powerful pattern sequencer. As its name implies, the program relies on JACK for its audio engine, but it also supports PortAudio, ALSA and CoreAudio (on OS X). Using Jackbeat is essentially the same as using a typical software drum machine, with the added attaction of full JACK transport capability. Thanks to that feature, Jackbeat can be used either as a standalone virtual rhythm box, or it can be integrated into a complex environment of other JACK-savvy and/or OSC-aware applications.
Jackbeat requires a contemporary Linux distribution to meet its dependencies, but most modern systems should compile the program without complaint. However, if you've replaced JACK with your own build, be aware that Jackbeat's build process may fail at the linking stage with an error message about a missing libjack.la. Apparently, the waf build manager doesn't install (or even build?) the static components needed by the public Jackbeat source package. I'm happy to report that Olivier Guilyardi has fixed the problem in the latest SVN code, and I was able to compile and install Jackbeat 0.7.1 on my 64 Studio 3 beta box.
As advertised, the program is very easy to use. Soundfiles are loaded into tracks, and the track boxes are checked (or not) to create a rhythm. Click the Play transport control, and the beat goes on with rock-steady performance. If you need a lightweight rhythm machine or soundfile sequencer, Jackbeat is definitely recommended for your Linux audio arsenal.
Composers who write music in just intonation often are dissatisfied with the bias toward 12-tone equal temperament shown in most modern sequencers. Rising to the challenge, developer Chuckk Hubbard mixed together some Python, some wxWidgets bindings and a few hooks into the Csound API to create Rationale (Figure 4), a unique Csound-based audio sequencer for research and composition in just intonation.
Figure 4 shows Rationale's use of ratios to represent justly tuned pitch sequences. This notation describes the ratio difference between the selected pitch level and the 1/1 baseline pitch referent. Ratio notation is preferred by many composers working with just intonation.
The Rationale Web site has complete instructions for downloading, building and configuring the program. Its dependencies are lightweight, and I had no problems compiling Rationale from its source code. However, I received this show-stopping error message when I first started the program :
dlphilp@64studio:~/rationale-0.2$ python rationale.py Traceback (most recent call last): File "rationale.py", line 40, in
import csnd File "/usr/local/lib/python2.5/site-packages/csnd.py", line 7, in import _csnd ImportError: dynamic module does not define init function (init_csnd)
I found the fix on the Csound mail list, thanks to composer/developer Victor Lazzarini. The csnd.py module wasn't finding the _csnd.so object, and the solution was a simple PATH export :
I added that line to my $HOME/.bashrc file, refreshed the bash shell (. .bashrc), and Rationale started without complaint. From that point, I experimented with the program, studied the useful docs and had a lot of fun.
Making music in just intonation imposes certain constraints on chord progressions and harmony, but the purity of justly tuned intervals has attracted the interest of many composers, particularly the more experimental-minded ones. Famous names in this field of endeavor include Harry Partch, LaMonte Young, Lou Harrison and Terry Riley. Thanks to Chuckk's software, you too may be able to join that exalted company, or if you've ever simply wondered what's the big deal about just intonation, you can fire up Rationale and find out for yourself.
A note to developers and users of LV2 plugins: Dave Robillard has updated his SLV2 (Simple LV2) library to version 0.6.4. The Changelog for this release indicates that its urgency is rated low. There's no need to rush to install this version, but it might be a good idea to stay up to date with Dave's latest new features and bug fixes. By the way, if you decide to build the new SLV2, you will need to update the Waf build manager to version 1.5.6.
I love UNIX-style command-line programs and utilities. They're typically lightweight, have no GUI and work incredibly fast. However, the downside is that they also can be so packed with powerful options that usage can be rather complicated, even with man pages and other on-line help.
Midish is one of those utilities that finds a balance between power and usability. Its Web page describes the program as
... a MIDI sequencer/filter driven by a command-line interpreter (like a shell). Once midish [is] started, the interpreter prompts for commands. Then, it can be used to configure MIDI devices, create tracks, define channel/controller mappings, route events from one device to another, play/record a song and so on.
A look at the midish manual clarifies the extent of this little program's abilities. Again, stealing from the its Web page, here's the laundry list of midish's notable features :
- Real-time MIDI filtering/routing (controller mapping, keyboard splitting and so on).
- Track record (with optional metronome).
- Track editing (insert, copy, delete and so on).
- Progressive track quantization.
- Handles multiple MIDI devices.
- Synchronization to external MIDI devices.
- Import/export standard MIDI files.
- Tempo and time-signature changes.
- Handles system-exclusive messages.
The last-listed feature is of special interest to users who need to automate patch parameter changes within a MIDI data stream. Not all MIDI software supports sys-ex messages, so midish may well be your salvation if you need a reliable way to send bulk dumps or individual parameter updates to an external synthesizer or other MIDI device.
Midish can be incorporated easily into scripts for controlling your MIDI devices during live shows and other real-time applications. It also can be used for non-real-time purposes, although its true purposes appear to be in the fields of live performance and recording. Alas, I've no time to explore midish further, so I'll just recommend it to my readers and let them discover its extensive capabilities. And, if you're already working with a Linux MIDI setup, you should try midish to see what it can do for your studio. Midish is proof that sometimes big things do arrive in small packages.
On April 23 Jörn Nettingsmeier sent a message to the LA* mail lists to announce the availability of video footage from the 7th annual Linux Audio Conference held this year at La Casa della Musica in Parma, Italy. In my last article, I mentioned that the videos are now on-line and are of excellent quality. Since then, the organizers have added more relevant material for all presentations, so with this wealth of documentation I decided to become a virtual attendee of LAC2009.
The complete set of materials for each presentation is on-line at the page titled Linux Audio Conference 2009 - Slides, Papers, And More. The "And More" part is of particular interest to the virtual visitor, as it refers to the wonderful videos produced by the A/V team. I must emphasize the superb job done with these videos. They are not merely cropped versions of the original streams; they've been edited for crossfades, title sequences and other niceties associated with desktop video creation. High marks go to the production team for the superb results.
I baked a couple of excellent pizzas to lend some Italian flavor to the experience, but alas, I had to do without the Lambrusco and prosciutto parmeggiano. Nevertheless, I had a fine time and learned many new things. Deep gratitude goes out to Frank Neumann, Jörn Nettingsmeier, Marije Baalman, Robin Gareus, the staff of La Casa della Musica, and most of all, to the master of ceremonies Fons Adriaensen. Well done, sir, well done. The future of Linux audio is full of exciting projects carried on by a most talented and imaginative crew of developers. If you doubt it, take the time (anytime, anywhere) to attend LAC2009.
Once again I hope you've enjoyed this report. I know that I promised a build HOWTO, and it is under construction so stay tuned.
By the way, I'm happy to see that OSC is becoming more popular (developer Nick Copeland may add OSC support to his Bristol synth, mentioned in my previous article) and I hope that more audio software developers utilize it in their work.
This article is dedicated to the memory of my friend Fred Kwis who passed away recently after a lengthy battle with the effects of Parkinson's disease. Fredy was only a year older than me, and we had been friends since childhood. He was a life-long musician and like an older brother to me. RIP, my friend, I know your spirit is still rockin' the heavenly house.
Similis sum folio de quo ludunt venti.
|diff -u: What's New in Kernel Development||Sep 04, 2015|
|Android Candy: Copay—the Next-Generation Bitcoin Wallet||Sep 03, 2015|
|The True Internet of Things||Sep 02, 2015|
|September 2015 Issue of Linux Journal: HOW-TOs||Sep 01, 2015|
|September 2015 Video Preview||Sep 01, 2015|
|Using tshark to Watch and Inspect Network Traffic||Aug 31, 2015|
- diff -u: What's New in Kernel Development
- Problems with Ubuntu's Software Center and How Canonical Plans to Fix Them
- Using tshark to Watch and Inspect Network Traffic
- September 2015 Issue of Linux Journal: HOW-TOs
- Firefox Security Exploit Targets Linux Users and Web Developers
- Android Candy: Copay—the Next-Generation Bitcoin Wallet
- The True Internet of Things
- Concerning Containers' Connections: on Docker Networking
- Doing Astronomy with Python
- My Network Go-Bag