-
Notifications
You must be signed in to change notification settings - Fork 1
A lightweight GTK+ host for DSSI plugins
License
smbolton/ghostess
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ghostess - A GUI host for DSSI plugins ====================================== Copyright (C) 2012 by Sean Bolton and others. This is sloppy, hurried HACKWARE -- please do not consider this exemplary of the authors' skills or preferences, nor of good DSSI or general programming practices. (In particular, I don't want anyone attributing my mess to Chris or Steve ;-) ghostess is licensed under the GNU General Public License, version 2 or later, and comes with ABSOLUTELY NO WARRANTY, including fitness for any particular purpose. See the enclosed file COPYING for details. New Stuff ========= - ghostess works with JACK session managament, assuming you have a new enough version of JACK, and configure finds jack/session.h. - ghostess works with JACK MIDI. To build it, use: - JACK version 0.105.0 or newer. - pkgconfig, liblo 0.18, and DSSI 0.9 or later. - if './configure --with-jackmidi' detects the jack_midi_get_event_count() function in your libjack.so, then ghostess will be built with JACK MIDI support, omitting the ALSA or CoreMIDI driver. - ghostess can now export an XML patchlist for use by Freewheeling. - blinkin' lights show MIDI activity for each instance. - ghostess works on OS X. To build it, I used: - pkgconfig, with PKG_CONFIG_PATH set appropriately (Gentoo OS-X) - liblo installed (liblo-0.18 from Gentoo OS-X) - JACK (JackOSX 0.61) - DSSI 0.9 - libdssialsacompat 1.0.8a - './configure && make && make install' - Note that to use the CoreMIDI driver, you need to start ghostess _after_ any virtual sources you want to connect from, since my stupid CoreMIDI driver just connects to all existing sources when it starts up. Quick-and-Dirty Intro ===================== This assumes you are familiar with jack-dssi-host. ghostess and jack-dssi-host both descended from the same dssi_example_host source, and in many ways are still very similar. A summary of the differences (as of 2005/4/11): * ghostess is GPL, jack-dssi-host is BSD-ish. * ghostess uses GNU autotools. Use the usual './configure && make && make install' to build. * ghostess has a simple GTK+ GUI. Click on the 'UI' button for any instance to launch or hide its UI. Right-click on the 'UI' button for more options. * ghostess comes with a minimal universal DSSI GUI (installed as <prefix>/bin/ghostess_universal_gui) that can be used with any DSSI or LADSPA plugin. It does not read RDF files or instantiate the plugin, so it's not as full-featured as a universal GUI could be, but it does allow for adjusting DSSI/LADSPA ports, selecting bank and program (for plugins with select_program()), and sending test notes (for plugins with any of the run_synth() functions). If ghostess cannot find a UI for a plugin, and the universal GUI is in the PATH, ghostess will launch it. * ghostess allows specification of the MIDI channel for each plugin instance, allowing layering of multiple synths per channel. * ghostess allows specification of initial configure, program, and port values from the command line. See below for a description of the syntax. * ghostess tracks configure items set on startup or sent by plugin UIs. * ghostess, through its 'Save Configuration...' menu option, can save the current configuration of its plugins. Basically, it just writes a Bourne shell script that can be used to start a (mostly) identical session. * ghostess creates a separate MIDI reception thread, and makes it low-priority SCHED_FIFO if possible (ALSA-only, at the moment). * ghostess has a (clumsy but functional) CoreMIDI driver, allowing its use on Mac OS X. * ghostess double-forks its plugin UIs, putting them in separate process groups, and it does not SIGHUP everything on shutdown. jack-dssi-host keeps the UIs in its process group, and SIGHUPs them all as it exits (Linux-only, at the moment). * jack-dssi-host uses dual gettimeofday()s in the MIDI and audio process threads to do event dejittering, which seems expensive. ghostess uses jack_frame_time() and jack_last_frame_time(). This means ghostess needs JACK 0.99.0 or newer. * ghostess uses the LADSPA plugin Label and port Names when creating JACK port names, hopefully resulting in short-but-useful port names. * unlike jack-dssi-host, ghostess will not automatically load a plugin if it is invoked without arguments via a symlink of the same name as the plugin. * ghostess passes the JACK audio input buffers directly to plugins, eliminating a memcpy() that jack-dssi-host does. * jack-dssi-host includes ~/.dssi in its default for DSSI_PATH, ghostess does not. 'Save Configuration...' File Format =================================== Below is an example of the Bourne shell script saved by 'Save Configuration...', which demonstrates almost all of ghostess's options. Refer to the enclosed ghostess.1 manual page for a description of each option. #!/bin/sh DSSI_PATH='/opt/audio/lib/dssi' export DSSI_PATH exec /tmp/dssi/bin/ghostess \ -hostname 'ghostess_test' \ -projdir '/home/smbolton/dssi' \ -comment 'hexter/hexter/inst00' \ -chan 0 \ -conf 'monophonic' 'on' \ -conf 'GLOBAL:polyphony' '13' \ -prog 0 0 \ -port 1 440 \ -port 2 0 \ 'hexter.so':'hexter' \ -comment 'fluidsynth-dssi/FluidSynth-DSSI/inst01' \ -chan 3 \ -conf 'load' '/t/soundfonts/Mega25.sf2' \ -prog 0 0 \ 'fluidsynth-dssi.so':'FluidSynth-DSSI' \ -comment 'lp4pole_1671/lp4pole_fcrcia_oa/inst02' \ -chan 1 \ -port 0 1600 \ -port 1 4 \ '/usr/lib/ladspa/lp4pole_1671.so':'lp4pole_fcrcia_oa' \ -comment 'xsynth-dssi/Xsynth/inst03' \ -chan 4 \ -prog 0 0 \ -port 1 0.996955 \ -port 2 2 \ -port 3 0.5 \ -port 4 1.00305 \ -port 5 2 \ -port 6 0.5 \ -port 7 0 \ -port 8 0.5 \ -port 9 0.1 \ -port 10 0 \ -port 11 0 \ -port 12 0 \ -port 13 0.0002 \ -port 14 0.1 \ -port 15 1 \ -port 16 1e-04 \ -port 17 0 \ -port 18 0 \ -port 19 14.5722 \ -port 20 0.1 \ -port 21 0.1 \ -port 22 1 \ -port 23 0.1 \ -port 24 0 \ -port 25 0 \ -port 26 1e-06 \ -port 27 11.4258 \ -port 28 0.388616 \ -port 29 1 \ -port 30 0.984375 \ -port 31 0.5 \ -port 32 440 \ 'xsynth-dssi.so':'Xsynth' \
About
A lightweight GTK+ host for DSSI plugins
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published