File: README

package info (click to toggle)
hexter 0.6.1-2
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 2,304 kB
  • ctags: 967
  • sloc: ansic: 10,099; sh: 8,969; makefile: 126
file content (330 lines) | stat: -rw-r--r-- 13,444 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
                                hexter
                                ======
               A Yamaha DX7 modeling software synthesizer
                for the Disposable Soft Synth Interface

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 at:

  http://dssi.sourceforge.net/

hexter is written by Sean Bolton, and copyright (c)2007 under the
GNU General Public License, version 2 or later.  See the enclosed
file COPYING for details.  While this software is 'free' within the
requirements of this license, I (Sean) would appreciate any or all
of the following should you find hexter useful:
    - an email stating where you're from and how you're using
        hexter, sent to <musound /at/ jps /dot/ net>.
    - copies of or links to music you've created with hexter.
    - any favorite patches you create for hexter, or any patches
        that work on a real DX7 but not on hexter.
    - suggestions for improving hexter.

hexter is indirectly the result of cumulative effort by a large
number of contributors, see the AUTHORS file for details.

Requirements
============
hexter requires the following:

    - DSSI version 0.4 or greater, available from the 
        dssi.sourceforge.net address above.

    - liblo version 0.12 or greater (0.23 or greater recommended), a
        library implementing the Open Sound Control protocol,
        available at:

        http://plugin.org.uk/liblo/

    - pkgconfig with PKG_CONFIG_PATH set appropriately to pick up
        DSSI and liblo.

    - GTK+ version 1.2 or 2.x.

    - the LADSPA v1.x SDK.

    - the ALSA headers (DSSI plugins use ALSA structures, but not
        the actual drivers, so you don't necessarily need the
        drivers installed.)  Users of non-ALSA systems may use
        libdssialsacompat, available at:

        http://home.jps.net/~musound/

    - a working DSSI host.  hexter has been tested with the
        jack-dssi-host, available in the DSSI distribution, and with
        ghostess, available at:

        http://home.jps.net/~musound/

    - automake 1.7 and autoconf 2.57 or better if you wish to
        recreate the build files.

Installation
============
The generic installation instructions in the enclosed file INSTALL
aren't particularly helpful, so try this instead:

1. Unpack the tar file.

2. Make sure PKG_CONFIG_PATH is set correctly to locate the
    dssi.pc and liblo.pc pkgconfig files.  On many systems, this
    will be:

    $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    $ export PKG_CONFIG_PATH

3. 'cd' into the package directory and execute './configure'.
    configure will add '-Wall' and my favorite optimizations to
    CFLAGS for you if you don't include any '-Wall' or '-O' options.
    If you're using gcc and wish to provide your own optimization
    flags, you MUST at least use '-finline' and a non-zero '-O' flag
    to get decent results.

4. Enable debugging information if you desire: edit the file
    src/hexter.h, and define DSSP_DEBUG as explained in the
    comments.
    
5. Do 'make'.  Hopefully it should build without warnings (or
    errors.)

6. 'make install' will install the following:

    <prefix>/lib/dssi/hexter/hexter_gtk
    <prefix>/lib/dssi/hexter.so
    <prefix>/lib/dssi/hexter.la
    <prefix>/share/hexter/dx7_roms.dx7
    <prefix>/share/hexter/fb01_roms_converted_12.dx7
    <prefix>/share/hexter/fb01_roms_converted_34.dx7
    <prefix>/share/hexter/fb01_roms_converted_5.dx7
    <prefix>/share/hexter/tx7_roms.dx7

Feedback on your experiences building hexter is appreciated.

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:

- The standard 32-voice bulk dump sys-ex format.  These are 4104
bytes long, and you can find a million of them by Googling for "dx7
patches".  hexter places no restrictions on their filenames.

- The standard single-voice (edit buffer) sys-ex format.  These are
163 bytes long.

