In this guest column, we turn to veteran synthesist and music tech expert Jim Aikin. When Jim wants to do digital synthesis, one of the tools to which he turns is a veritable favorite with a direct-line legacy to the beginnings of computer sound. That doesn’t mean Csound hasn’t kept with the times, though, or that it has to be unfriendly. If you’ve been looking for a way to dive into sound and code, this could be an ideal path. -Ed.

Csound is one of the most powerful pieces of free, open-source, cross-platform music software in the world. But it’s not the most user-friendly. With the release of QuteCsound 0.6.0, developer Andres Cabrera has made Csound about as easy to use as it’s ever likely to be. You still have to type code — instruments and scores are created in ASCII. But QuteCsound streamlines the process with a built-in text editor that has auto-complete, syntax coloring, and a clickable index pane that lets you jump directly to any comments that you’ve entered in your score.

QuteCsound implements an excellent set of mousable graphic widgets for real-time control. (Okay, it’s not Max, but you can do a lot.) In another pane in the main QuteCsound window you can display the Csound manual. Using pop-up windows, you can define looping score segments and start and stop them with mouse-clicks.

All of the features of Csound, including real-time MIDI and OSC I/O, are available in QuteCsound. After creating a few instruments and a score, you just click the Run button — no need to invoke Csound from a command line. The command line flags are tucked away safely in a dialog box. (Yes, it’s not the ’70s anymore.)

Csound itself is a separate download. Both Csound and QuteCsound are available in doubles (-d) and float (-f) versions, and your two installs must match.

If you’re comfortable with writing code, you may also want to look at blue. Like QuteCsound, blue is free and cross-platform (Mac/Win/Linux). Now at 2.1, blue is a deeper and more powerful but less transparent front end for Csound. To my way of thinking, QuteCsound is more like “vanilla Csound with real-time graphic widgets and a nice text editor.” Blue is a multi-track composition environment in which each of the Sound Objects positioned on a track is created using Csound code.

If you’ve never looked at Csound, it may be a bit intimidating at first. One of the best ways to really learn the system is by buying a copy of The Csound Book, a fat volume that will take you as deep into the math. Advanced math isn’t necessary to produce sound, fortunately.

Here’s my favorite example of how easy it can be. Would you like a ring modulator effect? You can do that in Csound with a single character — an asterisk (multiplication sign). This line:

asig3 = asig1 * asig2

…ring-modulates signal 1 by signal 2 and puts the output in signal 3. There’s a little more to it than that: You have to make very sure that the levels of the two inputs never exceed 1.0. I usually recommend that newcomers to Csound not use headphones, because a bug in your code can cause ear damage! But with a little effort, you can build complex modular synthesizers in Csound using many different types of synthesis. If you take the time to get into it, you’ll be amazed at what it can do.

