Permalink
Browse files

Starting new git repo with v0.14.94.

  • Loading branch information...
0 parents commit bd140c8c6b77d87c068f53fe40a0ae1d7c952d49 William Weston committed Dec 21, 2012
Showing with 29,356 additions and 0 deletions.
  1. +31 −0 .gitignore
  2. +36 −0 AUTHORS
  3. +674 −0 COPYING
  4. +324 −0 ChangeLog
  5. +674 −0 GPL-3.0.txt
  6. +94 −0 INSTALL
  7. +64 −0 LICENSE
  8. +54 −0 Makefile.am
  9. 0 NEWS
  10. +477 −0 README
  11. +254 −0 TODO
  12. +218 −0 config.h.in
  13. +686 −0 configure.ac
  14. +50 −0 doc/ROADMAP
  15. +76 −0 doc/signal-diagram.txt
  16. +18 −0 help/Makefile.am
  17. +965 −0 help/parameters.help
  18. +9,655 −0 ltmain.sh
  19. +28 −0 midimaps/Makefile.am
  20. +136 −0 midimaps/default.map
  21. +37 −0 misc/Makefile.am
  22. +395 −0 misc/patchbank
  23. +218 −0 misc/phasex-convert-patch
  24. +13 −0 misc/phasex.desktop.in
  25. +18 −0 patches/Makefile.am
  26. +153 −0 patches/default.phx
  27. +218 −0 phasex.spec.in
  28. BIN pixmaps/Dark/detent-knob-16x16.png
  29. BIN pixmaps/Dark/detent-knob-20x20.png
  30. BIN pixmaps/Dark/detent-knob-24x24.png
  31. BIN pixmaps/Dark/detent-knob-28x28.png
  32. BIN pixmaps/Dark/detent-knob-32x32.png
  33. BIN pixmaps/Dark/detent-knob-36x36.png
  34. BIN pixmaps/Dark/detent-knob-40x40.png
  35. BIN pixmaps/Dark/detent-knob-44x44.png
  36. BIN pixmaps/Dark/detent-knob-48x48.png
  37. BIN pixmaps/Dark/detent-knob-52x52.png
  38. BIN pixmaps/Dark/detent-knob-56x56.png
  39. BIN pixmaps/Dark/detent-knob-60x60.png
  40. BIN pixmaps/Dark/detent-knob-64x64.png
  41. BIN pixmaps/Dark/knob-16x16.png
  42. BIN pixmaps/Dark/knob-20x20.png
  43. BIN pixmaps/Dark/knob-24x24.png
  44. BIN pixmaps/Dark/knob-28x28.png
  45. BIN pixmaps/Dark/knob-32x32.png
  46. BIN pixmaps/Dark/knob-36x36.png
  47. BIN pixmaps/Dark/knob-40x40.png
  48. BIN pixmaps/Dark/knob-44x44.png
  49. BIN pixmaps/Dark/knob-48x48.png
  50. BIN pixmaps/Dark/knob-52x52.png
  51. BIN pixmaps/Dark/knob-56x56.png
  52. BIN pixmaps/Dark/knob-60x60.png
  53. BIN pixmaps/Dark/knob-64x64.png
  54. BIN pixmaps/Light/detent-knob-16x16.png
  55. BIN pixmaps/Light/detent-knob-20x20.png
  56. BIN pixmaps/Light/detent-knob-24x24.png
  57. BIN pixmaps/Light/detent-knob-28x28.png
  58. BIN pixmaps/Light/detent-knob-32x32.png
  59. BIN pixmaps/Light/detent-knob-36x36.png
  60. BIN pixmaps/Light/detent-knob-40x40.png
  61. BIN pixmaps/Light/detent-knob-44x44.png
  62. BIN pixmaps/Light/detent-knob-48x48.png
  63. BIN pixmaps/Light/detent-knob-52x52.png
  64. BIN pixmaps/Light/detent-knob-56x56.png
  65. BIN pixmaps/Light/detent-knob-60x60.png
  66. BIN pixmaps/Light/detent-knob-64x64.png
  67. BIN pixmaps/Light/knob-16x16.png
  68. BIN pixmaps/Light/knob-20x20.png
  69. BIN pixmaps/Light/knob-24x24.png
  70. BIN pixmaps/Light/knob-28x28.png
  71. BIN pixmaps/Light/knob-32x32.png
  72. BIN pixmaps/Light/knob-36x36.png
  73. BIN pixmaps/Light/knob-40x40.png
  74. BIN pixmaps/Light/knob-44x44.png
  75. BIN pixmaps/Light/knob-48x48.png
  76. BIN pixmaps/Light/knob-52x52.png
  77. BIN pixmaps/Light/knob-56x56.png
  78. BIN pixmaps/Light/knob-60x60.png
  79. BIN pixmaps/Light/knob-64x64.png
  80. +174 −0 pixmaps/Makefile.am
  81. BIN pixmaps/phasex-icon-128x128.png
  82. BIN pixmaps/phasex-icon-16x16.png
  83. BIN pixmaps/phasex-icon-192x192.png
  84. BIN pixmaps/phasex-icon-22x22.png
  85. BIN pixmaps/phasex-icon-24x24.png
  86. BIN pixmaps/phasex-icon-256x256.png
  87. BIN pixmaps/phasex-icon-32x32.png
  88. BIN pixmaps/phasex-icon-36x36.png
  89. BIN pixmaps/phasex-icon-48x48.png
  90. BIN pixmaps/phasex-icon-512x512.png
  91. BIN pixmaps/phasex-icon-64x64.png
  92. BIN pixmaps/phasex-icon-72x72.png
  93. BIN pixmaps/phasex-icon-96x96.png
  94. +85 −0 pixmaps/phasex-icon-scalable.svg
  95. +80 −0 pixmaps/phasex-icon-tiny.svg
  96. BIN pixmaps/phasex-splash.png
  97. +26 −0 samples/Makefile.am
  98. BIN samples/analog_square.raw
  99. BIN samples/juno_osc.raw
  100. BIN samples/juno_poly.raw
  101. BIN samples/juno_saw.raw
  102. BIN samples/juno_square.raw
  103. BIN samples/vox_1.raw
  104. BIN samples/vox_2.raw
  105. BIN samples/vox_3.raw
  106. +143 −0 scripts/compile
  107. +630 −0 scripts/depcomp
  108. +520 −0 scripts/install-sh
  109. +376 −0 scripts/missing
  110. +62 −0 src/Makefile.am
  111. +1,785 −0 src/alsa_pcm.c
  112. +91 −0 src/alsa_pcm.h
  113. +939 −0 src/alsa_seq.c
  114. +89 −0 src/alsa_seq.h
  115. +460 −0 src/bank.c
  116. +62 −0 src/bank.h
  117. +151 −0 src/bpm.c
  118. +33 −0 src/bpm.h
  119. +202 −0 src/buffer.c
  120. +61 −0 src/buffer.h
  121. +108 −0 src/debug.c
  122. +181 −0 src/debug.h
  123. +835 −0 src/driver.c
  124. +104 −0 src/driver.h
  125. +1,847 −0 src/engine.c
  126. +369 −0 src/engine.h
  127. +772 −0 src/filter.c
  128. +78 −0 src/filter.h
  129. +897 −0 src/gtkknob.c
  130. +120 −0 src/gtkknob.h
  131. +333 −0 src/gui_alsa.c
  132. +43 −0 src/gui_alsa.h
  133. +1,100 −0 src/gui_bank.c
  134. +72 −0 src/gui_bank.h
  135. +113 −0 src/gui_jack.c
  136. +38 −0 src/gui_jack.h
  137. +727 −0 src/gui_layout.c
  138. +84 −0 src/gui_layout.h
