Sean Bolton's Linux Audio Development Page
I work mainly in the area of software synthesis. Projects I am
involved with include:
- The DSSI Soft Synth
Interface, an API for soft synth plugins with custom user
interfaces. I have contributed to the development of the standard,
and written parts of the example code, including parts of the
jack-dssi-host and most of FluidSynth-DSSI, a wrapper for the
FluidSynth SoundFont synth.
- WhySynth,
a DSSI softsynth plugin featuring subtractive, wavecycle, granular,
FM, waveshaping, and PadSynth synthesis in a flexible-but-efficient
non-modular design. *
- hexter, a
DSSI plugin which emulates the sound generation of a Yamaha DX7
(some demonstration sounds are available below). *
- Xsynth-DSSI,
a classic-analog style DSSI softsynth based on Steve Brooke's Xsynth
code, that has since aquired operation as a DSSI plugin, polyphonic
operation, band-limited oscillators, a better filter mode, and
velocity-sensitive envelopes. *
- ghostess, a rough start
at a graphical DSSI host, based on jack-dssi-host, but capable of
saving and restoring plugin configuration, as well as specifying
MIDI channels and layering synths. ghostess includes three MIDI
drivers: an ALSA sequencer MIDI driver, a (clumsy but functional)
CoreMIDI driver (which allows ghostess to be used on Mac OS X), and
a JACK MIDI driver for use with the MIDI transport in recent
versions (>=0.105.0) of JACK. ghostess also comes with a
universal DSSI GUI, which attempts to provide GUI services for any
DSSI or LADSPA plugin, and may be used with any DSSI host.
- libdssialsacompat,
which is simply an extraction from and repackaging of alsa-lib 1.0.8,
providing the necessary declarations and code to run DSSI on non-ALSA
platforms. (No, it doesn't emulate ALSA devices, it just provides
handling of snd_seq_event_t structures.) *
- blepvco, a LADSPA plugin
library containing three anti-aliased, minBLEP-based,
hard-sync-capable oscillator plugins. The oscillators are
intended to be used with modular synthesis systems, such as
Alsa Modular Synth.
*
('*' denotes those projects for which I am the
principal author and maintainer.)
Other possibly useful things:
- LegaSynth-0.4.1gcc33.tar.gz
- This is a version of Juan Linietsky's LegaSynth synthesis emulator, which
has been patched to compile under gcc 3.3.x. It doesn't compile with
gcc 3.4, but that's C++ for you.
Here are some quick examples I threw together of how close (or not)
hexter comes to a real DX7. In each one, hexter is panned hard
right, and my TX7 (a DX7 in module form) is panned hard left.
chopin.mp3
This is some Chopin with random patch changes thrown in. Both the
TX7 and hexter are running with 16 voice polyphony. You can hear
that both hexter and the TX7 click a bit when stealing voices.
Also, hexter's quite a bit more graceful when receiving a patch
change via sysex -- the TX7 twangs here transitioning into the
"acoustic piano" patch.
clav_and_bass.mp3
This is actually two TX7s in the left channel, and two instances of
hexter in the right channel.
e_piano.mp3
Here you can hear that while hexter is pretty close to the TX7, it
doesn't quite get the modulation right, resulting in a slightly
brighter or more midrangy sound.
mallet.mp3
organs.mp3
A couple more examples.
effects.mp3
This shows some of the patches hexter has the most trouble with
(thanks to Frank Neumann for collecting these). Many effects
patches depend on amplitude or pitch modulation, LFO, and unusual
envelope generator timings. As of version 0.5.7, hexter is lacking
the DX7's AM and PM and LFO, and the odd envelope timings have so
far resisted all efforts at prediction.
All of the examples were generated from the same MIDI stream (both
sys-ex patch dumps and notes). The TX7 was connected directly to my
Delta 44, and both it and hexter were recorded simultaneously at
44.1kHz using ecasound and JACK. Audacity was used to trim and
normalize the recordings (no effects other than fade-in and fade-out
were used), and lame with '-h -b192' was used to encode the MP3s.