Visit Jim at musicwords.net. Now, if you’ll excuse me, I have to give this a try myself. -Ed.

  • Jim Aikin

    Thanks for letting people know about this, Peter! I would demure from your intro on only one small point: You've created the implication that Csound is the only digital synthesis system I use. In fact, I use quite a lot of different things at different times.

  • http://dmlandrum.noisepages.com/ Darren Landrum

    I've always wanted to play with the scanned synthesis opcodes. Maybe now's my chance.

  • http://soundcloud.com/wodgod Gogmagog

    +1 for blue. One of the main (quite valid) gripes about CSound is that it's text-based. While I find writing synth patches as lines of code rather elegant and easy, writing scores where each note is a line of text with possibly endless numerical parameters is tedious, to say the least.

    blue is the only non-generative (though it has algorithmic compositional capabilities) CSound environment that I know of that makes the composition part of writing music in CSound both easy and powerful. It's got a graphical timeline and individual "tracks" (called layers) wherein one can arrange sound objects which themselves can contain sub-layers with their own sound objects, etc.

    It's also in very active development, and Steven Yi (developer) is very responsive to bugs and change requests.

    For my money, blue is what makes CSound usable. Otherwise CSound would be relegated to generating one-off "samples" in my workflow.

  • http://www.createdigitalmusic.com Peter Kirn

    @Jim: Ha, didn't quite mean to imply that. (Got carried away with the celebrity endorsement.) I've prepended "one of…" to the tools.

    I will echo what other folks said here, partly because I found the traditional Csound workflow to be really not terribly productive for me. Used within these other environments, though, it's quite different.

  • marko

    well there is also the OMchroma library from open music that was designed by marco stroppa for high level control of sound synthesis. you have to be fluent in both open music and csound ( previous versions used also diphone as synthesis engine) but it allows an unprecedented refinement of synthesis through use of complex algorhytmic functions in generating a csound file.

  • http://www.quikphix.org xonox

    I used QuteCsound for a few months. It is what i've always wanted for writing csound code.

    Csound is not the easiest tool to get into but it does a lot of things and is very very powerful. There are a lot of opcodes already written so you don't need to figure out how to code your own lowpass filter (but you could if you wanted).

    If you want to create banks of multiple samples it is not hard with csound. So this tool can be used to create huge sample sets to import into your favorite sample playback software. Be it an old school tracker or something more trendy.

    I think it is one very underrated software synthesis environments.

    QuteCsound gets the mundane stuff out of the way so you can work with the code in a more comfortable way. It has snippets of code to get you going and the csound manual has many examples that are fun to try.

    I've tried Blue a few times, it seemed very different and very powerful. Seemed stable and loaded with useful features. Unfortunately i lack the time to learn this tool right now.

    Thanks for letting people know about these tools.

  • Jim Aikin

    Developments in Csound in the past few years make the workflow a bit easier. Using text macros, you can easily build loops in your score, for instance, and use an incrementing loop counter to make the score events different on each repetition. There's the whole Python implementation, which I've never even looked at. It really is a pretty amazing toolkit.

  • http://lodsb.org lodsb

    I love Csound for the quality of the synthesis opcodes, for modular synthesis I still think in this regard and the sheer amount of synthesis methods it is unsurpassed.

    There is also the Cecilia editor which is a tad more mature than qutecs. A new version of it that is currently in beta (cecilia4). This fits more into my workflow (lots of envelope based sequencing + a litle live tweaking to generate some samples etc).

    Another _great_ and cheap tool is csLadspa that allows you to dump your synthesis code into a ladspa plugin. I usually do that for the phase vocoder based stuff and sequence that in renoise. quite a fantastic combination!

    CS sadly lacks the livecoding aspects and maxmsp/pd makes some of this only available in a language "workaround" (eg. JS). so when it comes to creativity, quickly trying out new ideas and fooling around -> supercollider it is for me :)

  • Random Chance

    Great news, this version finally works on my machine (although I had to create another link to the portaudio dylib — when will loading and managing dynamic libraries be really as easy as it's supposed to be?). Although I have the CSound book on the shelf since at least a year I've since had so little time to do anything other than play around for a little while because there are so many other things to try and do.

    @lodsb: You are not confined to using JavaScript in Max/MSP. There is always the ability to use other interpreters that others have made available or even create a binding of your own. The C API is quite unfriendly all in all, but that can be said about other equally old and long evolving C APIs as well. There's really nothing technically stopping you from even creating your own live coding environment with its own custom language (dare I say DSL? *g*) as a Max/MSP external.

  • http://lodsb.org lodsb

    @Random Chance, yeah you are right. JS was just an example though.

  • Art

    Cecilia is an interesting frontend for Csound
    http://www.csounds.com/cecilia/ http://cecilia.sourceforge.net/

  • Paul Davis

    <cite>(Yes, it’s not the ’70s anymore.)</cite>

    that calls out for the obvious response (if only one person reads this link it will be worth including it):

    http://www.cryptonomicon.com/beginning.html

  • Paul Davis

    meh, here's a much btter version of that link that you can actually read:

    http://artlung.com/smorgasborg/C_R_Y_P_T_O_N_O_M_

    and for those who just prefer wikipedia:

    http://en.wikipedia.org/wiki/In_the_Beginning…_…

  • http://tagmagic.wordpress.com Jaime Munarriz

    Csound is difficult, but it sounds better than anything!

    Writing the Score put me into an interesting situation: you have to write down every single note that you want to hear (unless you use loops, but this is quite advanced). So you realize you are used to play too many notes, without really thinking if they are really important.

    This workflow teaches to be aware of excess of unthought notes, into a kind of zen state where each element is carefully crafted.

    Then, I've heard/seen amazing performances using Csound+Python!

  • Rory

    Anyone finding the work flow of Csound tricky in comparison to other synthesis applications should try using Csound from within Max, Max4Live or Pd. There are a host of different Csound objects for those platforms.

  • http://linux-sound.org Dave Phillips

    A link to more useful Csound tools for Linuxen:

    http://linux-sound.org/cshelp.html

    I try to keep it current.

  • Jim Aikin

    @lodsb, I've never tried Cecilia because the Windows version lags so far behind the Mac version. I hope the next version will be the same across platforms.

    @Jaime, you're right that creating a score forces you to think about every note, and that can be a good thing. There are other ways to make music, though, which are especially useful for minimalist music. Some people generate huge scores with Python. You can do it directly in Csound by creating an "instrument" that's actually a step sequencer using the event or scoreline opcodes (or schedkwhen).

  • http://magelectrique.blogspot.com/ deb76

    Hello

    Thank you for this topic. I had not noticed the new version of QuteCsound

    version 6.0. I use it on Mac but on PC, I can not run because of the absence of a dll. I tried on several machines and each time the same thing. For PCs, I work with WinXound who also has been update and is pleasant to use.

    Having worked with Music 10, with QuteCSound WinXound and I found my marks. Not that I am an expert in code, but I'm getting my models to make morphs, or changes – take a peak sinusoidal and the change in time to the distortion sounds As it can be monstrous, or generate a chorus playing on microtonality.

    With CSound, I copy bits of code, I make amends for my samples. I do the same with Max for Live, including generative music which I adapt for my needs the CTS LIB fantastic K. Essl.

    Sorry for my bad English

  • Greg

    Great article.

    In response to everyone griping about the non-realtime . . .

    Why not spend more time composing and matching/designing a software instrument to/for it?

    Or hell, make your own realtime instrument with it – it's Turing-complete and everything's there if you want to link it up to anything else. I mean, *anything* else.