Front Ends
Prev | Part I. Overview | Next

## Front Ends

Front ends are programs that provide some form of user interface for Csound. Within these programs, Csound is used to generate sound, and familiarity with Csound code is required in order to use them. Front ends typically add helpful features, such as syntax coloring, graphic widgets, or tools for algorithmic score generation, that are not part of Csound itself. Most of these programs were created by a single person, so some of them are not being maintained. Below is a list (certainly not complete, and perhaps not up to date) of front ends available for Csound.

Most often, you'll want to download and install Csound itself before downloading and installing a front end. Some front ends require particular versions of Csound, so if you plan to use a front end, it's recommended that you verify its compatibility before installing Csound.

## QuteCsound

QuteCsound is a versatile, cross-platform GUI (graphical user interface) which is bundled with the standard Csound distribution. Created and maintained by Andres Cabrera, QuteCsound provides a multi-tabbed editor, graphic widgets for real-time sound control, and an opcode help system that links to this manual. At this writing (2011) QuteCsound is in active development, so the version installed in your system when you install Csound may not be the most current. The most recent version can be found at http://qutecsound.sourceforge.net/.

## Blue

A cross-platform composition-oriented front end written by Steven Yi in Java. The user interface provides a timeline structured somewhat like a digital multitrack, but differs in that timelines can be embedded within timelines (polyObjects). This allows for a compositional organization in time that many users will find intuitive, informative, and flexible. Each instrument and score section in a blue project has its own editing window, which makes organizing large projects easier. Blue can be downloaded at Blue Home Page.

## Cecilia

Uses Csound, and also incorporates its own score generation language. Not updated since 2004, but should run in Mac OSX and Linux. Available from http://www.jeanpiche.com/software.htm.

## MacCsound

A front end for the Macintosh, MacCsound provides a text editor, graphic editing of control signals, and other features. Available at the MacCsound Page. MacCsound requires the Universal version of Csound, not the Intel version, and with OS 10.6 also requires Rosetta, which is located in the OSX installer DVD for 10.6 but is not installed by default.

## WinXound

A convenient front-end for Windows with syntax highlighting. You can get it at the WinXsound Front Page.

## Cabel

Cabel is a graphical user interface for building Csound instruments by patching modules, similar to the approach used in modular synthesizers and graphical programming environments such as Pd. Cross-platform, written in Python. While Cabel seems (as of 2011) not to have been updated in four years, it still works with current versions of Csound. Available from http://cabel.sourceforge.net/.

## Csound5GUI

Csound5GUI is a cross-platform GUI. Formerly part of the standard Csound distribution, it is now available as source code and possibly as a downloadable .exe for Windows. It implements most configuration features of Csound.

## CSDplayer

This is a simple Java program to play csd files. It is included in the standard distribution, and will be of interest mainly to Java programmers.

## Winsound

Like Csound5GUI, Winsound was formerly part of the main Csound tree. It is now available only as source code. Winsound is a cross-platform FLTK port of Barry Vercoe's original front-end for csound. Some partially sighted or unsighted users report success using Winsound with text-to-speech software.

## Csound Editor

Csound Editor is no longer being maintained, but it's still available from Flavio Tordini's Home Page. For Windows systems, includes syntax highlighting.

In addition to the main front ends listed above, here are some other programs that may qualify as front ends, depending on your definition:

GeoMaestro: | http://www.zogotounga.net/GM/eGM0.html
Csound-x: | http://www.zogotounga.net/comp/csoundx.html
AthenaCL: | http://www.flexatone.net/athena.html
GRACE/Common Music: | http://commonmusic.sourceforge.net/
AlgoScore: | http://kymatica.com/Software/AlgoScore
nGen: | http://mustec.bgsu.edu/~mkuehn/ngen/
ImproSculpt: | http://improsculpt.sourceforge.net/pmwiki/pmwiki.php

## CsoundAC

### Python Scripting

You can use CsoundAC as a Python extension module. You can do this in a standard Python interpreter, such as Python command line or the Idle Python GUI.

To use CsoundAC in a standard Python interpreter, import CsoundAC.

          import CsoundAC

