hexter icon

hexter

Yamaha DX7 modeling DSSI plugin

News

2007/4/11: hexter version 0.6.1 released! hexter now includes emulation of the DX7 LFO, plus amplitude and pitch modulation! Other new features include configurable performance parameters, better patch bank loading code, and a 0.5.x compatibility mode. (If you're already using the 0.6.0 release, you probably don't need to upgrade, but if you are distributing a 0.6.0 package, please do upgrade soon -- the installation paths in 0.6.0 were broken.)

2006/1/18: hexter version 0.5.9 released! New features include real-time control of the coarse frequency parameters, plus fixes for RPM, gcc 2.9x and 4.x, and Mac OS X 10.4 'Tiger'.

2004/12/29: hexter version 0.5.8 released! New features include a 'volume' control and MIDI CC volume handling, GTK+ 2.x or readline UIs, project directory handling, better error messages, and some new patches.

2004/11/16: Some recordings comparing hexter and a real TX7 are available here.

Introduction

hexter is a software synthesizer that models the sound generation of a Yamaha DX7 synthesizer. It can easily load most DX7 patch bank files, accept patch editing commands via MIDI sys-ex messages (ALSA systems only), and recreate the sound of the DX7 with greater accuracy than any previous open-source emulation (that the author is aware of....)

hexter operates as a plugin for the Disposable Soft Synth Interface (DSSI). DSSI is a plugin API for software instruments (soft synths) with user interfaces, permitting them to be hosted in-process by audio applications. More information on DSSI can be found on the DSSI main page.

hexter is written by Sean Bolton, and copyright (c)2007 under the GNU General Public License, version 2 or later. While this software is 'free' within the requirements of that license, I (Sean) would appreciate any or all of the following should you find hexter useful:

hexter benefited greatly from previous open-source efforts, most notably Juan Linietsky's rx-saturno, and FluidSynth by Peter Hanappe, et al. See the AUTHORS file in the hexter distribution for more details.

Requirements

hexter requires the following:

Download and Installation

hexter may be downloaded from here.

hexter uses GNU autoconf and automake, and pkgconfig, so installation is only slightly more complicated than `./configure && make && make install'. See the README file for specifics.

Screenshot

This mostly-boring screenshot shows the GUIs for three instances of hexter. Note that sys-ex editing is currently being used in the channel 1 instance (details below).

hexter screenshot

Operation

To run the hexter plugin under the jack-dssi-host provided in the DSSI distribution, I do the following:

  1. Start JACK.

  2. Start jack-dssi-host, supplying the correct plugin path and filename (substitute <prefix> as appropriate):

    $ DSSI_PATH=<prefix>/lib/dssi sudo jack-dssi-host hexter.so

    jack-dssi-host should start, and moments later the hexter graphic user interface should appear.

  3. Use qjackctl or aconnect to connect jack-dssi-host to a MIDI source, such as vkeybd.

  4. Begin playing sounds! If you get no response, try clicking the `Send Test Note' button in the hexter GUI. This sends a note directly via the host to the plugin, so if you hear sound now, look for a problem between the host and your MIDI source. If you still don't hear sound, I'd look for a problem between the host and your output device. If you continue having trouble, you might recompile with DSSP_DEBUG bit 2 set, which will cause the plugin to continuously output a quiet buzz to help debug your outgoing signal path.

hexter starts up with a default set of sound presets, or `patches', that you can select either by selecting the GUI `Patches' tab and clicking on the patch name, or by sending a MIDI program change from your MIDI source with the appropriate program number.

Patch Import/Export

hexter can import DX7 patch bank files in several formats:

You may use the "Import Patch Bank..." option in the File menu to import patches. After selecting the filename, you will need to specify the program number (0 to 127) at which to begin importing the patches.

Several patch bank files are installed with hexter in <prefix>/share/hexter/.

You may also export patch banks using the File menu "Export Patch Bank..." option. You can then select which of the formats to save in, and what range of patches to export. Finally, select the filename to which you want to save, and click 'Ok'.

Synthesizer Configuration

On the `Configuration' tab of the hexter GUI, there are six controls for configuring hexter:

Sys-Ex Patch Editing

hexter does not include a user interface for editing patches, but on ALSA systems, it can receive MIDI system exclusive messages from you favorite patch editor/librarian. JSynthLib works well in combination with the ALSA virmidi device, or you can try the ncurses-based editor included with hexter (see extra/tx_edit.c).

Sys-ex patch editing is enabled on the `Configuration' tab by depressing the `Enable Sys-Ex Editing' button. The hexter GUI then creates an ALSA MIDI client and displays its client and port number in the status window below the `Sys-Ex Receive Channel' slider. Set the channel appropriately and route your patch editor to this port using aconnect or similar, and the hexter instance will be ready to receive patch edits.

Patch edits accumulate as an `overlay' replacing the current patch. Clicking the `Discard Changes' or selecting another patch from the `Patches' tab will discard the edits. Clicking `Save Changes into Patch Bank' will allow you to do just that.

Note that hexter only receives MIDI sys-ex messages, and does not send them. Also, it only receives single patch dumps and voice parameter changes, so any `get patch data from synth' or `send 32 voices to synth' functions of your librarian will not work -- any patch you wish the edit must originate in your librarian, or you must export it from hexter first as a file, then load it into your librarian from that.

Performance Parameters

The 'Performance' tab of the hexter GUI contains controls for the DX7/TX7 Performance Parameters:

MIDI Controller Mapping

In addition to the performance parameter MIDI messages mentioned above, hexter responds to MIDI volume (MIDI control change 39), sustain pedal (MIDI CC 64), and all-sounds-off, all-notes-off, and reset-controllers control messages (CCs 120, 123, and 121, respectively). The 'coarse frequency' parameter for each operator can also be controlled in real time via the following MIDI control change mappings:

Frequently Asked Questions

Q. The plugin seems to work fine, but the GUI never appears. Why?

A. Make sure the hostname of your machine is resolvable (if not, the OSC messages can't be sent between host and GUI). If your machine's hostname is 'foo.bar.net', make sure you either have an entry for 'foo.bar.net' in /etc/hosts, or that your DNS server can resolve it. Test this with e.g. 'ping foo.bar.net'. To test that the GUI itself works, you can start it by itself (without a DSSI host) by giving it the '-test' option, for example:

$ <prefix>/lib/dssi/hexter/hexter_gtk -test
Page hosted by
SourceForge.net Logo