- Raw packed patch data. These are 128 bytes per patch, and may
contain any number of patches (although hexter can only load up to
128 of them.)  Note, though, that if the file is 8192 bytes long and
has the filename suffix ".tx7" or ".TX7", the second half of the
file will be ignored (Dr. T TX7 format).

- Standard MIDI files containing either a 32-voice bulk dump sys-ex
message or a single voice dump sys-ex message.  If the file contains
more than one qualifying sys-ex message, only the first will be used.

- Voyetra SIDEMAN DX/TX format (9816 bytes long).

- Two concatenated 32-voice bulk dump sys-ex messages (8208 bytes
long.)

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:

- tuning: sets the tuning of this instance of the plugin,
    as Hz for A-above-middle-C.

- volume: adjusts the output volume for this instance, from -70dB to
    +20dB relative to a nominal reference level (-18.1dB per voice,
    which permits approximately 8 voice polyphony within -1.0 to
    +1.0 float.)

- polyphony (instance): Sets the maximum polyphony for this instance
    of the plugin.  If you attempt to play more notes than this
    setting, already-playing notes will be killed so that newer
    notes can be played.

- polyphony (global): Sets the maximum polyphony for all hexter
    instances running on this host.  If you are getting xruns, try
    reducing this setting.

- monophonic modes: sets poly/mono operation for this instance of
    the plugin to one of the following:
    'Off'  - polyphonic operation.
    'On'   - monophonic operation, where the envelopes are
             retriggered upon each incoming note on event. 
    'Once' - monophonic operation, where the envelopes are triggered
             only on the first note on of a legato phrase -- that
             is, if you hold one note while playing a second, the
             envelopes will not be retriggered for the second note. 
    'Both' - monophonic operation, where the envelopes are
             retriggered at each note on, and upon note off when
             other keys are still held.

- disable LFO/Mod/Perf (0.5.x compatibility): selecting this check
    box will disable the LFO, amplitude modulation, pitch
    modulation, and performance parameter enhancements provided by
    hexter 0.6.0 and later versions, forcing it to sound just like
    the 0.5.9 version.  This is provided for backward compatibility
    with existing projects that used hexter 0.5.9.

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 (http://www.jsynthlib.org/)
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:

- pitch bend range: sets the response to MIDI pitch bend messages,
    in semitones.

- portamento time: sets the portamento time.  Note that as of
    version 0.6.1, the portamento code is still unfinished.

- mod wheel sensitivity: sets the depth of response to MIDI
    modulation wheel control change messages (MIDI control change 1).

- mod wheel assign: these three check boxes set which destinations
    the modulation wheel affects: selecting 'P' routes the LFO to
    pitch modulation (vibrato), 'A' routes the LFO to amplitude
    modulation (tremelo or wah), and 'E' routes the modulation wheel
    value itself to amplitude modulation.

- foot sensitivity, foot assign, pressure sens., pressure assign,
    breath sens., and breath assign: these set the sensitivity and
    routing as described above for the foot controller (MIDI CC 4),
    for pressure (both channel and key pressure), and for the breath
    controller (CC 2), respectively.

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:

Control change 16 (General Purpose #1 MSB) to operator 1 FC.
Control change 17 (General Purpose #2 MSB) to operator 2 FC.
Control change 18 (General Purpose #3 MSB) to operator 3 FC.
Control change 19 (General Purpose #4 MSB) to operator 4 FC.
Control change 80 (General Purpose #5)     to operator 5 FC.
Control change 81 (General Purpose #6)     to operator 6 FC.

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

Resources:
==========
http://www.myjavaserver.com/~christopher/dx7_tx7.html
    Chris Dodunski's DX7 page, has much info as well as links to
    patch files.

http://www.maths.abdn.ac.uk/~bensondj/html/dx7.html
    Dave Benson's DX7 page, has much info as well as links to patch
    files.

http://www.synthzone.com/yamaha.htm
    The Synth Zone's collection of Yamaha link, which contains quite
    a few links to patch file collections.

Anybody know where Godric Wilkie's synth pages went?