Linux Arpeggiators, Part 1
What Is An Arpeggiator ?
An arpeggio is a musical technique whereby the notes of a chord are played in succession rather than all at once. The order of the chord notes in this succession may follow a strict set of rules or they may be played in purely random sequence. A device that acts upon a chord in this manner is known as an arpeggiator.
Wikipedia's definition of synthesizer includes this fine description of an arpeggiator:
An arpeggiator is a feature available on some synthesisers that automatically steps through a sequence of notes based on an input chord, thus creating an arpeggio. The notes can often be transmitted to a MIDI sequencer for recording and further editing. An arpeggiator may have controls to manipulate the order and speed in which the notes play; upwards, downwards, or in a random order. More advanced arpeggiators allow the user to step through a complex sequence of notes or play several arpeggios at once. Some allow a pattern to be sustained even if the keys are released: in this way an arpeggiated pattern may be built up over time by pressing several keys one after the other. Arpeggiators are also commonly found in sequencing software. Some sequencers expand this into a full phrase sequencer, which allows the user to trigger complex, multi-track blocks of sequenced data from a keyboard or input device, typically synchronised with the tempo of the master clock.
That description proceeds to note that the software arpeggiators of today have evolved from the hardware sequencers from the pre-MIDI period of electronic music. Notable representatives of popular musicians who have made creative use of arpeggiators include Tangerine Dream and Jean-Michel Jarre. The Who made effective use of an arpeggiator in their song Baba O'Riley (a.k.a. Teenaga Wasteland). Arpeggiators remain popular in dance music, but their utility has extended to other types of music as well.
As a matter of fact the technique of arpeggiation has an honorable history of application in the history of classical music. The Alberti bass is a technique in which a chord is played as a broken series of notes to establish a flowing continuity in the accompaniment and is a good example of arpeggiation employed as a common structural device in music composition.
Arpeggiators For Linux
Linux musicians have at least three arpeggiators to play with (Figure 1). We'll look at them in reverse alphabetical order, arranged as an arpeggio from the highest note-name to the lowest.
QMidiArp (Figure 2) originated as a project by Dr. Matthias Nagorni. Eventually Dr. Nagorni excused himself from development of the program, but recently its codebase has received attention from developers Frank Kober and Guido Scholz. Bugs have been fixed, new features have been added, and the GUI has been improved. By the way, QMidiArp isn't just an arpeggiator. It includes a MIDI LFO tab along with a tab for an analog-style step-sequencer, making it an arpeggiation love fest.
QMidiArp is easy to use, but it requires your attention to some specific configuration details. First, its connections need wired in this direction:
MIDI input (keyboard or other controller) --> QMidiArp --> sound source (synthesizer or sampler, internal or external)
Next you'll need to configure the desired pattern of arpeggiation in QMidiArp. Here's a simple example configuration that creates a rising arpeggio when a chord is held:
- Open the Modules menu and add three new arpeggiators. As shown in Figure 3, each arpeggiator will have its own tab and detachable control panel.
- Open the arpeggio Pattern Edit tool (the pencil icon beneath the graphic display) for the first arpeggiator and add >>0 to the data entry box. Close the Pattern Edit dialog.
- Repeat step 2 for the next arpeggiator, but this time add >>+0 to the entry box.
- Repeat step 2 for the third arpeggiator, adding --0012 as its pattern.
The numbers and their accompanying symbols are meaningful. The > sign multiplies the tempo, the +/- signs are octave displacements, and the 0 indicates the starting position for the first note of the input chord. To clarify the significance of the 0 and other numbers I'll quote fellow user Graham Morrison on the matter :
This is the hardest part to get your head around, but the '0' simply tells the software to output the note at the first position on the input buffer (all incoming notes are added to the buffer sequentially). As the first note is played, it is removed from the buffer, moving the previously second note to the first position (FIFO). For example, if the pattern '01' is entered then the second note of the sequence would be repeated as it's played. This is because it's firstly played as the second in the buffer, and once more after it's become the first. To make this clearer, with an input sequence of CDEF, with 0 for the Pattern, the output would be CDEFCDEFCDEF. With a Pattern of 01, the output would be CDDEEFCDDEEF, the final note isn't repeated because by the time it's played there's no other note in the buffer.
Don't worry if that explanation confuses you. It confused me too until I started to experiment by plugging in other values and playing with other settings such as the direction and groove factors. QMidiArp may be a small program, but it's got a lot of power under the hood, and you will spend some time learning how to use its many features.
By the way, Graham's notes on using QMidiArp were most helpful as I learned how to use the program. Consider them recommended.
At this point if you play a chord you still won't hear anything from QMidiArp. The arpeggiator requires an active clock source before it can massage the incoming data to produce a synchronized arpeggio. QMidiArp gives you the options of connection to an internal clock, to an external MIDI clock, or to the JACK transport control. If you opt for JACK you'll also need to activate its transport mechanism, a task easily handled by QJackCtl. Click on the transport control's Start button and you should see movement in the graph for arpeggiator 3 (Figure 3)
Now play and hold a chord on your MIDI keyboard. All other parameters in QMidiArp have been left at their default values so you should hear a rising arpeggio accompanied by a steady moving bass line. Play and hold another chord to hear the pattern applied to a new set of notes. The audio example moves through three chords, check it out to hear how QMidiArp treats them.
I must be honest and report that the example was edited to remove some stray tones. Alas, I experienced performance issues with version 0.0.3. Response to incoming MIDI data was slow, ditto for its response to JACK transport control. It's possible that those issues are unique to my system, but I've had no similar problems with MIDI input to other programs. I shall continue my tests, and hopefully I'll resolve the latency problem.
Documentation consists of a single excellent manual page (summoned with man qmidiarp at a terminal prompt) and the program's helpful tooltips. The article by Graham Morrison cited above includes a list of QMidiArp commands that I suggest you print out as a handy reference chart. Alas, I found no demonstration audio or video files, but the program is easy to learn by experimentation.
Unfortunately I haven't the space to get into QMidiArp's MIDI support and other features, but I have to leave you something to explore, right ? Despite its realtime performance issues it is a good program that behaves as advertised, and it can be well-employed as a non-realtime producer of arbitrarily complex arpeggios that can be recorded for later use in an audio/MIDI sequencer.
I hope you've enjoyed this introduction to Linux arpeggiators, and I encourage readers to check out QMidiArp for themselves. I'll return in a short while with profiles of the Arpage and Hypercyclic arpeggiators, so be sure to check in for more arpeggiated fun. Meanwhile, stay tuned and keep making those joyful noises.
Similis sum folio de quo ludunt venti.
Practical Task Scheduling Deployment
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.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Doing for User Space What We Did for Kernel Space
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
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