Clone wiki

pure-lang / Faust

Using Pure with Faust

Yann Orlarey's Faust is a functional programming language for real-time sound processing and synthesis developed at Grame and distributed as GPL'ed software. With Faust you can develop signal processing algorithms in a high-level functional language, but still achieve a performance comparable to carefully handcrafted C routines.

Pure provides tight integration with Faust through its built-in Faust interface which can be used both to inline Faust code in Pure scripts and to load external Faust modules in LLVM bitcode format dynamically at runtime. Please note that the built-in interface requires Faust2, the latest Faust incarnation from Faust's git repository, which is still under development.

There's also a separate pure-faust addon module which can be used either with the built-in Faust interface or with external Faust modules available in shared library format. The latter also works with the mainline (stable) Faust version.

Getting Faust

To work with Faust you'll need a Faust installation, of course. You basically have the following options there:

  • Use the mainline Faust (a.k.a. Faust1) compiler. This is more stable, but offers less features than Faust2.
  • Use Faust2 which offers additional C, Java, JavaScript and LLVM backends. The latter is required to utilize Pure's built-in Faust interface and Faust inlining capabiliies.
  • Use FaustLive, Grame's stand-alone graphical frontend to the Faust compiler, which doesn't need any external compiler toolchain and lets you compile and run Faust dsps on the fly. This is a very nice environment for rapid prototyping, but unfortunately it can't export binary dsp modules for direct use with Pure right now.
  • Use Grame's online compiler which can compile Faust dsps to an abundance of different targets, including the pure target which can be used with the pure-faust addon module. (Right now this target only works for Linux, however.)

The sources and some Mac and Windows binaries are available at Grame. We also provide some ready-made packages and ports for Linux and Mac OS X in the package repositories listed below. (Unfortunately, our Ubuntu and Mac packages are outdated right now, but will hopefully be updated soon. Also note that Faust packages for Ubuntu 15.10 and later are now provided in the corresponding Pure PPA.)

Arch Linux (AUR): These packages are also available in binary form through the Pure AUR repositories at Bitbucket, please check the Pure on Arch Linux wiki page for details.

Ubuntu (Launchpad):

Mac OS X (MacPorts):