Sorry, we could not display the entire diff because it was too big.
31 .gitignore
@@ -0,0 +1,31 @@
+*~
+\#*
+.#*
+*/#*
+*/.#*
+*/*~
+.*.swp
+*/.*.swp
+*/*.o
+*.orig
+*/*.orig
+*/*/*.orig
+*.rej
+*/*.rej
+*/*/*.rej
+*/Makefile
+*/Makefile.in
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+config.h
+config.log
+config.status
+configure
+phasex.spec
+phasex-*.tar.gz
+stamp-h1
+misc/phasex.desktop
+src/.deps/
+src/phasex
36 AUTHORS
@@ -0,0 +1,36 @@
+------------------------------------------------------------------------
+[P]hase [H]armonic [A]dvanced [S]ynthesis [E]xperiment
+------------------------------------------------------------------------
+
+
+Author / Maintainer:
+------------------------------------------------------------------------
+
+Copyright (C) 1999-2012 William Weston <whw@linuxmail.org>:
+ * All code, documentation, patches, samples, and graphics, execpt
+ as noted below in the contributors section.
+
+
+Contributors:
+------------------------------------------------------------------------
+
+Copyright (C) 1999: Tony Garnock-Jones
+ * Original gtkknob code.
+
+Copyright (C) 2004,2008-2010 Sean Bolton:
+ * Contributions to the gtkknob code.
+
+Copyright (C) 2007 Peter Shorthose <zenadsl6252@zen.co.uk>:
+ * Abstraction of the pixmap animation in gtkknob.c, allowing
+ animations to be loaded into memory once per unique instance.
+ * Initial backing store support for widgets on X11 displays.
+
+Copyright (C) 2010 Anton Kormakov <assault64@gmail.com>:
+ * Initial JACK Trasport / Tempo & LFO sync code.
+ * Initial LASH support.
+ * Hold pedal (sostenuto pedal) support.
+ * Envelope and chorus fixes.
+ * Initial all-notes-off / all-sound-off handling.
+ * DC offset rejection filter.
+
+------------------------------------------------------------------------
674 COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
324 ChangeLog
@@ -0,0 +1,324 @@
+[P]hase [H]armonic [A]dvanced [S]ynthesis [EX]permient
+
+Changelog:
+
+2012-12-20 William Weston <whw@linuxmail.org> - 0.14.94
+ * Major code overhaul since 0.12.
+ * Renamed variables and functions to improve readability.
+ * Rewrote comments where old comments no longer made sense.
+ * Rewrote at least half of the previous codebase.
+ * Overhauled all major systems, as noted below.
+ * Removed thousands of lines of depracated code.
+ * Reworked startup / shutdown code (very stable).
+ * Added debug thread and DEBUG/ERROR/WARN macros.
+ * Added debug classes for selective debug output.
+ * Build-system overhaul.
+ * Added new optimization flags for better performance.
+ * Fixed library detection (should build on more systems).
+ * Fixed inconsistent installs and uninstalls.
+ * Fixed handling of icons and desktop file.
+ * Updated phasex.spec.in for Fedora 14-18 builds.
+ * Added rpm target to toplevel Makefile.am.
+ * Integration of new features from Anton Kormakov (work in progress).
+ * Added LASH session support (stable).
+ * Added hold pedal support (untested).
+ * Added JACK Transport support (currently broken).
+ * Added DC rejection filter in synth engine (for debugging).
+ * Fixed Chorus Time calculations and typo in chorus math.
+ * Multitimbral architecture (thread per part).
+ * Data structure overhaul, affecting almost everything.
+ * Added Stereo- and multi- outputs for JACK.
+ * Added GUI part switching with hotkeys (F1-F<part_num>).
+ * Added Session management in with session bank in GUI.
+ * Removed pthreads mutexes in favor of atomic index values.
+ * Drivers: new multiple audio / MIDI driver framework.
+ * Added ALSA PCM with mmap and capture support (stable).
+ * Added autodetection of ALSA PCM devices and PCM stream settings.
+ * Added ALSA Raw MIDI support (stable).
+ * Added Generic MIDI support (stable).
+ * Added OSS MIDI support (untested).
+ * Added JACK MIDI support (stable).
+ * MIDI system overhaul.
+ * Added new internal MIDI event framework.
+ * Events are now queued by MIDI thread and processed by engine(s).
+ * Reorganized MIDI event processing code.
+ * Added Active Sensing support (all MIDI drivers. stable).
+ * Added All Notes Off / All Sound Off according to MIDI spec.
+ * Fixed MIDI program change bugs.
+ * Added ignore MIDI program change setting.
+ * MIDI-clock for near sample-accurate audio/MIDI sync.
+ * Implemented engine thread adaptive sleep, syncing to MIDI clock.
+ * Added clock support to ALSA Seq and ALSA Raw MIDI drivers.
+ * Added clock support to ALSA PCM and JACK audio drivers.
+ * Added audio MIDI phase lock setting for fine tuning.
+ * Added commercial exception for licensing of timekeeping.[ch]
+ * GUI overhaul (work in progress).
+ * Separated and cleaned up Synth and GUI callbacks.
+ * Mostly separated GUI code from the rest (work in progress).
+ * Reworked use of GTK callbacks (now utilized in a sane manner).
+ * Replaced synth param spinbuttons with labels (speed increase).
+ * Fixed current param sensitivity system (redesign still needed).
+ * Fixed GUI param update issues.
+ * Fixed notebook page performance issues.
+ * Fixed tab navigation.
+ * Fixed button-box behavior.
+ * Added connect to ALSA PCM hardware to ALSA menu.
+ * Added connect from ALSA Seq and ALSA Raw MIDI devices to ALSA menu.
+ * Added connect from JACK MIDI ports in JACK menu.
+ * Added new widescreen layout.
+ * Added new rendered knob images and new phasex logo.
+ * Added knob size selection.
+ * Added preferences for most command line options.
+ * Fixed theme loading and interface restarts.
+ * Updated gtkknob to use cairo (old methods now depracated by GTK).
+ * Removed use of depracated GTK library calls.
+ * Fixed about_dialog license loading bugs.
+ * Added splash screen.
+ * Updated themes to work w/ nodoka and degrade gracefully w/o.
+ * Synth engine overhaul (work in progress)
+ * Added 24dB/octave Stilson/Smith style Moog filter.
+ * Added 3pole filter (work in progress).
+ * Added Hermite interpolation to oscillator wavetable lookups.
+ * Reworked envelope curves for reduction in artifacts.
+ * Added hard-latching oscillators to FM Mod selections.
+ * Added portamento to osc transpose controller changes.
+ * Added Voice AM to LFO-1.
+ * Added LFO-1 Rate mod amount to LFO-2.
+ * Added Cutoff mod to LFO-3.
+ * Added LFO-3 Rate mod amount to LFO-4.
+ * Improved velocity handling.
+ * Restored panning back to equal power curve.
+ * Added new waveforms (sampled and generated).
+ * Fixed negative envelope offset for filter.
+ * Implemented fast fade-out for mono retriggering.
+ * Fixed problem with partial portamento slides.
+ * Added denormal protection to all feedback loops (less CPU hungry).
+ * Implemented new patch file format and lighter patch parsing code.
+ * Added conversion script for old patches.
+ * Added new command line options for new features useability.
+ * Added PHASEX release checklist with git strategy.
+
+
+2009-10-12 William Weston <whw@linuxmail.org> - 0.12.0-rc1
+ * Rebuilt Makefile.am files (fixes uninstall and other issues).
+ * Cleaned up gcc version detection logic in configure.ac.
+ * Added --with-atom rpmbuild option in phasex.spec.in.
+ * Fixed bug where system theme setting gets dark theme.
+ * Added key events to rate entries for contrller consistency.
+ * Implemented nav ordering for keyboard (tab) navigation.
+ * Implemented focus handling and key events for detent labels.
+ * Re-worked config dialog with notebook and better layout.
+ * Added setting for small, medium, and large knob sizes.
+ * Added views for standard desktop sizes.
+ * Changed filter mode labels to use full names for basic types.
+ * Added clear patch functionality to patch menu.
+ * Implemented user override for default patch.
+ * Added setting for numeric fonts (in spinbutton, entry, detents).
+ * Moved param_idle_update to g_timer based param_periodic_update.
+ * Fixed patch modified indicator (broken when midi ch. was moved).
+ * Updated alignment/padding in themes and param layout.
+ * Removed unnecessary patch reload in gtkui_thread().
+ * Implemented persistent config dialog across gui restarts.
+ * Reordered code so that patch name updates first on prog change.
+ * Fixed timing of pitch bend smoothing (broken since beta4).
+ * Added event handling to midi channel detent label.
+ * Added setting for buffer periods (1-3).
+ * Removed backing store setting from prefs (still in cfg file).
+ * Added sensitivity changes for params disabled by other params.
+ * Fixed segfault triggered by saving renamed untitled patches.
+ * Fixed osc and lfo freq when switching back to tempo sources.
+
+
+2009-09-22 William Weston <whw@linuxmail.org> - 0.12.0-pre1
+ * Rebuilt configure.ac (now uses autoconf and automake properly).
+ * Added --enable-32bit and --enable-cpu-power= options to configure.
+ * Enabled gcc version checking for selecting optimization flags.
+ * Updated phasex.desktop file and removed extra copy in phasex root.
+ * Updated phasex.spec.in to work with new changes.
+ * Added GTK engine detection and separated engine def from themes.
+ * Adjusted themes and table layouts to allow one-page on 1024x768.
+ * Added missing extern to variable prototypes in param.h.
+ * Re-Added patch menu and added bank mem mode to it.
+ * Moved MIDI channel from general section to patch box.
+ * Moved patch->midi_channel to setting_midi_channel.
+ * Added MIDI channel to command line options.
+ * Fixed all GTK errors and warnings in file dialogs.
+ * Added amp velocity control (yes, it's finally here).
+ * Fixed smoothing algorithm for aftertouch sensitivity.
+ * Changed default rt priorities for midi and engine to 89 and 88.
+ * Added realtime sched policy setting (choice of SCHED_FIFO or SCHED_RR).
+ * Fixed long-time-lurking patch name corruption bug.
+ * Added hidden maximize setting (remember window state).
+ * Fixed all phasex_shutdown() related segfaults.
+ * Increased buffer periods from 1 to 2 (hardwired).
+ * Fixed ringbuffer read in process_buffer() !!!
+ * Added extra child logic to widget_set_custom_font().
+ * Added extra child logic to widget_set_backing_store().
+ * Fixed layout of controller update window and settings window.
+ * Added support for patch names and program numbers on command line.
+ * Included full text of GPLv2 in licensing screen.
+ * Removed more depracated code bits.
+ * Cleaned up comments/style/whitespace all over.
+
+
+2009-09-14 William Weston <whw@linuxmail.org> - 0.12.0-beta
+
+ * Fixed midimap load problem on startup.
+ * Added parameter locking.
+ * Updated per cpu-type compiler flags (fixes 64bit builds).
+ * Updated rpm spec (Fedora's changes for handling desktop file).
+ * Added memory locking to avoid page faults in rt.
+ * Changed mutexes for rt threads to PI mutexes.
+ * Added gtk theme support and initial phasex widget color theme.
+ * Fixed amp envelope curve.
+ * Reworked JACK connection code (watchdog loop instead of extra thread).
+ * Implemented global instance number tracking (used for ALSA and JACK).
+ * Changed ALSA client name to match JACK client name (with instance num).
+ * Added initial support for loading sampled oscillators.
+ * Fixed portamento calculations (nice and smooth again).
+ * Implemented portamento for poly keymode.
+ * Fixed problem with legato LFO retriggering in poly keymode.
+ * Added name, class, and role window manager hints.
+ * Added table rebuilds to handle on-the-fly tuning freq changes.
+ * Added sampled waveforms to the wave tables.
+ * Implemented hermite interpolation, now used in chorus.
+ * Renamed Chorus Phase Amount to Chorus Phase Balance.
+ * Retuned chorus delay, now based on the musical scale.
+ * Implemented decayed average smoothing for pitch bender.
+ * Cleaned up code and removed many deprecated code bits.
+ * Added PHASEX_CPU_POWER macro for cpu class tunings.
+ * Added handling of X_CFLAGS when running configure.
+ * Updated README, INSTALL, ROADMAP, and parameter help.
+ * Updated licensing, clarifying use of PHASEX, samples, and patches.
+ * Fixed bug with envelope recalculation while note is in play.
+ * Cleaned up many warnings for gcc-4.3.2.
+ * Changed patch bank size to 1024 and created PHASEX_BANK_SIZE macro.
+ * Removed gtk_widget_realize() calls from file select dialogs.
+ * Set page size for all GtkAdjustment objects to zero.
+ * Fixed file dialog hang problem (delete and re-add idle handler).
+ * Added pan, filter lfo resonance, osc fine tune, and fm fine params.
+ * Fixed font specification in theme gtkrc (default now "Sans 8").
+ * Added option to ignore MIDI when mapping knobs with sequencer running.
+ * Enabled setting of defaults for unreferenced params in patch loads.
+ * Added graceful handling of unknown params in patch loads.
+ * Added better folder/shortcut handling to patch file dialogs.
+ * Added patch directory list to use all dirs in patchbank as shortcuts.
+ * Optimized gtkknob expose events (moved math into adj handling).
+ * Added check for pthread_mutexattr_setprotocol() for older libpthread.
+ * Added --enable-arch=foo handling for more architectures.
+ * Changed max polyphony from a compile-time to a run-time setting.
+ * Fixed GtkKnob for GTK >= 2.16.
+ * Added user switchable themes and fonts.
+ * Added true fullscreen mode.
+ * Added velocity/aftertouch support for filter, oscs, and lfos.
+ * Fixed JACK and ALSA MIDI thread shutdown code.
+ * Added optimizations for Atom processors and k8 varieties w/ sse3.
+ * Reworked handling of compile-time optimization and debug flags.
+ * Implemented complete gtkui thread restart for GUI restarts.
+ * Fixed Load/Save button height expansion issue.
+ * Moved filter_q from part struct to engine stack.
+ * Reduced knob size to 32x28 in order to save space vertically.
+
+
+2007-08-13 William Weston <whw@linuxmail.org> - 0.11.1
+
+ * Applied Adam Sampson's patch fixing clobbered delay size and segfault.
+ * Added extra logic to sample rate handler to catch rate of 0 from JACK.
+ * Cleaned up whitespace and error reporting in jack.c.
+ * Fixed lack of resonance problem for LP+HP filter mode.
+ * Removed unused filter_key from voice structure.
+ * Added help documentation for preferences, command line, and filter modes.
+ * Added new patches to default patchbank.
+
+
+2007-08-07 William Weston <whw@linuxmail.org> - 0.11.0
+
+ * Added patch file overwrite checking.
+ * Changed current patch to a dynamic pointer.
+ * Separated table sizes for wavetable, env curves, and freq shifts.
+ * Decreased sizes of lookup tables for speed.
+ * Unified resolution for freq shifts, master tune, and filter.
+ * Updated patchbank to reference patches by filename.
+ * Changed combobox lists to detent knobs.
+ * Reworked lookup table generation for better accuracy.
+ * Modified envelope curve to prevent clicking and to sound more natural.
+ * Implemented on-the-fly switching for layout mode and thread priorities.
+ * Fixed bandlimiting and filter tuning by accounting for oversampling.
+ * Removed division from filter smoothing calculations.
+ * Reordered struct elements to be more compact with forced alignments.
+ * Added command line argument for changing base A4 tuning frequency.
+ * Implemented preloading of patches for patch bank.
+ * Added ability to load multiple patches into bank with a starting offset.
+ * Fixed bank memory mode behavior.
+ * Moved patch load/save dialog code from gtkui.c to bank.c.
+ * Removed JACK side blocking/waiting for audio ringbuffer.
+ * Added --enable-arch=foo handling for all x86 cpu types in gcc-4.1.2.
+ * Renumbered param definitions to start at 0 instead of 1.
+ * Reworked phasex.h for easier tweaking and fine-tuning.
+ * Removed most bits of dead code.
+ * Cleaned up style and whitespace in most files.
+ * Added GUI only (patchbank handling) parameters to the help system.
+ * Fixed an unitialized next pointer problem in open_alsa_midi_in().
+ * Changed knob middle-click centering from release to press response.
+ * Added scroll-wheel support in gtkknob.c.
+ * Added Pete Shorthose's patch to enable backing store for widgets.
+ * Added event boxes behind most widgets for faster expose.
+ * Added parameter locking capability.
+ * Added button press and scroll-wheel handling to detent labels.
+ * Fixed compile and layout issues for GTK versions < 2.6.
+ * Added scroll-wheel support for rate values.
+ * Cleaned up configure.ac for smoother builds.
+ * Added a using phasex section to the help system.
+ * Updated documentation in help system.
+ * Added tuning freq and backing store to settings.
+ * Modified widget packing and spacing slightly to use less space.
+ * Decreased max delay time from 8/1 to 1/1 to save memory.
+ * Updated system patches to work better with filter and env tweaks.
+
+
+2007-05-23 William Weston <whw@linuxmail.org> - 0.10.3
+
+ * Removed install of phasex.desktop from Makefile.am.
+ * Fixed shutdown when initiated by JACK.
+ * Re-implemented menubar using a GtkItemFactory.
+ * Fixed menu slowness by not using GTK stock items.
+ * Fixed file dialog slowness by prebuilding file dialogs.
+ * Fixed race condition in threads by exiting vs. being cancelled.
+
+
+2007-05-19 William Weston <whw@linuxmail.org> - 0.10.2
+
+ * Fixed typos and omissions in parameter help file.
+ * Improved error handling and reporting in jack.c.
+ * Fixed JACK thread shutdown.
+ * Fixed improper style handling in gtkknob.c (broke in older GTK versions).
+ * Fixed knob centering on middle click drag events.
+ * Added Peter Shorthose's patch for saving memory with a single knob anim.
+ * Cleaned up style and whitespace in gtkknob.c, added boilerplate.
+ * Added current midimap file to saved settings.
+ * Fixed build and runtime problems with GTK versions >= 2.4.x and < 2.8.x.
+ * Fixed invalid setting of patch modified flag on startup.
+ * Updated error message for unhandled ALSA MIDI errors.
+ * Fixed passing of debug flags in configure.ac.
+ * Fixed detection of functions in libm.
+ * Added install of phasex.desktop to Makefile.am.
+ * Fixed uninitiailized varibable warnings in midi.c.
+ * Fixed missed internal update on bool params first switching to zero.
+ * Removed dead update_widget_val() in callback.c.
+ * Disabled engine side of audio ringbuffer locking.
+ * Changed name of ALSA MIDI sequencer input port for readability.
+ * Added project roadmap.
+
+
+2007-05-03 William Weston <whw@linuxmail.org> - 0.10.1
+
+ * Fixed delay buffer size crash bug.
+ * Rebuilt config.h from configure.ac (fixes undefined PHASEX_DIR).
+ * Added engine thread cancellation point.
+ * Changed order of setting up JACK callbacks
+ * Moved main sample rate init code from samplerate callback to jack thread.
+ * Fixed oversampling mode.
+ * Fixed type on bank.c.
+ * Disabled debug output in help.c.
+ * Added --enable-debug option to configure.ac.
+ * Fixed volume of bassy-plucked-lead and zeroed input boost on all patches.
674 GPL-3.0.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
94 INSTALL
@@ -0,0 +1,94 @@
+PHASEX: [P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment
+
+
+MINIMUM REQUIREMENTS:
+-------------------------------------------------------------------------------
+
+Required:
+ gcc-4.x
+ gtk-2.4
+ alsa-0.9.0
+ jack-0.99.0
+ libsamplerate-0.1.2
+
+Optional:
+ lash-0.5.4
+ libuuid-1.6.4 (required for LASH)
+
+-------------------------------------------------------------------------------
+
+
+COMPILING AND INSTALLING PHASEX:
+-------------------------------------------------------------------------------
+
+PHASEX uses the autoconf/automake build system, so all that is needed
+is the usual:
+
+ cd phasex-0.14.94
+ ./configure (or ./configure --enable-arch=my-cpu)
+ make
+ make install
+
+Errors and warnings from autoconf/automake can normally be cleaned up
+by rebuilding all of the dynamically generated build files:
+
+ aclocal
+ autoconf
+ automake
+ autoheader
+
+The --enable-arch= flag will take any CPU type supported by your gcc
+version for its -march= and -mtune= optimization flags.
+
+Architechtures currently supported:
+
+ i386 i486 i586 pentium i686 pentium-mmx pentiumpro pentium2
+ k6 winchip-c6 pentium3 pentium3m c3-2 pentium-m pentium4
+ pentium4m k6-2 k6-3 winchip2 c3 geode athlon athlon-tbird
+ athlon-4 athlon-mp athlon-xp k8 opteron athlon64 athlon-fx
+ k8-sse3 opteron-sse3 athlon64-sse3 amdfam10 barcelona x86_64
+ prescott nocona core2 amd64 itanium itanium1 merced itanium2
+ mckinley ia64 ia32e atom generic native
+
+If building with gcc-4.2 or newer, you may use --enable-arch=native
+to optimize for your CPU.
+
+To alter the CPU utilization of phasex, use the --enable-cpu-power=
+flag. Options are: 1 (slow CPU), 2 (average CPU), 3 (fast CPU and
+32-bit sample_t), and 4 (fast CPU and 64-bit sample_t).
+
+The number of active synth threads (and thus the number of active
+synth parts) can be set with the --enable-parts= option. In general,
+enabling one part per CPU core will provide rock-solid xrun-free
+performance. Modern multi-core systems may perform the same with as
+many as two synth threads per CPU core enabled. YMMV.
+
+By default, 64-bit builds are enabled on 64-bit architectures. To
+force a 32-bit build on a 64-bit architecture (for a native 32-bit
+build or cross-compiling for a 32-bit architecture), use the
+--enable-32bit flag.
+
+Additionally, you may add --enable-debug="-gwhatever" to pass debug
+flags to the compiler. When debug is enabled, the optimization level
+is switched from -O3 to -O2, the -fomit-frame-pointer optimization is
+removed, and -Wall (for all compiler warnings) is turned on.
+
+To override or add extra compiler flags, set the CFLAGS environment
+variable when running configure.
+
+Examples:
+
+./configure --enable-arch=atom \
+ --enable-32bit \
+ --enable-cpu-power=1 \
+ --enable-parts=1
+
+./configure --enable-arch=native \
+ --enable-debug=-ggdb3 \
+ --enable-parts=4
+
+For custom builds, additional settings may be configured in
+src/phasex.h. For most builds, modifiying phasex should not be
+necessary.
+
+-------------------------------------------------------------------------------
64 LICENSE
@@ -0,0 +1,64 @@
+ PHASEX License Information
+------------------------------------------------------------------------
+
+All included PHASEX synth patches are created by William Weston
+<whw@linuxmail.org> and released into the public domain.
+
+PHASEX Waveform Logo (branding) Copyright (C) 2012 William Weston
+<whw@linuxmail.org>. All Rights Reserved. Permission is hereby
+granted to use this logo to represent PHASEX (in desktop menus,
+software repositories, websites indexing such repositories, etc.) as
+built from the author's source packages, a clone of the author's
+source code repository. While forking of the PHASEX code is of course
+permitted and encouraged by the GPL, the use of this Logo for branding
+of branches outside the author's tree is not permitted. For the
+purposes of packaging PHASEX to be included in software distributions
+(maintaining a local copy of the source code with patches necessary to
+a function in a specific distribution) and joining in the development
+effort (maintaining local branches of the source code for features
+and/or fixes that will eventually be merged upstream), this
+restriction need not apply. In other words, if you fork the code and
+release software from your own fork, please use a different logo for
+your branding. The intent is to improve brand recognition for all
+parties involved.
+
+Included knob images Copyright (C) 2012 William Weston
+<whw@linuxmail.org>. All Rights Reserved. Permission is hereby
+granted to use these images for distribution with other free and open
+source software projects (as defined by the Free Software Foundation),
+as long as this paragraph is maintained verbatim in the license.
+Inclusion of these images with commercial or otherwise non open source
+projects without explicit written consent of the author is not
+permitted.
+
+Source code and audio samples Copyright (C) 1999-2012 William Weston
+<whw@linuxmail.org>, with portions of the source code Copyright (C)
+2010 Anton Kormakov, Copyright (C) 2007 Peter Shorthose, Copyright (C)
+2004 Sean Bolton, and Copyright (C) 1999 Tony Garnock-Jones (see
+AUTHORS). PHASEX is released under the terms of the GNU General
+Public License version 3 (see GPL-3.0.txt), or any later version.
+
+The use of PHASEX to create new patches and compositions of sound out
+of its included patches and samples is considered fair use of free
+software, and these patches and compositions are not necessarily
+considered derivative works of PHASEX, and thus are not necessarily
+subject to the terms of the GNU General Public License.
+
+For the purposes of redistribution and direct modification, raw audio
+sample files are considered part of the PHASEX source code and are
+subject to the same terms of the GNU General Public License.
+
+PHASEX is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+PHASEX is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with PHASEX. If not, see <http://www.gnu.org/licenses/>.
+
+------------------------------------------------------------------------
54 Makefile.am
@@ -0,0 +1,54 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = src help pixmaps themes patches samples midimaps misc
+
+dist_doc_DATA = \
+ README \
+ LICENSE \
+ GPL-3.0.txt \
+ AUTHORS \
+ ChangeLog \
+ TODO \
+ doc/ROADMAP \
+ doc/signal-diagram.txt
+
+EXTRA_DIST = \
+ aclocal.m4 \
+ configure \
+ ltmain.sh \
+ phasex.spec
+
+
+#install-data-local:
+# @$(NORMAL_INSTALL)
+
+
+#uninstall-local:
+# @$(NORMAL_UNINSTALL)
+
+
+uninstall-hook:
+ test -d $(DESTDIR)$(pkgdatadir) && rmdir --ignore-fail-on-non-empty $(DESTDIR)$(pkgdatadir)
+ test -d $(DESTDIR)$(docdir) && rmdir $(DESTDIR)$(docdir)
+
+
+distclean-local:
+ rm -f *~
+ rm -rf autom4te.cache
+
+
+rpm: phasex-$(PACKAGE_VERSION).tar.gz phasex.spec
+ rpmbuild=$$(mktemp -d -t rpmbuild-phasex.XXXXXXX); src=$$(pwd); \
+ cp phasex-$(PACKAGE_VERSION).tar.gz "$$rpmbuild"; \
+ cp phasex.spec $$rpmbuild/phasex.spec; \
+ pushd "$$rpmbuild" && \
+ rpmbuild \
+ --define "_topdir $$PWD" \
+ --define "_sourcedir $$PWD" \
+ --define "_specdir $$PWD" \
+ --define "_srcrpmdir $$PWD" \
+ --define "_rpmdir $$PWD" \
+ -ba phasex.spec && \
+ popd; \
+ mv "$$rpmbuild"/$$(arch)/*.rpm . && mv "$$rpmbuild"/*.src.rpm . && \
+ rm -rf "$$rpmbuild" && ls -1 *.rpm
0 NEWS
No changes.
477 README
@@ -0,0 +1,477 @@
+
+PHASEX-0.14.94:
+
+-------------------------------------------------------------------------------
+[P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment
+-------------------------------------------------------------------------------
+
+Welcome to the new incarnation of PHASEX!
+
+PHASEX is an experimental MIDI softsynth for Linux/ALSA/JACK with a
+synth engine built around flexible phase modulation and flexible
+oscillator/LFO sources. Modulations include AM, FM, offset PM, and wave
+select. PHASEX comes equipped with multiple filter types and modes, a
+stereo crossover delay and chorus with phaser, ADSR envelopes for amplifier
+and filter, realtime audio input processing capabilities, and more.
+
+-------------------------------------------------------------------------------
+
+
+GOALS:
+-------------------------------------------------------------------------------
+
+* C Hacker Friendly. PHASEX is written entirely in C. No C++. No
+ assembly. From the very beginning, the program framework (now
+ a much larger application framework) has existed to support a synth
+ engine written in good ol' C. Now the application framework is well
+ on its way to serving as a basic platform for developing new
+ instruments written in... you guessed it... C.
+
+* Reliability. Whether playing music on stage, working in the studio,
+ or writing music on a laptop in a coffee shop, the instruments and
+ tools need to function properly and consistently in order to achieve
+ good results. Musicians need to be able to focus on the music, not
+ shortcomings of the toolset.
+
+* Compatibility, starting with full JACK and ALSA API support (and
+ eventually support for additional audio / MIDI libraries), allowing
+ PHASEX to be used in any pro audio workflow on a modern Linux
+ distribution. The standalone application design was partially
+ chosen for this reason -- not all sequencers and DAWs support all
+ instrument plugin formats. For this reason, PHASEX will most likely
+ see support for features such as ALSA channel mapping, JACK
+ Freewheel, JACK Session, and even Non Session Manager (NSM) before
+ seeing support for DSSI or LV2? Why? PHASEX already runs side by
+ side with Ardour, MusE, Rosegarden, Qtractor, Seq24, or any other
+ sequencer supporting JACK MIDI or the ALSA sequencer interface, no
+ matter what plugin APIs these sequencers do or do not happen to
+ support. In the future, adding support for plugin formats may be
+ deemed necessary for making PHASEX more useful in certain
+ situations. For now, the development effort will focus on
+ fine-tuning and extending the usage of the APIs already supported.
+
+* Stage friendly. Low MIDI latency and low timing jitter. Run with
+ or without the GUI. Ability to specify alternate config files
+ (just be sure you have a backup of your ~/.phasex/on-stage.cfg...).
+ With decent hardware running PHASEX and a recent -rt kernel with
+ proper permissions, priority tuning, hardware tuning (BIOS settings,
+ PCI latencies, etc.), and audio buffer tuning, MIDI-audio latencies
+ of under 10ms should be well within reach for audio hardware capable
+ of running with 128 sample buffer periods or better.
+
+* Studio friendly. Focus on workflow. The recent development work
+ has been aimed at making PHASEX easier to use and efficient to
+ manage (quick configuration, built in session management, MIDI
+ connections in the menus, etc.). Again, the focus should be on the
+ music, not on remembering how to make the instrument jump through a
+ bunch of hoops just to do it's job. PHASEX development will
+ continue in this direction with new session management features
+ starting with storing audio and MIDI connections, midimaps, and
+ configs with session saves, and optionally recalling these with
+ session loads.
+
+* Great sound. This one is of course, quite subjective, but it still
+ comes down to the same juggling act on the programming end: Choosing
+ the "right" algorithms, making resource usage vs. sound quality
+ decisions, calculation speed vs. accuracy decisions, and of course,
+ decisions about how much programming time is spent on what features
+ (hmmm... is it worth the time to do the math and write and debug the
+ code for nifty-feature-x, or is time better spent fixing
+ broken-feature-y?). At this point, a lot of these decisions have
+ been made and the synth engine as a whole is very stable, but these
+ things are not necessarily set in stone. There is always room for
+ improvement by researching new ways of doing the math and learning
+ new DSP tricks for solving some of the flaws inherent in the current
+ methods. So, how does it sound? Decide for yourself.
+
+
+FEATURES:
+-------------------------------------------------------------------------------
+
+* GTK Interface:
+
+ PHASEX has a GUI, complete with knobs and buttons for all 150+
+ patch parameters and switchable color themes. True fullscreen
+ mode, notebook, one-page, and widescreen layouts, and select-able
+ fonts and knob sizes allow PHASEX to fit into any amount of screen
+ real-estate (now able to squeeze into sizes smaller than 800x600,
+ or more comfortably sit in a 1920x1080 desktop).
+
+* Polyphonic:
+
+ PHASEX is polyphonic. In poly mode, voices are allocated
+ dynamically up to the runtime configurable voice limit.
+ 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.
+
+* Multitimbral:
+
+ Many parts of PHASEX were re-architected during the v0.14.x
+ development phase. This release is now fully multitimbral, with
+ each part running in its own thread. The number of parts (and
+ thus engine threads) is determined at compile time, and has been
+ tested rigorously with 8 voices on a quad-core q6600. Part
+ switching in the GUI is clean and efficient. Session handling
+ support takes the fuss out of keeping track of session patches.
+
+* ALSA Audio:
+
+ PHASEX supports native ALSA for flawless xrun free audio playback.
+ Sample rate and buffer size are easily configurable to achieve the
+ lowest possible latencies for your system.
+
+* JACK Audio:
+
+ PHASEX has supported JACK audio from the beginning of the public
+ releases. Any sample rate or buffer size used by jackd can be
+ utilized. Both single-stereo-pair and multi-stereo-pair routings
+ are supported. Basic Transport is supported, but as of this time,
+ the tempo and LFO sync are largely untested and still need some
+ fine-tuning.
+
+* ALSA MIDI:
+
+ The ALSA sequencer interface has been with PHASEX since its first
+ public release. As of v0.14.x, the ALSA raw MIDI interface is
+ also supported, offering lower timing jitter when controlling
+ PHASEX via hardware MIDI.
+
+* JACK MIDI:
+
+ JACK MIDI provides 100% sample-accurate timing by design. PHASEX
+ has embraced this design, and the new underlying MIDI system is
+ the result.
+
+* Generic MIDI:
+
+ Generic MIDI (/dev/midi) support is provided for communicating
+ with MIDI devices or drivers that use a standard POSIX interface
+ supporting open/close/poll/read/fcntl on a named pipe, socket, or
+ device file. The generic MIDI support has only been tested with
+ ALSA's /dev/midi* and /dev/snd/midiC?D? device files (which are
+ accessed through the POSIX interface, not the alsa-lib API), but
+ should perform the same with any MIDI device interface as long as
+ additional system and library calls are not needed. Currently,
+ compatibility with serial to MIDI converters is unknown, so please
+ send feedback (positive or negative) if you attempt to use a
+ serial to MIDI converter.
+
+* MIDI Control:
+
+ All parameters are quickly mappable and ready for full realtime
+ control. Parameter names are right clickable for quick and easy
+ MIDI controller assignments. Each MIDI controller can be mapped
+ to up to 15 parameters. Velocity sensitivity and key aftertouch
+ can modulate the amp and the filter, or used as raw oscillators of
+ LFOs. MIDI maps may be saved and later restored to facilitate
+ switching between different working environments.
+
+* Realtime MIDI Clock:
+
+ Addresses the issue of how to accurately synchronize MIDI events
+ with individual frame positions within a buffer period instead of
+ quantizing the timing to whatever the audio buffer period happens
+ to be. Typical audio hardware supports stable realtime operation
+ at anywhere from 2-20 milliseconds latency. With no additional
+ synchronization, this audio latency becomes a self-imposed
+ quantization factor on event timing, adding MIDI timing jitter
+ roughly equal to the duration of one audio buffer processing
+ period, hence the need for a MIDI clock:
+
+ A timerless, tickless audio / MIDI timing synchronization system.
+ The clock latches onto the audio buffer processing periods and
+ generates a high-precision MIDI clock reference, with much less
+ jitter than timing based on when the audio processing cycle
+ actually wakes up (which can really be anywhere within the
+ period). This clock is agnostic to the specific audio and MIDI
+ drivers being used and requires no timer interrupts. In essence,
+ the timing accuracy achieved is only dependent on the MIDI
+ hardware/software and realtime scheduling latencies of the system.
+ With decent professional MIDI and audio hardware, sub-millisecond
+ timing accuracy is available with total MIDI event latency under
+ 10ms, accurate and responsive enough for most professional sound
+ sound engineers and musicians.
+
+* Multithreaded:
+
+ PHASEX uses separate threads with realtime scheduling for audio
+ 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 (including sampled
+ and generated waveforms), bipolar or unipolar output, frequency
+ source selection (midi note, tempo based, tempo based w/ phase
+ trigger, audio input, or velocity/aftertouch), mix modulation
+ supporting standard or AM mixing, per-osc transpose and
+ pitchbender amounts, and select-able 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 with the
+ following exceptions: They are per-part instead of per-voice,
+ they do not accept other modulation sources (yet), they are not
+ transposed by the master transpose parameter, and when sourced to
+ velocity, aftertouch data is ignored. New routing capabilities
+ have been added with the Voice AM, LFO-1 Rate, Cutoff, and LFO-3
+ Rate per-LFO dedicated function parameters.
+
+* 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 logarithmic
+ curve. The filter envelope is linear with respect to the musical
+ scale. Both envelopes can also be used as oscillator and LFO
+ sources.
+
+* Filter:
+
+ The first filter style is a Chamberlin filter (2-pole 12db/octave)
+ hacked up so it doesn't destabilize 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.
+
+ As of v0.14.x, a 4-pole 24db/octave Stilson/Smith style Moog
+ filter has been added. In PHASEX style, both a distorted and a
+ clean version are available.
+
+ The 3-pole filter is experimental, and might not be included in
+ future versions. Future plans include fixing the frequency
+ calculation and turning this into a proper 303 style filter.
+
+* Chorus:
+
+ The PHASEX stereo crossover chorus (inspired by the chorus on the
+ old Akai S-series samplers) adds depth and that extra bit of
+ stereo separation for an even wider stereo field.
+
+* Delay:
+
+ The delay sports the normal mix and feedback controls, along with
+ a channel crossover option. A dedicated 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 select-able 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 audio 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. Very useful for getting patches to
+ sit in the mix properly.
+
+* Velocity Sensitivity:
+
+ Velocity of Note-On events can modify the filter or amplifier, and
+ can also be routed through the LFOs.
+
+-------------------------------------------------------------------------------
+
+
+REQUIREMENTS:
+-------------------------------------------------------------------------------
+
+Required:
+ * ALSA >= 1.0.18
+ * JACK (JACK or JACK2/jackdmp should work).
+ * libsamplerate
+ * GTK-2 (version 2.8 or later recommended).
+ * Realtime Linux Kernel (latest 3.0.x-rt or newer recommended).
+ * 1.6 GHz or faster CPU (multiple core, 64-bit preferred).
+
+Optional:
+ * LASH >= 0.5.4.
+ * libuuid (required by LASH).
+
+
+-------------------------------------------------------------------------------
+
+
+COMPILING AND INSTALLING PHASEX:
+-------------------------------------------------------------------------------
+
+For most installations, all that should be needed is the following:
+
+ cd phasex-0.14.94
+ ./configure --enable-arch=native
+ make
+ make install
+
+Other useful configure flags are --enable-debug=, --enable-32bit,
+--enable-cpu-power=, and enable-parts=.
+
+See INSTALL for full compilation and installation instructions.
+
+-------------------------------------------------------------------------------
+
+
+RUNNING PHASEX:
+-------------------------------------------------------------------------------
+
+Usage: phasex [options] [<patch>[,<patch>[,<patch>[,...]]]]
+
+ -c, --config-file= Alternate config (takes precedence over default
+ config file and command line options.
+ -A, --audio-driver= Audio driver: alsa or jack.
+ -a, --audio-device= ALSA device name (hw:x,y format).
+ -r, --sample-rate= Audio sample rate (ALSA only).
+ -p, --latency-periods= Number of buffer latency periods (ALSA only).
+ -s, --period-size= Buffer period size (power of 2, ALSA only).
+ -M, --midi-driver= MIDI driver: jack, alsa-seq, alsa-raw, generic.
+ -m, --midi-port= MIDI input port or device name (driver specific).
+ -f, --fullscreen Start GUI in fullscreen mode.
+ -x, --maximize Start GUI with main window maximized.
+ -b, --bpm= Override BPM in patch bank and lock BPM parameter.
+ -t, --tuning= Base tuning frequency for A4 (default 440 Hz).
+ -i, --input= Comma separated pair of audio input matches.
+ -o, --output= Comma separated pair of audio output matches.
+ -O, --oversample Use double the sample rate for internal math.
+ -U, --undersample Use half the sample rate for internal math.
+ -G, --no-gui Run PHASEX without starting the GUI.
+ -d, --debug= Debug class (Can be repeated. See debug.c).
+ -l, --list Scan and list audio and MIDI devices.
+ -v, --version Display version and exit.
+ -h, --help Display this help message and probe ALSA hardware.
+
+LASH Options:
+ -P, --lash-project= LASH project name.
+ -S, --lash-server= LASH server address.
+ -I, --lash-id= LASH client ID.
+ -L, --disable-lash Disable LASH completely for the current session.
+
+Please note that unless an alternate config file is used, all command
+line options take precedence over settings saved in the config file.
+
+If using phasex with JACK, make sure jackd is running (and configured
+for your system) before running phasex. If jackd is not running,
+PHASEX will fall back to using the ALSA drivers. If you use software
+like qjackctl to handle your audio and MIDI patchbay, then the command
+line port connection options aren't necessary. The -i and -o options
+accept comma separated substring pairs to match on JACK audio port
+names. The -m option takes a comma separated list of MIDI ports (X:Y
+for ALSA Seq, hw:X,Y for ALSA Raw, or device file for generic raw
+MIDI). For example:
+
+ phasex -A jack -i _1,_2 -o _1,_2 -M alsa-seq -m 16:0,20:0
+
+will match JACK ports alsa_pcm:capture_1 and alsa_pcm:capture_2 for
+input, alsa_pcm:playback_1 and alsa_pcm:playback_2 for output, and the
+first two ALSA sequencer hardware MIDI input ports with relatively
+recent versions of JACK and ALSA. (Jack2/jackdmp uses 'system'
+instead of 'alsa_pcm'. ALSA port designations vary from system to
+system.)
+
+To view a full technical description of any parameter, simply
+middle-click on the parameter label. Similarly, a right-click on any
+parameter label allows on-the-fly mapping of any MIDI controller to
+any parameter (up to 15 parameters may be mapped to a single MIDI
+controller). All remaining features are directly visible and
+accessible through the GUI and its (very short) menus.
+
+Patch bank storage works like it does on just about any modern
+hardware synth, with one exception: Patches themselves are stored by
+name in the filesystem, which are then mapped by program number in the
+patch bank. The individual program slots in the patch bank simply
+reference the stored patches by name. In Autosave mode, a patch is
+automatically saved before a new patch is loaded during a program