[P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment

PHASEX is an experimental software synthesizer for use with Linux/ALSA/JACK. The name comes partially from its experimental method of using phase offset modulation, where each oscillator can have its phase offset between right and left channels modulated by an LFO or another oscillator.

Here's a screenshot of PHASEX in action.

Please keep in mind that PHASEX is in an active state of development, and new features will be added from time to time.


  • GTK Interface: PHASEX now has a GUI! Gone are the days of editing patch files by hand. Access to any of the 136 parameters is just a mouse click away. Notebook and fullscreen modes are provided to accomodate screen size.

  • Polyphonic: PHASEX is now polyphonic! In poly mode, voices are allocated dynamically up to the voice limit set at compile time. Oscillators and filters function independently per-voice. LFOs, however, function on a per-part basis. In addition to Poly mode, the three legacy Mono modes are still supported: Mono Smooth mode puts new notes back into sustain if playing legato. Mono Multikey mode maps the keys played, in order, round-robin style to all oscillators based on MIDI note frequencies in use. In Mono Retrigger mode, envelopes and oscillator init phases are retriggered every time a note is played.

  • JACK Output: JACK is used for the audio output. PHASEX supports any sample rate or buffer size used by jackd. Future plans include supporting the JACK sequencer for MIDI input. If there's enough interest, support for other audio systems such as ALSA (w/o JACK) or portaudio may be added as well.

  • ALSA MIDI Control: PHASEX receives its MIDI input via standard ALSA sequencer ports for full realtime control over any parameter. Parameter names are right clickable for quick and easy MIDI controller assignments. Each MIDI controller can be mapped to up to 15 parameters.

  • Multithreaded: PHASEX uses separate threads using realtime scheduling for JACK output, MIDI input, and the synth engine. The GTK UI runs in its own thread at normal scheduling priority.

  • 4 Oscillators: Each oscillator features wave shape selection, bipolar or unipolar output, frequency source selection (midi note, tempo based, tempo based w/ phase trigger, or audio input), mix modulation supporting standard or AM mixing, per-osc transpose and pitchbender amounts, and selectable modulation sources for AM, FM, phase offset, and waveshape modulation. For all but waveshape modulation, both oscillators and LFOs are available as modulation sources.

  • 4 LFOs: The dedicated per-osc LFOs have been replaced with generic per-part LFOs. The LFOs are identical to the oscillators except that they are per-part instead of per-voice, they do not accept other modulation sources (yet), and they are not transposed by the master transpose parameter.

  • ADSR Envelopes: PHASEX comes equipped with standard ADSR envelopes for the amplifier and filter. Duration times follow a parabolic curve. The amplitude of the amplifier envelope follows a logarathmic curve covering the dynamic range of 14 bits. The filter envelope is linear with respect to the musical scale. Both can also be used as oscillator and LFO sources.

  • Filter: The filter is a Chamberlin filter (2-pole 12db/octave) hacked up so it doesn't destasblize at high cutoff or resonance values. Low pass, high pass, band pass, and band stop modes are available, as well as four combo modes. The filter has it's own ADSR envelope (identical to amplifier envelope with the added option of switching to negative polarity). One of the LFOs may be mapped to modulate filter cutoff. Cutoff controller values map directly to MIDI note numbers. Optional keyfollow mode allows cutoff to follow the key played for the MIDI note, or the lowest, highest, or most recent key in play. The filter is per-voice in Poly mode.

  • Chorus: The PHASEX stereo crossover chorus (inspired by the chorus on the old Akai S-series samplers) adds depth and that extra bit of fullness, and comes with a builtin phaser for an expansive stereo soundstage.

  • Delay: The delay sports the normal mix and feedback controls, along with a channel crossover option. Use of an LFO allows modulation of playback position, great for flange-like effects (or really messing with people's heads at longer delay times). Delay times are selectable based on tempo, in both 1/64th and 1/48th increments.

  • Input Processing: Up to two JACK input channels (as mono, dual mono, or stereo) may be used as frequency sources for both oscillators and LFOs. An input envelope follower and input boost allow for sources like guitar or vocals to be processed with ease.

  • Stereo Width: The width of the stereo image is adjustable via a MIDI controller from pure mono to pure stereo. Can be used during sound design to help create patches that sound very different when a center playback channel is present.

Check out the new phasex beta!

phasex-0.12.0-beta2 is available for download. New version contains bugfixes, sampled oscillators, new parameters, improved sound quality, improved interface with JACK, and a new colorful GTK theme. This may be only a beta, but so far looks like the most solid phasex release yet. Visit the beta page for tarballs, Fedora 10 RPMS (optimized for arch), and more info.

Older PHASEX release:

Project Roadmap:

  • 0.12.0: Multitimbral support, optimize dsp code more.
  • 0.13.0: LASH support.
  • 0.14.0: Implement LFO clock-sync for MIDI clock and JACK transport.
  • 0.15.0: JACK MIDI support.
  • 0.16.0: ???
  • 0.17.0: Overhaul parameters to add generic ctlr-float conversions and add mod-matrix (w/ velocity and aftertouch handling).
  • 0.18.0: OSC and DSSI support.
  • 0.19.0: GUI enhancements.
  • 0.20.0: Programmable arpeggiator? LV2 support?


PHASEX is in active development. Constructive criticism is highly welcomed. Please direct all questions and comments to

[Back to SysEx main page]
Enjoy ;-}