From CCRMA Wiki
Jump to: navigation, search

This page last updated April 2016

Current Requirements: Linux These instructions are laid out assuming that the Linux distribution is using apt-get.

Installing Dependencies

If you don't have a C++ compiler such as g++ or clang installed, then you will need to install it. You will also need to download and install faust-0.9.73.tgz from the source -- see [1]

You will also need:

sudo apt-get install qjackctl

sudo apt-get libqt4-dev qt4-qmake

Installing Synth-A-Modeler

  • Download Synth-A-Modeler version 0.9 (SaM-0.9)
  • Now open up the Terminal, extract SaM-0.9, and change directories in there.
  • Before you plug in your FireFader, run the command

ls /dev/tty*

for a list of the serial devices. Then, after plugging in the FireFader, run

ls /dev/tty*

again. The new path you see is the path to your FireFader. For instance, on my machine it is /dev/ttyACM0. Then edit the file PathToDevice.txt so that it contains only the new path, that is for me it contains only the following:


Exploring Synth-A-Modeler

  • It's nice to get crisp-feeling haptics. To achieve that, you will need to configure your Jack settings carefully. Run the following command to start the GUI for adjusting the Jack parameters:

qjackctl &


  • As you will notice above, the interface is set to playback only. (You can try making it full-duplex later if you still want that, but leave it playback only at first.)
  • Take care that you didn't accidentally select an HDMI audio output unless that's what you wanted!
  • Hit the 'Start' button in QJackCtl. Read the result of this in the Jack 'Messages' window. If it didn't work, go back and work on the settings some more, otherwise move on.
  • If you have problems with dropouts, you can change the Buffer Size to 128 instead (consider using an external USB audio device if it helps you get the latency down!) -- but 64 works fine for me as long as I am not running too many other applications. (32 or 16 may even work on some computers and might result in even crisper feeling haptics.)
  • Click on the 'Save' button and then start the Jack audio server by clicking on the Start button.
  • To build all of the models stored in MDL files into QT applications for the Jack audio server, run the command

make jackqt

The make command should've caused the subdirectory jackqtdir to be created containing a compiled application for each model. (If that didn't work, then talk to one of us.) Type the following command to see which models it compiled:

ls jackqtdir

  • You can use the script to make it easier to start one of those models. (Some internal Faust 0.73 code isn't being very good about automatically connecting applications up to the jack router, and this script works around that.) For instance, to start the model pluck_one_string_pitch_control_auto_timbre.mdl, you should be able to run the following command:

./ pluck_one_string_pitch_control_auto_timbre

Hint: Use the tab key!

  • Now, try editing the models. The make jackqt command should detect any MDL files that have changed and recompile the corresponding applications.
  • For information on the syntax, please see the Synth-A-Modeler Wiki or better yet the sheets we are passing around.


  • You can only run one model at a time! Really! (But you can edit the models to bring the components in the model together ...)

Going Further

  • To force Synth-A-Modeler to only compile one model, such as guiro.mdl, you can run the following command:

make jackqt SAMTARGET=guiro

  • Setup the Pure Data (pd) header files for Faust and try the make puredata command.
  • Note: Currently that is probably building versions that only work in Pd extended.


  • If Synth-A-Modeler crashes badly, it can also crash the Jack audio server. In this case, don't forget to restart the Jack audio server.
  • Requires minimum Perl version 5.10
  • The following kinds of errors can for instance happen if you ever upgraded Faust but forgot to remove the older version of Faust:

error: macro "max" passed 3 arguments, but takes just 2 or other particularly errors involving some standard template libraries, then please make sure you only have one version of Faust installed. You can remove all older versions of Faust by entering into each of their source directories and running sudo make uninstall (Then of course you will need to reinstall you favorite version of Faust 0.9.58 by going into its source directory and running sudo make install


  • Try using the faust toolchain to compile the models into your favorite target format. (Look at all of the architecture .cpp files in /usr/local/lib/faust
  • Note if you want to compile the models for folks who don't have the FireFader: If you set the variable $SimulateFireFader=1 inside the file Synth-A-Modeler, then the compiler will add hsliders for the FireFader knobs so that you can play the models directly in software only.

Optional: Install the Synth-A-Modeler Designer GUI

  • Go back into your src directory and download the repo from the github repo [2]
  • Go inside there in the terminal.
  • Follow the directions in for compiling.
  • Additional notes:
    • This is still somewhat experimental.
    • If you get an error about -std=c++11, it might mean that your compiler is too old. On a 2012 machine, I was able to get this working by defining#

export CXX=clang

However, on other systems it would probably also be necessary to install clang and/or upgrade whatever C++ compilers are installed.