Friday Interview #16: Fons Adriaensen
Hi, and welcome to the 16th edition of the Friday Interview! This week, we're joined by a sound engineer and developer, aka "DSP demi-god". I'm very happy to introduce the 16th participant of the series, interviewee #16: Fons Adriaensen! Lets get started!
Introducing Fons Adriaensen
Hi Fons! Thanks for doing this interview! What's your real name, and where do you live?
I currently live in Parma, Italy, and work as a sound engineer at the Casa della Musica. To understand how I got here we must look back at bit. I've been dithering all my life between music and engineering - audio is somewhat halfway between the two. I studied maths and sound engineering. My first job was at the music recording department of Belgian public radio, doing mainly classical and jazz recording. It was a fascinating time. When I started everything was analog, and when I decided to go ten years later everything except the mics was digital. I switched to SW engineering, working some years on CAD systems, transputers, and real-time kernels for multprocessor DSP systems before joining the space division of Alcatel as a DSP engineer.
Six years ago I wanted to switch again, and the first offer I got was from the university here in Parma, who were looking for someone to build a Wave Field Synthesis system for la Casa della Musica. When that was finished (around the time of the LAC in Parma), they also wanted a studio for electronic music, so I designed and built that as well. And then of course they needed someone to operate those installations. So my job is to make sure everything works, assist musicians, composers and researchers when they want to use the studio or organise a concert involving live electonics and surround amplification, and make audio recordings of all the concerts, mostly for Italian radio.
As an example, I'm currently assisting a student of the conservatory who's made a 15 meter long didgeridoo and writing his graduation paper about it. We made acoustical measurements in order to see if we can understand how it works, and there's also a concert planned combining the instrument with live electronics and spatialisation. It's a nice job, but given the current dire economical situation in Italy it doesn't pay very well and I've been burning my savings for some time. So probably later this year I'll return to Belgium and to space telecom engineeering, unless conditions change or something else turns up.
What's your musical background like? What music do you like, and do you play any instruments?
I studied piano and organ when I was much younger and still play a bit for my own pleasure, but nothing I'd want to inflict onto others. I also had a good education in music theory and history, and can read most orchestral scores without problems, a rather essential asset if you're doing classical music recordings.
What music do I like ? Mostly classical in the broadest sense. It could be anything from the 16th to the 21st century, but I do have some preferences of course. You can give me any Bach, a Beethoven or Schubert string quartet, or a Mendelssohn or Mahler symphony at any time, to drop just a few big names. My work often involves 20th century or contemporary music. Most of that is unknown outside some elite circles, but some of it is absolutely fascinating. Apart from that, most of the rock up to the mid 80s or so. Looking at the CDs that pile up on my desk you'll find Beatles, Doors, Weather Report, Joni Mitchell, Donald Fagen and many others. Also some jazz, but not all of it. To get me on my feet and move, anything reggae, ska or similar.
There are a few music genres I dislike, among them country and gospel, and I am absolutely out of touch with the mass market music of at least the last two decades. Most of it to me seems completely uninspired and created by marketing managers recycling know recipes rather than by artists. Which is also why I'm absolutely not interested in any software that only exists to support the production of such crap. The only exception would be the autotuner, zita-at1, but I had some other motives for writing that.
What's your history with Linux, and with using Linux for audio?
Linux came quite late in my 'computing life'. My first exposure to programming was when I was 16 or so and got a copy of the 'Z80 Programming Manual' in some electronic components store. It contained the full machine code instruction set in binary and hexadecimal, and even the assembly language mnemonics in case you ever needed those. It opened a new world to me. Later, while studying maths, I discovered 'Fundamental Algorithms' and 'Sorting and Searching', parts 2 and 3 of 'The Art of Computer Programming' by Donald Knuth. These are among the most influential books on computing I've ever read. They gave me a good understanding of data structures, algorithms, complexity analysis and many other things, years before I ever touched a computer. I did a lot of pencil and paper exercises in those times, and it probably still shows in the way I program. My first own computers were a BBC micro, and later an Acorn Archimedes, both wonderful machines for their time.
Meanwhile I was using Sun workstations at work, so Unix and everything around it became a natural way of thinking, and that led me directly to Linux. I've never owned a Windows machine, except for the few minutes between getting my first laptop from the store and installing SuSE 7.1 on it. Once I got my first Linux machine up and running things went fast. Everything I had ever done professionally in computing involved real-time, signal processing and multithreading, so the step to audio programming was not such a big one. The things I was working on at Alcatel at the time were very similar to big audio apps: multiple threads processing and exchanging blocks of samples, only the sample rates were a bit higher. So I got myself a decent audio interface and started experimenting. These were the times when JACK was still young and a constant source of frustration - things surely have changed since then. I got in contact with Matthias Nagorni, author of AlsaModularSynth and then working in the audio group at SuSE. Started tinkering with AMS, attented the first LAC, and the rest is history. My first published work was some rather invasive changes to AMS, and then the Moog Filter plugins.
As a developer I've often written things just because I needed them myself. For classical music recording and post-production you just can't compromise on technical quality. When working with natural sounds and a very wide dynamic range, any defects will show up immediately. Almost every time I needed an equaliser, a reverb, or a dynamic processor all the plugins I found failed in some way. So I wrote my own, usually as a JACK app rather than a plugin. Meanwhile I've got quite a nice collection of those, but only a few have been released. Another area of interest is acoustic and audio measurements, and mathematical 'building block' algorithms such as resampling or convolution which are often needed to implement others.
Apart from that, there are some things I've been interested in for a very long time. One of those is the technology and acoustics of organs, and that's how Aeolus came to life.
Another one is Ambisonics. It was an emerging technology when I was a student, and I used one of the very first Soundfield mics for my graduation work. Ambisonics failed commercially, and sort of disappeared until digital processing allowed it to go beyond the limits of the historical first-order system. There has been a lot of research and development during the last ten years or so, and of course it fits in rather well with my work here which is all about '3D' sound. I've been working on a mixer application which supports Ambisonics formats natively - this makes a big difference in usability, even when compared to an extremely flexible DAW such as Ardour. It's a project that has grown way beyond its expected size because almost everything has to be redone, including file formats, a multithreaded computing engine, and the plugin system. For the later I could in theory use LV2 with a set of ad-hoc extensions, but in practice that would amount to a form of masochism. Adding the required functionality as extensions adds a lot of otherwise unnecessary complexity, the extensions would probably never make it into any other host, and existing plugins wouldn't be usable anyway. So in the end it's much easier to start from scratch. And that really reflects how I prefer to write software: if I can avoid multiple layers of glue code by writing a few thousand lines myself, I'll probably do it. It may be more work, it may slow me down, but in the end it avoids a lot of misery.
Interesting with the ambisonics mixer application! Provided that you intend to release this publicly as well, any idea on when that might happen?
Tricky question :-) It will happen when I've convinced myself that the basic design is OK and not likely to change in fundamental ways. Some parts may be released separately, e.g. the reverb plugin which is actually almost a room simulator with detailed control over e.g. early reflections.
Do you have anything else in the works right now, Linux audio-wise?
Mostly Ambisonics related things. One of them is a 'spatial upsampling' processor - it takes a first order signal from an ambisonic mic and turns it into higher order. There's a commercial plugin doing this, but it has some problems, apart from being expensive and not working in Linux. I've got 'proof of concept' code for a completely different algorithm, but it will require a lot of work to turn it into something that's reliable and works in real-time. Ambdec is going through a major update, as is Aeolus. Smaller things may pop up randomly.
Could you talk a little about what kind of hardware setup you are using?
At home I have since a few months a Fujitsu tower, quad-core and 4 GB RAM, a big improvement over the P4 based 512 MB system I was using before. It's running Archlinux which has become my preferred distro since some years. The nice thing about Arch is that system configuration remains fully in the hands of the user instead of being imposed by the distro, and that allows me to run a system with just a simple window manager instead of one of those obese desktops. The new PC is still using the original 8 in / 8 out sound card of the previous system (Terratec, from the time when they still made decent hardware), which is connected to the multitrack tape interface of a Sony analog mixer. Apart from that, a full piano-sized weighted keyboard from Fatar, and a Novation Launchpad which is used for all sorts of things. Monitoring at home is on two big B&W speakers which are now almost 30 years old but still work perfectly.
Do you feel like anything is lacking in Linux audio today, and if so, what?
As a user, for the kind of work I do mostly, I'm missing a reliable multitrack recorder+player+editor with support for 4-point editing. When editing a classical music production recording you can easily end up with hundreds of little pieces spliced together, and they may be hours apart on the original timeline, or even from different sessions. A 4-point edit means to replace one fragment or several consecutive ones with a different take. This never has exactly the same duration, so everything to the right has to move without destroying the existing edits. It's taken for granted that you can do such things and compare several versions in a matter of seconds. And the ability to instantly switch between different versions of any fragment should still be available days or weeks later when you have extended the edited session.
Doing this is in Ardour is not impossible, but it comes close. It takes lots of time, and the probability of making a simple mistake and messing up the whole thing is quite high. Just keeping track of all those little pieces can be a problem. What it requires apart from the basic edit operation is the ability to transfer bits and pieces from the original timeline to the one being edited without modifying the original, and something similar to a software version control system with branches and merges to keep track of what you've done. On the other hand, this kind of work doesn't require the app to have an integrated mixer, MIDI, plugins or automation, so it could in fact be much simpler than Ardour.
What's your favorite free and open source plugin currently?
My work doesn't normally require many plugins, and when I need some they will probably be my own. Recently I've been using the AMB mixer rather than Ardour's even for stereo mixes, and this has its own plugin system. So I really can't say there's any favorite plugin. One of the apps I like a lot is Linuxsampler, which I believe is also available as a plugin.
Where can people get a hold of you, and where can they find your work?
I'm watching the Linux Audio Developers and Users lists so these are the places to start for anyone who wants to get in contact. All released software is on http://kokkinizita.linuxaudio.org/linuxaudio/.
Anything you'd like to add to the interview?
Just a big 'thank you' to all who create and maintain the things that Linux audio depends on - the kernel, JACK, libraries like FFTW that represent countless man-years of work, etc. And in particular to those who don't write software but ensure that we can use it: the packagers and distro maintainers.
Thank you very much for the interview Fons!
That was Fons Adriaensen. Thanks to Fons for participating, and thank you for reading!