December 5, 2012
This article was contributed by Dave Phillips
The community of Linux audio developers is a relatively small group that
includes a core of programmers committed to the evolution of the Linux
audio ecosystem. Some developers work on the unglamorous but necessary
system components — sound card drivers, kernel interfaces, function
libraries, etc. — while others work on the shinier applications
level. Developer/musician Sean M. Bolton wears hats in both domains, with a
special attachment to the
DSSI plugin
interface. His contributions include code for the interface specification,
a DSSI plugin host, and three software synthesizers.
This article profiles Sean's synthesizers, Xsynth, WhySynth, and Hexter. As
we might expect, they are DSSI-compatible plugins, so any host that
supports DSSI should run them without complaint. You'll need the DSSI
library and utilities first, but most mainstream distributions include the
software in their package repositories. Check your system's package manager
for an installable bundle. If you need to build the DSSI system yourself,
have no fear, the software is easy to build, with no extraordinary
dependencies. The synthesizers are equally straightforward to build and
install.
For those who want to quickly play with these synthesizers,
the complete DSSI system includes a handy command-line utility for running
DSSI plugins as standalone applications. My tests were made with this
invocation from an xterm command prompt:
jack-dssi-host /usr/lib/dssi/somesynth.so
The synthesizers were correctly listed in the audio and ALSA MIDI tabs in QJackCtl. I
connected my Akai LP25 keyboard and various sequencers to play each synthesizer,
and I'm happy to report that I experienced no problems. Sean's synthesizers are
stable applications, ALSA and JACK compatible, with great sound and copious
presets. Let's look at each one in some detail.
Xsynth 0.9.4
Xsynth
is a 2-oscillator subtractive
synthesizer based on an original design by Steve Brookes. The synthesizer's
architecture is revealed by its patch editor (right) — the output from
the oscillators is mixed, filtered, amplified, and modulated before
reaching the audio output stage, a typical arrangement for a subtractive
synthesizer. Each oscillator can select one of seven cyclic waveforms, the
pulse-width duty
cycle is user-definable, and oscillator sync is
available. The filter is relatively simple, with controls only for cutoff
frequency, resonance, and rolloff mode. The amplifier envelope is likewise
uncomplicated, with a typical ADSR (attack/decay/sustain/release) envelope
to control the evolution of the sound's amplitude. The LFO
includes a set of six waveforms, a single control for the frequency of the
selected waveform, and two controls for pitch modulation and filter
modulation sensitivity. No on-board effects are available, but I prefer
mine external anyway. JACK-Rack or the awesome Rakarrak make good processing
companions for Xsynth.
Xsynth's documentation consists of a README file in the source package and
a default
collection of 50+ presets. The README contains much valuable information
regarding the synthesizer's architecture and controls, and the presets include
excellent examples of commonly encountered analog synthesizer sounds such as
string pads, resonant filter sweeps, and fat basses. From the README and
the presets you can learn all you need to know to master the synthesis
method. You can also learn that Xsynth responds to various MIDI messages,
including note-on/off, velocity, aftertouch, program change, mod wheel,
volume control, and others. See the file for the complete details.
Xsynth is a standard item in the full DSSI package, so if you've installed
DSSI you've already installed Xsynth and you're ready to roll with it. The
DSSI software is available in the repositories for most mainstream Linux
distributions, but if yours doesn't have it you can pick up the source code
on the DSSI site.
There's not much more to say about Xsynth. It's an uncomplicated
realization of a classic analog synthesis method, presented in an
uncluttered interface, easy to learn and use. I like the sound of many of
its presets, especially when they're routed through an external effects
processor, and it's great fun to program for my own sounds. But Xsynth is
no mere toy — even simple subtractive synthesis is capable of making
wonderful rich sounds, and you may well lose track of time while you
explore its capabilities.
WhySynth 120903
WhySynth
is what
Xsynth dreams of becoming when it grows up. Both synthesizers are designed with
the same large-scale architecture, that of the analog subtractive
synthesizer, but WhySynth's implementation of the synthesis method differs
profoundly at the detail level. The number of oscillators has been doubled
over what Xsynth offers,
the waveform selection has increased to more than 168 waves, and each
oscillator can be configured to a unique modality (e.g., wavecycle,
frequency modulation (FM),
noise). The number of filters has increased to two, we now have three LFOs,
and the number of envelope generators (EGs) has grown from two to
five. WhySynth adds an effects stage to the classic design, though it is
wisely restricted to only two reverbs and a delay line. The parameter
set for each stage has likewise expanded for considerably finer control
over your sounds.
WhySynth's UI follows the design set by Xsynth. The program opens to a
single panel with tabs for the preset patch list and the synthesizer's global
configuration. The patch editor is considerably more complex
than Xsynth's, so it gets its own window, available from the Edit
menu. Like its sibling, WhySynth's editor clarifies the organization of the
synthesis method. WhySynth is a deep synthesizer, meaning that it allows
very fine
control of the sound-shaping process, and it is capable of timbres and
effects not available with a simpler architecture.
WhySynth can import Xsynth patches and banks, so work done in that synthesizer
can be brought into WhySynth for more detailed design. WhSynth also
includes a facility for interpreting patches in sysex format for Kawai's K4
synthesizer. Actually, Sean indicates that WhySynth
mis-interprets them, but it's obvious that those patches provided a
great resource during the creation of WhySynth's 280+ presets, of which
more than 130 have been derived from patches for the K4.
The documentation is slim but informative. The WhySynth web site and the source
package README contain the same material describing the synthesizer's design in
detail. Given the complexity of the program, I suggest reading the
documentation thoroughly if you plan on making your own sounds. Of course
the default patches are instructive, and WhySynth provides a number of
"development" patches to be used as starter material. You'll also want to
read the docs to find out what MIDI controllers have been mapped to
WhySynth's synthesis parameters for dynamic control of your sound's
evolution.
Hexter 1.0.1
According to its "About" panel, Hexter is a
"Yamaha DX7 modeling software synthesizer for the DSSI Soft Synth
Interface". The DX7 was Yamaha's most
famous synthesizer built with
FM (frequency modulation) audio technology licensed from Stanford
University, where Dr. John Chowning
invented the method. This review is not the place for an explanation of FM,
please see the Wikipedia on FM
synthesis for a good summary and some excellent external links. It
suffices here to note that FM differs substantially from the synthesis
methods seen and heard in Xsynth and WhySynth.
Hexter opens to a display similar to its siblings, a single panel with tabs
for patch selection, global configuration, and performance settings. The
patch selector is self-explanatory. The "Configuration" tab sets the
synthesizer master tuning, output volume, and polyphony. It also toggles
access to ALSA "sysex" editing, about which I'll have more to say later. The
additional "Performance" tab includes settings for pitch bend, modulation
wheel, foot controller, and breath controller. The bend and mod wheels were
parts of the original DX7 hardware, the controllers were external
devices. All these devices were designed to add greater expressive
capabilities during performance, for example, by modulating a sustained tone by
controlling its vibrato with the mod wheel.
The DX7 spawned an industry of third-party extensions, add-ons, and designer
patch libraries. The hardware-based DX7 additions are history, but a vast
number of
DX7 patches are still available as systems-exclusive (sysex) data
files. Hexter can read a variety of DX-related sysex files, but only so far
as they contain the basic elements of the original DX7. Alas, there's no
support for the extended features of other members of Yamaha's DX
family. However, Hexter also supports the file format for the Sideman D/TX
patch editor/librarian by Voyetra. That's great news
for me, as I used that software for many years to program my beloved TX802, a rack-mount
synthesizer in the mkII family of Yamaha's DX/TX synthesizers. Alas, the 802 is
gone, but my patch collection has received a new lease on life thanks to
Hexter.
Catching up with Xsynth and WhySynth, Hexter now has a graphic editor for
basic DX7 patch parameters. Unlike its siblings, Hexter's editor
includes graphic envelope displays for relevant parameters. Alas, the
envelope breakpoints can't be adjusted directly, but the visual feedback is
immediate when values are set in the scroll boxes.
As I mentioned earlier, the Configuration tab includes a toggle for
enabling patch edits via system-exclusive messages. A separate ALSA MIDI
port is opened for receiving sysex messages from an appropriate device or
program, such as a hardware DX/TX synthesizer or a software
editor/librarian. The integrated editor will be sufficient for most users,
but I found a very helpful purpose for the sysex connection. The Voyetra
Sideman editor includes a well-designed patch randomizer, and Hexter
conveniently provides a compatible target synthesizer for the editor's
patches. The Sideman software runs smoothly under DOSemu, I use a MIDI connections utility
such as aconnect or QJackCtl to route its output to Hexter's sysex port,
and voilà: I can program Hexter in realtime with an editor running in an
emulated MS-DOS environment.
Hexter includes no on-board effects processors. No problem, it's a
JACK-savvy application, so just route its output to JACK-Rack or
Rakarrak. The original DX never sounded so good.
Regarding external control: Hexter's synthesis parameters are controllable
with a set of pre-assigned MIDI continuous controllers, including a lengthy
list of parameters addressed by the NRPN (non-registered parameter
numbers). The default assignments can be found in the source package's
README. Hexter also supports OpenSound
Control (OSC) but I
haven't yet looked into its possibilities.
I've owned four FM synthesizers from Yamaha. My first synthesizer was a TX81Z, followed by
an FB01, both of
which were 4-operator FM boxes. I stepped up to the 6-operator machines
with the TX802 and the massively powerful TG77. I've also
tested FM7 and FM8, excellent FM
synthesis programs from Native
Instruments. Alas, my hardware boxes are gone now, and the proprietary
software isn't made for Linux. However, I'm not complaining at all — I have
Hexter. I won't compare it to the hardware or the Native Instruments
synthesizers, I'll just say that I'm happy to hear my favorite FM sounds again.
Sounding Out
By now I hear you say, "But how do they sound?". Well, you can check out
the following links for some demonstrations of the Sean Bolton synthesizer
collection:
Subtractive and FM synthesizers are staple items in the complete
modern computer-controlled studio. The two synthesis methods make a good
pair; subtractive synthesizers are often used for dense, rich, layered sounds and
strings,
while FM excels in metallic and bell-like sounds. Sean Bolton has given us
three capable synthesizers, now it's up to us to show off their
capabilities. Try them all — they're all free and open-source Linux
software licensed under the GPL — and do let us know if you make some
joyful noises with them.
Comments (3 posted)
Brief items
I find it fascinating that DVCS aficionados haven't noticed that GitHub takes the D out of DVCS very effectively, thereby making git actually useful for most normal people.
—
Branko Čibej (virtual hat-tip to Markus Schaber)
I'm pretty sure that HURD stands for
"Hurd Users Relish Deviance" so I would expect Hurd folks to actually
appreciate these test failures.
—
Matt Mackall
Comments (11 posted)
Version 2.0.7 of the GNU Guile language is out. It adds an implementation
of "
curly infix
expressions," per-port reader options, a number of extension loading
improvements, and something known as "nested futures": "
Futures may now be nested: a future can itself spawn and then `touch'
other futures. In addition, any thread that touches a future that has
not completed now processes other futures while waiting for the touched
future to completed."
Full Story (comments: 104)
Mozilla's Josh Aas announced on his blog that the browser maker was joining the Internet Society (ISOC) as a "Silver" member, in order to support its Internet Engineering Task Force (IETF) work on core protocols beyond HTTP. "Today we’re heavily involved in IETF working groups relating to key Internet technologies such as TLS, HTTP and HTTP/2, RTCWeb, WebSockets, and others." ISOC, of course, is the parent organization of IETF and an alphabet soup of other Internet standards bodies.
Comments (none posted)
Version
4.0 of the Ekiga telephony application is out. It features a new
user interface, some new codecs, auto-answer functionality, a number of
improvements in SIP support, and more.
Comments (7 posted)
Matthew Garrett has
announced the
availability of the first "usable" version of the "shim" UEFI secure
bootloader. "
If you want, you're then free to impose any level of
additional signing restrictions - it's entirely possible to use this
signing as the basis of a complete chain of trust, including kernel
lockdowns and signed module loading. However, since the end-user has
explicitly indicated that they trust your code, you're under no obligation
to do so. You should make it clear to your users what level of trust
they'll be able to place in their system after installing your key, if only
to allow them to make an informed decision about whether they want to or
not."
Comments (none posted)
Version 6.25 of the Nmap network scanner is out; it contains a lot of new
stuff. "
Nmap 6.25 contains
hundreds of improvements, including 85 new NSE scripts, nearly 1,000 new OS
and service detection fingerprints, performance enhancements such as the
new kqueue and poll I/O engines, better IPv6 traceroute support, Windows 8
improvements, and much more."
Full Story (comments: 2)
Version 2012.11 of the buildroot embedded Linux system-creation tool has been released. This stable release adds initial support for Aarch64, a large number of new packages, and updates to several core components, including: "Binutils 2.23.1, GCC 4.7.2. We're now defaulting to GCC 4.6. Newer Codebench and Linaro external toolchains. Libtirpc support for modern Glibc variants"
Full Story (comments: none)
Newsletters and articles
Comments (none posted)
Owen Taylor has written a detailed update about his ongoing work on compositor frame timing (to which we provided an introduction back in August). This time, the issue at hand is coping with video playback or other sources that need a fixed frame rate not equal to the display's refresh rate. "I’m pretty happy with how this algorithm works out in testing, and it may be as good as we can get for X. The main downside I know of is that it only individually solves the two problems – handling clients that need all the rendering resources of the system and handling clients that want minimum jitter for displayed frames, it doesn’t solve the combination."
Comments (31 posted)
The
second issue of Gimp
Magazine has been released as a 100-page, 65MB PDF file. covered
topics include a graphic novel tutorial, oil painting, using graphic
tablets, a number of artist interviews, and more.
Comments (none posted)
Page editor: Nathan Willis
Next page: Announcements>>