Happy New Year!
Yes, your eyes are working correctly. This is v0.14.96. Some things
are worth the wait. I know it's been a while, but I haven't forgotton
about PHASEX... just had to put it on the back burner for some time
while life moves on. After more troubles than I'd like to go into
detail about with the old server, old hosting arrangement, the old
bug-ridden codebase, old laptop, and life in general, I've come back
to "finish" what I've started (as if software projects ever
"finish"
these days...). Over the past eleven months, I've taken the time to
overhaul most aspects of the PHASEX source code. After two failed
attempts at going multitimbral, and two mishaps with the laptop dev
tree and was supposed to be v0.12.0, I decided to bump the version
twice, start the new development with v0.14.x, and move on. Here's
the short list of what's new since v0.12.x:
New Features:
- Multitimbral (1 thread per part).
- Session bank (very much like the patch bank).
- Jack Session.
- Stereo- and Multi- outputs for JACK.
- ALSA PCM audio.
- JACK MIDI.
- ALSA Raw MIDI.
- Generic MIDI (/dev/midi support).
- MIDI clock for timestamping and queuing events.
- Active Sensing.
- New oscillator waveforms.
- Portamento for Osc Transpose events.
- FM oscillator latching.
- New LFO parameters.
- Moog (24db/octave) filter.
- Fast fade-out mono retriggering.
- Interpolated oscillator table lookups.
- Ability to run with no GUI.
- JACK MIDI / ALSA Raw / ALSA Seq connections in menus.
- Widescreen layout mode.
- New preferences dialog w/ nearly all settings.
- New knobs.
- Pure 64-bit math in builds with --enable-cpu-power=4.
New Features from Anton Kormakov:
- LASH.
- MIDI Hold pedal.
- JACK Transport.
Bugs Removed and/or Squashed:
- The "bad PHASEX noise" is gone.
- GUI widget sensitivity is fixed.
- Notebook tabs behave properly (and quickly).
- Patch loading bugs are gone.
- MIDI program change works dependably.
- Spurious envelope triggering pops are gone.
- Offsets for neg. filter env. now calculated properly.
- Chopped portamento slides are fixed.
- Keytriggering for all keymodes is fixed.
- Voice stealing works as expected.
- Chorus phase balance issues have been corrected.
- System lockup on shutdown is a thing of the past.
- Denormals don't eat up all the CPU anymore.
Code Overhaul:
- Build system overhaul.
- Reorganization of source code.
- Rebuilt data structures for multimbral architecture.
- New driver layer (engine relies on no libraries).
- Replaced pthreads based buffer synchronization code.
- New lightweight patch parser / patch format.
- New thread-safe MIDI event queue.
- Restructured engine, GUI, and MIDI code.
- Almost complete separation of GUI and engine.
(still need to separate bank changes from the GUI.)
Sources are available via git:
git clone
https://github.com/williamweston/phasex.git
Number of parts is configurable at compile time (1-2 parts per core
should be very dependable. Tested extensively with 8 parts on a
quad-core.) As usual, YMMV:
aclocal && autoconf && automake && autoheader
./configure --enable-arch=native --enable-parts=2
Overall, I am pleased with where PHASEX has arrived. In the past, I
had always been disappointed with PHASEX and its shortcomings, and for
many reasons. Until now. The code is cleaner and easier to work on.
Most of the old bugs have been replaced with more intelligent design.
On an -rt kernel, xruns are a thing of the past. Sound quality is
cleaner. GUI is much more responsive. Dependence on the command line
is kept to a bare minimum. Sessions can be managed with ease. Per
part memory and CPU utilization has decreased vs. multi-instance
v0.12.x. Timing is almost as good as it gets (sample accurate for
JACK MIDI, near sample accurate for ALSA seq, and almost as good as
your hardware will allow for ALSA raw MIDI.) All or the major
barriers to use that I've identified over the years have been
eliminated. I can actually sit down and work on some of those tracks
that got shelved due to bad timing. Of all the new features and code,
I am most pleased with the new MIDI clock. (Anyone interested in
timing of MIDI events and successive audio buffer processing cycles
can enable timing debug with '-d timing'. Once I finish putting all
my notes together, a detailed explanation of the MIDI clock will
follow.) The rest of the new features should be self-explanatory to
readers of linux-audio-dev, so I'll spare the details (unless of
course anyone asks).
Many thanks go out to Anton Kormakov for his work on PHASEX and his
git repo, which appear to have served the community well in the time
since the old server went down. And of course, I'd like to thank the
regular posters to this list (and linux-rt-users) for sharing the
knowledge that's made this release possible. A lot of you have
dropped some hints over the years about what the design of PHASEX (or
any synth) really needs to perform well (or at least to not perform
badly). I've been listening, as a lot of the work this year is a
result of finally getting around to a lot of the suggestions made by
members of linux-audio-dev.
So please, enjoy the new PHASEX. This release aims to be as bug-free
as possible (and IMHO, v0.14.96 is already more stable and
trouble-free than any previous version). As is usual with GPL'ed
software, there's no warranty whatsoever and I'm not responsible if
you blow out your speakers (or your hearing), but please don't let
that hold you back from trying it out.
This version is fully tested with Fedora 17 and 18, and should be just
as trouble free on any Fedora >= 14 or CentOS >= 6.0. At some point
next month, I'll be rebuilding my RAID and dedicating some space to
running other distributions. Until then, a request goes out for build
reports from other distros, especially Debian/Ubuntu, Arch, and Mint.
There's still time to get build files from other distros into the git
tree before v0.15.0 comes out.
So what do we do, now that the world didn't end?
Let's make some music!
Cheers,
--William Weston