The CsoundAC module automatically creates an instance of CppSound named csound, which provides an object-oriented interface to the Csound API. In a standard Python interpreter, you can load a Csound `.csd` file and perform it like this:

          C:\Documents and Settings\mkg>python
          Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)] on win32
          Type "help", "copyright", "credits" or "license" for more information.
          >>> import CsoundAC
          >>> csound.load("c:/projects/csound5/examples/trapped.csd")
          1
          >>> csound.exportForPerformance()
          1
          >>> csound.perform()
          BEGAN CppSound::perform(5, 988ee0)...
          BEGAN CppSound::compile(5, 988ee0)...
          Using default language
          0dBFS level = 32767.0
          Csound version 5.00 beta (float samples) Jun  7 2004
          libsndfile-1.0.10pre6
          orchname:  temp.orc
          scorename: temp.sco
          orch compiler:
          398 lines read
          instr   1
          instr   2
          instr   3
          instr   4
          instr   5
          instr   6
          instr   7
          instr   8
          instr   9
          instr   10
          instr   11
          instr   12
          instr   13
          instr   98
          instr   99
          sorting score ...
          ... done
          Csound version 5.00 beta (float samples) Jun  6 2004
          displays suppressed
          0dBFS level = 32767.0
          orch now loaded
          audio buffered in 16384 sample-frame blocks
          SFDIR undefined.  using current directory
          writing 131072-byte blks of shorts to test.wav
          WAV
          SECTION 1:
          ENDED CppSound::compile.
          ftable 1:
          ftable 2:
          ftable 3:
          ftable 4:
          ftable 5:
          ftable 6:
          ftable 7:
          ftable 8:
          ftable 9:
          ftable 10:
          ftable 11:
          ftable 12:
          ftable 13:
          ftable 14:
          ftable 15:
          ftable 16:
          ftable 17:
          ftable 18:
          ftable 19:
          ftable 20:
          ftable 21:
          ftable 22:
          new alloc for instr 1:
          B  0.000 ..  1.000 T  1.000 TT  1.000 M:     32.7      0.0
          new alloc for instr 1:
          B  1.000 ..  3.600 T  3.600 TT  3.600 M:    207.6      0.1

          ...

          B 93.940 .. 94.418 T 98.799 TT281.799 M:    477.6     85.0
          B 94.418 ..100.000 T107.172 TT290.172 M:    118.9     11.5
          end of section 4         sect peak amps:  25950.8  26877.4
          inactive allocs returned to freespace
          end of score.              overall amps:  32204.8  31469.6
          overall samples out of range:        0        0
          0 errors in performance
          782 131072-byte soundblks of shorts written to test.wav WAV
          Elapsed time = 13.469000 seconds.
          ENDED CppSound::perform.
          1
          >>>

The `koch.py` script shows how to use Python to do algorithmic composition for Csound. You can use Python triple-quoted string literals to hold your Csound files right in your script, and assign them to Csound:

          csound.setOrchestra('''sr = 44100
          kr = 441
          ksmps = 100
          nchnls = 2
          0dbfs = .1
          instr 1,2,3,4,5 ; FluidSynth General MID
          I; INITIALIZATION
          ; Channel, bank, and program determine the preset, that is, the actual sound.
          ichannel		=			p1
          iprogram		=			p6
          ikey	 		= 			p4
          ivelocity 		= 			p5 + 12
          ijunk6 			= 			p6
          ijunk7			=			p7
          ; AUDIO
          istatus			=			144;
          print			iprogram, istatus, ichannel, ikey, ivelocityaleft, aright
          fluid			"c:/projects/csound5/samples/VintageDreamsWaves-v2.sf2", \\
          iprogram, istatus, ichannel, ikey, ivelocity, 1
          outs 			aleft, arightendin''')
          csound.setCommand("csound --opcode-lib=c:/projects/csound5/fluid.dll \\
          -RWdfo ./koch.wav ./temp.orc ./temp.sco")
          csound.exportForPerformance()
          csound.perform()

Prev | Up | Next
Strings in p-fields | Home | CsoundVST