TabSynth is a program for making sounds based on the position of the cursor inside a window. Tablets are supported and may be used for additional control (via pressure and tilt). TabSynth was written as a project for Music 420 at Stanford University. Licensed under the GPL2, TabSynth is free software.
TabSynth is written in C++ and uses a plugin system for making sounds, so it is easy to extend it in many ways. The Synthesis Toolkit (STK) library is used for synthesis. Among the provided plugins is a physical model of a Theremin.
TabSynth was written for and known to run on Linux, although it may not be too difficult to get to run on other systems. It has been developed on and tested with Ubuntu 8.10 and Fedora 10.
Depicted here is TabSynth running on Ubuntu. The included Theremin plugin is shown. As Tabsynth uses gtkmm, its looks will adapt to whatever GTK theme you have. Click on the image to make it bigger.
TabSynth must currently be compiled from source. This requires a C++ compiler (g++) as well as the development files for gtkmm amd STK. TabSynth is known to compile on Ubuntu 8.10 and Fedora 10. Let me know if you get it running on any other distros / platforms.
gtkmm-dev should be provided in the repository of most distros. In particular, Ubuntu 8.10 and Fedora 10 both have it easily available. The Makefile looks for gtkmm-2.4, though it's possible an older version may also work.
Installing the STK
STK is not uncommonly included in distro's repositories, however the version shipped with Ubuntu 8.10 is too old to work with TabSynth's provided plugins. (We need at least 4.2.1 and 8.10 provides 4.2.0). Fedora's version is recent enough. DUE TO API CHANGES IN 4.4.0, NEW VERSIONS OF STK DO NOT WORK WITH TABSYNTH <0.2! Work on porting is currently in progress.
Ubuntu users must manually install the STK libraries. Some instructions for doing that can be found here (look for the part called "Library Use"). I have outlined the important steps below:
Installing STK from source
- It's probably best to get rid of any existing, older version of STK using your package manager.
- Download the newest sources from here.
- Untar and cd into the directory just created
The default options should probably suit you, but if you want JACK output or something like that, feel free to peruse the STK documentation to look up the correct flags.
This step will probably fail. I think this is because STK was made for gcc3 but most new distributions bundle gcc4. In order to get it to compile, either use gcc3 or modify the source as follows (thanks to Nelson Lee for figuring this out):
- In stk/include/Stk.h:
- add #include <stdlib.h>
- change #include <string> to <string.h>
- In stk/src/Messanger.cpp, add #include <algorithm>
- In stk/src/RtAudio.cpp, add #include <limits.h>
- In stk/include/Stk.h:
- Copy src/libstk.a somewhere in your library path (/usr/local/lib is probably a good candidate). It may be necessary to run ldconfig before your system will recognize the library.
- Copy everything in include/ to a folder called stk/ somewhere in your include path (e.g. /usr/local/include/stk/).
- Copy everything in rawwaves to a folder called stk/rawwaves in your share path (e.g. /usr/local/share/stk/rawwaves/
- That should be everything. If the step below still complains about stk not being found, check your library and include environmental variables to make sure they're looking in the right place.
To install, get the newest sources (see below) and run "make" in the root tabsynth directory. If you're lucky, it will compile and produce a tabsynth executable :).
(New in 0.2)To install TabSynth system-wide (and add entries to the application menu) run 'make install'
To get a copy of the most recent code, either visit the above link and use the download function, or install Mercurial and use the following line:
hg clone http://bitbucket.org/cozzyd/tabsynth/
Alternatively, you may download a source tarball from here. Note that these may only be updated periodically and are liable to be out of date.
In addition to this page, the following forms of additional documentation are currently available (they are included with the source distribution):
- A written report on TabSynth 0.1. This has detailed user and developer's documetnation included. (pdf) (tex)
- A (already outdated) presentation given on TabSynth for Music420 (pdf) (tex). Note that the repository link is no longer correct and there are some other changes already.
TabSynth was written by Cosmin Deaconu. He may be contacted at cozzyd AT gmail DOT com. Please use the bug tracking at bitbucket to file bug reports.