Linux Arpeggiators, Part 2
Part 1 of this series introduced arpeggiators in general and profiled the QMidiArp application. This week we conclude our survey with a look at two more arpeggiators for Linux musicians: Hypercyclic and Arpage.
Mucoder's Hypercyclic is a different kind of arpeggiator than the others profiled in this survey. The author describes it as "... an LFO-driven MIDI arpeggiator, gate effect, and step-sequencer for mangling MIDI input chords." In audio terminology an LFO is a low frequency oscillation that acts on an input signal in some musically pleasing manner. A common musical use for an audio LFO is the addition of a vibrato to a steady tone. The waveform of the effect animates the tone and gives it a more lively character. The LFO itself can be modulated, i.e. its entry may be delayed and its intensity can be gradually increased or decreased. A MIDI LFO acts upon an incoming MIDI data stream in a similar manner, upsetting or rearranging the data with a musical effect.
Hypercyclic is available as a native Linux VST plugin and as a standalone program. I began my tests by using it as a plugin with version 0.5.5 of JOST, a JACK-based host for a variety of Linux plugin types, including VSTs compiled as native Linux software. Alas, Hypercyclic's performance was unstable in that environment, but I'm inclined to find the fault with my version of JOST. I tried using Hypercyclic as a plugin in QTractor - which also supports native Linux VSTs - and indeed it had no troubles with the plugin. The standalone version of the program worked perfectly in a variety of settings. Alas, the standalone version does not support JACK (audio or MIDI), but I had no problems using it in a JACKed environment. Hypercyclic does support the ALSA MIDI sequencer, so I could connect its output to any other ALSA sequencer client, e.g. a softsynth or sampler.
In Figure 1 we see the program in full display mode. On the left side of the main window there are four panels containing the settings for MIDI I/O, trigger values, groove factors, and chord arpeggiation arrangements. In these last three panels the parameter controls are accompanied by two toggles for external control. The left-most control is the mouse-wheel button that assigns the parameter to control via the mouse wheel. To the right of that control you see the modulation button, labelled with a sine wave. When that button is clicked it puts the parameter under the control of one or the other of the LFOs. The center panel includes the About and Help screens.
At first I couldn't get my mind around Hypercyclic's design, but after some experimentation I started to realize its great creative potential. At the heart of the system two LFO waveforms modulate incoming MIDI data according to the waveform shapes. Thus, a simple triangle shape, applied linearly, could be used to modulate incoming velocities according to the shape of the waveform, forcing the velocity values to scale from low to high and back again to low. Hypercyclic's LFO waveforms can be of any shape and resolution to create a great variety of effects when the LFOs are used to modulate Hypercyclic's transformational functions.
According to Hypercyclic's author the main use for the program is to generate MIDI data that can be recorded and/or sent to other plugins or programs, so that's how I employed it in my first test project. I recorded a series of simple arpeggiated chords in my sequencer and routed its output into Hypercyclic. Next I ran Hypercyclic's MIDI output to QSynth and connected the synth to the system audio output ports. I returned to the arpeggiator and chose a preset named Calm Doubling Arp. That preset includes LFO modulation of the arpeggiator's note selection mask and octave doubler. After listening to the default preset's output I modified the patch by assigning one of Hypercyclic LFOs to the Velocity control in the Triggers panel. You can hear the results in a Hypercyclic example soundfile that includes fragments of the untreated source, the output of the unaltered preset, and the result of modulating the preset's output velocity with one of Hypercyclic's LFOs.
A 29-page PDF file supplies the complete user-level documentation for Hypercyclic. That file includes full descriptions for every feature in the program, along with configuration details for using Hypercyclic with various sequencers and other hosts. I found no videos presenting the program, but its comprehensive manual should provide instruction enough for users of all levels. The user interface includes instructive tooltips and an on-line help system, along with fifty presets and two helpful demonstration files in the "midi from" menu.
I had no trouble running Hypercyclic in standalone mode on my 32-bit Ubuntu Jaunty system, but I was unable to run it on my older 64-bit 64 Studio 2.1 system. What wrinkles remain have nothing to do with the software's performance. Hypercyclic is freeware, it is not licensed under the GPL, and no source code appears to be available. The last release dates from 2007, and it is also apparently no longer maintained. Despite those minor complaints I was perfectly satisfied with Hypercyclic. It's a terrific arpeggiator, with controls enough for any creative experimentalist, and its presets provide instructive examples for novices to try out and to modify for their purposes. The judges at KVRaudio must have had a similar opinion when they awarded Hypercyclic 2nd place in their Developers Challenge 2007. Too bad it isn't FSF-sanctified open-source software, but it is free as in beer. And who doesn't like a free beer now and then ?
Mark Vitek's Arpage (Figure 2) is the most recent addition to the Linux arpeggiator armory. Unlike the other programs profiled in this review Arpage bypasses ALSA MIDI support in favor of the more recent Jack-MIDI connectivity, which means that you won't be able to use it unless you have a relatively recent version of JACK installed and running.
Arpage is in its early stages of development, so I wasn't too surprised to find no official documentation. However, I discovered one very helpful video demonstration of the program, thanks to a user who goes by the handle of AutoStatic3000. In his movie he uses Arpage with the Yoshimi synthesizer for some serious shredding via the virtual MIDI keyboard. I copied his setup by following these steps:
- Started JACK with QJackCtl.
- Started Arpage and Yoshimi.
- Started QTractor and a virtual MIDI keyboard.
- Clicked on the Play button in QTractor, then minimized that program.
- Connected the keyboard to Arpage in QJackCtl's MIDI Connections panel (not the ALSA panel).
- Connected Arpage to Yoshimi (in the MIDI Connections panel).
- Play virtual keyboard to commence shredding.
The demonstration uses a single arpeggiator with its parameters left at their default values except for these functions :
- Range to 4
- Scale to Harmonic minor
- Note Duration to 1/16(3)
- Pulse Width to 120
The Range sets the intervallic width of the arpeggiated notes and is indicated in semitones. The notes are chosen according to the selected Scale, which can be one of thirteen types (or none at all). The duration control sets the rhythmic value for each note in the arpeggio, 16th-note triplets in this example. The Pulse Width is essentially a legato/staccato control. At high values it create a cool overlapping effects, but the example's modest value simply ensures a smooth connection between notes.
AutoStatic's example was designed to create a rapid guitar riff from a single incoming note. Pressing a key on the MIDI keyboard results in a looping arpeggiation that keeps playing until you release the key. However, while the example is very cool and instructive it doesn't indicate what happens when you play a chord with the same configuration. Quite a different effect occurs as the riff now proceeds upwards through the notes of the held chord. In my Arpage example 1 you can hear an unarpeggiated series of notes, followed by the same note series arpeggiated by Arpage configured with AutoStatic's settings (Figure 3). The final example shows off the effect of playing a chord with the same settings.
By the way, in case you were wondering why Yoshimi looks so familiar that's because it is a project drived from the codebase of the great ZynAddSubFX synthesizer. The original synth has a marvellous sound and features galore, but alas, stability in a JACK environment is not one of them. The Yoshimi project addresses that problem and others in ZynAddSubFX, and it deserves its own profile. Unfortunately that profile will have to wait until I have time to thoroughly test the synth.
After some experimentation with a single arpeggiator I ventured into the weirdness that can result from several arpeggiators working at the same time, each with unique values for its parameters. In a more ambitious exercise I configured two arpeggiators with the following settings :
Arp 1 Arp 2 Channel 1 Channel 1 Range 4 Range 4 Note Duration 1/16 Note Duration 1/8 Scale Major Scale Aeolian Transpose 0 Transpose -3 Pulse Width 120 Pulse Width 100 Note Order Up Note Order Down
I played a series of 3-note chords and recorded the results to Arpage example 2. As you can hear in that example the first arpeggiator plays notes from a major scale within a range of 4 semitones (i.e. up to the major 3rd). The second arpeggiator plays notes from the Aeolian mode with the same range, but the scale itself has been transposed a minor 3rd downwards, the pulse width gives the notes a more staccato articulation, and the note durations are twice as long as those produced by the first arpeggiator. The example was fun to create, and it's easy to see that considerably more complex arpeggiations can be devised. You could send the output from Arpage to various synths on different MIDI channels, you can set your scales and transposition factors to create elaborate harmonies, you can delimit the output range differently per arpeggiator, et cetera et cetera. Given the program's ease of use you'll quickly devise new and fascinating ways to use it.
There is one significant problem with the program in its current condition. Like other arpeggiators Arpage relies on an external clock source - a JACK-savvy bar/beat/tick stream is preferred - and thus I expected to be able to operate it with QJackCtl or any other JACK application capable of acting as the time & tempo master controller. Alas, such was not the case. I tried using seq24, QJackCtl, and even Ardour, to no avail. Only QTractor provided the correct sort of stream needed by Arpage. However, that solution seemed rather hefty to me, so I contacted Arpage's author and the author of QJackCtl to see if it would be possible to control Arpage with a more light-weight JACK client. They responded with two recommended solutions. The klick metronome works beautifully, with the benefit of control via QJackCtl. Using QJackCtl's transport buttons I could toggle the klick metronome and easily switch back and forth between the normal and arpeggiated versions of my MIDI source material, a helpful compositional amenity. The second recommendation, Arnold Krille's TapStart, looks like it would do the job too, but I'm having problems compiling its main dependency, a custom library for using OSC with Qt4.
I hope you've enjoyed this brief introduction to arpeggiators for Linux. The programs I've profiled are valuable additions to the creative Linux musician's audio armory, you can't beat the prices, and they are all great fun to explore. For now, I leave you to those explorations, and I'll return soon with reports on the Behringer BCF2000 and FCB1010 MIDI control devices.