News And A Review: LAC2007 & Rosegarden 1.5
The news: The annual Linux Audio Conference is now underway at the Technischen Universität Berlin. Alas, I won't be there, but I can still enjoy the presentations through IRC, audio, and video feeds. Check the conference wiki's LAC2007 Live Streaming page for access details. For more information regarding the conference see the LAC2007 general information page. [As of March 24 there is an alternate site.] This is the Linux audio community's event of the season, so feel free to visit, whether or not you're actually in Berlin.
The review: The developers at 64Studio recently announced the release of version 1.2 of my favorite audio-optimized Linux distribution. Among its many additions and improvements this update brings Rosegarden 1.5 to the 64-bit desktop studio. It's been quite a while since I considered the program in detail (I profiled a much earlier version in my Book Of Linux Music And Sound), so I decided the time had come for me to spend some quality time with the latest Rosegarden.
Basic use of Rosegarden is well-covered in hard-copy and Web-based materials (see the Rosegarden entry at Wikipedia for a succinct introduction to the program and its history). The following profile presents the results from a series of tests focusing on these capabilities :
- Combined audio/MIDI sequencing
- General MIDI configuration
- Plugin support
- Music notation
I'll describe each test in some detail, but these projects assume familiarity with Rosegarden basics and its terminology (i.e. segment, studio, matrix, et cetera). Links to soundfiles and scores are provided where applicable.
The Brief Intro
Rosegarden combines a track-oriented audio/MIDI sequencer with a standard music notation editor to provide a feature-rich "all-in-one" solution for Linux music-makers. The program supports various components of the modern Linux music studio, such as the JACK audio server, LADSPA and DSSI processing and synthesis plugins, and advanced features of the ALSA MIDI system such as multiplexed I/O and syncronization with external programs and devices via MIDI clock, MIDI Machine Control (MMC), and MIDI Time Code (MTC). Rosegarden can also act as the JACK transport control master or slave.
Rosegarden is used by notation-based composers as a primary composition interface and as a GUI front-end for producing scores intended for a variety of output targets. A score can be saved as a PostScript or PDF file and printed directly from Rosegarden, or it may be exported in LilyPond, Mup, or MusicXML format for further editing and rendering. MIDI data can also be exported as a standard MIDI file or in Csound ordered score format.
Many popular sequencers include a function to stretch or contract the length of an audio or MIDI segment without altering its pitch. This function underlies the beat-matching tools that have become mainstays of modern computer-based music composition and audio editing. Programs such as Cubase and Ableton Live exploit time-compression/expansion and pitch-shifting in neat ways that allow users to match sound segments precisely in duration and key. Time-stretching is also a rather tricky to implement well. Beyond a certain length the expansion or contraction creates undesirable audio artifacts, and a great lot of complex math goes on behind the scenes to produce musically acceptable results. Extreme stretching can be used for interesting effect, but more typically musical use employs time stretching and pitch shifting conservatively.
I began my first test by opening a new Rosegarden project that I named and saved as "kung-funk". I defined track 1 as an audio track (Audio #1), then I used the Audio File Manager to load a simple drum loop into the track. The loop had been played at 120 bpm, so I set Rosegarden's tempo to 120 bpm. I assigned track 2 to the General MIDI Device (QSynth here) and added a part for the GM Slap Bass 1. I defined two more tracks as audio tracks, recorded two rhythm guitar parts (one strummed, one riffing) into them, and employed my external soundfile editor of choice (ReZound for these tests) to edit my recordings where necessary.
I opened yet another audio track for another loop, one I made using sounds created in the PSIndustrializer physical modeling synthesizer. The loop tempo and duration did not match the drum loop (it was almost twice as long), but with the help of Rosegarden's new Segment Stretch/Squash (Figure 2) tool I matched the loop lengths exactly. Stretch/Squash can rescale a segment by seconds/milliseconds, measures/beats, units, and musical note value (whole-note, half-note, etc). Sound quality after matching is good to excellent, depending on the length and quality of the original soundfile. Remember, even with perfect files excessive rescaling can create sonic artifacts that cannot be successfully filtered or otherwise minimized.
By the way, filling a track is easy. The track manager can be set to repeat a segment for the length of the composition, or you can simply copy & paste segments. You can also instruct Rosegarden to turn your repeated segments into real copies that can be deleted or further edited as necessary.
Figure 1 shows off the completed project. You can hear the audible results in my kung-funk OGG file.
I was favorably impressed with the Stretch/Squash tool, and I intend to do more work with it. I'd like to see a "segment match" option that would automatically match selected segments, and it would be cool to add an optional integrated pitch-shifter, but the function is effective as-is.
The only other laments I could make about Rosegarden thus far had to do with updating waveform displays after external editing (not likely to change in the near future) and with the fixed vertical size of a track (likely to be implemented in a future release). The resizability of individual tracks (a la Ardour2) would certainly facilitate the visual placement and syncronization of MIDI events with waveforms.
Rosegarden began its existence as a MIDI-only sequencer, and the program can still be used that way. As might be expected, it's picked up some improvements over the past fourteen years. Rosegarden's MIDI editing capabilities include the standard tools for freely cutting, copying, and pasting data at the track level (Track view), at the measure level (Matrix view), and at the event level (Matrix and Event List views). Some tools are unique to a specific level, such as the conversion utilities in the Matrix editor's Adjust menu. These conversions include routines for MIDI data inversion, retrograde ordering, and retrograde inversion, very handy composition amenities based on routines familiar to counterpoint students.
Many years ago I transcribed Stefan Wolpe's "Form For Piano" from the notated score to a standard MIDI file. It's a fantastic exciting piece, with elaborate rhythms and counterpoint, a broad range of pitch and dynamic effects, and many meter and tempo changes. It is also an excellent test of a MIDI sequencer's timing resolution, so I loaded the MIDI file into Rosegarden, connected its single track to an instance of QSynth (with GM soundfont), and clicked the transport Play button. Playback was perfect, with no dropped notes and no timing errors. Figure 3 displays a few measures in the MIDI Matrix editor (aka piano-roll display), form.ogg is a soundfile of Rosegarden's performance.
My second MIDI playback test played a medium-sized orchestral medley of show tunes and movie themes. Though not so finely wrought musically as "Form" the medley is lengthy (200 measures, approximately 7'30" playing time) with a relatively rich texture (twenty instruments) and many changes of tempo and dynamics. Again, Rosegarden performed perfectly, with no drop-outs or other discontinuities. Figure 4 shows off the track view for this piece.
Figure 4 also displays the MIDI Device Manager panel. Rosegarden defines MIDI output device types as General MIDI, External, Output System, and Softsynth. MIDI input devices are identified only as Hardware Input (whether or not actually hardware) and Input System. System I/O devices are normally eternal softsynths such as QSynth, while the Softsynth type refers to Rosegarden's internal software synthesizers. Devices may be freely reconnected: for example, Rosegarden's GM device defaults to the hardware interface on my PCI128 soundcard, but I prefer to reconnect it to QSynth. After that change, any tracks connected to the GM device will be sending their MIDI data to QSynth.
Plugin Effects And Softsynths
All modern audio/MIDI sequencers support synthesis and processing plugins. Like most Linux audio software Rosegarden supports the LADSPA audio processor plugins, but it also supports DSSI softsynths and VST/VSTi plugins (with special consideration; see below). Alas, 64Studio's basic Rosegarden package includes only one DSSI synth, but it's Sean Bolton's excellent WhySynth. For more sonic variety I also installed Sean's Hexter, a neat DX7 emulator.
I started my next test project with a MIDI track segment of a single note spanning two measures in 4/4 time with a tempo of 110 bpm. I connected the track to the Lush Bells instrument from an instance of WhySynth (selected in the Track Parameters panel) and inserted the Fractionally Addressed Delay LADSPA plugin to add an unsync'd echo effect. Next I configured Track 2 for audio and imported a loop I had created using sounds made with the PSIndustrializer synth. I stretched the loop to match the length of Track 1, then I added two more MIDI tracks assigned to instruments in two more WhySynths.
The Yamaha DX synthesizers have good bell-like sounds, so I added two more tracks with parts written for bell and chime sounds from the Hexter plugin. QSynth's Fantasia pad, transposed down an octave, rounded out the sonic palette for this test. Figure 5 displays the final track layout, along with a WhySynth patch editor and the full-display transport control panel. The results are on audible display at cloches.ogg
I like Sean Bolton's synths, they're easy to use and they have some good sounds. They also make me wish for more DSSI-savvy plugin softsynths to play with. I could install WINE and employ the dssi-vst bridge to run some native Windows VST/VSTi plugins within Rosegarden. Well, I could if I were running a 32-bit system, but I'm unable to test this feature with a 64-bit machine. Setting up the dssi-vst bridge is a mildly complicated process (it is not a standard component of Rosegarden), but some users have reported great success running VST plugins within Rosegarden (see the Linux VST Compatibility Page for a list of plugins that have been tested with VST Linux support systems).
LADSPA plugin support is flawless, and I used many favorite processors (CAPS Plate Reverb, SC4 compressor, AM Pitch Shifter, Simple Amp, et cetera) throughout these tests. I did encounter the dread denormals problem in kung-funk. The piece played perfectly for a few minutes, then Rosegarden reported that CPU usage had exceeded the program's capability to perform in realtime. That seemed odd, because the CPU is an AMD64 3200+. With help from friends on the Linux Audio Developers mail list I narrowed the problem to one plugin (the CAPS AmpIV), and the problem disappeared when I replaced it with another LADSPA amplifier plugin. Tim Goetze, CAPS architect extraordinaire, is aware of the denormals problem and will soon provide a repaired version of AmpIV. I hope so, I really like the sound I got from that plugin.
Rosegarden synchronizes with other programs and devices via the JACK transport control, MIDI clock messages, MIDI Machine Control (MMC), and MIDI Time Code (MTC). I have no MMC-capable devices, so I was unable to test Rosegarden's performance with it.
For my first test I reloaded my Form For Piano project, opened the Synchronization dialog in the Settings/Configure Rosegarden menu, and set Rosegarden to act as MTC master. I also opted to send the sync output to all devices in the system, I figured the scattershot method was sure to work. I used QSynth as my General MIDI Device, hosting the 8mbgmsfx.sf2 General MIDI soundfont.
On the receiving end I opened a sequencer on my laptop, loaded the same file into it, and set the sequencer to sync to MTC. The ALSA virmidi module connected the laptop's sequencer with ports to and from a MIDISport 2x2 USB MIDI interface plugged into a Yamaha MJC8 MIDI junction control box. The MIDISport received data from the master machine's MIDI hardware (an Ensoniq PCI128) and sent it to the laptop. The laptop sent MIDI data to the MIDISport, and that data was routed by the MJC8 to control a Yamaha TX802 FM synthesizer.
QSynth's audio output was handled by an M-Audio Delta 66 digital audio interface connected to a Yamaha DMP11 mixer. Audio output from the TX802 was also sent to the DMP11. At this point I had a neat network of MIDI connections (hard and soft), and it was time to put it to the test. I started the laptop's sequencer and received the expected "Waiting for time code" message. Then I clicked Rosegarden's Play control, the laptop locked to the time code input, and I listened to QSynth playing in perfect sync with the TX802. Though this test was eminently non-scientific, to my ears the timing lock was rock solid.
I repeated that test using MIDI clock sync, setting Rosegarden to Receive mode and using the laptop's sequencer as the MIDI clock source. It worked fine, what more can I say ?
My last synchronization project tested Rosegarden's support for the JACK transport control. I opened the Synchronization dialog again and set Rosegarden to sync with JACK. I used QJackCtl to start, stop, skip, and rewind Rosegarden's transport, all functions worked perfectly. Finally I added the Hydrogen drum machine/rhythm programmer to the JACK graph. I started, stopped, skipped, and rewound as I pleased, freely using either Hydrogen or Rosegarden as the JACK master. Once again, no problems at all.
For my last tests I used Rosegarden's music notation facilities to prepare a score for a flute and guitar duet. The piece is based on an anonymous composition familiar to all classical guitarists, but the duet arrangement is my own.
Rosegarden's notation editor is excellent in its own right as an interface for music composition, as a transcription facility for MIDI files and performances, and as a front-end for preparing scores destined for external notation processing software. In this project I intended to prepare the score for eventual rendering by LilyPond, and I wanted to edit as much as possible within Rosegarden to minimize the amount of data massage required after exporting the score.
Figure 6 displays the work before export, Figure 7 shows off the score after further editing within LilyPond. Rosegarden is not intended to be a complete music typesetting solution, and it does not attempt to conceal its limits. Polyphony is limited to notes of equal duration, though contrapuntal scores can be created by laying the parts into separate tracks. You can then view any number of parts in the notation editor simply by selecting the desired tracks in the Track View window.
Documentation And Help
Documentation for Rosegarden abounds, on the Net and in hard-copy. The Rosegarden Resources page supplies links to the FAQ and other relevant Web pages, example and tutorial files are included with the program, and the excellent Rosegarden Handbook is available from the program's Help menu (or you can browse it online at the linked site). The Handbook is the most complete and current documentation, but D. Michael McIntyre's Rosegarden Companion is also a fine guide for new users. Further help can be found on the Rosegarden mail list, and the developers frequently show up on the Linux Audio Users mail list to offer gracious and patient assistance to newbies and not-so-newbies.
Rosegarden has been available since 1993. I discovered it shortly after beginning my journey into Linux, and I've always followed its development track to the present day. This latest release is an impressive achievement, raising it to Most Recommended status here at Studio Dave. My compliments to the chefs, I'll be using Rosegarden more often now, thanks to its recent improvements, and I look forward to whatever Chris, Richard, and Guillaume come up with next.
The Rosegarden developers are well-respected members of the Linux audio community, and are also involved with a variety of other projects, including the excellent Sonic Visualizer, the DSSI project, and the superb StudioToGo media-optimized Linux distribution.