Direkt zum Inhalt

In the World of Grains – Part 2

Faust computer language

In the World of Grains – Part 2

(contains embedded video) If you want to support my work, please make use of the "PayPal" button - thank you very much indeed!


Impromptu and Extempore both focus on live coding. But as Impromptu is only for the Mac world, whereas Extempore is a multiplatform language, and Extempore is developed from Impromptu, I am going to talk only about Extempore here. Both, Impromptu and Extempore are designed by Andrew Sorensen, Extempore, the younger one, went public in 2011. Let me quote the documentation (see resources chapter):

coding sound extempore - granular sound design

These two goals—dynamic flexibility and close-to-the-metal control—seem at odds. Extempore tries to offer both by supporting both a high-level dynamic language (Scheme) and a low-level ‘C like’ language (xtlang) simultaneously, with tight integration and transparency between the two. A running Extempore process will compile both valid scheme and xtlang forms. Scheme objects (lists, closures, continuations, etc.) coexist with the xtlang types and pointers to them to allocated memory, and with a few ‘helper functions’ data can even flow naturally between both languages.

In other words, we get two languages in one, each of which deals with different types of tasks.

Extempore comes with a couple of functions, whichg allow granular processing of sound – mainly of samples, wav-files etc. - but those of you, who are not interested in live programming that much, will shy away quite soon, because the learning curve is extremely steep, as the syntax and structure are kind of hard to take. The documentation is excellent …. for a programmer, but hard to read for someone, who looks at the matter mainly from a musical, a sound designer view. And, well, considering the effort it takes to dive into Extempore, the granular functionality you get your hands on there is kind of meager. But, as I mentioned before, Extempore´s main goal is live programming – and here it´s a giant of a language.

coding sound faust - granular synthesis


The name of this language stands for Functional Audio Stream. The software is created by Yann Orlarey, Stéphane Letz and Dominique Fober. It´s first release is from 2002. You can compile FAUST code to a couple of other languages and platforms, like e.g. C, C++, Java, JavaScript, ASM.js, MAX MSP, and you can build VSTs and AUs directly out of your FAUST code. It is easy to interface FAUST code to iOS, Android and other platforms. As a unique feature of FAUST, the software creates flow diagrams from your code – and it does it automatically (see the linked video).


Using the FAUST libraries (snippets of FAUST code) you can generate user interfaces (UI, GUI) to process your code. FAUST supports multithreading and parallel processing. FAUST comes under the GPL license, it is free to use, and it runs on Linux, OS X and Windows. You can use it online, directly on the server of Grame (Lyon, France), or download to use it offline on your computer.

FAUST comes with a bunch of libraries to deal with sound, it is an ideal piece of software to create granular sound processors, and even if its syntax needs getting used to, its logic is quite easy to grasp, and because of the automatically generated flow charts FAUST code is a clearly laid out thing to deal with.


JSyn is a JAVA-based musical application language, that comes with a set of unit generator classes, included one called “GrainFarm” to generate clouds of snippets of sound following a number of basic parameters like amplitude and amplitude range, density, duration and duration range, playback rate and playback rate range. The language was invented by Phil Burk, who has continued developing it until today. There´s a whole JSyn community around with newsletters and services (see Resources chapter). There is also a graphical user interface to JSyn, called “Syntona”. See more details in the next chapter.

coding sound nyquist - sonic grains



The list of the people, who have contributed to Nyquist, reads like the who-is-who of sound design, coding, avantgarde composition and IT teaching. It was invented/developed by Roger Dannenberg. You can get it at SourceForge (see chapter “References and Sources”). It´s free. So, what´s so special about Nyquist after all? Besides its exceedingly rich variety of functions and libraries conserning the creation and manipulation of sound, it´s the way the aspect of time is integrated in the language.


Yes, the seamless connection of score and sound in the syntax and the grammar of Nyquist is remarkable (not put into practice as two distinct parts, like in Csound, but merged into a unified language). But the conception of time in Nyquist as a more important aspect, if you want to deal with granular sound processing. Telling apart logical time from physical (real) time, diverse functions concerning time manipulations, telling apart time, that occurs in rhythmical effects from time, that occurs in the development of a sound and a lot more.

Nyquist is based on LISP, but the NyquistIDE offers also a SAL editor (see linked video). It´s a software to create sounds and instruments as well as to compose scores.


The manual (see chapter “References and Sources”) is excellent, and helpful even for a beginner (not for an absolute beginner in coding at all though). Nyquist runs under OS X, Linux, Windows and other operating systems (e.g. Next). The download comes with an integrated development environment (IDE), but can also be operated without it (command line mode). I strongly recommend using the NyquistIDE though, as it enables a faster workflow (see linked video).

... to be continued

to part 1 ("A Short History of Granular Synthesis - Part 1"): https://www.dev.rofilm-media.net/node/340

to part 2 ("A Short History of Granular Synthesis - Part 2"): https://www.dev.rofilm-media.net/node/342

to part 3 ("A Short History of Granular Synthesis - Part 3"): https://www.dev.rofilm-media.net/node/346

to part 4 ("A Short History of Granular Synthesis - Part 4"): https://www.dev.rofilm-media.net/node/356

to part 5 ("In the World of Grains - Part 1"): https://www.dev.rofilm-media.net/node/364

to "Inthe World of Grains" part 3: https://www.dev.rofilm-media.net/node/378

to "In the World of Grains" part 4: https://www.dev.rofilm-media.net/node/385

to "In the World of Grains" part 5: https://www.dev.rofilm-media.net/node/390

to "In the World of Grains" part 6: https://www.dev.rofilm-media.net/node/398

to "In the World of Grains" part 7: https://www.dev.rofilm-media.net/node/407

to "In the World of Grains" part 8: https://www.dev.rofilm-media.net/node/414

to "in the World of Grains" part 9: https://www.dev.rofilm-media.net/node/421



Add new comment

Das Sprachkürzel des Kommentars.


  • Keine HTML-Tags erlaubt.
  • Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • Website- und E-Mail-Adressen werden automatisch in Links umgewandelt.