...making Linux just a little more fun!
By Michael Baxter
Dr. Boulanger has been associated with Csound for a long time, and is the editor of The Csound Book (see resources), an excellent resource consisting of multiple contributions from the Csound community for learning and using Csound. In a chat with Dr. Boulanger, we provide perspective on one of the oldest C-based software sound synthesis environments. This in-depth interview complements Dave Phillips' recent article (see May 2003 LJ, page 80) about the newest Linux softsynth environments.
Q: Dr. Boulanger, thank-you for your time. Four years ago _Linux Journal_ ran an article by David Phillips on Csound on Linux. Could you describe some of the advances to Csound since that time?
A: As you know, Michael, Csound is arguably the most powerful cross-platform software synthesis and signal processing system available today. It's incredible, it continues to grow and improve, and most importantly, it's free! Although many commercial applications such as Max/MSP, PD, SuperCollider, Tassman, and Reaktor are getting closer and closer to Csound's programability, power and functionality, nothing comes close - especially given all the platforms and operating systems upon which one can run the very same Csound orchestras, scores, and instruments.
And you are right, I have been composing with, teaching with, and writing about this incredibly powerful and versitile program for over 25 years now. I started studying at the MIT Experimental Music Studion in 1979 with Barry Vercoe. There I was doing sound design and composition using Barry's music11 program - essentially Csound for the PDP11 minicomputer. That very first music11 composition of mine - "Trapped in Convert" has been presented in concerts all over the world - including Alice Tully Hall in New York - quite a big deal for a then budding young composer! When I returned to the MIT Media Lab in 1986 with my Computer Music Ph.D. in hand, I worked with Barry betatesting his new language - Csound. We would use "Trapped" to make sure that all the opcodes were working correctly.
In fact, the version of "Trapped in Convert" that people render and tweek today was the very first Csound piece. And what is so important to me is that this very same piece (http://csounds.com/compositions/colleaguezip/Trapped.zip) can be rendered and studied today using a version of Csound that runs on virtually any computer. Back in 1979, it took hours to render each sound and gesture, days to render each phrase and section, and weeks to render the entire four and a half minute piece - at 24K! Today, at 44.1K, "Trapped in Convert" renders in realtime on virtually any PC.
For me, the ability to preserve the history of computer music composition and sound design is extremely important. Much of the music I composed using sequencers, synthesizers and MIDI equipment during the 80's and 90's has been retired and lost when the gear was sold, broke-down, or the computers running early sequencers and sound editers were retired to the basement. Getting rid of an old computer usually meant tossing out your music too. Yet, the very fact that I can still render, "tweek," and teach with my old Csound pieces is a testament to Csound's greatness. For me at least, Csound has proven to be future-proof. In fact, since Csound is a direct decendent of the MusicN languages developed by Max Mathews at Bell Labs in the late 50's, the entire history of computer music research is preserved in this program. Many of the classic pieces and classic instrument design catalogs, by Risset for instance, have been totally reconstructed in Csound and can be rendered, studied, and modified to this day.
Since Dave Phillips' wonderful Linux Journal article on Csound, there have been a number of important milestones. Several Csound Books have been published - The Csound Book (MIT Press), Virtual Sound (ConTempo), and Cooking with Csound (AR Editions). The Csound Instrument Catalog has been released with thousands of models to study and modify. The quarterly Csound Ezine has been a regular source of inspiration and undertanding. Extensive Csound tutorials have been featured in Keyboard and Electronic Musician Magazines. In addition to The Csound mailing list, two new Csound mailing lists have been started - the csoundTekno list, and the csoundDeveloper's list. The international Csound community of Csound teachers, users, and developers has really grown and their cSounds have gone mainstream - featured in major Hollywood films (Traffic, Black Hawk Down, Narc), and an number of Computer Games. Dave Phillips himself has finished a wonderful book, "The Book of Linux Music and Sound" that features some wonderful stuff on Csound and related applications and utilities that is a real help for newcomers to the Linux audio world.
In the last four years, there have been some incredibly developments to Csound by the key platform developers and maintainers. Barry Vercoe continues to develop proprietary versions of Extended Csound for embebed systems and Analog Devices DSP chips. Matt Ingalls continues to push the Macintosh versions of Csound in wonderful ways. His MacCsound has user defined GUI Widgets built into the launcher, support for instruments as plugins, and super clean MIDI (at last!). Even cooler, his csound~ external for Max/MSP and PD essentially embed the entire Csound language into the Max/MSP/Jitter and PD/GEM graphical programming environments and thus add incredibly interactivity, estensive algorithmic capabilities, super MIDI, and multichannel/low-latency ASIO support to Csound on the Mac. Sound Designers and Composers such as Joo Won Park, Sean Meagher, and Takeyoshi Mori have developed wonderful real-time GUI-based applications such as CsoundMax, CsoundFX, and CsoundMixer.
Michael Gogins has been busy with CsoundVST, a version of Csound that runs as a VST plugin in Cubase and Nuendo for the PC. Most recently he completely embedded Csound into his algorithmic composition language SilenceVST that can run stand-alone or be hosted by the PC versions of Cubase or Nuendo. He has also done some extensive collaboration with Matt Ingalls to define a preliminary Csound API.
Gabriel Maldonado's CsoundAV for Windows has ASIO support and adds hundreds of openGL and GUI opcodes to the language. It is incredible to make audio instruments that communicate with GUI instruments all from the same Csound orchestra and all with the same exact syntax! A number of Csound's top sound designers such as Luca Pavan, Josep Comajuncosas, Oeyvind Brandtsegg, and Alessandro Petrolati have developed an arsenal of incredible GUI-based real-time applications, instrument, and effect collections.
Somewhat controversial and radically new and expanded Linux versions of Csound were developed by Maurizio Umberto Puxeddu (iCsound), and are currently under extensive development by Istvan Varga.
And behind the scenes, John ffitch, with some help and support of Richard Dobson, has been maintaining, improving, and extending Canonical Csound FOR ALL PLATFORMS! In fact, we are currently in an "opcode freeze" (no new opcodes) so that he can totally revise the core and support many of the innovations introduced by Varga, Ingalls, Gogins, and Maldonado while adding new levels of clarity and new functionality - such as plugin support, ASIO support, a new parser and much much more. (His most recent TODO list is posted in the news at cSounds.com.) For one thing, when ffitch is done, it should be easier for users to add opcodes of their own without having to recompile the entire program.
Of special note for all platforms is Steven Yi's inspired and inspiring "Blue" and "Patterns" composing and sound design environment. And also, the wonderful Csound FLTK signal processing and sound design front end "Cecilia" that has come to life in the windows version by Bill Beck and the improved Linux and osX versions by Stephan Bourgeois and Hans-Christoph Steiner.
I have forgotten to mention a ton of things like all the great new Csound editors and applets and all those free VST and DirectX plugins based on Csound Code - like he Delay Lama VST plugin and Dobson's new PVFX for Cakewalk's Project 5. What can I say? In four years, with ALL these incredible students, composers, teachers, developers on ALL thise platforms, with all these musical dreams and perspectives, what did you expect? All the new versions are great. All the new opcodes are great. All the new capabilities are great but honestly, I am thrilled by ALL the new Csound Music and the ways that Csound is being used by musicians. This is the big leap forward for Csound.
But wait one minute, have I left out all the dirt? All the name calling? All the childish bickering and mudsling? All the "my version is better than your version" stuff that you would expect from intensely competitive, young and arrogant musical programmers? Well, there has been four years of that too! (And you in the Linux community might be proud to know that most of the mud was over Linux versions of Csound!> And what has the result of those efforts been, you might ask? A lot of wasted time. A lot of deep wounds that may never heal. A lot of better versions of Csound - especially for Linux. And of course, a lot of casualties. Hundreds of newcomers and oldtimer have dropped out of the Csound community and abandoned working with Csound entirely because of all the negativity associated with it. I can't blame them. I'm getting a little tired myself of trying to teach and play music in a war zone.
(At csounds.com you can find yesterday and today's Csound News with links to the various tools and utilities that have been developed in the past 4 years. Also, you will find links to the Csound Mailing List archive where you can re-live the "War over the Future of Csound" and the vicious and childish debates over "Who Deserves to Be the Supreme Ruler of Csound.")
Q: My impression would be that the rising computational power of commodity PC platforms in recent years has benefited Csound more than the declining cost of DSP microprocessors. Would you agree, and can you comment?
A: For several years, I worked with Barry Vercoe and a team of developers (including Barry's son Scotty - I was Scotty's Csound Teacher!) on a project at Analog Devices to develop and commercialize a version of Csound built around their SHARC DSP chip. At that time, this was the way to go. For some applications it still is. Barry, in fact, continues to develop and advance such a system. And although it was a thrill to be part of that team and make a version of Csound that was fast, clean, and commercially oriented, I prefer Native Csound, public Csound, Canonical Csound. At Analog Devicest, we innovated like crazy - streamlining and restucturing the language to make it much more efficient, but all this cost some of the generality. We would come up with the best way to do things. What I love about Canonical Public Csound is that there are so many ways of working. So many of the developers, sound designers, teachers, composers have added features that we didn't have at Analog Devices. Moreover, their unique work and original designs, showed me how to a new way of doing things and helped me understand things. Even though we had built an amazing system there, a commercially viable version of Csound, I still preferred working with John ffitch, Matt Ingalls, Michael Gogins, Richard Dobson, and Gabriel Maldonado to add and improve a version of Csound that everyone could use for free.
Four years ago, real-time MIDI control did work in Csound and realtime audio was supported too, but neither worked well. At that time, no version of Csound worked as cleanly and straightforwardly as most commercial hardware and software tools. (In fact, I left most of the MIDI and Real-time Audio chapters out of "The Csound Book" because those aspect of the language were in such flux at the time that most of what we were writing was about all the little kluges and tricks you would have to use to get real-time MIDI and Real-Time Audio to work.) Today, with improved MIDI and Audio in ALL versions of Csound, with inexpensive Multi-channel USB and FireWire Interfaces, with fast PC/Macintosh laptops and cheap/fast desktops, we finally have everything we need for Csound to take the stage alongside any commercial hardware or software synthesizer - and you are starting to see a lot of this - a lot of people performing with Csound and doing interactive Sound Design, Phrase-Sampling, etc.
Q: One of the issues confronting a new user these days is that Csound continues to have a batch-oriented syntax. While front ends help, this syntax is sometimes a step backward for someone already used to object-oriented languages who'd really like use Csound directly. Could you describe the feeling within the Csound community about changing or not changing Csound's syntax?
A: I don't speak for the community. It is wonderfully rich and diverse, and that means that there are way too many desires, demands, expecations, biases, and prejudices. Then there are all the platform and OS wars to deal with too. As you might well imagine, the hackers want it one way; the composers want it another; performers, producers, sound designers want it yet another. Csound is what it is. It is easy to learn, it is easy to expand, it is easy to personalize, and it is a wonderful way to learn about synthesis, and signal processing.
I want Csound to work well. So that nothing is lost, I want it to be 100% backward compatible. At the same time, I want the real-time MIDI and real-time Audio to be comparable to that supported by any of today's commercial applications. On each hardware platform and under each operating system, I want to see Csound integrate seemlessly with other MIDI and audio applications. Today and into the distant future, I want Csound to be a free, powerful, expandible, and generally useful tool for everyone.
I want Csound to work as a plug-in/audio-unit, and I want Csound instruments to compile as plugins and audio-units. (We are getting close to this.) I can tell you that John ffitch and other key develors are currently working to make the core more solid and transparent and to make it easier to communicate with the core. There is work on the API that will allow users to simply plug in shareware/freeware/proprietary opcodes and libraries. We are very close to that even now.
For new users, there is plenty of graphically-oriented, user-friendly "Instant Csound" stuff starting to emerge because of the fact that there are so many ways today of working with Csound graphically, intuitively, transparentily, and immediately. In fact, you never need to know or care that Csound is under the hood! Cecilia was always an excellent model for this "type" of user, and it is now much improved. You can certainly expand that sytem by adding modules of your own (but you might not need to given that it is so extensive already!) Should you want to make your own graphical front-end for Csound, that is also getting easier than ever. Given the GUI capabilities in Matt Ingalls MacCsound and the GUI tools in Cycling74's Max/Msp/Jitter for Macintosh os9 and osX; and Miller Puckette'ss PD for Windows and Linux that both embed the entire Csound language as a single external object by Matt Ingalls; and given the excellent and extensive FLTK support of Gabriel Maldonado's CsoundAV for Windows, (opcodes now added to Istvan Varga's DeveloperCsound for Linux).
Csound is not C. At first glance, it looks like a programming language with all that text, numbers, and cryptic variable names. But, it doesn't take a musician very long to realize that the 500+ opcodes are simply modules that they can patch together with variables. Yes, at the lowest (and most powerful) level, Csound is text-based, but in less than an afternoon and some of my original Csound Toots or Chapter 1 from "The Csound Book," virtually anyone can figure out how to work with Csound and begin to harness it's power. If you are an intuitive, "production-oriented" musician that wants to turn knobs, make noises, mangle the noise you made by turning more knobs, etc. without having a clue, the Csound is NOT for you. Csound requires that you know something about software synthesis, digital audio, and signal processing. If you know something, and know how to use Csound, it is not too difficult for you to design Csound for Dummies Applications and Utilities which hide Csound entirely from the tweeker - I mean power-user.
Q: Many in the Linux community care quite a bit about software licensing. It appears that Csound is licensed under research-only terms that some may find too restrictive. For instance, one can fix a bug, or add a feature in their own copy, but redistribution with changes would evidently be prohibited. Is there some reason that the Csound license is set up this way, instead of having features that typify open source licenses?
A: I can tell you this, that it is not Barry Vercoe's intent for Csound to be restricted in any way. For "education and research" purposes, one can do whatever they want with Csound. Distribution seems to be one of the thorny issues. Regarding distribution, John ffitch, maintainer of the Canonical Csound at Bath University, and cSounds.com have permission from MIT and Barry Vercoe personally to distribute Csound. Furthermore, I have permission to distribute Csound on the CDROMS of "The Csound Book" and "The Csound Instrument Catalog." How can I help the developers to distribute their versions? Well, I personally pay for webspace for ALL the key developers so that they can distribute their versions of the program through cSounds.com. There really is not anyone creating free versions of Csound that is not currently able to do what they are doing or what they want to do. Selling music and samples made with Csound is also OK with Barry Vercoe and MIT. Of course, selling Csound is not. MIT has sold rights to develop commercial applications with Csound to Analog Devices and some other companies and so they have some vested interest in protecting those contracts and rights.
Still, we all wish that Csound was totally free, or that the ambiguities in the licence could be clarified. I am happy to report that Barry and I have been meeting about this very topic in the past few weeks. I have been presenting him with the viewpoints of each of the core developers - what they want to do with Csound, and what wording of the current license prevents them from taking Csound in this or that direction. During our last meeting, he contacted MIT's lawyers and we have arranged to meet with them when Barry returns from Russia and India where he is doing Media Lab work and Csound work. Hopefully these meetings will result in a new licence or some new wording that will encourage future developers in their efforts to improve and extend the language.
Q: Csound seems like a very nice interdisciplinary tool for students, bridging across multiple subjects like music, sound, psychoacoustics, and DSP. What have been some of your best experiences with Csound in the University setting?
A: Csound is the ultimate educational platform for students of Computer Music. In The Csound Book, every bit of synthesis and signal processing theory are supported and illustrated by complete and fully working Csound instruments that can be edited and expanded and fully explored by the student. I have been teaching Csound to undergraduate Music Synthesis and Music Production and Engineering Majors at the Berklee College of Music for 18 years. For the past four years, I have been teaching Csound to graduate students at NYU. I have given Csound workshops and seminars in Eastern Europe, Western Europe, and Southeast Asia. I use Csound in my DSP classes both at Berklee and NYU and in my Max/MSP classes as well. Currently, we are developing a set of Psychoacoustic tools for Music Therapy students at Berklee and I am about to introduce a whole new area at cSounds.com developed by my son Adam (a student of Scotty Vercoe!)
Csound has always been an excellent tool for teaching and learning synthesis, acoustics, and signal processing. The Csound Book reveals virtually all the industry secrets. When my students get Csound into a major motion pictures or major telivision programs because of the Csound gigs with Media Ventures or Machinehead; when my students get Csound into Video Games because of their Csound gigs with Lucas Arts, and Dreamworks; when my students do Csound work for Rock Stars like Trent Reznor, Aphex Twin (Richard James), DJ Spooky; when my students get jobs in Add Agencies, Jingle Houses, and Recording Studios and Csound gets into national ads with voice talents like Jamie Lee Curtis; when my students get gigs at Cakewalk, MOTU and other software companies because they know and work with Csound; when my students publish thier own Computer Music Books in Korea; when Csound compositions by my students win national and international competitions; when Csound helps my students get into graduate schools; when my students find ways a making Csound work in their musical toolkit, these are some of the most gratifying things about teaching Csound.
Hearing that computer music professors and students from all over the world are using Csound and using The Csound Book is really great, because Csound is really great - and getting better all the time. It is gratifying to know that my work has been helpful and inspiring to them. Max Mathews, the father of computer music is a good friend and mentor to both Barry Vercoe and I. His MusicV program inspired Barry to develop Csound and his book "The Technology of Computer Music" inspired me to write "The Csound Book." Barry's son Scotty was my student. My oldest son Adam, a Music Therapy major at Berklee, was Scotty Vercoe's student. Today Adam Boulanger is building tools for his own Psychoacoustic research in Csound and through his research tools, introducing Csound to the Music Therapy community. I guess I am most psyched about the fact that the future of Csound is in the hands of some great students including Barry Vercoe's and my own very talented sons.
In the year I was born, 1956, Max Mathews (the father of computer music) had a dream and began to realize it in his MusicN languages. He passed the torch to Barry Vercoe and their light inspired a nineteen year old composer and electronic musician named Richard Boulanger. I am trying to pass along what I have learned from them and what I have learned from my brilliant students and colleagues. I hope it helps, and I hope that something I have said in this interview inspires some of your readers to check out Csound Today.
Csound web site
Dave Phillips Article:
"The Csound Book: Perspectives in Software Synthesis, Sound Design,
Signal Processing, and Programming."
Edited by Richard Boulanger
The MIT Press