Kokkini Zita: The Audio Software Of Fons Adriaensen
Looking at the software listed at Kokkini Zita it's easy to see where developer Fons Adriaensen's interests lie. He has written one of the best organ synthesizers for Linux, he has contributed to the LADSPA collection of processing plugins, and he has provided Linux sound researchers with some excellent tools for measuring and representing audio signals. He is also involved in improving Linux support for the Ambisonics technology of encoding and decoding multichannel audio.
Fons is a rather prolific developer, so I'll limit my reviews here to only the applications I've employed here at Studio Dave. Alas, I haven't yet got into using his Ambisonics utilities, but perhaps one of my readers will add a comment on that software.
In ancient Greek mythology Aeolus was the god of the winds. Aeolus is thus a perfect name for Fons's flagship organ synthesizer. Indeed, to many listeners Aeolus is the best-sounding organ synthesizer available for any platform. A bold statement, to be sure, but in this writer's opinion Aeolus definitely lives up to and even surpasses its hype.
Aeolus is a bona fide synthesized organ, i.e. it does not use sampled audio for its sound-creation engine. Aeolus works with combinations of stops and manuals in a manner similar to a real organ to control the the frequencies and amplitudes of the pipes. One of Fons's main intentions was to design a virtual organ that an organist would feel comfortable playing, and anyone who has used a real church organ will likely feel right at home with Aeolus and its sound.
The following list from the Aeolus Web page summarizes the organ's main features :
- Stops for three manuals and one pedal-set
- Five intonation temperaments
- Variable (master) tuning
- MIDI control
- Stereo, surround, or Ambisonics output
- Flexible audio controls (including a large church reverb)
Figure 1 displays Aeolus at work with the seq24 MIDI sequencer.
Preset sounds are available for Aeolus, but frankly I find it a simple matter to make my own settings. The program's interface is easy to navigate and use, so I usually just experiment with stops and other settings until I find the sound I want.
And what kind of sound comes from Aeolus ? Well, check out Matthias Nagorni playing a Bach Trio Sonata and Bert Visser playing a Prelude by Cesar Franck for two good examples of Aeolus's convincing timbre and excellent audio quality. More examples can be found on the Aeolus home page.
Jconv is a simple utility for adding high-quality reverberation to an audio stream. The program utilizes an audio signal processing method called convolution to enhance a recording with the reverberant characteristics of a real or virtual space. A convolution reverb unit such as jconv makes its magic with short soundfiles called impulse response (IR) files, which are simply recordings of the reverberation effect in a particular building or other reverberant space. An IR recording is made typically by recording a loud sharp sound from a firecracker, a balloon pop, or a shot from a starting gun. The initial sound is then removed from the recording, leaving only the characteristic reverberation of the original space. Convolution "folds" the IR into your audio file or stream to create the illusion that your music was recorded in, say, the Taj Mahal or the basilica of Santa Lucia.
The program is currently a bit awkward to use. First the user must prepare a configuration script such as this example :
# Where jconv will find its IR file: /cd /home/dlphilp/soundfiles/ir-wav/Yamaha_SPX990/ # in out partition maxsize # ----------------------------------------------- /convolver/new 1 2 512 120000 # in out gain delay offset length chan file # ------------------------------------------------------------------------------------- /impulse/read 1 1 0.2 0 0 0 1 Concert_Hall.wav /impulse/read 1 2 0.2 0 0 0 2 Concert_Hall.wav
In this example I've employed an IR created from a Yamaha SPX 990 reverb unit. Many such IR files are available on the Web, giving the user access to the reverb characteristics of dedicated processors such as the Yamaha, Roland, or Lexicon units.
The configuration script is then fed to the jconv binary in this manner :
Jconv is a JACK-based program, so as soon as it starts it will appear as a client in the JACK graph. Figure 2 shows off how I've been using jconv recently in my work with the LinuxSampler software. In that screenshot I've dedicated two channels to an instrument's FX Send in the JSampler Fantasia GUI. Those channels are routed to jconv, and the output from the convolver is then sent to the system audio input. The processed audio is finally sent on to my speakers, perhaps mixed with the unprocessed stream, perhaps not.
Documentation is sparse. The demonstration scripts in the demo_config directory will get you started, and hundreds of IR files are available from various sites on the Web. See this articles Resources for a list of some notable collections of high-quality responses.
Jconv works beautifully with every IR file I've thrown into it. Alas, there are no realtime controls, nor is there a handy graphic interface (yet). Fons has promised that his upcoming Aella will provide the long-awaited GUI, but I really can't complain much about jconv as it is now. The scripts are trivial to write, the processor itself is simple to use, and the sound is first-rate. Can you tell that I like this program ?
I don't qualify as an experienced user of software such as JAAA, the JACK and ALSA Audio Analyzer, but I used hardware oscilloscopes back in my ham radio days and I still find it interesting to consider the significance of displays like the screenshot in Figure 3. However, to the truly knowledgable user such displays are no mere eye-candy - they are informative guides to crafting optimal sonic environments, and tools like the JAAA have become indispensable for professional audio engineer.
Figure 3 demonstrates a trivial use for the software. The output of AlsaPlayer is routed to the system audio inputs and to the JAAA input ports. In this arrangement I can listen to the music and watch its realtime frequency display for audio hot spots or other interesting content.
Many of the programs at Kokkini Zita are included in the software repositories for media-optimized Linux distributions. If your distro has somehow sadly failed to provide pre-built packages you can still build the software yourself. The process isn't difficult, you can find the source code and full instructions for compiling on the Kokkini Zita site.
As promised, here are some links to sites offering free IR files.
Happy convoluting !
When Ivica Ico Bukvic asked Fons what "kokkini zita" signifies he received this reply :
It's indeed Greek and means 'red zita', where zita is the name in modern Greek for the character traditionally known as 'zeta'. So I'll be using a red zeta as a logo.
There some word play involved as well. Zita is also a girl's name, and there exists a Flemish comic series in which a character called 'rode Zita' (red Zita) appears. She's the red-haired and voluptuous girlfriend of the hero - a sort of Robin Hood-like character whose gang of outcasts is constantly pestering the French soldiers that occupied Flanders 200 years ago.
By any name, Kokkini Zita is dedicated to high-quality music and DSP software for Linux. Vast thanks, Fons, for your superb contributions to the cause of Linux sound and music software development. I'm eager to see and hear what you come up with next.
Similis sum folio de quo ludunt venti.
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- New Products
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Designing Electronics with Linux
- Dynamic DNS—an Object Lesson in Problem Solving
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- Reply to comment | Linux Journal
2 hours 26 min ago
- Nice article, thanks for the
13 hours 7 min ago
- I once had a better way I
18 hours 53 min ago
- Not only you I too assumed
19 hours 10 min ago
- another very interesting
21 hours 3 min ago
- Reply to comment | Linux Journal
22 hours 57 min ago
- Reply to comment | Linux Journal
1 day 5 hours ago
- Reply to comment | Linux Journal
1 day 6 hours ago
- Favorite (and easily brute-forced) pw's
1 day 7 hours ago
- Have you tried Boxen? It's a
1 day 13 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?