Skip to content


Subversion checkout URL

You can clone with
Download ZIP
100644 560 lines (439 sloc) 25.927 kB
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
5463faa Pulled in changes for v0.14.97.
William Weston authored
2 PHASEX-0.14.97:
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
4 -------------------------------------------------------------------------------
5 [P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment
6 -------------------------------------------------------------------------------
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
8 Welcome to the latest and greatest of PHASEX!
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
10 PHASEX is an experimental MIDI softsynth for Linux/ALSA/JACK with a
11 synth engine built around flexible phase modulation and flexible
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
12 oscillator/LFO sources. Modulations include AM, FM, offset PM, and
13 wave select. PHASEX comes equipped with multiple filter types and
14 modes, a stereo crossover delay and chorus with phaser, ADSR envelopes
15 for both amplifier and filter, realtime audio input processing
16 capabilities, and more. Inspirations come from a variety of analog
17 and early digital MIDI synthesizers from the '80s and '90s.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
19 -------------------------------------------------------------------------------
23 -------------------------------------------------------------------------------
25 * C Hacker Friendly. PHASEX is written entirely in C. No C++. No
26 assembly. From the very beginning, the program framework (now
27 a much larger application framework) has existed to support a synth
28 engine written in good ol' C. Now the application framework is well
29 on its way to serving as a basic platform for developing new
30 instruments written in... you guessed it... C.
32 * Reliability. Whether playing music on stage, working in the studio,
33 or writing music on a laptop in a coffee shop, the instruments and
34 tools need to function properly and consistently in order to achieve
35 good results. Musicians need to be able to focus on the music, not
36 shortcomings of the toolset.
38 * Compatibility, starting with full JACK and ALSA API support (and
39 eventually support for additional audio / MIDI libraries), allowing
40 PHASEX to be used in any pro audio workflow on a modern Linux
41 distribution. The standalone application design was partially
42 chosen for this reason -- not all sequencers and DAWs support all
43 instrument plugin formats. For this reason, PHASEX will most likely
44 see support for features such as ALSA channel mapping, JACK
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
45 Freewheel, and even Non Session Manager (NSM) before seeing support
46 for DSSI or LV2? Why? PHASEX already runs side by side with
47 Ardour, MusE, Rosegarden, Qtractor, Seq24, or any other sequencer
48 supporting JACK MIDI or the ALSA sequencer interface, no matter what
49 plugin APIs these sequencers do or do not happen to support. In the
50 future, adding support for plugin formats may be deemed necessary
51 for making PHASEX more useful in certain situations. For now, the
52 development effort will focus on fine-tuning and extending the usage
53 of the APIs already supported.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
55 * Stage friendly. Low MIDI latency and low timing jitter. Run with
56 or without the GUI. Ability to specify alternate config files
57 (just be sure you have a backup of your ~/.phasex/on-stage.cfg...).
58 With decent hardware running PHASEX and a recent -rt kernel with
59 proper permissions, priority tuning, hardware tuning (BIOS settings,
60 PCI latencies, etc.), and audio buffer tuning, MIDI-audio latencies
61 of under 10ms should be well within reach for audio hardware capable
62 of running with 128 sample buffer periods or better.
64 * Studio friendly. Focus on workflow. The recent development work
65 has been aimed at making PHASEX easier to use and efficient to
66 manage (quick configuration, built in session management, MIDI
67 connections in the menus, etc.). Again, the focus should be on the
68 music, not on remembering how to make the instrument jump through a
69 bunch of hoops just to do it's job. PHASEX development will
70 continue in this direction with new session management features
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
71 based on community feedback.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
73 * Great sound. This one is of course, quite subjective, but it still
74 comes down to the same juggling act on the programming end: Choosing
75 the "right" algorithms, making resource usage vs. sound quality
76 decisions, calculation speed vs. accuracy decisions, and of course,
77 decisions about how much programming time is spent on what features
78 (hmmm... is it worth the time to do the math and write and debug the
79 code for nifty-feature-x, or is time better spent fixing
80 broken-feature-y?). At this point, a lot of these decisions have
81 been made and the synth engine as a whole is very stable, but these
82 things are not necessarily set in stone. There is always room for
83 improvement by researching new ways of doing the math and learning
84 new DSP tricks for solving some of the flaws inherent in the current
85 methods. So, how does it sound? Decide for yourself.
89 -------------------------------------------------------------------------------
91 * GTK Interface:
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
93 PHASEX has a GUI with switchable color themes, knobs and buttons
94 for all 150+ patch parameters, preferences dialog for easy
95 configuration, patch bank and session bank, MIDI connections from
96 the main menu, and more. True fullscreen mode, notebook,
97 one-page, and widescreen layouts, and select-able fonts and knob
98 sizes allow PHASEX to fit into any amount of screen real-estate
99 (now able to squeeze into sizes smaller than 800x600, or more
100 comfortably sit in a 1920x1080 desktop).
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
102 * Polyphonic:
104 PHASEX is polyphonic. In poly mode, voices are allocated
105 dynamically up to the runtime configurable voice limit.
106 Oscillators and filters function independently per-voice. LFOs,
107 however, function on a per-part basis. In addition to Poly mode,
108 the three legacy Mono modes are still supported: Mono Smooth mode
109 puts new notes back into sustain if playing legato. Mono Multikey
110 mode maps the keys played, in order, round-robin style to all
111 oscillators based on MIDI note frequencies in use. In Mono
112 Retrigger mode, envelopes and oscillator init phases are
113 retriggered every time a note is played.
115 * Multitimbral:
117 Many parts of PHASEX were re-architected during the v0.14.x
118 development phase. This release is now fully multitimbral, with
119 each part running in its own thread. The number of parts (and
120 thus engine threads) is determined at compile time, and has been
121 tested rigorously with 8 voices on a quad-core q6600. Part
122 switching in the GUI is clean and efficient. Session handling
123 support takes the fuss out of keeping track of session patches.
125 * ALSA Audio:
127 PHASEX supports native ALSA for flawless xrun free audio playback.
128 Sample rate and buffer size are easily configurable to achieve the
129 lowest possible latencies for your system.
131 * JACK Audio:
133 PHASEX has supported JACK audio from the beginning of the public
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
134 MIDI enabled releases. Any sample rate or buffer size used by
135 jackd can be utilized. Both single- and multi- stereo-pair
136 routings are supported. Basic Transport is supported, but as of
137 this time, the tempo and LFO sync are largely untested and may
138 still need some fine-tuning.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
140 * ALSA MIDI:
142 The ALSA sequencer interface has been with PHASEX since its first
143 public release. As of v0.14.x, the ALSA raw MIDI interface is
144 also supported, offering lower timing jitter when controlling
145 PHASEX via hardware MIDI.
147 * JACK MIDI:
149 JACK MIDI provides 100% sample-accurate timing by design. PHASEX
150 has embraced this design, and the new underlying MIDI system is
151 the result.
153 * Generic MIDI:
155 Generic MIDI (/dev/midi) support is provided for communicating
156 with MIDI devices or drivers that use a standard POSIX interface
157 supporting open/close/poll/read/fcntl on a named pipe, socket, or
158 device file. The generic MIDI support has only been tested with
159 ALSA's /dev/midi* and /dev/snd/midiC?D? device files (which are
160 accessed through the POSIX interface, not the alsa-lib API), but
161 should perform the same with any MIDI device interface as long as
162 additional system and library calls are not needed. Currently,
163 compatibility with serial to MIDI converters is unknown, so please
164 send feedback (positive or negative) if you attempt to use a
165 serial to MIDI converter.
167 * MIDI Control:
169 All parameters are quickly mappable and ready for full realtime
170 control. Parameter names are right clickable for quick and easy
171 MIDI controller assignments. Each MIDI controller can be mapped
172 to up to 15 parameters. Velocity sensitivity and key aftertouch
173 can modulate the amp and the filter, or used as raw oscillators of
174 LFOs. MIDI maps may be saved and later restored to facilitate
175 switching between different working environments.
177 * Realtime MIDI Clock:
179 Addresses the issue of how to accurately synchronize MIDI events
180 with individual frame positions within a buffer period instead of
181 quantizing the timing to whatever the audio buffer period happens
182 to be. Typical audio hardware supports stable realtime operation
183 at anywhere from 2-20 milliseconds latency. With no additional
184 synchronization, this audio latency becomes a self-imposed
185 quantization factor on event timing, adding MIDI timing jitter
186 roughly equal to the duration of one audio buffer processing
187 period, hence the need for a MIDI clock:
189 A timerless, tickless audio / MIDI timing synchronization system.
190 The clock latches onto the audio buffer processing periods and
191 generates a high-precision MIDI clock reference, with much less
192 jitter than timing based on when the audio processing cycle
193 actually wakes up (which can really be anywhere within the
194 period). This clock is agnostic to the specific audio and MIDI
195 drivers being used and requires no timer interrupts. In essence,
196 the timing accuracy achieved is only dependent on the MIDI
197 hardware/software and realtime scheduling latencies of the system.
198 With decent professional MIDI and audio hardware, sub-millisecond
199 timing accuracy is available with total MIDI event latency under
200 10ms, accurate and responsive enough for most professional sound
201 sound engineers and musicians.
203 * Multithreaded:
205 PHASEX uses separate threads with realtime scheduling for audio
206 output, MIDI input, and the synth engine. The GTK UI runs in its
207 own thread at normal scheduling priority.
209 * 4 Oscillators:
211 Each oscillator features wave shape selection (including sampled
212 and generated waveforms), bipolar or unipolar output, frequency
213 source selection (midi note, tempo based, tempo based w/ phase
214 trigger, audio input, or velocity/aftertouch), mix modulation
215 supporting standard or AM mixing, per-osc transpose and
216 pitchbender amounts, and select-able modulation sources for AM, FM,
217 phase offset, and waveshape modulation. For all but waveshape
218 modulation, both oscillators and LFOs are available as modulation
219 sources.
221 * 4 LFOs:
223 The dedicated per-osc LFOs have been replaced with generic
224 per-part LFOs. The LFOs are identical to the oscillators with the
225 following exceptions: They are per-part instead of per-voice,
226 they do not accept other modulation sources (yet), they are not
227 transposed by the master transpose parameter, and when sourced to
228 velocity, aftertouch data is ignored. New routing capabilities
229 have been added with the Voice AM, LFO-1 Rate, Cutoff, and LFO-3
230 Rate per-LFO dedicated function parameters.
232 * ADSR Envelopes:
234 PHASEX comes equipped with standard ADSR envelopes for the
235 amplifier and filter. Duration times follow a parabolic curve.
236 The amplitude of the amplifier envelope follows a logarithmic
237 curve. The filter envelope is linear with respect to the musical
238 scale. Both envelopes can also be used as oscillator and LFO
239 sources.
241 * Filter:
243 The first filter style is a Chamberlin filter (2-pole 12db/octave)
244 hacked up so it doesn't destabilize at high cutoff or resonance
245 values. Low pass, high pass, band pass, and band stop modes are
246 available, as well as four combo modes. The filter has it's own
247 ADSR envelope (identical to amplifier envelope with the added
248 option of switching to negative polarity). One of the LFOs may be
249 mapped to modulate filter cutoff. Cutoff controller values map
250 directly to MIDI note numbers. Optional keyfollow mode allows
251 cutoff to follow the key played for the MIDI note, or the lowest,
252 highest, or most recent key in play. The filter is per-voice in
253 Poly mode.
255 As of v0.14.x, a 4-pole 24db/octave Stilson/Smith style Moog
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
256 filter has been added. In PHASEX style, cutoff frequency is
257 adjusted in halfstep increments, and both a distorted and a
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
258 clean version are available.
260 The 3-pole filter is experimental, and might not be included in
261 future versions. Future plans include fixing the frequency
262 calculation and turning this into a proper 303 style filter.
264 * Chorus:
266 The PHASEX stereo crossover chorus (inspired by the chorus on the
267 old Akai S-series samplers) adds depth and that extra bit of
268 stereo separation for an even wider stereo field.
270 * Delay:
272 The delay sports the normal mix and feedback controls, along with
273 a channel crossover option. A dedicated LFO allows modulation of
274 playback position, great for flange-like effects (or really
275 messing with people's heads at longer delay times). Delay times
276 are select-able based on tempo, in both 1/64th and 1/48th
277 increments.
279 * Input Processing:
281 Up to two JACK input channels (as mono, dual mono, or stereo) may
282 be used as audio sources for both oscillators and LFOs. An input
283 envelope follower and input boost allow for sources like guitar or
284 vocals to be processed with ease.
286 * Stereo Width:
288 The width of the stereo image is adjustable via a MIDI controller
289 from pure mono to pure stereo. Can be used during sound design to
290 help create patches that sound very different when a center
291 playback channel is present. Very useful for getting patches to
292 sit in the mix properly.
294 * Velocity Sensitivity:
296 Velocity of Note-On events can modify the filter or amplifier, and
297 can also be routed through the LFOs.
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
299 * Session Handling:
301 For multitimbral builds, PHASEX comes equipped with a session bank
302 which operates much like the existing patch bank. In addition to
303 the new native session handling, LASH and JACK Session supported
304 as well.
306 -------------------------------------------------------------------------------
310 -------------------------------------------------------------------------------
312 In addition to new major features listed above, all parts of the
313 PHASEX source code have been overhauled, with some important changes:
315 * New synth patch file format: This decision was not made lightly,
316 and there are many reasons for this: The behavior of some
317 parameters has changed (anything dealing with velocity curves,
318 envelope curves, offset of negative envelopes), new parameters have
319 been added, new parameter values have been added, and the old patch
320 parser code grew into an almost unmanageable mess. Starting with
321 v0.14.x, parameter values in patch files reflect the values shown in
322 the GUI instead of _mostly_ reflectling MIDI values, which should be
323 better for human readability. Improperly named parameters have been
324 renamed to avoid confusion as well. A patch conversion script is
325 provided to convert patches from v0.12.x to v0.14.x, and should work
326 well in most cases. With the new synth engine improvements, a lot
327 of old patches can be modified to sound better with very little
328 effort, so please don't fret when old patches don't sound _exactly_
329 the same. If there is one apology that needs to be made with the
330 new PHASEX release, this is it. If converting all your old patches
331 into the new format really throws a monkeywrench into the works, I
332 do apologize.
334 * GUI and engine are (almost) fully separated. Engine parameters and
335 GUI parameters now have separate callback paths. The GUI queues
336 parameter change events for the engine instead of modifying engine
337 parameters directly. GUI-initiated patch changes are still
338 performed by the GUI (hence 'almost separated'). Current plans
339 include separating this out as well. Cleaning up this aspect of the
340 GUI has helped tremendously, allowing all the weird hacks and
341 workarounds for parameter state handling to be replaced with a
342 design that works efficiently and dependably. Since the engine and
343 MIDI code no longer have to be aware of the GUI, phasex can now be
344 started without the GUI.
346 * Lock-free buffer synchronization: The pthreads mutexes in the
347 buffer processing code been removed in favor of lock-free buffering
348 and for the engine, clock_nanosleep() based adaptive sleep timing.
349 Moving away from the old broken design means fewer context switches,
350 fewer (if any) priority inversion problems, a better guarantee that
351 engine threads can fill buffers on time, and most important of all:
352 no more "bad PHASEX sound" from engine and audio losing sync.
354 * New MIDI queue: Single-reader. Multiple-writer. Multiple events
355 per frame. Monotonic. Reliable. Used by GUI and all MIDI drivers
356 to queue events for the engine. Queue data format is designed to
357 hold 2 and 3 byte MIDI messages. Event types not defined in the
358 MIDI spec are used for internal non-MIDI events (currently 0x01
359 through 0x04).
361 * MIDI Reference Clock: All of the MIDI event queuing and realtime
362 buffer synchronization between audio, engine, and MIDI threads is
363 built around the new MIDI reference clock. All synchronization
364 events (engine waking up, audio waking up, timestamping MIDI events,
365 and updating audio,engine, and MIDI buffer indices) happen at a time
366 relative to the begininng of a MIDI period (equal in time to an
367 average audio buffer period, but starting some configurable amount
368 of time earlier).
370 * There's plenty more if you're curious. Have a look at the
371 ChangeLog, or just go straight to the source.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
373 -------------------------------------------------------------------------------
377 -------------------------------------------------------------------------------
379 Required:
380 * ALSA >= 1.0.18
381 * JACK (JACK or JACK2/jackdmp should work).
382 * libsamplerate
383 * GTK-2 (version 2.8 or later recommended).
384 * Realtime Linux Kernel (latest 3.0.x-rt or newer recommended).
385 * 1.6 GHz or faster CPU (multiple core, 64-bit preferred).
387 Optional:
388 * LASH >= 0.5.4.
389 * libuuid (required by LASH).
391 -------------------------------------------------------------------------------
395 -------------------------------------------------------------------------------
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
397 For a standard, multitimbral configuration optimized for your CPU,
398 run the following:
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
400 cd phasex
401 aclocal && autoconf && automake && autoheader
402 ./configure --enable-arch=native --enable-parts=2
403 make
404 make install
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
406 Other useful configure flags are --enable-debug=, --enable-32bit,
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
407 --enable-cpu-power=, and --without-lash.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
409 See INSTALL for full compilation and installation instructions.
411 -------------------------------------------------------------------------------
415 -------------------------------------------------------------------------------
417 Usage: phasex [options] [<patch>[,<patch>[,<patch>[,...]]]]
419 -c, --config-file= Alternate config (takes precedence over default
420 config file and command line options.
421 -A, --audio-driver= Audio driver: alsa or jack.
422 -a, --audio-device= ALSA device name (hw:x,y format).
423 -r, --sample-rate= Audio sample rate (ALSA only).
424 -p, --latency-periods= Number of buffer latency periods (ALSA only).
425 -s, --period-size= Buffer period size (power of 2, ALSA only).
426 -M, --midi-driver= MIDI driver: jack, alsa-seq, alsa-raw, generic.
427 -m, --midi-port= MIDI input port or device name (driver specific).
428 -f, --fullscreen Start GUI in fullscreen mode.
429 -x, --maximize Start GUI with main window maximized.
430 -b, --bpm= Override BPM in patch bank and lock BPM parameter.
431 -t, --tuning= Base tuning frequency for A4 (default 440 Hz).
432 -i, --input= Comma separated pair of audio input matches.
433 -o, --output= Comma separated pair of audio output matches.
434 -O, --oversample Use double the sample rate for internal math.
435 -U, --undersample Use half the sample rate for internal math.
436 -G, --no-gui Run PHASEX without starting the GUI.
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
437 -D, --session-dir= Set directory for loading initial session.
438 -u, --uuid= Set UUID for JACK Session handling.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
439 -d, --debug= Debug class (Can be repeated. See debug.c).
440 -l, --list Scan and list audio and MIDI devices.
441 -v, --version Display version and exit.
442 -h, --help Display this help message and probe ALSA hardware.
444 LASH Options:
445 -P, --lash-project= LASH project name.
446 -S, --lash-server= LASH server address.
447 -I, --lash-id= LASH client ID.
448 -L, --disable-lash Disable LASH completely for the current session.
450 Please note that unless an alternate config file is used, all command
451 line options take precedence over settings saved in the config file.
453 If using phasex with JACK, make sure jackd is running (and configured
454 for your system) before running phasex. If jackd is not running,
455 PHASEX will fall back to using the ALSA drivers. If you use software
456 like qjackctl to handle your audio and MIDI patchbay, then the command
457 line port connection options aren't necessary. The -i and -o options
458 accept comma separated substring pairs to match on JACK audio port
459 names. The -m option takes a comma separated list of MIDI ports (X:Y
460 for ALSA Seq, hw:X,Y for ALSA Raw, or device file for generic raw
461 MIDI). For example:
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
463 phasex -A jack -i _1,_2 -o _1,_2 -M alsa-seq -m 16:0,20:0
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
465 will match JACK ports alsa_pcm:capture_1 and alsa_pcm:capture_2 for
466 input, alsa_pcm:playback_1 and alsa_pcm:playback_2 for output, and the
467 first two ALSA sequencer hardware MIDI input ports with relatively
468 recent versions of JACK and ALSA. (Jack2/jackdmp uses 'system'
469 instead of 'alsa_pcm'. ALSA port designations vary from system to
470 system.)
472 To view a full technical description of any parameter, simply
473 middle-click on the parameter label. Similarly, a right-click on any
474 parameter label allows on-the-fly mapping of any MIDI controller to
475 any parameter (up to 15 parameters may be mapped to a single MIDI
476 controller). All remaining features are directly visible and
477 accessible through the GUI and its (very short) menus.
479 Patch bank storage works like it does on just about any modern
480 hardware synth, with one exception: Patches themselves are stored by
481 name in the filesystem, which are then mapped by program number in the
482 patch bank. The individual program slots in the patch bank simply
483 reference the stored patches by name. In Autosave mode, a patch is
484 automatically saved before a new patch is loaded during a program
485 change without any user intervention. Autosave mode is intended for
486 use during sound design sessions (and should be avoided the rest of
487 the time to keep from overwriting patches). In Warn mode, warnings
488 will be issued will be issued when unsaved modifications to the patch
489 will be lost. In Protect mode, program changes always take effect
490 immediately, so any patch modifications are quietly discarded and
491 patches never get (re)saved unless they are saved explicitly.
493 -------------------------------------------------------------------------------
495 In the event of catastrophic failure, and PHASEX fails to start, edit
496 ~/.phasex/phasex.cfg and look for the last settings change, or simply
497 remove phasex.cfg (but not any directories) and PHASEX will start with
498 the default config and auto-detect your setup all over again.
500 -------------------------------------------------------------------------------
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
504 -------------------------------------------------------------------------------
506 PHASEX is distributed under the terms of the GNU Public License,
507 version 3. See LICENSE for details.
5463faa Pulled in changes for v0.14.97.
William Weston authored
509 Copyright (C) 1999-2013 William Weston <>.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
511 With portions of and contributions to the PHASEX source:
513 Copyright (C) 2010 Anton Kormakov.
514 Copyright (C) 2007 Peter Shorthose.
515 Copyright (C) 2004 Sean Bolton.
516 Copyright (C) 1999 Tony Garnock-Jones.
518 See AUTHORS for details.
520 -------------------------------------------------------------------------------
524 -------------------------------------------------------------------------------
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
526 Currently, PHASEX dev sources are only available via git:
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
528 git clone
530 RPM and .tar.gz packages will be made available with the
531 upcoming v0.15.0 stable release.
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
e6f7f8c Pulled in changes for v0.14.96.
William Weston authored
533 -------------------------------------------------------------------------------
bd140c8 Starting new git repo with v0.14.94.
William Weston authored
537 -------------------------------------------------------------------------------
539 The primary goal of the PHASEX project is to offer a free software
540 synthesizer for GNU/Linux/ALSA/JACK systems that is useful in a MIDI
541 production environment. Please send any kind of feedback you will for
544 What do you like about PHASEX?
545 What don't you like about PHASEX?
546 What features do you think are missing?
547 What would you do differently?
548 What are you looking for in a UI?
549 Is there anything preventing you from using PHASEX dependably on stage?
550 Is there anything preventing you from using PHASEX dependably in the studio?
552 Anything you say can only influence me to make PHASEX better.
555 Kind Regards,
557 --William Weston <>
559 -------------------------------------------------------------------------------
Something went wrong with that request. Please try again.