1 2DSSI 3---- 4 5This is the DSSI Soft Synth Interface specification & example 6code repository. 7 8You'll find here: 9 10 doc/RFC.txt -- proposed DSSI specification -- read this first 11 12 dssi/dssi.h -- DSSI header file -- the comments define those parts 13 of the spec dealing with host/plugin interaction (not covered in RFC) 14 15 jack-dssi-host/jack-dssi-host.c -- a simple JACK/ALSA-sequencer plugin host 16 17 examples/dssi_osc_send.c 18 examples/dssi_osc_update.c -- simple DSSI OSC test programs 19 20 examples/dssi_list_plugins.c -- a program to list available plugins 21 examples/dssi_analyse_plugin.c -- a program to describe a plugin 22 23 examples/trivial_synth.c -- a quite useless but fairly clear 24 illustrative synth plugin 25 26 examples/less_trivial_synth.c -- a synth that actually does some 27 basic synthesis 28 29 examples/less_trivial_synth_qt_gui.cpp -- a very simple Qt GUI 30 for the above 31 32 examples/karplong.cpp -- a simple Karplus+Strong plucked string synth 33 34 examples/trivial_sampler.c -- a simple one-sample polyphonic 35 mono sampler (that doesn't do proper pitch scaling) 36 37 examples/trivial_sampler_qt_gui.cpp -- a very simple Qt GUI for 38 the above 39 40 41Requirements 42------------ 43 44In order to install the development files (dssi.h and dssi.pc) 45needed to compile DSSI applications, you only need the following: 46 47 pkgconfig with PKG_CONFIG_PATH set appropriately 48 ALSA 0.9/1.0.x (or libdssialsacompat: see 49 http://smbolton.com/linux.html) 50 LADSPA SDK 1.x 51 52To build the included host and plugins, you will also need: 53 54 JACK 55 liblo-0.12 or above: http://liblo.sourceforge.net/ 56 libsndfile: http://www.mega-nerd.com/libsndfile/ 57 libsamplerate: http://www.mega-nerd.com/SRC/ 58 59To build the less_trivial_synth and trivial_sampler Qt GUIs, you 60will need: 61 62 Qt 4 63 64Note that because DSSI itself is just an API, it is possible to use 65DSSI applications (say, Rosegarden with Xsynth-DSSI) without any of 66the hosts or plugins contained in this DSSI distribution. 67Furthermore, to compile DSSI applications, only the DSSI development 68files (dssi.h and dssi.pc) are needed. OS distribution maintainers 69are urged to keep these dependencies in mind when packaging DSSI, 70and not make their `dssi-devel' package dependent on JACK or Qt, for 71example. 72 73Build 74----- 75 76DSSI can be installed using the usual autoconf/automake `./configure 77&& make && make install' procedure. See the included file INSTALL 78for generic installation instructions. 79 80You will need to ensure PKG_CONFIG_PATH is set correctly to locate 81the pkgconfig files for ALSA or libdssialsacompat, liblo, JACK, 82sndfile, samplerate, and Qt 4. If you do not have any of these, any 83DSSI programs or plugins dependent on them will not be built. 84 85For example, to build on Debian I use: 86 87 $ PKG_CONFIG_PATH=/usr/lib/pkgconfig 88 $ export PKG_CONFIG_PATH 89 $ ./configure 90 $ make && make check 91 92After compiling, optionally test the host and example plugins (see 93below) and then run `make install' from the top-level directory to 94install the dssi header, dssi.pc pkgconfig file, and the host and 95examples. The default install prefix is /usr/local. 96 97Test 98---- 99 100The quickest test (provided your system has all the required 101software, you've done `make install', and JACK is running) is just 102to run `less_trivial_synth' or `trivial_sampler', which should have 103been installed in your $PREFIX/bin. These should simply start up a 104standalone sampler/synth with a GUI window. If these both work, 105pretty much everything else should. 106 107Here's a more descriptive test: 108 109Assuming you've built the host and plugins, installed them to 110/usr/local, and JACK is running, you may run: 111 112 $ export DSSI_PATH=/usr/local/lib/dssi 113 $ /usr/local/bin/jack-dssi-host less_trivial_synth.so 114 115A synth GUI should pop up, with an ALSA sequencer input and JACK 116output (connected by default to the first alsa_pcm out). If you 117connect a MIDI keyboard (or vkeybd) to its ALSA MIDI input, you should 118be able to play it and use MIDI controllers to adjust its parameters: 119MIDI CC1 (the modulation wheel) controls timbre, and controllers 72, 12073, 75 and 79 control release, attack, decay and sustain respectively 121(some keyboards already have controls set up for these values). 122 123What has actually happened (if it worked) is that the host has 124been started, has loaded the first synth plugin (labelled LTS) found 125in the given .so file, has located the GUI executable that the make 126procedure installed into examples/less_trivial_synth/LTS_qt, 127instantiated the plugin, started the GUI and is now managing the MIDI 128input from ALSA, control changes from the GUI and audio out to JACK. 129 130You may also run multiple synth instances simultaneously with this 131host: 132 133 $ export DSSI_PATH=/usr/local/lib/dssi 134 $ export PATH=$PATH:/usr/local/bin # if it's not there already 135 $ jack-dssi-host -2 less_trivial_synth.so -3 trivial_sampler.so 136 137This will create two less_trivial_synth instances and three 138trivial_sampler instances. Note that the instances are assigned 139consecutive MIDI channels, and their outputs are spread across all 140of the available JACK physical outputs. 141 142 143Licensing 144--------- 145 146The DSSI API itself (dssi.h) is licensed under the GNU Lesser General 147Public License. See COPYING for details. 148 149The jack-dssi-host is provided under a BSD-style license. This means 150you can do anything you want with it so long as you retain the 151copyright attribution and license information. See the source files 152for details. 153 154Licensing for the files in the examples directory may vary: please 155check the individual files for details. Most of them are in the 156public domain, which means you can use them for anything you want. 157 158