ghostess(1)

✨ ghostess(1) β€” the DSSI plugin host that ate πŸ’…

okay bestie, sit down, we're talking about ghostess β€” a graphical DSSI plugin host, and it's lowkey iconic.


🌸 NAME 🌸

ghostess β€” graphical DSSI plugin host πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

ghostess [-debug level] [-hostname hostname] [-projdir projdir] [-uuid uuid] [-noauto] [-f cfgfile] [-n] [-chan c] [-conf k v] [-prog b p] [-port p f] soname[:label] [...]

πŸ’– DESCRIPTION πŸ’–

so ghostess is a DSSI host. it sits there, listens for MIDI events, hands them off to DSSI synth plugins, and pumps the resulting audio out through JACK. that's the whole gig. slay.

but wait, there's more (there's always more). it also supports:

  • DSSI plugins that have audio inputs, aka effects πŸŽ›οΈ
  • LADSPA plugins
  • DSSI-style user interfaces used with LADSPA plugins

and it can host up to 32 plugin instances at one time. thirty-two. that's a lot of instances, bestie.

Depending on the compile-time configuration, ghostess will receive MIDI events from ALSA, JACK MIDI, or CoreMIDI. Unless you say otherwise with the -chan option, each plugin instance gets assigned a MIDI channel sequentially β€” and it wraps from 15 (zero-based) back to 0 when it runs out. Unless -noauto is specified, plugin inputs and outputs get connected sequentially to the available JACK physical input and output ports respectively, wrapping back to the first port whenever the available ports are exhausted. it's giving round-robin, it's giving considerate. ✨

At startup, ghostess shows you a simple GTK+ user interface. Each plugin instance gets its own frame, labeled with the plugin name, and inside that frame there's a MIDI activity indicator and a Β΄UIΒ΄ button. Left-clicking the Β΄UIΒ΄ button starts or hides the plugin's user interface (UI). Right-clicking the Β΄UIΒ΄ button lets you start, hide, show, or terminate the plugin's UI. fancy little menu, we love her.

The Β΄Save Configuration...Β΄ option in ghostess's Β΄FileΒ΄ menu lets you save the current configuration of all the plugins to a file. Basically, the file is just a Bourne shell script that can be used to recreate the configuration. it's a whole vibe β€” your config is a script. periodt.

ghostess also comes with a minimal universal DSSI GUI called ghostess_universal_gui, and you can use it with any DSSI or LADSPA plugin. It does not read RDF files and it does not instantiate the plugin, so it's not as full-featured as a universal GUI could be β€” but it does let you:

  • adjust DSSI/LADSPA ports 🎚️
  • select bank and program (for plugins with select_program())
  • send 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. problem solved, no notes. πŸ’…


πŸ‘‘ OPTIONS πŸ‘‘

The following global options are available:

  • -debug level β€” Sets bitfield flags which determine which debugging information is printed. The default level of 1 shows errors only, 0 shows nothing, and -1 shows everything. See ghostess.h for details.
  • -hostname hostname β€” Sets hostname as the name ghostess uses for itself, for JACK and ALSA clients and GUI window titles. If a JACK port cannot be created with that name, the PID is appended.
  • -projdir projdir β€” Sets the project directory passed to both plugins and UIs to projdir. The default is none.
  • -uuid uuid β€” Sets uuid as the UUID used for JACK session management. There is probably no reason to use this outside of a managed session.
  • -noauto β€” Disables automatic connection of plugin outputs to JACK physical outputs.
  • -f cfgfile β€” Additional configuration will be read from cfgfile, in the same format as command line options.

For specifying plugin instances, ghostess uses a '[-repetition-count] [options] soname[:label]' format, which may be repeated for multiple instances. The plugin-specific options are:

  • -n β€” Specifies the repetition count, or number of instances, of the following plugin to create, where n is an integer between 1 (the default) and 32.
  • -chan c β€” Sets the initial MIDI channel for the following plugin instance to c. Channels are numbered 0 to 15. If the repetition count is more than one, instances are given sequential channels beginning with c and wrapping from 15 to 0. The default is for all instances' MIDI channels to be sequentially numbered, starting from 0.
  • -conf k v β€” Sets configure item key k and value v for the following instance. May be repeated for multiple keys.
  • -prog b p β€” Sets the program change bank b and program p for the following plugin (numbered from 0).
  • -port p f β€” Sets the value of port p to floating point number f for the following plugin. May be repeated for different ports.
  • soname β€” The name of the DSSI or LADSPA plugin library to load, including the Β΄.soΒ΄ suffix. soname may be an absolute path to the library file, or just the filename itself, in which case the DSSI search path is searched (see ENVIRONMENT below).
  • label β€” The label of the DSSI or LADSPA plugin to load from the library soname. If this is omitted, the first plugin in the library is used.

🌈 ENVIRONMENT 🌈

ghostess will search for plugin shared libraries in the directories specified by the environment variable DSSI_PATH, which is a colon-separated list of directories.

If DSSI_PATH is not set, a default search path of /usr/lib/dssi, /usr/local/lib/dssi, and (assuming the environment variable HOME is set,) $HOME/.dssi is used.

⚠️ Note that while ghostess may be used to host LADSPA plugins, the environment variable LADSPA_PATH is not used to search for them. ok that's just how it is bestie, don't @ me 🫢

πŸ“ EXAMPLES πŸ“

Assuming DSSI_PATH is correctly set, the command:

$ ghostess hexter.so

will start a single instance of the plugin hexter, listening on MIDI channel 0, with its output connected to the first JACK physical output port. one plugin, one channel, one port. simple. stunning. ✨

The command:

$ ghostess -noauto -chan 2 xsynth-dssi.so -chan 2 xsynth-dssi.so

will start two instances of Xsynth-DSSI, both listening on MIDI channel 2, but will not automatically connect the plugin outputs to JACK output ports.

The command:

$ ghostess -debug -1 -hostname fuzzy -projdir /tmp/proj -2 -conf load
mypatches -prog 0 4 -port 7 0.45 effects.so:fuzz

will start two instances of the Β΄fuzzΒ΄ plugin within the effects.so library, using /tmp/proj as the project directory, pass configure key Β΄loadΒ΄ with value Β΄mypatchesΒ΄ to both instances, set bank 0 and program 4, and set port 7 to 0.45. Assuming it is some sort of effect, the pluginsΒ΄ inputs and outputs will be automatically connected to the first JACK physical inputs and outputs. Full debugging information will be printed, and fuzzy will be used as the JACK client name. fuzzy as a client name? main character energy, no cap. πŸ‘‘


πŸŽ€ AUTHOR πŸŽ€

ghostess was written by Sean Bolton, who mercilessly mangled code originally written by Chris Cannam and Steve Harris. This manual page was adapted by Sean Bolton from the jack-dssi-host manual page originally by Mark Hymers.


and that's the whole page, bestie β€” this one came out on September 5th, 2010 as part of the ghostess General Commands Manual, so go forth and host some plugins. iykyk πŸ¦‹βœ¨πŸ’–