PHASEX: A New Linux Softsynth
Development of native Linux audio plugins and softsynths may not be so relentlessly rapid as it is in the Windows and Mac sound software worlds, but new things do appear. This week I profile a cool new (well, relatively new) Linux softsynth, William Weston's Phase Harmonic Advanced Synthesis EXperiment, also known as Phasex.
Phasex is a native Linux software synthesizer designed for use with the ALSA MIDI connectivity interface (a.k.a. the ALSA sequencer) and the JACK audio server. Its features include dynamic voice allocation (for polyphony), full parameter control via MIDI, feature-rich oscillators/LFOs/envelope generators, high-quality chorus and delay effects, and the ability to process the audio input from any other available JACK client.
I built and tested Phasex 0.11.1 on the most recent JAD and 64 Studio systems. I encountered no problems compiling the program, but if building from source isn't your idea of fun you can download RPM packages from the Phasex homepage. A package is also available for OpenSUSE 10.2. A packaged 64-bit Phasex is not available yet.
Whether you install Phasex from a package or build it from source you will also need ALSA and JACK. The ALSA sound system is the default kernel sound system so you should have it already (if you're running any modern Linux distribution). If you don't have JACK, see your distribution's package manager for available packages, or visit the JACK Web site for more information regarding source and other package locations. You'll also want some software to drive Phasex. You can use any MIDI sequencer, an external keyboard, or even a virtual keyboard, but you will need some way to play the synth.
Phasex's interface is divided into two sections. The Main section contains general program settings (MIDI channel, master tune, transposition value, etc.), audio input controls, amplitude and filter envelope designs, effects processors, and LFO definitions. The Oscillator section is restricted to only the definitions of the four oscillators and their modulators. By the way, the GUI may be set for full-screen or tabbed display in the File/Preferences dialog.
Sound Synthesis In Phasex
Phasex's synthesis method is called phase offset modulation. According to the documentation, each oscillator in a patch modulates its phase offset between its right and left output channels. The modulator may be one of the four LFOs, another oscillator, or an incoming audio stream.
A patch can use up to four oscillators. According to the Phasex Web page each oscillator includes :
- Cyclic wave selection (sine, saw, square, triangle, etc.)
- Bipolar or unipolar output
- Frequency source selection (MIDI note, tempo-based, tempo-based with phase trigger, audio input)
- Mix modulation supporting standard or AM mixing
- Per-oscillator transposition and pitchbend amounts
- Selectable modulation sources (AM, FM, phase offset, waveshape modulation)
- Oscillators and LFOs can be used as modulation sources (except in waveshape modulation)
As might be expected with such resources, Phasex can produce rich textures and detailed shorter sounds. The default patch set shows off the synth's possibilities, and the uncluttered GUI invites experimentation. The sound of any patch can be radically altered by a single change of modulation source. For example, the realtime audio input is an unusual option that can create bizarre filter and mix effects. I whiled away much time listening to the dynamically changing results of driving Phasex with a MIDI loop from seq24 and modulating its oscillators and LFOs with a songlist of some favorite OGG files played by AlsaPlayer (Figure 4).
All parameters are MIDI-controllable, and the default map can be redefined by the user. Controller assignments can be made instantly in the Update MIDI Control dialog. Right-click on any parameter name, then follow the directions in the dialog panel. The combination of MIDI parameter automation with an audio input modulation source can create some fascinating evolving sounds. As a test, I set up my sequencer to control both Phasex and the QSynth soundfont synthesizer, but I routed QSynth's audio output into Phasex instead of going to the normal ALSA PCM channels. I selected Phasex's Soft Pad for my starting patch, with the GM Warm Pad in QSynth. Then I started to play with the routing and control possibilities. First, I redefined the signal source for each oscillator (the default source defines the source frequency by a MIDI note number). I changed the sources for oscillators 2 and 3 to Amplitude Envelope and Filter Envelope (both defined on the Main tab), and I assigned MIDI controller #7 to the filter cutoff frequency. I created two identical loops in my sequencer, one to drive Phasex and one to drive QSynth, then I created a loop of MIDI controller messages for Phasex. The controller loop simply moved from 0 to 127 and back again, the other loops were a slow-moving series of 4-part chords. The audio output of QSynth fed into Phasex's oscillator 4. The sound was cool, but it had a bad zipper noise that disappeared when I switched off the audio input envelope follower.
For More Information...
Documentation consists of a descriptive text on the Phasex home page, a "pop-up assistant" help system that briefly describes any selected parameter (right-click on any parameter name to summon the assistant), and a succinct guide to using Phasex, available from the program's Help menu. However, perhaps the best documentation for Phasex is its default presets. Basic and advanced programming examples can be found in the default patches. Some patches are clearly intended for user-level additions and extensions, while others are obviously more finished sounds.
Alas, I had no time to prepare sound files of my own, but Linux audio stalwart Ken Restivo has placed some interesting Phasex demos on-line. Give a listen especially to Pick A Nose, Buzzy Signal, and Hit By Pitch. Check it out, Ken's quite a player, and he can really show off Phasex's possibilities.
I love this synth, and I'd like to see a few improvements to it. The GUI is efficient, perhaps blandly so, and color-coding the panels would be helpful when programming the synth. I'd also like to see some randomization controls, I'm usually inspired by their presence and am more likely to create my own sounds when I can start from a randomized patch. MIDI zipper noise is sometimes evident during fast controller sweeps, depending on the parameter being controlled, but this is likely more of a MIDI problem than a fault with Phasex. With that in mind, perhaps OSC support could solve any controller resolution issues.
Phasex is in early development, but it is perfectly usable in its present conditions and definitely worth adding to your Linux audio arsenal. It's easily programmed, has excellent sound quality, includes a fine set of demonstration patches, and the price is right. If you've been searching for a truly new kind of softsynth for Linux, search no further. Phasex is what you've been looking for.