Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

[e85095]: hexter.html Maximize Restore History

Download this file

hexter.html    681 lines (575 with data), 40.4 kB

  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
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>hexter DSSI plugin</title>
<link rel="stylesheet" href="screen.css" media="screen">
<style type="text/css">
#main { width: 94%; margin: 0 auto; }
#nav { width: 100%; }
#table { display: table; }
.row { display: table-row; }
.cell { display: table-cell; }
img { vertical-align: top; }
</style>
</head>
<body><div id="main">
<div>
<div style="float: left; margin: 0 10px 10px 0;">
<img style="vertical-align: top;" src="hexter-icon.jpg" width=144 height=144 alt="hexter icon">
</div>
<div>
<h1>hexter</h1>
<h2>Yamaha DX7 modeling DSSI plugin</h2>
</div>
<div style="clear: both;"></div>
</div>
<p id="nav">
<a href="index.html">DSSI main page</a>
&ndash;
<a href="download.html#hexter">hexter download</a>
</p>
<h2>News</h2>
<p>2014/6/10: <a href="https://sourceforge.net/projects/dssi/files/hexter/1.0.3/">
hexter 1.0.3</a> fixes a bug which could cause hosts crash when
removing instances of hexter (thanks to Rui Nuno Capela).</p>
<p>2012/11/8: <a href="https://sourceforge.net/projects/dssi/files/hexter/1.0.2/">
hexter 1.0.2</a> fixes a problem where exiting and restarting the
GUI while editing a patch would cause the edited patch to become
inaccessible (the editor would be disabled with an "edit buffer
sync error" message.)</p>
<p>2012/11/2: <a href="https://sourceforge.net/projects/dssi/files/hexter/1.0.1/">
hexter 1.0.1</a> fixes a linking failure on some platforms.</p>
<p>2012/11/1: hexter celebrates its eighth birthday with an
integrated patch editor and a
<a href="https://sourceforge.net/projects/dssi/files/hexter/">
version 1.0.0</a> designation. Also included are more
patch loading enhancements, NRPN parameter mapping, and the option
to use floating-point math in the synthesis code instead of
fixed-point.</p>
<p>2012/10/22: hexter development has moved to
<a href="https://github.com/smbolton/hexter">github</a>. Download
tarballs of release versions are still hosted
<a href="http://sourceforge.net/projects/dssi/files/hexter/">here</a>
on SourceForge.</p>
<p>2011/5/24: Martin Tarenskeen has done wonders for hexter's
ability to load different patch bank formats. His
<a href="http://dxconvert.martintarenskeen.nl">
DXconvert</a> tool handles even more formats, plus it can load
patches from several other FM synths and convert them
(approximately, at least) for use with hexter.</p>
<p>2011/1/26: B&aacute;lint Pfliegel has created a C# port of hexter
named <a href="http://sixport.codeplex.com/">Sixport</a>. I was
surprised that a virtual-machine based implementation of hexter's
rendering code performs as well as Sixport does&mdash;pretty
cool! With the right combination of hardware and operating system,
one can even run it in a browser, as part of the
<a href="http://www.grape.hu/Pluto/Pluto2.html">Pluto</a> DAW.
Some demos can be found
<a href="http://soundcloud.com/plutosynth">here</a>.</p>
<p>2009/1/4: <a href="https://sourceforge.net/projects/dssi/files/hexter/">
hexter version 0.6.2</a> released! Release 0.6.2 is a maintenance
release, which adds no significant synthesis features, but updates
the code for more recent GTK+, adds better patch loading to
tx_edit.c, and handles the new DSSI ���sample-rate��� OSC method (by
silently ignoring it.)</p>
<p>2007/4/11: <a href="https://sourceforge.net/projects/dssi/files/hexter/">
hexter version 0.6.1</a> 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, <i>please do
upgrade soon</i> -- the installation paths in 0.6.0 were broken.)</p>
<p>2006/1/18: <a href="https://sourceforge.net/projects/dssi/files/hexter/">
hexter version 0.5.9</a> 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���.</p>
<p>2004/12/29: <a href="https://sourceforge.net/projects/dssi/files/hexter/">
hexter version 0.5.8</a> 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.</p>
<p>2004/11/16: Some recordings comparing hexter and a real TX7 are
available <a href="http://smbolton.com/linux.html">here.</a>
</p>
<h2>Introduction</h2>
<p>hexter is a software synthesizer that models the sound generation of
a Yamaha DX7 synthesizer. It can easily load most DX7 patch bank
files, edit those patches via a built-in editor or 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....)</p>
<p>hexter operates as a plugin for the DSSI Soft Synth
Interface. 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 <a href="index.html">DSSI main page</a>.
<p>hexter is written and copyright &copy; 2014 by Sean Bolton, and
licensed 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:</p>
<ul>
<li> an email stating where you're from and how you're using
hexter, sent to
<script type="text/javascript"><!--
function unob(o){ var u='';for(i=o.length-2;i>=0;i-=2)u+=unescape('%'+o.substr(i,2));
document.write(u);
}
unob('3e612f3c6d6f632e6e6f746c6f626d73406e6165733e226d6f632e6e6f746c6f626d73406e6165733a6f746c69616d223d6665726820613c');
// --></script>
<noscript><div>&lt;sean /at/ smbolton /dot/ com&gt;</div></noscript>.
<li> copies of or links to music you've created with hexter.
<li> any favorite patches you create for hexter, or any patches
that work on a real DX7 but not on hexter.
<li> suggestions for improving hexter.
</ul>
<p>hexter benefited greatly from previous open-source efforts, most
notably Juan Linietsky's rx-saturno, and <a
href="http://www.fluidsynth.org/">FluidSynth</a> by Peter
Hanappe, et al. See the AUTHORS file in the hexter
distribution for more details.</p>
<h2>Requirements</h2>
<p>hexter requires the following:</p>
<ul>
<li> <a href="download.html">DSSI</a> version 0.4 or greater.
<li> <a href="http://liblo.sourceforge.net/">liblo</a> version
0.12 or greater (0.23 or greater recommended), a library
implementing the Open Sound Control protocol.
<li> <a href="http://www.freedesktop.org/software/pkgconfig/">
pkgconfig</a> with PKG_CONFIG_PATH set appropriately to pick
up DSSI and liblo.
<li> <a href="http://www.gtk.org/">GTK+</a> version 2.4 or later.
<li> the <a href="http://www.ladspa.org/">LADSPA</a> v1.x SDK.
<li> the <a href="http://www.alsa-project.org/">ALSA</a>
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
<a href="http://smbolton.com/linux.html">libdssialsacompat</a>.
<li> a working DSSI host. hexter has been tested with the
jack-dssi-host available in <a href="download.html">the DSSI
distribution</a>, and with <a href="http://smbolton.com/linux.html">
ghostess</a>.
</ul>
<h2>Download and Installation</h2>
<p>Release versions of hexter may be downloaded from
<a href="http://sourceforge.net/projects/dssi/files/hexter/">here</a>.</p>
<p>hexter uses GNU autoconf and automake, and pkgconfig, so
installation is only slightly more complicated than
���<code>./configure &amp;&amp; make &amp;&amp; make install</code>���. See the
README file for specifics.
<p>The development version of hexter may be had by cloning the
<a href="https://github.com/smbolton/hexter">github repository</a>:</p>
<p><code>
git clone https://github.com/smbolton/hexter.git
</code></p>
<h2>Screenshots</h2>
<p>The screenshot on the left shows the GUI main windows for three
instances of hexter. Note that sys-ex editing is currently
enabled in the channel 1 instance (details below). The middle
screenshot shows the patch editor in ���Widgy��� mode, while the one
on the right shows the editor in ���Retro��� mode.</p>
<div id="table" style="border-spacing: 20px;">
<div class="row">
<span class="cell">
<a href="hexter-screenshot_main.jpg"><!-- 900x547 -->
<img src="hexter-screenshot_main.jpg" alt="hexter main window" width="300" height="183"></a>
</span>
<span class="cell">
<a href="hexter-screenshot_widgy.jpg"><!-- 593x721 -->
<img src="hexter-screenshot_widgy.jpg" alt="hexter Widgy editor" width="198" height="240"></a>
</span>
<span class="cell">
<a href="hexter-screenshot_retro.jpg"><!-- 680x573 -->
<img src="hexter-screenshot_retro.jpg" alt="hexter Retro editor" width="227" height="191"></a>
</span>
</div>
</div>
<h2>Operation</h2>
<p>To run the hexter plugin under the <code>jack-dssi-host</code> provided
in <a href="download.html">the DSSI distribution</a>, I do the
following:</p>
<ol>
<li><p>Start <a href="http://jackaudio.org/">JACK</a>.</p>
<li><p>Start <code>jack-dssi-host</code>, supplying the correct
plugin path and filename (substitute <code>&lt;prefix&gt;</code>
as appropriate):</p>
<code>
$ DSSI_PATH=&lt;prefix&gt;/lib/dssi sudo jack-dssi-host hexter.so
</code>
<p><code>jack-dssi-host</code> should start, and moments later the hexter
graphic user interface should appear.</p>
<li><p>Use <a href="http://qjackctl.sourceforge.net/">qjackctl</a>
or aconnect to connect <code>jack-dssi-host</code> to a MIDI
source, such as <a
href="http://www.alsa-project.org/~iwai/alsa.html">vkeybd</a>.</p>
<li><p>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 <code>DSSP_DEBUG</code> bit 2
set, which will cause the plugin to continuously output a quiet
buzz to help debug your outgoing signal path.</p>
</ol>
<p>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.</p>
<h2>Patch Import/Export</h2>
<p>hexter can import DX7 patch bank files in several formats:</p>
<ul>
<li><p>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.</p>
<li><p>The standard single-voice (edit buffer) sys-ex format.
These are 163 bytes long.</p>
<li><p>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 any of the filename suffixes "<code>.tx7</code>",
"<code>.TX7</code>", "<code>.snd</code>", or "<code>.SND</code>",
the second half of the file will be ignored (Dr. T and Steinberg
TX7 formats).</p>
<li><p>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.</p>
<li><p>Two concatenated 32-voice bulk dump sys-ex messages (8208
bytes long.)</p>
<li><p>Steinberg Synthworks format (5216 bytes long).</p>
<li><p>Transform XSyn format (8192 bytes long).</p>
<li><p>Voyetra SIDEMAN DX/TX and Patchmaster DX7/TX7 formats (9816
or 5663 bytes long).</p>
<li><p>Yamaha DX200 editor format (326454 bytes long).</p>
</ul>
<p>You may use the "<code>Import Patch Bank...</code>" option in
the <code>File</code> 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.
<p>Several patch bank files are installed with hexter in
<code>&lt;prefix&gt;/share/hexter/</code>.</p>
<p>You may also export patch banks using the <code>File</code> menu
"<code>Export Patch Bank...</code>" 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���.</p>
<h2>Synthesizer Configuration</h2>
<p>On the ���Configuration��� tab of the hexter GUI, there are a
number of controls for configuring hexter:</p>
<ul>
<li><p>tuning: sets the tuning of this instance of the plugin,
as Hz for A-above-middle-C.</p>
<li><p>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.)</p>
<li><p>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.</p>
<li><p>polyphony (global): Sets the maximum polyphony for all hexter
instances running on this host. If you are getting xruns, try
reducing this setting.</p>
<li><p>monophonic modes: sets poly/mono operation for this instance of
the plugin to one of the following:</p>
<ul>
<li>���Off��� - polyphonic operation.
<li>���On��� - monophonic operation, where the envelopes are
retriggered upon each incoming note on event.
<li>���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.
<li>���Both��� - monophonic operation, where the envelopes are
retriggered at each note on, and upon note off when
other keys are still held.
</ul>
<li><p>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.</p>
<li><p>Sys-Ex Patch Editing: On ALSA systems, hexter has the ability to
receive MIDI system exclusive messages from an external patch
editor/librarian. Any patch edits received are reflected in
hexter's built-in patch editor, and must be saved using the
built-in editor's ���Save Changes into Patch Bank��� button (see
below).</p>
<p>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
external patch editor to this port using aconnect or similar,
and the hexter instance will be ready to receive patch edits.</p>
<p>Note that hexter only <i>receives</i> 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.</p>
</ul>
<h2>Performance Parameters</h2>
<p>The ���Performance��� tab of the hexter GUI contains controls for
the DX7/TX7 Performance Parameters:</p>
<ul>
<li><p>pitch bend range: sets the response to MIDI pitch bend messages,
in semitones.</p>
<li><p>portamento time: sets the portamento time. Note that as of
version 0.6.1, the portamento code is still unfinished.</p>
<li><p>mod wheel sensitivity: sets the depth of response to MIDI
modulation wheel control change messages (MIDI control change
1).</p>
<li><p>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.</p>
<li><p>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.</p>
</ul>
<h2>Patch Editing</h2>
<p>The current patch may be edited by selecting ���Edit Patch...��� from
the ���Edit��� menu, which opens the patch editor window. All patch
edits accumulate as a temporary ���overlay��� replacing the current
patch, but are not saved into the patch bank until you click the
���Save Changes into Patch Bank��� button and complete the save process.
(Once you've saved edits into the patch bank, remember to save the
bank to disk using the ���Export Patch Bank...��� option of the ���File���
menu!)</p>
<p>Clicking the ���Discard Changes��� button or selecting another patch
from the ���Patches��� tab will discard any active edits. At any time
the top status line of the editor window will tell you which patch
is being edited, and whether there are any changes in effect.</p>
<p>The editor has two modes of operation, selected by the ���Editor Mode���
combo box near the bottom left of the editor window. One mode,
called ���Widgy���, uses standard GTK+ widgets for editing patch
parameters, and displays graphical representations of envelopes and
scaling curves to aid in comprehension of the patch parameters. The
other mode, called ���Retro��� is based on text-based editors of decades
past. You may switch between editor modes at any time.</p>
<p>While the ���Retro��� mode provides little in terms of visualization
assistance, it can provide the experienced user with more efficient
editing. Both the mouse and cursor keys may be used to select the
parameter to be edited. Generally, the number keys are used to enter
a parameter directly, the ���-��� key decrements a parameter, the ���+��� or
���=��� keys increment the parameter, and the ���delete��� or ���backspace���
key will reset the parameter to a default value. Perhaps most
convient for users without a separate MIDI keyboard, the space bar
can be used to toggle a test note, even while changing patches with
other keys!</p>
<h2>MIDI Controller Mapping</h2>
<p>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).</p>
<p>The operator parameters of the current patch can also be changed via
the following MIDI control change (CC) and non-registered parameter
(NRPN) messages. Messages marked with ���*��� in the ���Operator��� column
will cause an immediate effect on playing notes, while the others
will only affect subsequently-played notes.</p>
<table>
<tr><th>CC or NRPN </th><th> Operator </th><th> Parameter </th></tr>
<tr><td>CC 16 (General Purpose #1 MSB) </td><td> 1 * </td><td> Frequency Coarse </td></tr>
<tr><td>CC 17 (General Purpose #2 MSB) </td><td> 2 * </td><td> Frequency Coarse </td></tr>
<tr><td>CC 18 (General Purpose #3 MSB) </td><td> 3 * </td><td> Frequency Coarse </td></tr>
<tr><td>CC 19 (General Purpose #4 MSB) </td><td> 4 * </td><td> Frequency Coarse </td></tr>
<tr><td>CC 80 (General Purpose #5) </td><td> 5 * </td><td> Frequency Coarse </td></tr>
<tr><td>CC 81 (General Purpose #6) </td><td> 6 * </td><td> Frequency Coarse </td></tr>
<tr><td>NRPN 0 </td><td> 6 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 1 </td><td> 6 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 2 </td><td> 6 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 3 </td><td> 6 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 4 </td><td> 6 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 5 </td><td> 6 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 6 </td><td> 6 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 7 </td><td> 6 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 8 </td><td> 6 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 9 </td><td> 6 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 10 </td><td> 6 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 11 </td><td> 6 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 12 </td><td> 6 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 13 </td><td> 6 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 14 </td><td> 6 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 15 </td><td> 6 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 16 </td><td> 6 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 17 </td><td> 6 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 18 </td><td> 6 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 19 </td><td> 6 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 20 </td><td> 6 * </td><td> Oscillator Detune </td></tr>
<tr><td>NRPN 21 </td><td> 5 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 22 </td><td> 5 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 23 </td><td> 5 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 24 </td><td> 5 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 25 </td><td> 5 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 26 </td><td> 5 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 27 </td><td> 5 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 28 </td><td> 5 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 29 </td><td> 5 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 30 </td><td> 5 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 31 </td><td> 5 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 32 </td><td> 5 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 33 </td><td> 5 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 34 </td><td> 5 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 35 </td><td> 5 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 36 </td><td> 5 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 37 </td><td> 5 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 38 </td><td> 5 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 39 </td><td> 5 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 40 </td><td> 5 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 41 </td><td> 5 * </td><td> Oscillator Detune </td></tr>
<tr><td>NRPN 42 </td><td> 4 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 43 </td><td> 4 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 44 </td><td> 4 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 45 </td><td> 4 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 46 </td><td> 4 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 47 </td><td> 4 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 48 </td><td> 4 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 49 </td><td> 4 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 50 </td><td> 4 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 51 </td><td> 4 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 52 </td><td> 4 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 53 </td><td> 4 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 54 </td><td> 4 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 55 </td><td> 4 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 56 </td><td> 4 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 57 </td><td> 4 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 58 </td><td> 4 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 59 </td><td> 4 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 60 </td><td> 4 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 61 </td><td> 4 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 62 </td><td> 4 * </td><td> Oscillator Detune </td></tr>
<tr><td>NRPN 63 </td><td> 3 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 64 </td><td> 3 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 65 </td><td> 3 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 66 </td><td> 3 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 67 </td><td> 3 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 68 </td><td> 3 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 69 </td><td> 3 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 70 </td><td> 3 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 71 </td><td> 3 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 72 </td><td> 3 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 73 </td><td> 3 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 74 </td><td> 3 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 75 </td><td> 3 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 76 </td><td> 3 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 77 </td><td> 3 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 78 </td><td> 3 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 79 </td><td> 3 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 80 </td><td> 3 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 81 </td><td> 3 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 82 </td><td> 3 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 83 </td><td> 3 * </td><td> Oscillator Detune </td></tr>
<tr><td>NRPN 84 </td><td> 2 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 85 </td><td> 2 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 86 </td><td> 2 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 87 </td><td> 2 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 88 </td><td> 2 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 89 </td><td> 2 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 90 </td><td> 2 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 91 </td><td> 2 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 92 </td><td> 2 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 93 </td><td> 2 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 94 </td><td> 2 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 95 </td><td> 2 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 96 </td><td> 2 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 97 </td><td> 2 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 98 </td><td> 2 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 99 </td><td> 2 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 100 </td><td> 2 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 101 </td><td> 2 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 102 </td><td> 2 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 103 </td><td> 2 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 104 </td><td> 2 * </td><td> Oscillator Detune </td></tr>
<tr><td>NRPN 105 </td><td> 1 </td><td> Envelope Generator Rate 1 </td></tr>
<tr><td>NRPN 106 </td><td> 1 </td><td> Envelope Generator Rate 2 </td></tr>
<tr><td>NRPN 107 </td><td> 1 </td><td> Envelope Generator Rate 3 </td></tr>
<tr><td>NRPN 108 </td><td> 1 </td><td> Envelope Generator Rate 4 </td></tr>
<tr><td>NRPN 109 </td><td> 1 </td><td> Envelope Generator Level 1 </td></tr>
<tr><td>NRPN 110 </td><td> 1 </td><td> Envelope Generator Level 2 </td></tr>
<tr><td>NRPN 111 </td><td> 1 </td><td> Envelope Generator Level 3 </td></tr>
<tr><td>NRPN 112 </td><td> 1 </td><td> Envelope Generator Level 4 </td></tr>
<tr><td>NRPN 113 </td><td> 1 </td><td> Keyboard Level Scaling Break Point </td></tr>
<tr><td>NRPN 114 </td><td> 1 </td><td> Keyboard Level Scaling Left Depth </td></tr>
<tr><td>NRPN 115 </td><td> 1 </td><td> Keyboard Level Scaling Right Depth </td></tr>
<tr><td>NRPN 116 </td><td> 1 </td><td> Keyboard Level Scaling Left Curve </td></tr>
<tr><td>NRPN 117 </td><td> 1 </td><td> Keyboard Level Scaling Right Curve </td></tr>
<tr><td>NRPN 118 </td><td> 1 </td><td> Keyboard Rate Scaling </td></tr>
<tr><td>NRPN 119 </td><td> 1 </td><td> Amp Mod Sensitivity </td></tr>
<tr><td>NRPN 120 </td><td> 1 </td><td> Keyboard Velocity Sensitivity </td></tr>
<tr><td>NRPN 121 </td><td> 1 </td><td> Operator Output Level </td></tr>
<tr><td>NRPN 122 </td><td> 1 * </td><td> Oscillator Mode </td></tr>
<tr><td>NRPN 123 </td><td> 1 * </td><td> Oscillator Frequency Coarse </td></tr>
<tr><td>NRPN 124 </td><td> 1 * </td><td> Oscillator Frequency Fine </td></tr>
<tr><td>NRPN 125 </td><td> 1 * </td><td> Oscillator Detune </td></tr>
</table>
<h2>Fixed Point vs. Floating Point Rendering</h2>
<p>hexter can be compiled to do its sound rendering using either
fixed-point math or floating-point math. The difference in sound
quality should not be audible, so the question of which type of math
to use becomes which type of math is faster. On many older
processors (e.g. PowerPC G4), the fixed-point math is substantially
faster. With newer processors, the speed of each type of math
depends on several factors, including the particular processor, the
compiler and the compiler options used. It is often surprising
which is faster for a given configuration!</p>
<p>On fairly normal posix systems (like Linux or OS X), you can compile
a small test program, to test which type of math is the fastest on
your processor. To do this, unpack the hexter tarball, cd into the
���fptest��� directory, type ���make���, then type ���./fptest���. After 30-60
seconds, you should see a summary of the test results.</p>
<p>By default, hexter is built to use fixed-point rendering. If your
test results say that floating-point is faster, then you can
configure hexter to use floating-point with the
���--enable-floating-point��� configure option.</p>
<p>Here are some test results from a few machines. Lower percentages
indicate the faster mode.</p>
<table>
<tr><th>Processor </th><th>Fixed Point</th><th> Floating Point</th></tr>
<tr><td>PowerPC G4 800MHz </td><td> 49.5% </td><td> 100.0% </td></tr>
<tr><td>PowerPC G4 1.07GHz </td><td> 49.8% </td><td> 100.0% </td></tr>
<tr><td>Pentium III (Coppermine) 933MHz </td><td> 100.0% </td><td> 95.2% </td></tr>
<tr><td>Intel Core Duo 1.83GHz, OS X 10.4.9 </td><td> 100.0% </td><td> 92.9% </td></tr>
<tr><td>Intel Core 2 Duo 2.4GHz, Linux 3.2 </td><td> 100.0% </td><td> 96.1% * </td></tr>
<tr><td>Intel Core 2 Duo 2.4GHz, OS X 10.4.11</td><td> 100.0% </td><td> 91.4% * </td></tr>
<tr><td>Intel Core 2 Duo 2.4GHz, OS X 10.6.8 </td><td> 61.5% </td><td> 100.0% * </td></tr>
<tr><td>Intel Core 2 Duo 2.5GHz, OS X 10.6.7 </td><td> 62.0% </td><td> 100.0% </td></tr>
<tr><td>Intel Core i7, OS X 10.7 </td><td> 52.0% </td><td> 100.0% </td></tr>
</table>
<p>* These three all come from the same machine!</p>
<h2>Frequently Asked Questions</h2>
<p>Q. The plugin seems to work fine, but the GUI never appears.
Why?</p>
<p>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:</p>
<blockquote>
<div><code>
$ &lt;prefix&gt;/lib/dssi/hexter/hexter_gtk -test
</code></div>
</blockquote>
<h2>Resources</h2>
<p>The <a href="http://en.wikipedia.org/wiki/Yamaha_DX7">Wikipedia Yamaha DX7 page</a>.</p>
<p><a href="http://homepage.ntlworld.com/steve.sims/">Steve Sims' site</a> with lots of information, patches, and links.</p>
<p><a href="http://homepages.abdn.ac.uk/mth192/pages/html/dx7.html">Dave Benson's DX7 page</a>, has much info as well as
links to patch files.</p>
<p><a href="http://www.synthzone.com/yamaha.htm">The Synth Zone's collection of Yamaha links</a>, which contains quite
a few links to patch file collections.</p>
<div style="text-align:right"><small>Hosted by</small><br>
<a href="http://sourceforge.net/"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=104230&amp;type=10" width="80" height="15" alt="SourceForge.net. Fast, secure and Free Open Source software downloads"></a>
</div>
</div>
</body>
</html>