Give Me 3 Synths
In my next three articles I'll profile three native Linux software synthesizers (a.k.a. softsynths). I'll introduce their basic synthesis architectures and program operations, then I'll guide my readers briefly through the process of creating a new sound for each synth profiled. Our voyage begins with Nick Dowell's Analogue Modeling SYNTHesizer, better known as amSynth.
amSynth Synthesis Basics
The amSynth Web page advertises that the program "... provides virtual analogue synthesis in the style of the classic Moog Minimoog/Roland Junos". If you've never heard those instruments, check out some of the excellent demonstrations of the MiniMoog and Juno G/60/106 synths on YouTube to get an idea of what kind of sounds amSynth sets out to produce.
The Roland and Moog synthesizers are considered the classic analog synths, with highly characteristic audio palettes resulting from unique implementations of the fundamental design for all similar subtractive synthesizers. An oscillator supplies the primary audio signal source by cycling a waveform such as a sine or sawtooth wave at a designated frequency. The output from the oscillator is filtered to subtract unwanted frequency ranges, then the filtered signal is fitted with an amplitude envelope, modulated by an LFO (low frequency oscillator) and optionally further processed with effects such as reverb and distortion. A simple process, but the possibilities increase greatly when two or more oscillators provide the audio source.
amSynth (Figure 1) follows the classic subtractive synthesis design and adds a few niceties of its own. The core audio source is a pair of analog-style oscillators, each with access to five cyclic waveforms and one noise source. The output from this stage passes through amSynth's unique mixer to balance the combined oscillators and apply an optional ring modulation effect. The mixed signal is then sent through a very Moog-like filter (with ADSR envelope) and on to the amplifier stage (and its own ADSR envelope). The separation of filter and amplifier envelopes is significant in sound design for amSynth, it allows independent control of the sound's harmonic content and amplitude.
The LFO is optional, but unless you prefer flat dead sounds you'll definitely want to use it. The LFO modulates its target by "disturbing" it with a very low frequency. When applied to the amplifier the LFO produces a vibrato effect, very useful for animating a static sound. Interesting pitch and spectral effects occur when the LFO is applied to the oscillators or the filter stage. For a final sweetening you can apply some high-quality reverb (Freeverb, actually), or a dash of amSynth's own pretty good distortion/crunch effect.
amSynth will autodetect the running audio and MIDI systems, or you can use the Config/Audio & MIDI dialog (Figure 2) to manually select ALSA, OSS, or JACK audio I/O, along with ALSA or OSS MIDI connectivity. amSynth automatically connects to a running JACK system, but you can easily redefine its audio and MIDI connections with a utility such as QJackCtl or Patchage. Alas, amSynth currently has no support for LASH or JACK MIDI.
MIDI controllers may be assigned to any amSynth parameter through the simple Config/MIDI Controllers dialog (Figure 3). This capability allows dynamic synthesis programming with MIDI control surfaces or sequencer tracks. Figure 4 demonstrates a simple setup in which controller #1 (Mod Wheel) operates amSynth's Frequency Modulation Amount knob while controller #8 (Balance) does the same for the Filter Modulation Amount.
Polyphony and the MIDI Receive channel can be set with the scrollers in the top right corner of the main display. Settings at 0 will result in peak values for both settings, i.e. polyphonic play of up to 128 voices and reception on all 16 MIDI channels.
All of amSynth's panels and controls are presented in a single window. Knobs are controlled by clicking and holding the left mouse button, but be aware that the parameter value will jump from its current location to the pointer's position on the knob.
As advertised, amSynth is easy to learn and simple to navigate. Now let's see how easily we can make a new sound with amSynth.
Given its relatively small number of building blocks and their uncomplicated natures, classical subtractive synthesis is a straightforward process. You tune your oscillators, filter them for your desired harmonic content, and amplify the results to your satisfaction. I could build a preset from amSynth's initialized plain-vanilla settings, but I'm going to cheat a little instead. First I'll derive a new preset from an old one, then I'll use amSynth's preset randomizer to create a completely new sound.
amSynth opens with the Derren preset, which you can hear in its square-waved glory in amSynth Example 1. For this first example I'll alter only one parameter: I'll change the first oscillator's waveform from a square wave to a sine. Now listen to the dramatic effect of that single change in amSynth Example 2. At this point I save the changes, rename the preset, save the sound bank, and proceed to my next project.
I ran the Preset/Randomise function on amSynth's second default preset, Synth Strings 1. I began with certain characteristics of the desired sound already in my inner ear, and I knew I wanted a sustained sound for a soft pad. I used the randomization as a starting point, with the understanding that it is a rather unpredictable tool. I expected to do some tweaking to get closer to my sonic ideal, especially since the randomization is unmasked, meaning that it could affect every function in amSynth. The careful experimenter will always check the distortion and master volume levels after every randomization and keep them low for the sake of his or her speakers.
I applied the randomizer about a dozen times before it produced a sound with internal movement sufficient to fit my needs. I fiddled with various settings, with special attention to envelope parameters, until I had formed a slowly modulating sound useful for sustained pads. You can see the final program in Figure 5 and hear its audio output in Random Pad 1.
I have a few helpful habits when working with amSynth's preset randomizer. The process returns a high percentage of sounds with noise and random waveforms, often at high volume, but before I abandon them I drop the output level and switch the oscillator waves to the more cyclic forms. If the sound is too organ-like I un-sync the oscillators and activate the mixer's ring modulator. I also routinely finesse the amplifier's output envelope with values for more sensible sustain and release times. The filter and modulation parameters control the sound's spectral liveliness, but I like to define the amplitude envelope first. Incidentally, amSynth's controls responds quickly and smoothly to parameter changes in realtime, manually or via MIDI. However, wide abrupt changes in value will probably cause discontinuities in the audio output.
amSynth is not multitimbral, but you can run multiple instances. The File menu includes a New Instance item, but it crashes JACK on my JAD 1.0 system. Fortunately I can successfully invoke amSynth repeatedly from a terminal prompt or from my Fluxbox applications menu. Each instance can have its own MIDI channel, so it's a simple matter to set up a multitimbral suite of amSynths.
Alas, amSynth has been an orphaned project since its last public release (1.2.0) in late 2006. Nevertheless, it is an open-source project licensed under the GPL, so hope remains that someone will someday pick up where its original author left off. Fortunately amSynth is in a nicely usable state right now. It needs more original presets, and hopefully I've inspired a reader or two to get under its hood and start building their own custom sound banks. amSynth is easy to program, and it's great fun to make your own sounds, so hop to it and be sure to let me know if you come up with some interesting sounds and music for this very fine analogue modeling synthesizer.
Similis sum folio de quo ludunt venti.
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- The Firebird Project's Firebird Relational Database
- Stunnel Security for Oracle
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Managing Linux Using Puppet
- SUSE LLC's SUSE Manager
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
- Doing for User Space What We Did for Kernel Space
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide