diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 041d994f8f..0000000000
--- a/Gemfile
+++ /dev/null
@@ -1,16 +0,0 @@
-source "https://rubygems.org"
-
-gem "jekyll", "~> 4.3"
-gem "minima", "~> 2.5"
-gem "jekyll-remote-theme", "~> 0.4"
-gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
-gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
-
-group :jekyll_plugins do
- gem "jekyll-feed", "~> 0.17"
-end
-
-platforms :mingw, :x64_mingw, :mswin, :jruby do
- gem "tzinfo", "~> 2.0"
- gem "tzinfo-data"
-end
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..f288702d2f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ 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.
+
+
+ Copyright (C)
+
+ 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 .
+
+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:
+
+ Copyright (C)
+ 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
+.
+
+ 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
+.
diff --git a/README.md b/README.md
index a40dd04655..0047b40e7a 100644
--- a/README.md
+++ b/README.md
@@ -1,52 +1,95 @@
-# surge-synthesizer.github.io
+# surge-synth-team.org
-## Working with the website
+### The website is built with [Astro](https://astro.build/) & [Tailwind CSS](https://tailwindcss.com/).
-For this site we are using a **Jekyll theme** named **Swiss**, which can be found [here.](https://github.com/broccolini/swiss) You can download **Jekyll** from [here.](https://jekyllrb.com/)
+### [Astro Editor Setup](https://docs.astro.build/en/editor-setup/) & [Tailwind Editor Setup](https://tailwindcss.com/docs/editor-setup)
-In order to make changes to the site you will need to follow standard operating procedures for working with GitHub pages and Jekyll sites that use themes. You will have to override styles with more specific CSS. You can also add more pages as HTML or `.md`, use front matter, etc.
+---
-Jekyll has a specific folder structure to generate sites from. It uses `.scss` files, layouts, etc. There is a bunch of stuff about using Jekyll and GitHub pages online. Since this was all entirely new to me, I won't attempt an in depth tutorial on all the moving pieces.
+#### **Install these VS Code Extensions**
-At a high level, what I did to make changes was create my own `_surge.scss` file, include that in the theme that we are using, and make changes to the `home.html` file. If you would like to make changes to styles, I would recommend making them in the `_surge.scss` file only.
+- [Astro](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)
+- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
+- [MDX](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx)
+- [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)
-# Use GitHub as CMS
+Optional:
-You can follow a couple of different paths to make updates to the website. The easiest and most direct way is to use GitHub as a CMS.
+- [YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)
-To make changes this way, all you need to do is fork the project, create a branch, make changes locally, and then open a PR. [This "How to Git"](https://github.com/surge-synthesizer/surge/blob/main/doc/How%20to%20Git.md) document from the [Surge-Synthesizer](https://github.com/surge-synthesizer/surge) project outlines a suggested way of creating PRs.
+In your VS Code `settings.json` file:
-Another option, using your new branch, is to click the edit button at the "pencil" button at the upper right corner of the GitHub editor, which should be available on all text documents, including HTML and CSS files.
+#### Set Prettier as your default formatter
-## Using the command line and Jekyll, Bundler, and optionally Docker to get a more modern front end development experience.
+```json
+{
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "[astro]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[yaml]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "prettier.documentSelectors": ["**/*.astro"]
+}
+```
-Being comfortable using a command line and understanding how to get everything installed with the correct file permissions will be key. On a Mac, this meant I installed an updated version of Ruby in a different location that was in `$PATH`, and had correct read/write permissions. To accomplish this goal, I used `rbenv` and `bundler` to get Ruby, and `bundler` to install Jekyll.
+#### Format on paste, save & type
-Following this Mac specific tutorial is a pretty good way to set up Ruby and to get gems installed without beating your head against a wall; caveat emptor applies though: [Moncef Belyamani - Fastest and Easiest Way To Install Ruby on a Mac](https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/?utm_source=stackoverflow&utm_campaign=51126403#step-2-install-chruby-and-the-latest-ruby-with-ruby-install)
+```json
+{
+ "editor.formatOnPaste": true,
+ "editor.formatOnSave": true,
+ "editor.formatOnType": true
+}
+```
-By the time you have Ruby installed on macOS successfully, you can run the commands below:
+#### Associate CSS files with tailwind
+```json
+{
+ "files.associations": {
+ "*.css": "tailwindcss"
+ }
+}
```
-$ gem install jekyll
-$ gem install bundle
-$ git clone https://github.com/surge-synthesizer/surge-synthesizer.github.io.git
-$ cd surge-synthesizer.github.io
-$ bundle install
-$ bundle exec jekyll server
-```
-After you successfully get through the above, the live version of the site will be running at `localhost`. From this point, you can open a text editor and make changes to files. Upon saving the files and refreshing the browser, you will see the changes appear.
+# Working on the site
+
+- Install [node.js](https://nodejs.org/en)
+ - (Optional) Install [pnpm](https://pnpm.io/)
+- Run `npm install` or `pnpm install` depending on your choice of package manager
+- Run `npm run dev` or `pnpm dev` to run the development server @ http://localhost:3000/
+- Run `npm run build` or `pnpm build` to build the site to the `dist` directory
+- Run `npm run preview` or `pnpm preview` to preview the built site
+
+Static assets (images, fonts, etc.) live in the `public` directory.
+
+You can use tailwind inline or edit the main file in the `src/css` directory.
+
+# Adding and editing pages
+
+To make changes, all you need to is fork the project. Once you have done that you can create a branch on your fork make changes and then open a PR. [This](https://github.com/surge-synthesizer/surge/blob/main/doc/How%20to%20Git.md) git document for the OSS Surge-Synthesizer project outlines a suggested way of doing work and then creating PRs.
-## Docker
+Once you have created a branch in your fork you can then just click the edit button (upper right corner) to edit a post in the `src/content/pages` folder. Because the posts are markdown documents you can just edit stuff in place in the GitHub editor.
-You can use Docker to help with all of this stuff. That requires for you to have a Docker account. It will also provide a live version of your site at `localhost`. Super useful if you are changing files often.
+To add a page, open the `src/content/pages` folder in your fork and click the create new file button.
-If you have Docker installed, you should be able to run the project by switching to the root dir and running:
+A post has a frontmatter section and a body section. The frontmatter section is metadata about the post, such as which image to use and what categories it belongs to. A new post would have frontmatter that looks something like:
```
-$ rm Gemfile.lock ; docker run --rm -it -v "$(pwd)":/usr/src/app -p 4000:4000 starefossen/github-pages ; git checkout Gemfile.lock
+---
+slug: surge-xt
+title: Surge XT
+summary: Surge XT is an open source hybrid synthesizer, and the synth which started the Surge Synth Team project!
+order: 1
+thumbnail: /screenshots/surge-xt.png
+categories: [Synth]
+url: https://surge-synthesizer.github.io
+issue_tracker: https://github.com/surge-synthesizer/surge/issues
+---
```
-# The Skin Library
+The title is the display name for the post, the summary is the text in the card on the main page, the thumbnail is an image for the project, and the categories are a comma-separated list of any appropriate categories (look at the other projects for categories that already exist). The order determines which position a post appears in on the main page.
-The Skin library is part of this repository, but its assets now live in the [surge-extra-content](https://github.com/surge-synthesizer/surge-extra-content) repository. Correct procedure for additions is to upload the assets to that location, and link them into the Skin Library from there. Compare to the markdown of previous entries for reference.
+The body section of a post is where you can write a description of the project in markdown. It is everything after the frontmatter section.
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 174fdac924..0000000000
--- a/_config.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Welcome to Jekyll!
-#
-# This config file is meant for settings that affect your whole blog, values
-# which you are expected to set up once and rarely edit after that. If you find
-# yourself editing this file very often, consider using Jekyll's data files
-# feature for the data you need to update frequently.
-#
-# For technical reasons, this file is *NOT* reloaded automatically when you use
-# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
-#
-# If you need help with YAML syntax, here are some quick references for you:
-# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
-# https://learnxinyminutes.com/docs/yaml/
-#
-# Site settings
-# These are used to personalize your new site. If you look in the HTML files,
-# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
-# You can create any custom variable you would like, and they will be accessible
-# in the templates via {{ site.myvariable }}.
-
-title: Surge
-description: >- # this means to ignore newlines until "baseurl:"
- Surge is an open source digital synthesizer.
-baseurl: "" # the subpath of your site, e.g. /blog
-url: "https://surge-synthesizer.github.io" # the base hostname & protocol for your site, e.g. http://example.com
-
-github_username: "surge-synthesizer"
-github_repo: "surge"
-
-# Build settings
-markdown: kramdown
-theme: minima
-plugins:
- - jekyll-feed
- - jekyll-remote-theme
-
-remote_theme: broccolini/swiss
-
-# Exclude from processing.
-# The following items will not be processed, by default.
-# Any item listed under the `exclude:` key here will be automatically added to
-# the internal "default list".
-#
-# Excluded items can be processed by explicitly listing the directories or
-# their entries' file path in the `include:` list.
-#
-# exclude:
-# - .sass-cache/
-# - .jekyll-cache/
-# - gemfiles/
-# - Gemfile
-# - Gemfile.lock
-# - node_modules/
-# - vendor/bundle/
-# - vendor/cache/
-# - vendor/gems/
-# - vendor/ruby/
-
-webrick:
- headers:
- Access-Control-Allow-Origin: "*"
diff --git a/_data/surge_navItems.yaml b/_data/surge_navItems.yaml
deleted file mode 100644
index 92af3b9f10..0000000000
--- a/_data/surge_navItems.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-docs_list_title: Pages
-docs:
-
-- title: Home
- url: /
-
-- title: Changelog
- url: /changelog
-
-- title: Manual
- url: /manual-xt
-
-- title: Tuning Guide
- url: /tuning-guide
-
-- title: Feedback
- url: /feedback
-
-- title: Skin Library
- url: /skin-library
-
-- title: Accessibility Notes
- url: /accessibility
-
-- title: Virus Warnings on Windows
- url: /viruses
-
-- title: Wiki
- url: https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki
-
-- title: About Surge XT
- url: /about
-
-- title: Surge XT for VCV Rack
- url: https://surge-synth-team.org/surge-rack/
diff --git a/_includes/README.md b/_includes/README.md
deleted file mode 100644
index 0d5fd0486f..0000000000
--- a/_includes/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# [Click here for the Surge synthesizer binaries](https://github.com/surge-synthesizer/releases/releases)
-
diff --git a/_includes/brew.html b/_includes/brew.html
deleted file mode 100644
index 0ebf50bcb5..0000000000
--- a/_includes/brew.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
Community is a
- big thing to us on this project. We want an inclusive, positive, and happy
- community with contributions from a large set of differing viewpoints and backgrounds.
Let's
- be kind to each other and treat each other with respect. It takes all of us working together to make the
- community great.
We are looking forward to your insights and contributions.
-
- Surge XT is supported by a community of volunteer open source developers, designers, testers, musicians,
- synthesizer enthusiasts, and content creators.
Without them, none of would have been possible. If
- you're interested in seeing what's going on with the project, the best thing to do is:
-
Surge XT is a digital synth and makes no bones about it.
-
- If you have used it in the past, it will be like welcoming an old friend back into your life. If you are
- new to Surge XT, welcome to the party. Come on in, the water is fine.
-
Two filter units in 8 different configurations,
- with feedback loop available in 7 of them.
-
- Available filter algorithms: Lowpass (12 and 24 dB/oct, each with 3 variations), Legacy Ladder Lowpass
- (6-24 dB/oct), Vintage Ladder Lowpass (2 variations, each with and without gain compensation), Highpass
- (12 and 24 dB/oct, each with 3 variations), Bandpass (12 and 24 dB/oct, each with 3 variations), Notch
- (12 and 24 dB/oct, each with 2 variations), Allpass (3 variations), Comb (positive and negative),
- S&H.
-
-
- Open-source additions to our filter algorithms include: K35 and Diode Ladder filter types from Odin 2
- synthesizer, 12 and 24 dB/oct multimode filters from OB-Xd, and weird but fascinating Cutoff Warp,
- Resonance Warp and Tri-Pole filters by Jatin Chowdhury!
-
-
- Filters can self-oscillate (with excitation) and respond amazingly fast to cutoff frequency changes.
-
- Each patch contains two scenes which are separate instances of the entire synthesis engine (except
- effects) that can be used to create layered or split patches.
-
-
Quick category-based patch browser with textual search and favorites
-
Runs on a variety of operating systems, plugin formats, and architectures
A sound designer's dream.A friendly, open community.
-
Featuring many synthesis techniques, a great selection of filters, a flexible modulation engine, a smorgasbord of effects, and modern features like MPE and microtuning.
-
Surge XT is a wonderful tool. We love it. We think you will, too!
- 12 LFO units available, 6 are per voice and 6 are global for the whole scene.
-
-
DAHDSR envelope generators on every LFO.
-
- LFO shapes consist of 7 deformable LFO waveforms, step sequencer, a fully-fledged multi-segment
- envelope generator (MSEG) with various curves and up to 128 nodes, and last but not the least -
- a formula modulator which utilizes Lua scripting language to provide completely custom modulator output.
-
-
Voice LFOs allow envelope retriggering in step sequencer mode.
-
- Extremely fast and flexible modulation routing. Almost every continuous parameter can be modulated!
-
3 oscillators per scene, with 12 versatile oscillator algorithms:
- Classic, Modern, Wavetable, Window, Sine, FM2, FM3, String, Twist, Alias, S&H Noise and Audio Input.
-
-
- Classic oscillator is a morphable pulse/saw/dual saw oscillator with a sub-oscillator and hard sync.
-
-
- Modern oscillator is a mixable saw/pulse/triangle oscillator with an optional sub-oscillator mode for
- triangle (which can also change to sine or square) and hard sync.
-
-
- FM2/FM3 oscillators consist of a carrier and 2 or 3 modulators and various options.
-
-
- String oscillator uses two filtered waveguides to emulate plucked or bowed string sounds.
-
-
- Twist oscillator is based on a very famous Eurorack macro oscillator, and it offers a myriad of
- synthesis options in a very simple and quick way.
-
-
- Most algorithms (except FM2, FM3, Twist and Audio Input) offer up to 16-voice unison at the oscillator
- level.
-
-
- Oscillator FM in 3 different configurations and ring modulation between oscillators 1-2 and 2-3.
-
-
- Most oscillator algorithms (except FM2, FM3, Sine and Alias) are strictly band-limited, yet still cover
- the entire audible spectrum, delivering a clear, punchy and clean sound.
-
-
- Noise generator with variable spectrum (available directly in the oscillator mixer).
-
- We think it's pretty cool that you picked Surge for the One Synth Challenge. And then did it again a few more times!
-
-
-
- Surge was in the spotlight of OSC #122, #138 and most recently, #159.
- A talented group of musicians created all these tracks using Surge as the only sound generating device.
- Or - in some exceptional cases - only Surge Effects plugin was used, much to our awe and amazement!
-
-
-
- Do give these tracks a listen, as we think they are a brilliant showcase of flexibility and amazing range of sounds that Surge offers!
-
- Minimum: Windows 7 and Intel or AMD processor featuring SSE2 instructions
-
-
- Recommended: 64-bit Windows 7 or newer, 3 GHz quad-core processor featuring SSE2 instructions or better
-
-
Minimum of 4 GB of RAM
-
VST3 or CLAP compatible host application
-
- x64-compatible CPU, OS and host is required to use the 64-bit version
-
-
-
-
-
-
macOS
-
-
- Surge XT is an Intel/Apple Silicon universal binary. Intel Mac requires macOS 10.11 or later, Apple
- Silicon Mac will run Surge XT with any Apple Silicon version of macOS
-
-
Minimum of 4 GB of RAM
-
VST3, AU or CLAP compatible host application
-
-
-
-
-
Linux
-
-
PC or ARM system running a Linux distribution
-
- x64-compatible CPU, OS and host is required to use the 64-bit version; for ARM processors you
- can build Surge XT for ARM on Raspberry Pi and similar (tested with RPi4/arm64)
-
- Thanks to the generosity of
- @Kurasu (owner of Vember Audio),
- Surge has been open sourced and lives on GitHub. This page you're reading right now. Yup! This one right
- here. It's a part of the surge-synthesizer GitHub project.
-
-
-
diff --git a/_includes/toc.html b/_includes/toc.html
deleted file mode 100644
index 3cff42f116..0000000000
--- a/_includes/toc.html
+++ /dev/null
@@ -1,182 +0,0 @@
-{% capture tocWorkspace %}
- {% comment %}
- Copyright (c) 2017 Vladimir "allejo" Jimenez
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- {% endcomment %}
- {% comment %}
- Version 1.2.0
- https://github.com/allejo/jekyll-toc
-
- "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
-
- Usage:
- {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
-
- Parameters:
- * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
-
- Optional Parameters:
- * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
- * class (string) : '' - a CSS class assigned to the TOC
- * id (string) : '' - an ID to assigned to the TOC
- * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
- * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
- * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
- * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
- * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
- * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
- * anchor_class (string) : '' - add custom class(es) for each anchor element
- * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
-
- Output:
- An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
- generate the table of contents and will NOT output the markdown given to it
- {% endcomment %}
-
- {% capture newline %}
- {% endcapture %}
- {% assign newline = newline | rstrip %}
-
- {% capture deprecation_warnings %}{% endcapture %}
-
- {% if include.baseurl %}
- {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %}
- {% endif %}
-
- {% if include.skipNoIDs %}
- {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %}
- {% endif %}
-
- {% capture jekyll_toc %}{% endcapture %}
- {% assign orderedList = include.ordered | default: false %}
- {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
- {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
- {% assign minHeader = include.h_min | default: 1 %}
- {% assign maxHeader = include.h_max | default: 6 %}
- {% assign nodes = include.html | strip | split: ' maxHeader %}
- {% continue %}
- {% endif %}
-
- {% assign _workspace = node | split: '' | first }}>{% endcapture %}
- {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
-
- {% if include.item_class and include.item_class != blank %}
- {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
- {% endif %}
-
- {% if include.submenu_class and include.submenu_class != blank %}
- {% assign subMenuLevel = currLevel | minus: 1 %}
- {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
- {% endif %}
-
- {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
-
- {% if htmlID %}
- {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
-
- {% if include.anchor_class %}
- {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
- {% endif %}
-
- {% capture listItem %}{{ anchorBody }}{% endcapture %}
- {% elsif skipNoIDs == true %}
- {% continue %}
- {% else %}
- {% capture listItem %}{{ anchorBody }}{% endcapture %}
- {% endif %}
-
- {% if currLevel > lastLevel %}
- {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
- {% elsif currLevel < lastLevel %}
- {% assign repeatCount = lastLevel | minus: currLevel %}
-
- {% for i in (1..repeatCount) %}
- {% capture jekyll_toc %}{{ jekyll_toc }}{{ listModifier }}>{% endcapture %}
- {% endfor %}
-
- {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %}
- {% else %}
- {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %}
- {% endif %}
-
- {% capture jekyll_toc %}{{ jekyll_toc }}
-
-Surge 1.9 is a major feature expansion over January's Surge 1.8 release, including 4 new oscillator types, 15 new effects, a large number of microtuning
-enhancements (including support for [ODDSound MTS-ESP](https://oddsound.com/)), substantial new content including a set of patches tailor-made
-for our new oscillators by Jacky Ligon, and much, much more. In more detail:
-
-
-* New Oscillators
- * Modern, a low aliasing, clean waveshape oscillator based on extensive research into low aliasing waveform generation methods ([DPW](https://www.researchgate.net/publication/224557976_Alias-Suppressed_Oscillators_Based_on_Differentiated_Polynomial_Waveforms) in this case)
- * Alias, a very, very digital oscillator based on ignoring extensive research into low aliasing waveform generation methods, which as a result gives lots of 8-bit joy
- * String, a waveguide-based feedback oscillator, perfect for creating all sorts of stringy, plucky, and plonky sounds
- * Twist, an oscillator based on a [rather famous Eurorack multi-oscillator module](https://mutable-instruments.net/modules/plaits/)
-
-* New Effects
- * Neuron, a distortion effect based on [Gated Reccurent Unit](https://ccrma.stanford.edu/~jatin/ComplexNonlinearities/gru.html), done by Jatin Chowdhury
- * CHOW, a [truculent distortion effect](https://github.com/Chowdhury-DSP/CHOW), done by Jatin Chowdhury
- * Exciter, an effect based on a [rather famous aural exciter](https://github.com/jatinchowdhury18/Aphex_Exciter) unit, done by Jatin Chowdhury
- * Tape, a compact implementation of [Chow Tape Model](https://github.com/jatinchowdhury18/AnalogTapeModel), done by Jatin Chowdhury
- * 11-band graphical EQ
- * Resonator, inspired by a resonator unit from a very well-known vintage hybrid polyphonic synthesizer that rhymes with "vogue". Contains a few Surge-inspired additions like optionally allowing self-oscillation of resonators through modulation!
- * Combulator, a novel bank of 3 comb filters with feedback, additional noise exciter, separate output volumes for each comb, and individual panning for two out of three combs
- * Ensemble effect with several BBD modes and a clean delay mode, uses a very famous tri-phase dual LFO modulation setup
- * Nimbus, a live input granular processor with built-in reverb, based on [another rather famous Eurorack module](https://mutable-instruments.net/modules/clouds/)
- * Treemonster, a really wild pitch-tracking ring modulator from Shortcircuit 2, proper Vember Audio classic!
- * Five new Airwindows effects - Galactic, Infinity, Verbity, MatrixVerb and TripleSpread
- * All these effects are also added to SurgeEffectsBank
-
-* Other DSP changes
- * A large number of C++ and SSE improvements in the Sine oscillator, substantially improving performance
- * Oscillator drift now works properly for all oscillator types
- * Oscillator drift now starts at small non-zero random value for each unison voice, rather than starting from 0 (there is also an option to use the old behavior, right-click Osc Drift slider)
- * Character filter will work on new oscillator types (so it's not just for Classic oscillator type anymore - but it is still a global parameter for both scenes!)
- * Retrigger now works properly on all oscillator types
- * Surge now supports single-cycle wavetables (previously, a minimum of two frames were required for the wavetable to load correctly)
- * Wide is the default filter configuration for all templates and Surge's startup state
- * The Asymmetric and Digital waveshapers in the Distortion effect now work properly
- * You can now deactivate Delay R time to allow linking left and right delay times
- * Ring Modulator frequency is now displayed in Hz; also added Absolute mode
- * Reverb 2 now has the same minimum predelay value as Reverb 1
- * Phaser and Neuron can now both deactivate Rate of their internal LFO, in which case modulating Rate will scrub the LFO's phase for manual phasing/combing effects
- * Added 4 new waveshapes in the Sine oscillator
- * More effect types now properly respond to All Notes Off message
- * Hard clip can be configured and set per scene or globally, with new settings at 0 and +18 dBFS (which is the default setting as it were before). You can set this by right-clicking the scene or global volume sliders, or additionally by right-clicking the A/B boxes in the FX grid
- * Sine, FM2 and FM3 oscillator types now have extended range for Feedback parameter by default
- * Maximum polyphony parameter is now actually read from the patches on load (Surge always did store the chosen max polyphony value into the patch, it was just never loaded!)
- * Global Volume doesn't apply to individual scene outputs anymore
- * Added deactivation toggles to low/high cut filters across all effects that didn't have them so far
-
-* Alternate Tuning / Microtonal Interface
- * Provide two tuning application modes: Tuning applied at MIDI input, or after modulation. This is described in detail in the manual. By default, it is set to apply at MIDI input for new patches
- * Filter cutoff can now be tuning-aware
- * Currently loaded SCL/KBM files are now displayed in Tuning menu
- * Far clearer internal and user state management on tuning (= scale + mapping), scale, and mapping management
- * KBM name is now stored in patch and DAW state
- * Tuning is now interpolated in log2 space rather than linear space for more accurate inter-note tuning
- * And finally, thrilled to be one of the first synths to integrate [ODDSound MTS-ESP](https://oddsound.com) as a tuning source
-
-* User Interface
- * Reposition Author/Category fields in the factory skins, not to overlap with longer patch names
- * Hover effect is now available on more assets, for example oscillator type menu and FX grid
- * Retrigger and Keytrack button have a right-click option to set their value for all oscillators in a scene
- * Phase/Shuffle parameter now changes its label based on LFO type (will show Shuffle only when Step Seq is selected)
- * Patch browser left-click menu now has multiple columns (Windows only!)
- * Control/Command-drag on sliders to snap to units now works for modulation amounts
- * Control/Command-click on patch or category previous/next buttons will load a random patch!
- * Expanded use of menu for integer sliders in some cases
- * Groups of sliders can now be deactivated collectively, for example in EQ and Tape effects, Twist oscillator...
- * Added an option to always show maximum amplitude LFO as a dotted line (User Settings > Value Displays > Show ghosted LFO waveform reference)
- * Option to drag bottom right corner to resize (VST3 only) is not displayed anymore for skins that have defined fixed zoom levels (i.e. Royal Surge)
- * Added a UI refresh when changing filter type via host automation
- * "Add Modulation From..." option now has its entries organized in submenus per modulator type
- * Removed a check if factory patches are installed. Now it's possible to completely remove all factory/3rd party patches if one wants to, and only focus on making one's own patches with a clean slate!
- * Envelope LFO presets are now saved to Envelope subfolder (previously they went to LFO subfolder)
-
-* Plugin Wrappers
- * AU advertises MPE support now
- * Label all AU parameters as high resolution
- * Disable VST3 parameter name resets which was coded incorrectly in Surge, causing problems in Bitwig
- * VST3 implements `getParamNormalizedByString`, allowing DAW-side value typeins to be consistent with Surge
- * VST3 bug with `getParameterString` fixed, correcting incorrect string display in some cases in Bitwig
-
-* Skin Engine Changes
- * Far clearer skin component model
- * Add a developer mode option (right click Menu button) to overlay a grid on top of Surge's GUI at runtime as a helper tool when designing, with support for arbitrary grid size
- * Fixed some bugs pertaining to user-specified parameter groups
- * Introduced skin version 2 for all the below mentioned new skin engine features:
- * Skin labels can show values from parameter names (useful for i.e. oscillator and FX parameters, which dynamically change their name based on oscillator/FX type)
- * Skin labels can now have an image assigned
- * Oscillator type and FX grid assets now only contain the backgrounds, any text on them is now generated through code
- * Slider class now has font size and text offset properties
- * Added skin properties for positioning the patch browser
- * Added a skin color for showing the current value of a macro more prominently
- * Added skin colors for About page text, column text, link and hovered link
-
-* New Content
- * Patches and FX presets from Vospi
- * FX presets from Arty
- * New patches from Databroth
- * Updated Jacky Ligon patches to set default tuning mode and adjust maximum polyphony
- * Expanded tuning library from Jacky Ligon
-
-* Smaller Changes
- * Show the plugin file location on About screen
- * Show the full modulator name in inter-LFO modulations
- * Show tne entire MSEG curve in Rate deactivated mode
- * When copying an oscillator, remember current position in the wavetable list index
- * About page shows your actual CPU model, not some build-time guess
- * The default value for scene Highpass cutoff parameter is minimum now (6.88 Hz)
- * Increase mouse hitzone on macro sliders slightly
- * Frequencies below C0 now have a proper negative-interval note name
- * Updated a few factory library patches that were using Latch mode by setting them to Mono mode, in order to avoid random noises when browsing through patches
- * Voice LFO Step Sequencer envelope triggers now run properly even without assigned modulation
- * Added a graphical asset for MIDI Learn, so it's now clearer to see when we're in MIDI learn mode and for which parameter
- * Handled a tuning regression when SCL files had a blank title in the first line
- * Next/Prev can span or constrain to category in patch navigation
- * All frequency-based parameters (except LFO rate) can now be set by typing in a note name (using 12-TET to convert to frequency)
- * Zoom level is no longer additionally saved in the DAW state - only the default value stored in user configurationi is used across DAW projects and all Surge instances
- * Wavetable export feature now correctly names the wavetable
- * Existing oscillator modulations are now cleared when changing oscillator type
- * When drag&dropping a patch onto Surge's UI, it is first checked if it exists among the current factory/3rd party/user patches, then that position is used as an anchor for previous/next patch buttons
- * Fixed a bug where loading a patch loaded wavetables twice, causing audio dropouts
- * Fixed a graphics memory leak on Linux, caused by difference in VSTGUI reference count between Linux and Windows/Mac
- * Fixed a bug when changing patches with previous/next patch buttons could skip multiple patches sporadically
- * Default MIDI learn settings are not stored to configuration.xml in factory data folder anymore, but in the always-writeable user data folder
- * When loading patches that contain invalid modulations (for example, Shape parameter in Sine oscillator has some modulation that was made possible in 1.8 and before through certain steps), make sure those modulations are removed to not create any trouble down the road
-
-* Code cleanup
- * Reformatted the codebase with a new, far more sane, clang-format (no more 3 space tabs, and so on!)
- * Replaced our hand-rolled filesystem implementation with [gulak](https://github.com/gulrak/filesystem)
- * GUI overlay API (used for MSEG editor, Store Patch dialog, etc.) is now far more rational, so we can have more than one overlay showing at once
- * Rework `char` and `string` functions to avoid potential overflows in several cases
- * Common oscillator functions (drift, character filter, etc..) are now all found in a single place (OscillatorBase.h)
- * Slider bipolarity and deactivation is now handled in a [single API point](https://github.com/surge-synthesizer/surge/blob/main/doc/DynamicNameActivationBipolar.md)
- * Consistently named oscillator and FX related C++ files and classes
- * A non-global RNG used through most of the code where `rand()` was used before
- * Some memory leaks were plugged up!
-
-* Infrastructure
- * More work done on UTF-8 file names and paths on Windows
- * Linux consistently uses `CMAKE_INSTALL_PREFIX` as a search path for assets
- * Surge on Windows can now be built with `mingw` or `clang` (but productoin builds are still using MSVC)
- * Linux reads config.xml from the filesystem
- * In Ardour on Linux, work around the `LD_LIBRARY_PATH / GTK2` issue which stopped Zenity from launching
- * Activate warnings-are-errors on Linux gcc
- * Windows implicit `precompiled.h` removed
- * Integrated [libsamplerate](https://github.com/libsndfile/libsamplerate) in the codebase, required for Eurorack-based modules which operate at a fixed sample rate of 48k
- * CMake will now run even if `git` is not found
-
-* Surge XT
- * Lots of commits for Surge XT which will hopefully be released sometime this summer!
-
-
-
-Version 1.8.1 is a point release to clean up a few bugs we found after 1.8.0 release, to add a few features we simply forgot to code, and
-to update and add content to the installer which people shared after the 1.8.0. release.
-
-The changes are:
-
-* Bugfixes and Features
- * Handled UTF-16 paths for saving user settings, allowing users on Windows with UTF-16 usernames to update their defaults
- * Drag and drop of a .wav or .wt wavetable doesn't reset oscillator type, if type is set to Window
- * The warning on Windows about uninstalled Lato font shows only once, not once every time the Surge GUI is opened
- * About screen actually mentions Surge Synth Team!
- * About screen on Windows shows "x86" instead of "Intel" for CPU
- * Modulation depth display and typein for tempo synced parameters is implemented now (as opposed to being just nonsense)
- * Subfolders in modulator presets are now listed first, before files
- * Dismissed the value display popup when toggling modulation assign mode on/off
- * Resolved Python with /usr/bin/env on Linux in the build phase
- * Fixed an occasional, but serious crash which would occur on slower machines when rapidly changing patches
- * Reordered and improved the MSEG segment menu
- * Drag and drop FX movement retains assigned modulation
- * Fixed a mis-drawn MSEG hover segment when scrolling horizontally
- * Added an explicit menu setting for touchscreen mode for Windows users (under User Settings->Mouse Behavior)
- * Avoided a floating point underflow which rendered MSEG S-curve deforms incorrectly when Deform was a very small value
- * Failure to load a .wav file will not rename the patch wavetable anymore
- * Fixed a typo which resulted in the Hard waveshaper sounding wrong in Rotary and Distortion effects
-
- * Content
- * Added a bunch of modulator presets
- * High quality versions of all factory wavetables in Basic folder
- * Updated Jacky Ligon's presets with new patches and CPU optimizations
- * Updated TMNG's presets with new patches, CPU optimizations and cleaner wavetables
- * Added wavetables from TNMG
- * Added patches from Stefan Singer (previously known as Stefan Hållèn)
- * Updated a single patch from Luna
-
-
-
-In version 1.8.0, we have introduced many new features,
-but also adapted a large collection of existing open source code to work
-inside Surge. We are especially grateful to these authors (noted in the changelog)
-for making their software available, for being friendly when we talked to them about
-adapting their software for Surge, and for being part of the free and open source
-music software community!
-
-1.8 has hundreds of changes and features, but the headlines of the release are:
-
-* New skins, including the lovely "Royal Surge" skin and greatly improved Classic and Dark skins
-* New filters, with multiple new filter models
-* A complete implementation of a multi-segment envelope generator (MSEG) as a modulation source
-* A large number of Airwindows FX available in the FX chain
-* A bunch of amazing new content! We now have more than 2000 presets in the library!
-
-The complete changelog is:
-
-* New and Improved Skins
- * Added the 'Royal Surge' skin, a skin inspired by vintage hardware, developed and designed
- by [Voger Design](https://vogerdesign.com).
- * Major updates to the Classic and Dark surge skin, including better placement of controls, rendering,
- contrast, and consistency.
- * See "Skin Engine" section below for more technical details on the skinning engine
-
-* Filters
- * Added "Vintage Ladders", two models of vintage 4-pole lowpass ladder filters
- Thanks to [@ddiakopoulos](https://github.com/ddiakopoulos) for maintaing this very
- useful [repository of research and code](https://github.com/ddiakopoulos/MoogLadders) which
- heavily informed the models we implemented
- * Added the filter from [OB-Xd](https://github.com/reales/OB-Xd)
- * Added the K-35 filter from [Odin 2](https://github.com/TheWaveWarden/odin2)
- * Added the Diode Ladder filter from [Odin 2](https://github.com/TheWaveWarden/odin2)
- * Added Cutoff Warp filters (LP/BP/HP/N/AP) based on [this Jatin Chowdhury Blog Post](https://jatinchowdhury18.medium.com/complex-nonlinearities-episode-5-nonlinear-feedback-filters-115e65fc0402). This one is really weird!
- * Added Resonance Warp filters (LP/BP/HP/N/AP) based on [this Jatin Chowdhury Blog Post](https://jatinchowdhury18.medium.com/complex-nonlinearities-episode-4-nonlinear-biquad-filters-ae6b3f23cb0e)
- * Implemented 24 dB/oct variants for the existing biquad bandpass and notch filter types
- * Add an allpass biquad filter based on existing biquad filters in Surge
- * Fixed an error in the comb filter which made it out of tune by 6 samples. By default
- this is corrected in new sessions or patches streamed with Surge 1.8, but it can be also toggled by right-clicking the filter
- subtype menu. Old patches remain "wrong" in order to preserve how your existing projects sound
- * Overhauled the filter type menu, filters are now grouped by their function
-
-* Expanded Modulator Features and Fixes
- * Multi-Segment Envelope Generator (MSEG)
- * Implemented a fully editable MSEG modulation source, with a large number of curve types and various editing options
- * To use the MSEG, select a voice or scene LFO, choose the MSEG LFO type (bottommost row, first icon) and click on the LFO display, or the pencil button to the right
- * Extended features for a segment are available on the right click context menu
- * Currently, MSEG supports up to 128 nodes, and the maximum length of the MSEG is 128 phase units (duration of a single phase unit is determined by the LFO Rate parameter)
- * LFO modulator presets - users can save and share single LFO modulator settings
- * New MIDI controller modulators: Breath, Expression, Sustain pedal
- * New per-voice modulators: Alternate and Random (both unipolar and bipolar)
- * New scene modulators: Lowest Key, Highest Key, Latest Key
- * Drag and Drop
- * Drag a Macro slot around to reorder it
- * Ctrl-drag any modulation source onto a slider in order to open an edit dialog for typing in a modulation amount
- * Added several MIDI controller smoothing modes in the MIDI Settings menu, which
- increase the responsiveness (at cost of smoothness) for MIDI CCs, aftertouch, etc.
- * MPE Aftertouch and Timbre are now properly smoothed; MPE Pitch Bend has independent
- smoothing settings.
- * Deactivated rate LFO modulators show their waveform over which you can scrub using the Phase slider
- * LFO Freerun trigger mode now has correct relation to song position pointer when not synced to tempo
- * LFO Deform slider now has several different modes for Sine, Triangle, Sawtooth and Envelope LFO types
-
-* Effects
- * Integrated 59 [Airwindows effects](https://github.com/airwindows/airwindows). Thanks to Airwindows
- for providing high quality open source effects!
- * Effects can be reordered via drag and drop, copied to another slot via Ctrl/Cmd+drag and drop, or replaced via Shift+drag and drop
- * Phaser effect now has an adjustable number of stages (up to 16), with adjustable spread and distribution of stages (except in legacy setting)
- * Extended phaser ringout time, allowing for long self-oscillations at high feedback
- * Vocoder modulator signal can now be chosen between stereo, monosum, left, or right input
- * Disabling an effect (loading the "off" preset) now removes any leftover modulation
- * Individual bands of the EQ can now be deacivated by right-clicking the Gain sliders and choosing Deactivate
-
-* SurgeEffectsBank
- * SurgeEffectsBank is now part of the main Surge source tree
- * Implemented the new Airwindows effects
-
-* Voice Management
- * Added note priority modes for monophonic play modes: latest, highest, lowest or legacy (note ons have latest note priority, note offs have highest note priority)
- * Added a mode where sustain pedal in mono mode allows retriggering older notes that are still held, on note release
- * Add even more extensive regression tests for voice management modes
-
-* Other Sound Design Tools
- * FM3 Oscillator
- * M1/2/3 can now be extended allowing ratios from 1/32 to 32
- * M1/2 can now be set to a ratio or an absolute frequency
- * Fixed a bug in step sequencer LFO mode which picked the wrong step when start and end were the same
- * LFO Amplitude can be extended into negative ranges
- * "Tempo-sync All Parameters" available for filter and amp envelopes
- * Display Pitch Bend as a bipolar modulator on sliders
- * Fixed problems with very long-running LFOs drifting due to truncation errors
- * Allow scrubbing (when LFO Rate is deactivated) on step sequencers to trigger envelopes
- * Waveshaper drive can now be extended to have twice as much gain as before (+/- 48 dB)
- * Default scene polyphony is now set to 16
- * Solo buttons in the mixer now allow multiple active solos by default (Ctrl/Cmd+click for the old exclusive solo behavior)
- * Mute buttons in the mixer behave the same way as Solo buttons now, with exclusive mute behavior on Ctrl/Cmd+click
- * Expanded .wt file format to support 16-bit full-range files - this also means compatibility with wavetables from Bitwig Studio's Wavetable device!
- * "Show Current Tuning Information" now contains interval matrices
- * Post-amplifier highpass filter can now be deactivated (right-click the HP slider)
- * Global hard clipping of the scene output can now be disabled in Scene Volume context menu
- * Scene pitch and pitch bend now work properly with non-keytracked oscillators
- * Fixed a tuning error with partially mapped long scales
- * Oscillator FM routing modes with only Ring 1x2 mixer channel active now work properly (previously this wasn't evaluated so it resulted in clicks)
- * Renamed Classic oscillator Width parameters (manual contains a more detailed explanation)
-
-* Content
- * Fixed tuning of Flute 1/2 factory patches
- * New patches from Vincent Zauhar
- * New patches from David Bata
- * New patches and wavetables from Damon Armani - see Damon's [Preview](https://www.youtube.com/watch?v=7uqG14NfxyE) and [Full Demo](https://www.youtube.com/watch?v=bnZ7YLWdP2U)
- * New wavetables from Venus Theory
- * New and corrected patches from Inigo Kennedy
- * New patches from Kyurumi
- * New patches from Jacky Ligon
- * New patches from The Nerdy Music Guy
- * New patches from Luna
- * New FX presets from Arty
- * Add Carlos-Morrison CET microtunings to the factory tuning library
-
-* Skin Engine
- * User-side:
- * Complete set of tutorial skins showing many features of the skin engine,
- which automatically generate [skin engine documentation](https://surge-synthesizer.github.io/skin-manual.html)
- * Skin inspector (Menu > Skins) shows the state of the currently loaded skin and information about colors and assets
- * Classic and Dark skins are now available as Figma templates. Please ask on our [Discord #design channel](https://discord.gg/aFQDdMV) if you are
- interested in using Figma to design and work with skins!
- * Developer-side:
- * Internal C++ data model fully represents the skin as objects and is overrideable by XML
- * Support for scalable PNG or SVG for all assets
- * Support for fixed enumerated zooms if a skin designer desires (mainly useful for PNG-based skins)
- * Support for changing overall window size
- * Support for hiding any component
- * Support for grouping controls into panels
- * Improved nanoSVG parser with support for certain SVG features
-
-* UI/UX
- * You can drag and drop .wav, .wt, .scl, .kbm and .fxp files onto any part of Surge's GUI and they will be loaded
- * Consistently implemented our new logo
- * Large number of contrast, color, and positioning tweaks, including a complete re-render of Classic and Dark skins
- * Text input dialogs are no longer OS-based, instead they are internal to Surge, created with VSTGUI
- * Store Patch dialog is now consistently designed with other internal dialogs in Surge
- * Fixed VST3 zoom inconsistencies which caused problems in Cubase, FL20, and other hosts
- * New "Add Modulation From..." menu entry for modulatable parameters, which opens a dialog for a direct modulation assignment from one of available and valid modulators for the target
- * Hovering over sliders shows which modulation sources are applied to them
- * Direct assignment of MIDI CCs to parameters via context menu, mirroring the same facility Macros have
- * Modified the design of Edit Modulation dialog to avoid text overflows
- * Unique FX grid icons for each effect type
- * Implemented dropdown menu widget which can replace sliders for discrete (integer) parameters
- * Allow loading FXP patches from file (use "Load patch from file..." option in patch browser context menu)
- * Allow patch browser to rapidly open user and data folders (shouldn't crash anymore on receiving rapid MIDI Program Change messages)
- * Save FX presets to unique subfolders per FX
- * Step Sequencer shows position in deactivated LFO Rate mode (when scrubbing the sequencer position with the Phase/Shuffle parameter)
- * Modulation assign mode now stays active when selecting another modulator (previously it would deactivate)
- * Added "Clear MIDI Settings" function (Menu > MIDI Settings)
- * Fixed a VSTGUI bug which caused artificial hover events at zoom levels other than 100% on Windows
- * Fixed a VSTGUI aliasing problem with modulation assign buttons on Windows
- * Activated non-integral mode consistently on Linux, improving drawing quality for all assets and working around an inconsistency in VSTGUI
- * Implemented "elastic" slider editing mode - move a slider while holding Alt/Option, and it will snap back to where it was when releasing the mouse button. Useful for quick auditioning of parameter changes without committing them
- * LFO Amplitude now properly quantizes to integer percent units when holding Ctrl/Cmd
- * Currently selected modulator is preserved as scenes switch
- * Completely redesigned the About screen, added more credits and links to relevant places
- * Version info in About screen can now be copied to system clipboard by clicking on Copy Version Info
- * Vastly improved cursor hiding behavior on Windows, plus cursor hiding is now available on macOS!
- * Mousweheel click, forward and backward buttons (buttons 3/4/5 on mice that have them) can now arm modulation from any part of the UI
- * Mousewheel works on nearly every element (the FX preset menu is the only one left)
- * Widget hover state now correctly survives UI rebuids
- * SVG renderer now supports opacity in paths, not just fills
- * Improved the look and feel (and code clarity) of the VU meter
- * Skinnable VU meter with gradient bars
- * We now warn Windows users if Lato font is not installed
- * Linux menus open in a way far less likely to occlude their parents
- * The main menu can be opened by right-clicking on any non-active region of the UI
- * As a consequence of the main menu being available anywhere on the GUI, removed the "zoom level too large for your display" check and error dialog
- * Allow deeply nested menus in the FX preset and Oscillator type menus - currently only used in the FX menu
- * Skinnable 'dots' on the Oscillator and LFO display, following the design of Royal Surge skin
- * Fixed wavetable name not being included in oscillator/scene copy-paste operations
-
-* Plugins
- * VST2 and VST3 now advertise parameter name changes to the host
- * If the audio engine isn't running, plugins show idle error when patches won't load
- * Menus, typeins, and other controls now properly send automation change messages
- * Simultaneous automation of any number of parameters now correctly update the UI (previously more than
- 8 simultanously automated parameters would leave the UI state incorrect).
- * Modify the threading pattern in the VST3 when loading patches to allow frequent automated patch changes without a crash
- * VST3 correctly supports the 'parameterNormalized' API, which is used extensively in Ardour for automation
-
-* Python API
- * Surge now exposes a complete Python API to fully program and manipulate the synth inside Python programs and Jupyter notebooks
- * You can see a set of example notebooks in [this repo](https://github.com/surge-synthesizer/surge-python)
-
-* Infrastructure, Bugfixess and Code Quality
- * Surge is now a macOS fat binary (x86/Apple Silicon)
- * build-linux now works with ARM
- * Removed a collection of specious `_asm` blocks
- * Fixed a VSTGUI issue with Linux and mouse motion dropping modifiers
- * Added several libraries which were not explicitly linked on Linux
- * Allowed the tarball and code to build and collect version info in the absence of a git checkout
- * Parallel, Debug, and multi-generator CMake builds now work on all platforms
- * Enumerate Linux library dependencies on all items (xcb-keypress etc.)
- * Implemented proper Unicode filename support everywhere
- * Made our CMake file more modular for various library and test inclusions
- * We now show the install location at the last step of the Windows installer
- * Replaced CriticalSection.cpp with `std::mutex`
- * A far more complete implementation of `std::filesystem` for systems which don't have it (basically, macOS versions before 10.15)
- * Refactored our CMake implementation so that shared code is compiled into static libraries
- * Revamped the mechanism by which Surge internal IDs and Surge plugin IDs are mapped, allowing us a much easier
- future expansion of the parameter set (sctual parameter set expansion is coming in 1.9!)
- * LFO and S&H noise oscillators now have independent random number generators, avoiding problems with global seeds
- * Consistently use constants for scenes, oscillators and so on, rather than magic numbers "2" and "3" and so on
- * Purged unused/obsolete graphical assets from the codebase
- * Turned on "warnings are errors" on all platforms
- * Correctly set macro values on patch load by calling 'init()' rather than 'set_target()'
- * Fix some edge case threading problems which were exposed in high stress (rapid FX swap or rapid VST3 preset reset) cases
-
-
-
- So, testing is hard. We're a scrappy rag tag group of volunteers facing an army of
- diverse operating systems, DAWs, environments, build flags, and so on. We're really happy
- that all the new features in 1.7.0 worked! But upon release we found some of the environmental
- stuff didn't, so we did a quick 1.7.1 release which includes the following fixes,
- most of which were cause by us doing a substantial upgrade to our build infrastructure with
- 1.7.0. We still have a swath of features planned for the 1.7 series, and expect a 1.7.2 with
- some new features and effects in Autumn 2020.
-
-
-
macOS
-
-
Make the VST3 work in Abelton Live for Mac (by doing a blank-signing of the bundle)
-
Restore compatability back to OS 10.9 (by building macOS at C++-14 level).
-
Change the support file lookup semantic to always use the newest support files
-
-
Linux and FreeBSD
-
-
Activate an Ubuntu-20 Clang-10 build and resolve bugs
-
Remove a set of warnings that stop Clang-9 from building, allowing Surge to build on FreeBSD again
-
-
Windows
-
-
Modify the VST3 zoom failure handler, which would cause an infinite loop in zooms on Studio One in some situations.
-
Change our build pipeline so the 64-bit Windows installer installs the 64-bit SurgeEffectsBank
-
-
All Platforms
-
-
Add greatly improved labels on value menus for filter subtypes and envelope attacks
-
Improve error messages for missing skins
-
Add a 'Zoom to Default' menu item which zooms to the user default setting
-
-1.7.0 is a major release done on July 28, 2020.
-
-+ Skin Engine
- + Surge now has a dark skin. Menu > Skins > Surge Dark
- + Surge is now runtime skinnable with swappable assets. Documentation on this skinning engine is
- forthcoming. For now if you want to author a skin, you are probably best to hop onto our Slack!
- + All synth elements in both skins get hover gestures to make the UI more reactive
-+ DSP and Synthesis Changes
- + New and Improved Effects
- + Reverb 2, a new reverb based on a network of allpass filters and delays
- + Flanger, a flanger with some extreme tuning and feedback options
- + Ring Modulator, a simulation of an analog ring modulator with a choice of carrier waves based on Surge's Sine oscillator
- + Rotary Speaker effect gets drive, rotor rate (previously it was coupled to existing horn rate), stereo width, and mix parameters.
- + Fixed a phaser issue which caused instability at high modulation rates
- + Fixed a Reverb 1 and 2 problem where the HF/LF damping could become unstable at high modulation values
- + EQ gets a mix parameter, which can result in musically engaging phasing
- + Oscillator Improvements
- + The Sine oscillator becomes a mini-synth
- + Many more quadrant waveforms
- + Unison mode
- + Extended feedback range and negative feedback, which results in a square-like (rather than saw-like) waveform
- + Built-in low and high cut filters
- + The first 8 sine waveforms are ordered to match the TX-series waveforms
- + Built-in low and high cut filters added to Window, S&H Noise and Audio Input oscillators
- + You can route the output of Scene A into Scene B and mix it with Surge's audio input
- + FM2/3 oscillators get extended feedback range and negative feedback for new instances
- + Other DSP Changes
- + Unison goes up to 16 on all unison oscillators
- + Surge uses the Surge Synth Team's tuning library used in several of our synths for SCL/KBM support
- + Fixed a problem with phase overflow in very long running Sine and FM2/3 oscillators
- + The Sine oscillator and Ring Modulator effect use a high performance approximation for sine/cosine waveforms (lower CPU usage)
- + Fixed a crash with high sync values in the Classic oscillator when set to absolute pitch mode
- + Fixed problems with the ADSR envelope becoming unstable or non-silent in very high or very low DS regimes
-+ Modulation and Voice Management Changes
- + Each voice LFO can now trigger filter and amplifier envelopes
- + You can 'deactivate' the LFO rate (right click the Rate slider to see the option in the context menu) which makes the LFO take a
- constant value at current phase, and makes the Phase slider act like a scrub operator
- + Step Sequencer UI rewrite
- + Vector rendering
- + Show the actual resulting curve
- + Show value displays, right mouse drag to draw a ramp, quantize to scale length when holding Shift or Shift+Alt (twice the scale length)
- + Substantial improvements to Portamento
- + Added Constant Rate and Constant Time modes
- + Added logarithmic and exponential portamento curves (previously we only had linear)
- + Added a glissando mode (portamento quantizes to scale degrees)
- + Added a mode to retrigger envelopes when crossing scale degrees
- + All these features are available when right-clicking the Portamento slider
- + Capped modulated envelope sustain at 1
- + Fixed a variety of issues with modulation phase which could, in extreme cases, cause glitches and noise
- + Clear FX parameter modulation when changing FX type to avoid unexpected modulations
- + Fixed a variety of situations where, in extreme inter-modulation cases (LFO1->2->3->1 etc.) LFO sources could go unstable.
- + Allow the amplifier and filter envelopes to modulate LFO parameters
-+ User Presets and Persistence
- + FX and MIDI mappings have user presets distinct from the patch/DAW stream
- + MIDI mappings are stored in the DAW state for recall
- + You can display the current MIDI mapping from the Menu
-+ UI Improvements
- + Every parameter links to context-specific online help
- + Discrete parameters (like filter type or tempo synced LFO rates) can now also be set via the right click context menu
- + Continuous parameters and their modulations can now be adjusted via text input dialog - click on the value readouts in the slider's right click context menu
- + Slider Ctrl-drag is properly quantized for values and for modulations
- + Updated units and display of many values and their modulations
- + LFOs in Envelope or Step Seq modes will be renamed to ENV or SEQ across the board, respectively
- + Labels, checkmarks, and ordering in menus more generally consistent
- + Added Zoom button in the Status panel with more consistent status panel menu behavior
- + Active hover gestures on buttons, sliders, and so on
- + High Precision Value Readout mode (Menu->User Settings) shows more decimals in popups and value input dialogs
- + You can browse FX presets with previous/next buttons, and see the name of the selected preset
- + Inactive sliders are transparent (Win/Mac) or have a hidden handle (Linux). Some sliders can be activated with Activate option in right click context menu
-+ OS-specific Improvements
- + Portable installation support on Windows (Surge will look for SurgeData and SurgeUserData folders next to the .dll/.vst3 first)
- + Substantial Linux UI improvements
- + VSTGUI performance patched to substantially improve redraw time
- + VSTGUI menus patched to open in a non-overlapping fashion
- + Activate vector UIs for all components (LFO, Oscillator)
-+ Content
- + New patches from Jacky Ligon, many highlighting new features in 1.7
- + New patches from Dan Mauer
- + New patches from Psiome Send
- + Third party patches better organized and classified.
-+ ARM Support
- + The synth builds on Linux ARM platforms from source. Following the direction on the
- README you can build and run the LV2 or the VST3 and run them in both armv71 and aarch64
- PI platforms.
-+ Plugin Improvements
- + VST3 works reliably on Linux, including Reaper, Carla, Bitwig 3.2 and sample hosts
- + VST3 correctly orders multiple MIDI messages in the same sample chunk
- + Fixed a problem where the VST3 mis-rendered Macro DAW automation in Reaper
- + Added VST3 context menu facility to Macro controls
- + VST2/3 can output scenes to individual plugin outputs, prior to scene effects (not yet implemented in AU or LV2)
- + Fixed a bug with VST3 host menus which would crash Surge in some hosts (especially Bitwig on Linux)
- + AU advertises patch names to Logic Pro
- + LV2 reads screen scaling factors
- + DAW automation names contain scene label and are (mostly) uniquely named
- + VST3 (Windows) properly names MIDI extra parmeters
- + Fixed an error where some hosts in some situations would fail to load Surge patches stored as .vstpreset
-+ Minor Changes
- + Set Default Zoom... option now sets the default and the current zoom level
- + Many UI elements renamed to be more consistent across the board
- + Effects now have Init (Dry) and Init (Send) presets, the latter are intended to be used in Send FX slots
- + Fixed a bug which limited modulation on some Scene B modulation sources
- + SVG renderer supports radial gradients
- + Menu labels and capitalizations generally more consistent
- + Limit MIDI learn to sensible controllers
- + Use General MIDI CC names in context menus of Macros
- + Option to choose the octave offset of MIDI note 60 (default is C4, other options are C3 and C5) and it is applied consistently across the board
- + Developer Options menu is available on right click of the Menu
- + Cursor hiding is a togglable option on Windows
- + When reappearing from being hidden, mouse cursor is restored to the position from which the drag was started
- + Scrollwheel works on LFO type parameter
- + Parameter value popup no longer clips or draws offscreen
- + Popup prompts have titles and directions
- + You can set default author and default comment which will be automatically applied to the patches you save
- + Fixed a bug which caused the cursor to disappear on Windows when renaming a Macro
- + Show an error when loading an .fxp file from a synth other than Surge
- + Properly callibrate Windows mousewheel to work on integer sliders
- + Fixed a bug where switching a Scene LFO to and from a deformed Step Sequencer could mis-calibrate the LFO rate
-+ Infrastructure
- + Moved our entire build system to CMake
- + Fixed a bug where patches could incorrectly stream in international settings with "," as a decimal separator
- + Binaries are now properly licensed FOSS - disabled the VST2 builds
- + Better versioning strategy in various DLLs, plugins, and tools
- + Applied a variety of updates to our deb package
- + Move our Azure pipelines to macOS 10.14 (but still build for 10.12 and higher)
- + Tightened up some unit test thresholds to make them more reliable
- + Removed a large number of code warnings
- + Increased warnings-as-errors on macOS and squashed several warnings
- + The nightly deb installer starts version number with 9. instead of 0.
- + Renamed all 'master' code branches to 'main'.
- + Added a more correct copyright statement to each of the code files.
-
-
-
-Version 1.6.6 fixes several bugs and adds a few key features. We released so quickly after 1.6.5 since we want to take a pause on doing regular production releases while we
-prepare for a Surge 1.7 release which will include (among other things) a skinning engine to allow designers to adapt
-the UI. As such, this will be our last production release for a little while - perhaps until summer of 2020. Changes in 1.6.6 are
-
-* Audio and Performance Changes
- * Absolute unison mode was both sample rate dependant and incorrectly calibrated. Corrected it so that, at all sample
- rates, a 16 Hz absolute unison is a 16 Hz unison spread.
- * Unison range can now be extended, giving unison spreads up to one octave (pitch) or 192 Hz (absolute).
- * Window Oscillator now supports FM, and is calibrated to use the same FM Depth as FM2/3/Sine oscillators.
- * We initialize modulators before the initial voice start, setting the first modulator value at voice initialization corectly and
- avoiding a 32 sample "sweep" across a modulator value at voice onset.
- * Fixed two bugs with the sustain pedal; first - sustain on channels 3 and 4 didn't work, and second - pressing a key
- multiple times while sustain was held would lead to an incorrect state.
- * Fixed a bug with the tuning engine where mappings with root keys far outside of scale ranges gave incorrect results
- * Made the oscillator display constant even in extreme tuning changes
-* LV2 Changes
- * The LV2 had incorrectly advertised the identity of its ports. Change to use unique symbols for each port. *Unfortunately this fix will break prior Surge sessions, but those prior sessions inconsistently streamed the synth state in most LV2 hosts*
- * The LV2 didn't advertise all parameter changes leading to a port being unsynchronized.
-* Minor Changes
- * The VST3 (Windows) plugin properly formats the automation display of the CC parameters
- * The FX slots and automation parameters are named more consistently, as are several menus and labels
- * The value popup window popsup on mouse-down not mouse-move on a slider
- * The patch and wavetable menus have refresh options on the popup menu, not just in menu/data and patches
- * Slider mouse behavior in medium and slow works more like classic when over-dragging
- * Added an init patch which assigns a distinct modulator envelope to each OSC
- * Added a regtest that parameter IDs are stable across versions
- * Modify the build pipeline so the linux .deb file has correct ownership on shared assets
- * Stream the Wavetable name into the patch
- * Correct the Open Tuning Library menu on Windows
- * Fixed a bug with opening and closing the VST2 on Linux
-
-
-
-* New Features
- * Added a "Channel Split" mode to split by MIDI channel across scenes, just like the Key Split mode does across the keyboard
- * Several changes to the alternate tuning implementation
- * We have full support for Scala KBM files, including full keyboard
- remapping, scale 0, and frequency 0 selection.
- * The default tuning constant key is MIDI note 60 (261.63 Hz)
- * The scale viewer shows frequencies per key
- * Corrected an error where tuning could interfere with filter cutoffs and delay timings, especially with long scales
-
-* Modulation Section
- * When any control is tempo synced, show a beats display as well as time display on the LFO grid (not available on Linux)
- * Tempo sync all controls for an LFO modulator with a single RMB gesture on any syncable control.
- * Added LFO Envelope lanes in the LFO 1 retrigger section. Use Shift-click or right-click on the retrigger section to trigger both the Amp and Filter envelope or just one or the other.
- * Made envelope retrigger work properly for Analog mode envelopes.
- * Chose a more on-theme blue for the step sequencer section, rather than that wierd green.
- * Green line shows how far you have modulated when you modulate a slider. Try it!
-
-* MPE
- * The global pitch bend (on channel 1) no longer double-bends in MPE mode
- * MPE pitch bend state is per instance and saved in the DAW state, so you can use two Surges with MPE bend of 24 and 48 in a single project, if you happen to own both a Seaboard and a Linnstrument, say.
-
-* VST3
- * Sidechain support is properly supported with a kAux channel, meaning sidechain works in Cubase Pro. Additionally, in Reaper versions > 6.02 the VST3 will properly configure routing for sidechaining when dragged into a track. (For earlier versions see [here](https://www.youtube.com/watch?v=OKR0x_dneYI).)
- * Support VST3 context menus. Right-click on a parameter in VST3 using a DAW that supports this feature and check it out!
- * VST3 automation for macros works.
- * LFO freerun works if transport is not running.
-
-* Change the Windows Installation Locations
- * Windows now reads shared content from %PROGRAMDATA% (c:\ProgramData\Surge) and then if missing from %LOCALAPPDATA%
- * The Windows Installer installes common assets in %PROGRAMDATA%
- * To allow debugging, the About screen on all platforms shows the data paths.
-
-* A new collection of third party presets from Dan Mauer.
-
-* Other Workflow and Engine Improvements
- * You can export a wavetable from a patch to a standalone wavetable using the export menu item in the oscillator wavetable selector
- * The Envelopes in analog mode corrected decay behavior and support sustain swells
- * The Digital envelopes in quadritic decay mode work with sustain 0
- * LFO phase is properly modulatable (modulated phase is snapped when an LFO starts and is not modulatable once going)
- * TempoSync was not correctly unstreamed on the Delay effect.
- * TempoSync in Delay is correctly initialized when first played in a new DAW instance.
- * The AU unstreams zoom properly in Logic Pro
- * The AU allows automation of the "CC" and "Master" parameters properly
-
-* Other UI Improvements
- * Windows Touch devices now work with the Surge UI
- * Fix a problem with a 'spiky' draw of the Square Wave on Windows
- * Several UI elements are higher contrast, several text displays are more consistently formatted
- * Frequency sliders (like Cutoff frequency) show a midi name as well as a frequency in their popups and string displays
- * TempoSync sliders show their status with a little "TS" on the handle.
- * FrameClose in the VST2 called at the appropriate time.
- * VST Names for FX Params are distinct per param
-
-* Code Changes
- * Add and activate many unit tests spanning tuning, modulation, and much more
- * Add support for builds with Visual Studio 2019
-
-
-
-Versions 1.6.4 and 1.6.4.1 were released late November 2019, with several MPE and effect changes, new content, and some small
-cleanups
-
-* Synth Sound and Behavior
- * Release velocity is now an available modulation source. See [more details here](https://www.youtube.com/watch?v=GnEX-ypuem0)
- * Sustain Pedal in MPE mode was mis-mapped to the wrong channel, leading to it not working in MPE note-per-channel configurations
- * The 'Drive' feature in the distortion effect is extensible
-
-* New Content
- * A set of MPE patches for the Linnstrument provided by Roger Linn. [Here's a video of Roger demonstrating them.](https://www.youtube.com/watch?v=T-mKyShEvKg&t=1s)
- * Producer [Damon Armani](http://damon-armani.com) contributed a set of EDM & Dubstep Wavetables and Patches to the 3rd party library.
-
-* Other smaller changes
- * Mouse button shows value of integer and boolean sliders
- * Fix a small repaint bug in the LFO display
- * Handle cases where user folders don't exist
- * Make LFO modulation button state always consistent
- * Better abbreviated names of modulation sources, with consistent case and spelling
- * Failed wav file loads include the name of the file which failed
- * Developer documentation cleanup and unit tests
-
-* 1.6.4.1 was a minor release that corrected the installer on macOS Catalina, renamed and completed a couple of the new content packs and fixed two small graphics assets.
-
-
-
-1.6.3 fixes a collection of problems with the VST3 plugin. We are particularly grateful to the team
-at Steinberg for providing us a complementary copy of the Cubase DAWs which best exhibited the VST3 bugs
-Surge had, and allowed us to resolve the problems.
-
-* VST3 Fixes galore
- * Pitchwheel and Modwheel work VST3/Cubase
- * Resolved bugs in midi mapping, midi learn, and other controller flows
- * Resolve VST3 automation inconsistently updating the Surge UI
- * Support drag-to-zoom in VST3 in hosts which support it (tested in Reaper, FL, Bitwig and Cubase)
-
-* Upgraded the distortion effect
- * Users can select the waveshaper for the drive stage from the set of surge waveshapers
- * The pre- and post- gain can be extended to allow outsized boosts and subsequent extreme distortions
- * Note that some settings of the distortion effect in extended mode can drive Surge well into digital clipping. Be careful!
-
-* New patches from Inigo Kennedy
-
-* Several LV2 and Linux changes, including the ability to build a 32 bit linux configuration.
-
-* Deal with some small bugs with wave ordering, invalid waves, menu arrow keys on Linux, and error handling when Surge is mis-installed
-
-
-
-1.6.2.1 is a point release fixing a few regressions in 1.6.2 and a few crashes our users noticed when more
-people downloaded the synth.
-
-* Fix a long-standing MPE error where channel aftertouch was mis-routed
-* Restore the "extended" menu on Oscillator pitch; apply a few other cosmetic menu changes
-* Build patch menu correctly when user directory names exactly match factory directory names
-* On Linux systems without zenity installed, fail gracefully instead of SEGV
-* Apply naming consisntency to wavetables as well as patches
-
-
-
-* Substantial New Features
- * Alternate Tunings
- * Surge supports re-tuning the synthesizer using .scl files
- * .scl files are stored in the DAW state and optionally stored in a patch
- * UI elements to see if tuning is active, to see current tuning, and to reset tuning in place
- * Greatly expanded `.wav` file support and WaveTable Oscillator improvmenets
- * Surge can read `.wav` files on all platforms (linux, mac, and windows) now
- * Surge will recognize `.wav` files which contain a `clm` block to indicate loop size (as used by Serum),
- a `cue` block (as used by various products, including Native Instruments) and a `smpl` block. *This means that
- all Serum compatible wavetables we have tried now load in surge*
- * Add a `srge` chunk type which allows wav files to advertise surge table sizes other than 2048, and a python script
- to add those chunks to wav files.
- * `.wav` files without loop information are loaded as one-shots
- * Increased the maximum table size to 4096 samples.
- * Drag and drop of .wav files, direct open with the file chooser, and scanning of .wav files in
- ~/Documents/Surge are available
- * The WaveTable and Window Oscillator Morph control shows the table and allow you to snap exactly to a table
- * Important Linux Changes
- * A Linux 64 bit LV2 is now available
- * A Llinux 64 bit VST3 is now available, although VST3 support in Linux is sporadic, and it only fully works in Reaper
- * Resolve problems with mis-animated, crashing, or ghosting menus in the Linux UI; and mis-aligned text fields in Reaper
- * Audio and Patch Creation Changes
- * Oscillator pitch can be set to "Absolute" using the right mouse, making the pitch shift in absolute
- frequency as opposed to relative note space.
- * Temposync Display values use musical values ("1/4 triplet" rather than "2.667 1/16")
- * The SIN oscillator implements FM feedback; and corrects some errors in the FM implementation making
- it respond line an unmodulated FM2 when no feedback or waveshape is applied.
- * The Surge Vocoder adds tunable bands, adjustable band count, and a different set of bands for modulator than carrier.
- * It is possible to copy and paste FX between slots in the FX router
- * For some lower resolution generated wavetables, add side-by-side high resolution ones
- * Oscillator and LFO Displays
- * The Oscillator display and LFO display are both vectorized, eliminating the high-zoom pixelation of prior versions.
- * The LFO display automatically zooms to show the entire envelope; and releases the sampled LFO to show the release stage.
- * Due to a technical limitation in Linux VSTGUI that we are still debugging, these features are only available in the
- Windows and Macintosh build today. Also on some older machines this feature will auto-deactivate if it is too slow;
- and can be forcibly deactivated with a switch in the menu.
- * The SurgeEffectsBank plugin.
- * We have wrapped the FX stage of surge as a separate JUCE plugin and generated a VST3
- * This plugin is included in the mac and windows installer.
- * New and Reorganized Content
- * EMU has adapted the CC-0 VSCO Community Edition (https://vis.versilstudios.com/vsco-community.html) as a collection
- of surge wavetables
- * EMU digital and sampled wavetables added in third party wavetables
- * EMU patches added to third party patches
- * Added a few presets by Claes which we found outside the factory distribution
- * Generally reorganized the presets to have more consistent case, name, and folder sturcture.
- * Place content too large for the core distribution on a wiki site and link it through menus in the main menu,
- patch menu, and wavetable menu.
-
-* Bug Fixes, Host and DAW changes
- * Parameter automation in the Audio Unit corrected, allowing touch automation of parameters in LogicProX
- * Zoom issues resolved in renoise windows with renoise 3.2 upgrade
- * Zoom issues resolved in reaper linux by using the Linux VST3 rather than VST2
- * Oscillator copy and paste mis-copied dynamic wavetables; fixed
- * Oscillator copy and paste always copied oscillator 1; fixed
- * Automating OSCTYPE as a DAW parameter gives the correct behavior in the UI and the audio engine
- * Automating ENVTYPE as a DAW parameter updates the UI properly
- * Fix VST2 overflow which was stopping plugin from working in QTractor
- * VST3 UI responds properly to automation
- * VST3 shows parameter value strings correctly mac and linux
-
-* Other UI Changes
- * A status area shows MPE and Tuning state, allows it to be edited, and allows the menu to be opened
- * Increased contrast and correctly anti-aliased labels in several parts of the skin
- * VST3 remembers its zoom setting inside a session
- * Linux hosts with zenity installed will see error prompts, rename prompts, and other UI
- elements available on Mac and Windows
- * Windows mice with 5 buttons can use buttons 4 and 5 (the side buttons) to toggle modulation
- when over a slider or modulation source
- * The Solo UI accurately renders the state of the mixer, showing the single-solo bus.
- * Fixed a bug where modulation sliders could reset to max when dragged far below min
- * "Chan. AT" renamed "Channel AT"
- * Menu includes feedback and the surge website
- * Double clicking on a metacontrol value resets it to the 0 point
- * Fix a problem with non-integral boxes clipping UI element borders on windows at some zooms
- * The control modulation elements respond more consistently to mouse gestures changing values
- * The zoom menu can directly set a default zoom to any value
- * Saving a project in the DAW remembers the zoom state and MPE state across sessions.
- * Added a status area for MPE and Tuning status display and menus
- * Properly respond to OK/Cancel in the file dialogs in several places
- * A menu links to our additional content page.
-
-* Other behavior changes
- * Linux users who create a ~/.Surge directory will use that instead of ~/Documents/Surge; and if no directory
- is present, Surge will create ~/Documents/Surge only if ~/Documents exists.
- * Users can select their own directory for patch and wavetable storage instead of ~/Documents/Surge (although
- user defaults remain in ~/Documents/Surge)
- * Presets with stored values of metacontrols will load those values rather than resetting to zero.
-
-* Code Cleanup
- * A variety of changes to allow the factoring for VCV Rack to continue
- * The Azure-Pipeline for pull requests is more efficient
- * The linux deb file for the binary image no longer references xcb-util0
- * Use non-deprecated Mac APIs for the critical section code
- * Prior wav/sample code removed.
- * MacOS chooses the Application Support directory based on configuration.xml existence
- * Add a python script to scan all presets for a feature
-
-
-
-* Fix two big concerns raised as people used 1.6.0
- * Dynamically allocate wavetable loading memory so that large wavetables no longer crash
- (as fixed below) but small wavetables don't bloat memory on low mem systems.
- * Fix two bugs in the VST3 zoom-dance supression which caused some versions of FL20 on Win to
- misdraw.
-
-* Add new modes to the Sin oscillator by quadrant masking and shifting and pitch doubling.
-* Several code-level changes to clean up warnings and make surge-rack easier.
-* Version 1.6.1.1 also contains a tiny fix which resolves a crash with re-opening zoomed windows in Logic
- which is not in 1.6.1
-
-
-
-* UI Fixes
- * Fix the 'zoom-dance-on-open' problem where VST2 and 3 would show at 100% then zoom up to your default zoom.
- * Disable zoom in Cakewalk
- * Resolve a problem where the wavetable menu was truncated after selecting an item in some cases
- * Find SVG for live for mac version 9 in default location if the bundle is incorrectly set
-
-* Synth and Effects
- * Rotary speaker temposync supported correctly
- * Midi channel 3 works properly in single scene mode
- * Correct crash for very large wavetables by growing wavetable storage size
- * Correct a mis-mapping in VST3 of global parameters (such as FX 1 Send) to the control set
-
-* Code and other changes
- * Multiple changes to enable the surge-rack project
- * Fix a problem with incorrectly truncated memory for configuration on linux
- * Improve linux vst3 packaging script (but linux vst3 still is non-functional)
- * Move headless windows build to cmake
-
-
-
-* Move the entire UI to vector / SVG rendering for elements rather than bitmap
- rendering. This leads to cleaner pixel accurate zooms at all resolutions.
-* Fix a problem with VST3 where pitch-wheel was mis-centered, meaning
- any use of the pitch wheel stuck surge out of tune and some hosts
- (most notably Fruity Loops 20) were always a half step sharp in VST3.
-
-* UI fixes and features
- * Correct a VST3 Mouse Wheel bug where, at some zoom settings, a mouse wheel
- would move an unrelated control slider.
- * Add user-selectable mouse speed settings allowing consistent speed by slider.
- * Add ability to re-scan all user folders when content has changed.
-
-* Code Cleanups, API changes, and crash fixes
- * Fix a crash when midi program changes selected a patch out of bounds (but
- midi program change support is still inadequate)
- * Variety of code cleanups, including support for a headless build
- completely free of vstgui and vstsdk, and code changes to allow surge to
- build the dsp engine in the VCV Rack environment
- * Fix a variety of small memory and uninitialized errors.
- * Add a python script to dump a surge patch to stdout.
- * Add a File/Open dialog in the UserInteractions namespace.
- * Improved developer documentation on builds, git, and more.
-
-
-
-* Fix a major problem in the audio engine where QuadFilterChainState was uninitialized
- occasionally driving the filters unstable resulting in a large audio "Click/Pop" rather than
- sound
-* Fixed a memory leak where surge leaked 3 oscillator references on each voice
-
-* Several improvements to the developer-only headless codebase
- * Headless can write wav files and read midi files
- * Headless can run stress tests
-
-* New Content
- * Several new MPE factory patches
- * New organ wavetables from layzer
-
-* Other Fixes
- * Wavetable and Window navigation arrows no longer pixelated at high zoom
- * Default XML stream fixed so MPE pitch bend default saves properly
- * HPF default set properly in all the init patches
-
-
-
-* VST3 Host
- * The VST3 Host was substantially improved in this version
- * Support note velocity, pitch bend, midi controllers, modulation, and MPE
- * Support DAW automation correctly
- * Show parameter names correctly on Mac
-
-* MPE
- * Mono voices no longer have stuck or mistuned notes
- * Menu allows setting of mpe pitchbend
- * 5 factory patches in the MPE folder
-
-* Wavetables and Effects
- * Add three wavetable packs from user layzer; "vocals" "PPG" and "morph"
- * Users can place their own .wt Wavetables in subdirectories in their User Data Folder and see them in the wavetable menu once surge restarts (macOS: "~/Documents/Surge/wavetables")
- * Third party wavetables are now present at Factory Data Folder (macOS: "/Library/Application Support/Surge/wavetables_3rdparty/")
- * Implement a python script to create and explode .wt files
- * Add an "Init" setting for each effect type
- * Take the chorus effects from "Delay/Chorus" and move them to "Chorus"; rename "Delay/Chorus" to "Delay"
-
-* User Interface
- * Fix a problem with flickering in the Effects area
- * Fix elements which would dissapear on Linux in modulation mode
- * Update LFO TempoSync labels to include 1/128 and 1/256th notes
- * Both right and left button show wavetable menus
- * Fix the FM2 labels (it was previosly labeled "FM3")
- * Change WaveTable "Shape" parameter label to "Morph"
- * Set Controller To... -context menu now accurately shows CC#0 - CC#127 and is split by 20s
- * Fix a VST zoom problem where repeated zoom in and out could make the surge "walk" inside the frame
- * About menu now lets you open a Finder / Explorer for "Open User Data Folder" & "Open Factory Data Folder"
- * Make the about screen use Lato font
- * Supress the ctrl-click-reset gesture in LFO (which meant ctrl-click in step sequencer lost changes)
-
-* Other Changes
- * Rename 32 bit surge dll "Surge_x86" on windows to avoid conflicts
- * Move the AU to the same zoom implementation as the VSTs
- * Add a headless app which plays all patches; build it with cmake
- * "OK/Cancel" dialog Linux (unimplemented) defaults to OK, allowing for patch overrides
- * Fix a problem where locales which didn't use "." as a decimal separator could not parse Surge patches
- * Update to developer documentation and some build tools
-
-
-
-* Fix a major bug with font loading on Windows which would lock resources and hang some systems
-* Implement scrollwheel for all slider controls
-* Sub-folders for EFX Presets
-* Added the Arty Distortion pack (9 distortion preset FX)
-* Added the Arty Reverb pack (4 reverb preset FX)
-* Added the Arty Delay pack (11 delay preset FX)
-* Use Lato on linux as well as mac and win
-* Slow down modulation blink time on Linux
-* Only Shift is used to do swipe moves on sliders
-* Shift-swipe moves dismiss popup properly
-
-
-
-* Platforms
- * macOS: 64-bit AU, VST2, VST3 can be compiled, built and run.
- * Windows: 64-bit VST2, VST3 can be compiled, built and run.
- * Windows: 32-bit VST2, VST3 can be compiled, built and run.
- * Linux: 64-bit VST2 can be compiled, built, and run.
- * Packager (as .msi, .dmg/.pkg, and .deb respectively) for all three operating systems
-
-* Presets and Wavetables
- * Sub-folders in patches become sub-categories in menus.
- * Certain presets would glitch when multiple notes were played, these clicks and pops no longer happen.
- * Drag'n'drop of wavetable (.wt) to now works
- * Drag'n'drop of wavefile (.wav) to Surge now shoots an error instead of crashing
- * Preset and WaveTable subfolders are now sorted alphabetically instead of randomly.
- * Loading of presets works
- * Wavetable loading improved (all extensions capitalisation supported: .wt, .WT, .Wt, .wT - no longer only .wt and others ignored)
- * Pressing +/- next to Patch will select the next (not the 31th) and the previous patch accurately.
- * Pressing +/- next to Category will select the next (not random) and the previous category accurately
- * Wavetable Next/Previous arrows work accurately and allow for scanning through each and every wavetable in the wavetables-folder.
- * Switching patches no longer crashes
- * Storing of patches works - if you write on Name and click on Category - the Name no longer reverts to"previous name". Same with Category, Creator, Comment.
- * If you try to overwrite a patch that already exists, you will get an informative prompt to the tone of "this preset x already exists, are you sure?" (Mac and Win).
- * You can no longer save a preset with no name.
- * You can no longer save a preset into a category with no name.
- * Right-clicking on preset name will show all presets in that category.
- * Checkmarks added to Category and Preset (showing Category and selected Preset)
- * Checkmarks added to Wavetable (showing folder + selected wavetable)
-
-* Zoom
- * Surge supports a zoomable UI on all platforms
- * You can now use + / -, cmd+ / cmd- to Zoom the interface
- * Classic Surge Skin has been re-done to be 1:1 but clearer and higher resolution bitmaps (less pixelation)
- * VSTGui Scaling bugs fixed
- * Maximum zoom, minimum zoom
- * Zoom, resize menu positioning issues fixed for Linux
-
-* Other UI
- * LFO Waveform is displayed correctly
- * Wavetable is displayed correctly
- * All menus are correctly implemented
- * Modulation names can be accurately renamed (Mac and Win)
- * If you bind more than one parameter into a modulation, and remove the first parameter, the Modulation box updates to the correct parameter-name (Bind Cutoff, Bind Resonance, Remove Cutoff = Modulation box no longer says "Cutoff").
- * If you Clear All binds from a Modulation box (Bind Cutoff, Clear All) - the Modulation box updates to "-", no longer stays as "Cutoff" even with no bind.
- * Polyphony count was inaccurate and updated only when the area was clicked, now updates in real time.
- * Polyphony count does not fluctuate while notes are being played
- * Use Lato -font for macOS + Windows
- * Umlauts ä/ö/å are correctly displayed in folder names.
- * Surge now uses a VST3SDK VSTGUI with additional fixes
-
-* Hosts
- * VST2 / AU automation (bind parameters to DAW) learning works accurately (no longer spews forth a correct parameter and a wrong one)
-
-* New Content
- * Added the inigo_kennedy_03 pack (31 presets)
- * Added the Nick Moritz pack (85 presets)
- * Added the Zoozither 2 pack (40 presets)
- * Added the Layzer Vocal pack (32 wavetables)
-
-* Documentation
- * New Website created at http://surge-synthesizer.github.io
- * 1.6.0 Manual has been converted from PDF to HTML - available at http://surge-synthesizer.github.io/manual
-
-* Other
- * Scene Highpass has been set to 6.875 Hz instead of the default 50Hz
- * Typos fixed: EFX presets used to be called Rhytmic, renamed to Rhythmic
- * UTF8 paths supported for wavetables
- * No longer crash if installation if faulty, also warn loudly if installation is faulty
- * Linux screensize detection sets zoom bounds properly
- * More accurate FX sorting and correction of typos in FX names
-
-
-
-
diff --git a/changelog.md b/changelog.md
deleted file mode 100644
index a4031339a6..0000000000
--- a/changelog.md
+++ /dev/null
@@ -1,766 +0,0 @@
----
-layout: page
-title: Changelog
-permalink: /changelog/
----
-
-This page contains changelogs for all release versions of Surge. For the latest developments, we are keeping
-a separate nightlies changelog, which will be merged to this page upon release.
-
-Changelogs for versions prior to Surge XT 1.0 release can be found here.
-
-
-
-
-
-We released Surge XT 1.2.1 on April 30, 2023, and 1.2.2 fixing a small error on May 1,
- and 1.2.3 fixing a single menu item crash on May 4.
-It fixes a few small irritations from the previous version
-and adds a couple of features which we had ready for the next release.
-
-* Headline Changes
- * In 1.2.0 we have corrected a problem with audio input for irregular block sizes, but we warned about this
- situation too loudly and way too often - the warning is now moved to the audio input oscillator
- screen (in 1.2.2; in 1.2.1 it is on every oscillator screen), but the feature is kep
- * Renaming a patch could cause a race condition in our patch database - especially on Linux systems -
- causing a simple rename to show a large number of database lock errors - this is now fixed
-
-* Tuning
- * Pitch slider set to 0 in Absolute mode now tunes correctly with Scala tuning files loaded
-
-* Modulation
- * Fixed pitch bend becoming stuck when toggling MPE mode during held bent note
- * Made sure Portamento set to 0 is strictly 0 in all modes
-
-* UI/UX
- * Clearing FX slot or chains will now disable bypass if a slot or slots were bypassed
- * Dragging a node in MSEG shows a value tooltip
- * Fixed font difference after typein for VKB Tempo field
- * Fixed a problem where Oscilloscope improperly grabbed keyboard focus
- * Allowed envelope retrigger options for Latch play mode
- * Fixed a problem whereby the Tempo field in standalone didn't work in some cases
-
-* Content
- * Added CC0 license to the Init Square template patch
-
-* Infrastructure
- * 1.2.3 contains our last binary distribution of the LV2 format. Going forward
- users needing an LV2 will need to self build. (1.2.1 is missing an LV2).
-
-
-
-
-We released Surge XT 1.2.0 on April 10, 2023. As well as several new major features in tuning, visualization and
-accessibility, this release brings several new developers contributing substantial changes to the project!
-
-* Oscilloscope
- * Surge XT now has a built-in oscilloscope and spectrograph, based on s(m)exoscope from Smartelectronix!
- * Oscilloscope can be opened through right-click menu of the top-right output level meter, or through the main menu, Workflow submenu, or by pressing Alt+O (or Option+O on Mac)
-
-* Tuning
- * Surge XT can now act as MTS-ESP provider (server), allowing the Surge XT Tuning Editor to provide tuning for all supporting clients in a session
- * Remediated yet more edge cases in our internal tuning, including keyboard mapping larger than a scale
-
-* Accessibility
- * We have added Accesibility submenu to the main menu
- * This menu contains "Set all recommended accessible features" option which basically turns on all the good stuff that
- a screen reader user would require
- * Modulation Editor focus is improved when adding a modulation
- * Quantized slider movements (Control+drag) now work with keyboard bindings (Control+up/down arrow) symmetrically
- * There is now an option to export the current patch as text (opens in Web browser) for sharing and quicker patch inspection
- * Improved the Alias oscillator's additive editor for screen readers by making it consistent with other controls and overlays
- * Patch Selector will now select the submenu for the category of a given patch by default
- * Improved name invalidation when arrowing through discrete menu parameters
- * Step Sequencer steps now have manual value typeins on right mouse click context menu
- * Added a keybinding (Alt+0 by default) to announce which tabs are currently selected across Surge's user interface, and which patch is loaded
- * Fixed an issue where Alt+, and Alt+. bindings could get stuck in the Patch Selector
-
-* Plugin
- * Allowed a more flexible set of I/O mappings, which fixed an interaction between a JUCE, Ardour and Surge XT which could silence VST3 plugin in some situations
- * Skipped VST3 context menu extensions in Reason, where they seem a bit dicey still
- * Added parameter name invalidation on patch change to refresh automation displays
- * Correctly implemented CLAP_NOTE_CHOKE
- * Corrected a problem with the virtual keyboard in the CLAP version of the plugin
- * Added appropriate buffering for the audio input for hosts where block size is not a multiple of Surge XT's internal process block size. This stops input buffer
- corruption with non-fixed sized blocks in FL Studio, at the cost of input buffer latency of 32 samples
- * Added a single entry point for note-matches-channel-key-voice-id, allowing the rare case of per-channel polyphonic modulation in CLAP to work
-
-* Surge XT Effects
- * Implemented handling of block sizes that are not multiples of 32 samples more elegantly
- * Default settings for Reverb and Delay effects are more usable
- * Parameters for Airwindows effects will now be properly shown even if no audio engine is running
-
-* UI/UX
- * Filter analyzer now lets you modify the cutoff and resonance simultaneously by simply dragging across the plot, XY pad style
- * Output level meter can now show CPU usage optionally (right-click the level meter to show context menu with options)
- * Alt+click on an FX slot will now clear it
- * Typeins for certain continuously togglable parameters (like Freeze in Nimbus or Knock in Spring Reverb) now work
- * Added a license field to the Save Patch dialog
- * Added an action to initialize patch (not bound to a key by default)
- * Modulation List now has a button to copy all assignmets to clipboard
- * Several virtual keyboard actions are now in the Keyboard Shortcut Editor (octave up/down, velocity up/down 10%)
- * Modal overlays will now have a semi-transparent background (it was solid color before)
- * Fixed jog order for wavetables to match display order in all cases
- * Visual display of modulation state is now going to be correct after using Paste scene option
- * LFO display will now be repainted when automation changes LFO parameters
- * Filter analysis overlay will now be repainted when automation changes filter parameters
-
-* DSP
- * Noise generator can now be dropped to mono in all stereo filter configurations (right click the Noise Color slider)
- * More work done to support process block sizes that are lower than 32 samples - especially fixing a zippering issue in block-wise interpolators used in the mixer
- * Nimbus resampler now works at very high sample rates (or low block sizes)
- * Added clamps to all Twist oscillator parameters, which means modulation can no longer make it fail to produce sounds
- * Added a clamp to Airwindows FX type parameter in order to fix an occasional crash
-
-* Modulation
- * Modulation now works on Unison Detune parameter of Ring Modulator effect
- * Added an option to scale additional LFO outputs by Amplitude parameter (found in Switch to... submenu in modbutton context menu)
- * Fixed step sequencer fast drags and out of bounds drags when holding Control
- * Fixed a bug where a constant MSEG segment with an AEG or FEG trigger would send the trigger on every block, instead of just the first one
-
-* MIDI
- * Added an option to ignore MIDI Program Change messages
- * Clamped MIDI CC/pitch bend smoothers to avoid an infrequent extreme instability under some very rapid (computer-generated) changes
-
-* Other Changes and Bug Fixes
- * Internal dialog titlebar buttons are consistent on macOS (left-aligned instead of right-aligned)
- * Fixed incorrect deserialization of "Precise tuning" setting for comb filters
- * Overlay tearout state is now separately stored for standalone and plugin versions
- * Fixed a minor UI issue where setting up modulation for LFO parameters would blink when pressing the down arrow on the modbutton and switching LFOs
- * Fixed a problem which left extra uninitialized padding at the end of streamed oneshot wavetables (this was not audible, it just looked incorrect)
- * Truncated wavetables no longer add noise to the final imported wavetable
- * Single cycle wavetables had a clamping error which could trigger an assertion in production builds on Arch Linux and other GCC builds with runtime checks enabled
- * Surge XT will now close all open menus when destroying the GUI editor, which means lingering menus longer result in a crash when closing the plugin window
- * Fixed a bug where a .modpreset in the root menu of the Modulation Presets area would crash Surge XT
- * Show a warning and silence output rather than crash in case when Surge XT is incorrectly handed a mono output buffer (which could happen in some Mac configurations with
- Bluetooth headphones)
-
-* VCV Rack Related Changes (and other non-plugin clients of the code)
- * Allowed retriggering from non-zero values for LFO EGs
- * Provided a function to give a frame size to an untagged WAV (not exposed in Surge XT interface yet)
- * Allowed Treemonster to output the pitch and envelope it detected
- * String Oscillator would leak memory if an instance was initialized twice. Surge XT didn't do this, but Rack did
- * Added the ability to compile without Airwindows, SQLLite or MTS-ESP
- * Updated CMake rules for `simde` and JUCE allowing yet more indirection and choice
- * Allowed `SurgeStorage` to be more flexibly configured in context other than Surge XT synthesizer, such as VCV Rack and SUrge XT Effects plugin
- * Added an option to explicitly skip third party wavetable scans
- * Corrected the bug in Twist oscillator's LPG optionally, activated the fix for VCV Rack use only (for now)
-
-* Infrastructure
- * Make build on GCC12 and MinGW on Windows
- * `surge-common` can now build for RISC-V and WebAssembly
- * Continued to modernize the codebase, moving to proper copy and assignment constructors on core classes, rather than `memcpy`
- * Moved many C-style strings to `std::string`
- * Build if an external build system adds AVX flags to the build
- * Added `pffft` as a submodule
- * Python binding updates
- * Updated to pybind 11
- * Exposed `mpeEnabled` and `tuningApplicationMode`
- * Add build wheels for `cibuildwheel`
- * Made `surgepy` an installable Python package
- * Surge XT testrunner will fail quickly and explicitly if resources are not available
- * Added an API for `SurgeImageStore` to get a `JuceImage` for JUCE-specific uses
- * Lots of small warning cleanups across the codebase
- * Non-parameter sliders can now have tooltips
-
-* Content
- * Replaced factory templates with explicitly CC0 licensed patches
- * Updated the LinnStrument MPE patches
- * New third party wavetables from A.Liv
- * Fixed Init FM2 and Init Square templates so that they don't have filters bypassed
- * Cleaned up Lua syntax in Formula modulator tutorials
-
-
-
- We released Surge XT 1.1.2 on November 1, 2022.
-
- The primary reason for this point release is that it contains a fix for a problem in recent versions of Ableton Live, where Surge XT's sliders
-and Live's VST3 automation conflict. If you have experienced jumpy or inconsistent sliders in Live, you should update Surge XT!
-
-Additionally, 1.1.2 contains these incremental changes:
-
-- Plugins
- - Fixed inconsistent and jumpy sliders in Ableton Live, due to inconsistent VST3 value setter messages, which recent versions of Live would send
- - CLAP: Correctly labeled a number of parameters which are not polyphonically modulatable as such
- - CLAP: `CLAP_NOTE_ON` events with velocity of 0 will now act as note offs
- - CLAP: Defensively support the CLAP parameter cookie being `nullptr` without crashing
-
-- MIDI
- - Added an option for using MIDI channels 2 and 3 to play individual scenes, or not (enabled by default)
- - Clearing current MIDI mapping will now also clear it from the DAW session state
-
-- DSP
- - Processing block size is now a compile-time constant which can be a power of 2, but larger than 4 (Surge XT remains at block size of 32 samples)
- - Added the Absolute option for Combulator voices 2 and 3, so that their frequencies can be set as absolute values in Hz, unlinked from voice 1
- - Modulating global volume will now work (but be careful not to modulate too much!)
-
-- UI/UX
- - Fixed a crash in the FX grid which occured on some Linux systems
- - Muted oscillator waveforms will now appear semi-transparent
- - Fixed the always-on-top pin button for the torn out overlays not being visible on macOS
- - Waveshaper effect parameter group names clearer
- - Added an option to display CPU load as a number in the VU meter (Menu > Value Displays)
- - Middle-mouse click on Patch and Category previous/next buttons will load random patch (regression from Surge 1.9)
- - Patch comments tooltip will now appear more quickly
- - Added a few accessibility labels and annoucnements we've missed, including the About screen
- - Holding Shift when saving a patch will force-overwrite the patch (bypasses the dialog asking if you want to overwrite the patch)
- - Shift-clicking in the main frame to open the main menu will now show Developer submenu
- - We will now display skin's category in the About screen, if it's defined in the skin's XML file
- - Restored the CLAP logo to the About screen of the Surge Dark skin
-
-- Content
- - Added LinnStrument/MPE optimized patches from Roger Linn and the LinnStrument community
-
-- Infrastructure and work to re-introduce Surge XT in VCV Rack
- - Fixed a problem where an invalid patch in the user search path could in some cases crash the patch database scanner
- - Modified CMake so that Surge XT can be used as a sub-library of another project
- - Made `surge-common` buildable without building all of JUCE, instead cherry-picked a few JUCE dependencies
- - Made `surge-common` build without Lua
- - Provided a from-disk `windows.wt` loading strategy for VCV Rack
- - CMake now exports a `compile_commands.json`
-
-
-We released Surge XT 1.1.1 on August 25, with a collection of small changes and improvements which we found
-either late in the 1.1.0 cycle or after release. We recommend all users upgrade to 1.1.1.
-
-* Regressions from 1.0.1 and Breaking Changes
- * Restore the correct operation of the Airwindows AD Clip effect
- * Waveshaper effect incorrectly scaled the input level, which means that the simple test of sine -> voice level waveshaper had a different response
- than sine -> waveshaper effect. Remediated this by correcting the input scale on Waveshaper effect. This may result in increased output level of patches which use the Waveshaper effect
-
-* Performance and DSP
- * Added a JUCE patch which allows sample-accurate MIDI CC and pitch bend messages in VST3 plugin (especially important with long block sizes)
- * Set the velocity of reused voices correctly in monophonic play modes
- * When "Continue from current level" envelope retrigger option is used with Mono FP play mode, portamento would not reset when a gap between two played notes occured (non-legato)
- * Revert a set of integer modulation changes which were nascent in 1.1.0, but which have also caused pops, clicks and incorrect unison settings when changing filter, voice, and oscillator types while there were active voices playing
-
-* Accessibility
- * The name of the accessible overlay for the FX slots contains the effect type name, as well as the slot name
- * Correctly labelled Previous and Next wavetable jog buttons (they were backwards)
- * Deactivated additional accessibility announcements (oscillator name, patch name, etc...) by default, since an unknown bug makes them speak for Windows users, even with accessibility features of Windows turned off
- * Correctly named the "Arm/Disarm" buttons on the modulator buttons when states change
- * Step sequencer announces when the value of a step is on an exact 1/12th for pitch-based sequencing
- * The wavetable info (available in wavetable display's context menu) is now accessible on Mac
- * Changing the LFO type will now send an accessible notification to update the screen reader state
- * Effects routing grid now properly handles key presses (Shift+F10), and
-
-* UI/UX
- * Filter 2 Offset mode, when copied via "Copy scene" command, now properly sets up the target's Filter 2 cutoff
- * The Filter overlay now correctly uses Filter 2 Offset and Resonance Link options when drawing the frequency response curve
- * Any keystrokes pressed while the Patch Browser is scanning content are now handled by the browser itself, avoiding accidental forwarding of keystrokes to the DAW
- * Added a new option to the Patch Browser context menu: "Reveal in Finder / Show in Explorer", for quick drag and drop sharing!
- * We will now correctly set default zoom to 100% when no default zoom is set
- * Mousewheel on all the various previous/next jog buttons will now scroll through the relevant data (regression from Surge 1.9)
- * Since we now have action history (undo/redo), we will not prompt the user by default when loading a patch while the current patch is dirty
- * Right mouse click on the Wavetable menu will now wavetalbes for just the currently selected folder
- * When loading a patch, Surge will try to locate the loaded wavetables in the wavetable menu, enabling previous/next jogging, correct checkmark display, etc.
- * Virtual keyboard velocity now always spans 1 ... 127 when clicked via mouse
- * Added a new keyboard shortcut (default Alt/Opt+A) to arm and unarm modulators, which also deprecates the Workflow > Tab Key Arms Mmodulators option (so we won't be showing it anymore)
- * Renamed legacy filter subtypes more logically to Standard/Driven/Clean (instead of Clean/Driven/Smooth)
- * Paste with Modulation option is now undoable
-
-* CLAP Support
- * CMake install rules for Linux will now install CLAP flavors, even if you don't use .deb or RPM
- * Mac installer will now have CLAP selected by default; also, all options are now alphabetized
- * paramsFlush() implementation for CLAP is now safe to call when processing is happening, even though this probably shouldn't happen
-
-* Infrastructure and Miscellaneous
- * Moved build infrastructure to Ubuntu 20 LTS, since Azure is deprecating Ubuntu 18
- * Replaced `static const auto one = _mm_set1_ps(1.0)` with just `const auto one =` to avoid a static lock (thanks to The Audio Programmer Discord community for catching this!)
- * Moved `HalfRateFilter` to `sst-filters` library; it is shared between Shortcircuit and Surge
- * Spupress mousewheel gestures during mouse drags to avoid nested begin/end edits with Mac trackpads
- * Changed Mac signing in order to allow Formula modulator to work in standalone on macOS 10.14
- * Mac installer won't allow installing to a non-system drive now
- * Fixed a crash when closing the plugin window in REAPER while the Patch Browser menu was open
- * Reviewed various other timers and delayed objects in order to avoid crashes similar to the above one
- * Correctly read XDG defaults so that XDG data for DOCUMENTS_HOME correctly follows the specification on Linux
- * Fixed a problem where Surge would enter an infinite loop when the stored key mappings would advertise a keymapping for an unknown function
-
-* Content
- * New wavetables from Philippe Favre
- * Updated Formula tutorial "09 Example - Crossfading Oscillators"
-
-
-We released Surge XT 1.1 on August 3, 2022. It adds several big new features, including edit history (undo/redo), support for the new CLAP standard, expanded and improved support for accessible interfaces like screen readers, several new DSP and voice management features, and much more.
-
-* Action History
- * Surge XT now supports undo and redo for all actions (even loading patches!) - use either the common Ctrl+Z/Y keyboard shortcuts, or buttons on the GUI
- * If a patch has been modified, it will be marked as dirty and an asterisk will be appended to the patch name
- * By default, attempting to load a different patch will prompt the user to confirm the loading action in order not to lose your patch modifications
- * This can be disabled in Menu > Workflow
-
-* CLAP Support
- * CLAP is a new standard for host-plugin interoperability developed by a group of open source and commercial developers. Surge XT is an early adopter and a test case for CLAP. You can read more about CLAP at https://cleveraudio.org/
- * Surge XT implements - exclusively in the CLAP version - the non-destructive modulation (both monophonic and polyphonic!) and note expressions!
-
-* Patch Navigation
- * Patches without categories are displayed in their own category in the Patch Browser
- * Favorites are now also displayed in the Patch Browser, in User Patches section
- * Much improved Find Patch feature!
- * Search results will now stay open by default after loading a patch, so you can quickly navigate through this list
- * Ctrl+click or Ctrl+Enter will load the patch and close the search results
- * There is now an option in Menu > Workflow to bring back the old Surge XT 1.0 behavior, if you so wish
- * Magnifier button now acts properly as an on/off toggle button
- * Your last search term is remembered after leaving the Find Patch mode
- * Search results will now open immediately when entering the Find Patch mode, instead of only when you start typing
-
-* Accessibility
- * Our screen reader community gave us amazing feedback on Surge XT 1.0.1, leading to several changes, improvements and bugfixes
- * Using the announcement API, we read several actions, including patch and favorites changes
- * Fixed several components (oscillator copy/paste, scene copy/paste) which used mouse position improperly to find the source and target
- * Overlay buttons (Tuning, Mod List, MSEG Editor, Formula Editor, etc.) respond properly to Enter, Shift+F10, and so on
- * Step sequencer rotate buttons are now exposed, and order of step and trigger parameters improved
- * Mod List parameter names and accesibility works well
- * Discrete parameters represented as menu buttons in the UI are now using the combo box element instead of a slider in screen readers
- * Effect tab order is now in display order, not internal storage order
- * Every text entry field has a correct focus-restoration target when dismissed
- * The patch search typeahead supports accesible navigation (fully on macOS and with narration workaround on Windows)
- * New Workflow menu options allow you to expand modulation menus to have specific edit/clear/mute submenus, rather than compound multi-click menus
- * Introduced a mode where accesible key presses follow the mouse focus, rather than keyboard focus
- * Many other small changes and fixes
-
-* New Overlays
- * Keyboard shortcut editor:
- * Allows freely changing or disabling any of the available keyboard shortcut actions offered by Surge XT, in case there is a clash with keyboard shortcuts reserved by your DAW
- * Filter Analysis:
- * This new overlay will show frequency response curves for Filter 1 and Filter 2, in realtime as you change filter cutoff, resonance and mixer pre-filter gain parameters
-
-* DSP Changes
- * String oscillator improvements:
- * Various Stiffness filter models which provide better tuning at high stiffness values. "Keytracked and pitch compensated" model is the new default
- * 2x oversampling option, which improves timbral quality for high pitched notes
- * Choose between three interpolation modes, which can limit energy loss in exchange for accuracy at high frequencies
- * Remember, right-click everything in Surge! These options are in context menus of Exciter Level and Stiffness parameters
- * Fixed an issue with Twist oscillator's LPG onset, creating occasional glitches in certain oscillator modes
- * Initial audio buffer is no longer filled with denormal noise - instead we rely on flush-to-zero (FTZ) flag in our processors
- * Sample rate is now a property of individual Surge XT instances, rather than global for all Surge XT instances - allows correct behavior when only certain instances are oversampled in hosts that provide this facility (for example, Reaper)
- * Fixed a crash when Reverb 2 was used at a very high sample rate
- * Implemented a small fade out when executing All-Sounds-Off
- * Reset filters on scene release and All-Sounds-Off - by doing so, we have removed a click on transport start in Logic Pro
- * Absolute unison mode now works for Alias and Modern oscillators
- * Scene highpass filter now has slopes up to 48 dB/oct (right-click option)
- * Output meter falloff is now sample rate independent (previously the meter would have a faster falloff on higher sample rates)
- * Fixed a bug where simultaneous chords played on the exact same tick created voices well over the polyphony limit
-
-* Play Mode Updates
- * Both Poly and Mono modes get expanded envelope and voice triggering modes, accesed from the right mouse click context menu on the Play Mode parameter
- * In Poly mode you can choose whether repeated strikes of the same key create a new voice or retrigger the currently playing voice (if there is one)
- * In Mono modes, you can select whether the envelopes (AEG and FEG) retrigger from zero, or from their current level if a voice is playing
-
-* Effects
- * Added multiple clipping options for the feedback path in the Delay effect (right-click the Feedback parameter)
- * Added option to extend the Delay Feedback parameter range, allowing negative feedback
- * Implemented the Tone filter to the Phaser effect (same as the one from Combulator)
- * Added new AirWindows effects: Cabs, Chrome Oxide, Dub Sub, Dub Center, Fire Amp, Glitch Shifter, Nonlinear Space, Pafnuty, Power Sag, Tape Dust, To Vinyl
- * Fixed a bug which could make Nimbus occasionally distort, especially in Looped Delay mode (applies to the Surge XT Effects plugin as well)
- * Spring Reverb's Decay parameter and Flanger's Count parameter now have a more accurate display and value typein behavior
- * Dragging an Airwindows effect around the FX routing grid no longer resets its parameters
- * Delay's Feedback parameter can now be extended, allowing negative feedback
-
-* Modulation
- * All LFOs now have 3 outputs: the signal multiplied by the LFO EG, the raw LFO signal alone, and the LFO EG alone
- * LFO attack will now start after setting up voice level modulators - this enables modulating voice LFO amplitude with velocity, which didn't work before
- * The range of the fractional part of the LFO phase is supposed to be strictly `[0, 1)`, excluding the maximum, whereas before it could hit exactly 1, which is not supposed to happen
- * Fixed S&H and Noise LFO types not properly freerunning for Scene LFOs
- * Removed a check which improperly changed song position with DAW looping enabled and transport not running, making LFO freerun mode not working properly in some cases
- * Fixed cases where deleting nodes in MSEG LFO mode could lead to a broken envelope
- * Modulation List can now launch a value edit typein with the pencil icon
- * Step Sequencer's Deform slider now has deform types, which brings Shortcircuit's LFO Smooth method to Surge
- * Adjusted the S&H modulator so that the initial state is random, leading to less uniformity in the first few phases
- * Changed the order of voice initiation and LFO EG Attack in Latch mode so a latch more accurately represents the voice
-
-* Microtuning
- * Tuning Editor now contains the ability to create even division scales and three-note specified KBM files directly
- * Fixed a problem where MPE pitch bend in MPE mode with MTS enabled was using the wrong tuning system
- * "Use MIDI Channel for Octave Shift" tuning mode no longer conflicts with MPE mode
- * The Interval Between Notes display now makes it easier to see which interval you are playing
-
-* Larger Bugfixes
- * We initialized the audio processing state too early, which in some cases could result in the patch resetting when loading the plugin in Logic Pro
- * We incorrectly handled patch loading in the startup path of Reaper, meaning loading a Reaper session with disabled Surge track(s) would never load the
-state correctly, and subsequently resaving without activating the track would save the incorrectly initialized state
-
-* Surge XT Effects Plugin
- * Complete accessibility review
- * Implemented UI resizability through corner drag, menu and keyboard shortcuts
- * We now correctly report parameter names to host for the VST3 plugin
- * Double-clicking a parameter will now reset it to the default value
- * Added an option to run the plugin in zero latency mode - useful if your DAW can guarantee sending fixed block sizes to the plugin
- * Fixed Effect type menu not repainting during host automation
- * Airwindows Type parameter is now streamed and unstreamed properly, so that projects don't break if we add new Airwindows effects
- * Fixed a problem with integer streaming, which means that, going forward, changes in integer param ranges in Surge will not break Surge XT Effects sessions
-
-* UI, UX and Skin Engine Changes
- * Royal Surge skin has been updated to fully match Surge XT feature set!
- * Touchscreen mode improvements, which includes automatically using the Exact mouse sensitivity mode and long press support
- * Typein for FM3 oscillator's Ratio parameter is correctly read when typing in a modulation amount
- * Typing an out of range value for a parameter or modulation amount typein will now report the appropriate minimum or maximum value
- * Audio In sliders that are unused will now appear deactivated (semi-transparent)
- * Ctrl+click on a currently unselected LFO modbutton will bring that modulator to focus in the lower area (same as clicking the orange arrow, but now you have a larger hitzone to do it)
- * More consistent FX slot mouse gestures:
- * Double-click on FX slots will now bypass them (previously this was on right-click)
- * Right-click now pops up the more usefulFX presets menu
- * Single click works as it always did
- * The state of "Store Tuning in Patch" checkbox in the Save Patch dialog is now remembered after cancelling the dialog
- * 3D waveform display for Wavetable and Window oscillators - toggled by clicking the oscillator display (or via right-click context menu)
- * Context menus will now scale properly on Windows HiDPI displays
- * Add contextual help links in severeal places which were missing it
- * Context menu colors can now be set in skins
- * Added option to use OS dark mode setting for context menu colors, which overrides skin-defined colors
- * Skin engine can now override the global font used by Surge XT
- * Added skin connectors for placing the new overlay windows (filter and waveshaper analysis)
- * The entire Classic skin (including hovers and tempo sync assets) is now contained inside the binary
- * Added pitch bend and modulation wheel widgets to the virtual keyboard
- * Correctly constrain plugin window drag-to-resize events
- * Waveshaper Analysis overlay now uses the actual Drive parameter for a realtime overview
- * The Modulation List now has new filtering options - by scene and by target parameter's control group
- * Most tearout windows can now be freely resized
- * Double-click on torn out window's title bar reverts to the default size
- * Improve error message to be clearer in the (very rare) situations where the patch database is locked by two Surge XT instances
- * The About-screen-as-skin-layout-grid feature is back! We completely forgot to port it over from Surge 1.9!
- * Fixed a bug where the Zoom menu wouldn't allow setting default zoom level, if default zoom level wasn't at all defined
- * Wavetable oscillator's Morph parameter displayed wrong units in continuous and discrete modes
- * Mute and Solo buttons no longer overlap, which created uncertainty in which parameter actually gets clicked
- * Pressing the F1 key will now open the relevant part of the manual for currently focused (or hovered) parameter
- * Added Sustain button to the virtual keyboard
- * Make PNG loading lazy, which resolved sporadic crashes with skins that use PNGs, like Royal Surge
- * Improve Alias Harmonics editor mouse handling when mouse cursor is out of editor's bounds
- * Imporved tearout behaviour, adding an Always On Top pin button in the title bar
- * Patch comment popup width will dynamically adjust its width to fit longer comments now
- * Mousewheel in FX and Oscillator menus properly advances through submenus
-
-* Other Changes and Various Fixes
- * Polyphonic aftertouch is now properly processed per MIDI channel
- * Removed the Activate Scene Outputs option, which is not needed anymore due to JUCE's plugin wrapper handling
- * Favorites can now be exported and imported via .surgefav files (in essence these are CSV files with a new extension)
- * Correctly report VST3 bypass parameter and implement it in our JUCE processor
- * This should allow FL Studio's Randomize feature to stop disabling audio, and allow other VST3 hosts to bypass Surge XT as expected
- * Modbutton orange arrow state was incorrect on selection (but correct on drag gestures)
- * Fixed a bug when dragging FX slots with modulation assigned
- * Dropping a modulator on an overlay would modulate the slider underneath the overlay
- * Fixed a case where copying a modulation could duplicate a modulation routing
- * With the move to VST3 plugin bundle file format, Windows portable installs broke, so now they work again!
- * Drag and drop in the presence of overlays could corrupt Z-order of things
- * "Download Additional Content" link in the main menu didn't work, so now it works again!
- * "Absolute" option was not preserved when copying oscillators, scenes, etc.
- * We're now sending automation events from several widgets which didn't do that, leading to inconsistent automation in Cubase
- * Special characters like `'` no longer break the SQLite search. No [little Bobby Tables](https://xkcd.com/327/) here!
- * WAV chunks must have an even number of bytes, so we've fixed our WAV parser for the case when the size is odd, preventing incorrectly reading the file - which could happen with certain metadata chunks
- * Upgraded MTS-ESP library, which allows MTS-ESP to work on Linux
- * Tuning Library can now deal with fractions up to 2^64 for numerator and denominator in SCL/KBM files
-
-* Infrastructure and Code Changes
- * We're making a substantial effort to move critical parts of Surge XT into libraries that other projects can use
- * `sst-plugininfra` provides XML, filesystem, user preferences and keyboard shortcut management, CPU information and more
- * `sst-cpputils` provides a collection of C++17 extensions we use a lot
- * `sst-filters` provides all Surge XT filters in a header-only set of templates - used as a submodule now
- * `sst-waveshapers` provides all Surge XT waveshapers in a header-only set of templates - used as a submodule now
- * Test case runtime substantially improved
- * Use `std::thread` everywhere for threading
- * Lots of improvements for the Windows installer
- * Reinstated Windows portable mode by checking recursively for SurgeUserData etc. folders
- * Use 7Zip for packing Windows ZIP files in the pipeline
- * Linux 'plugins only' archive is now a .tar.gz
- * The `.deb` file now contains icons and an application startup for Linux
- * Added CMake options to skip ALSA and/or VST3 builds
- * Various changes to support JUCE 7 builds (although our production build is still using 6.1.6 until further notice)
- * Fixed comments and documentation typos across the codebase
- * We now provide a cleaner compile-time error if building on a system other than x86 or ARM
- * Added ability to build a slightly reduced `surge-common` without JUCE or Lua (for the upcoming Surge Rack XT project)
- * Renamed the `surge-py` target to `surgepy` to avoid a `-`, which causes load time problems in Python
- * Made sure to cleanly join the background patch loading thread on exit if it is still running or if another patch load begins
-
-* Content
- * Updated Slowboat patches
- * Updated John Valentine patches
- * New wavetables from Quonundrai
- * New wavetables from A.Liv and Exocat
-
-
-
-We have the best testers in the world, we really do. Surge XT 1.0 was nearly 1000 GitHub commits, almost every
-part of the code changed, and our beta testers discovered almost every bug before we released. And we had
-a lot of them. Those same testers found a few more bugs after we released, though, and a couple of them
-were serious enough that we decided to collect up the first fortnight of finds and fixes and do a small point
-release to give us time to get XT 1.1 together.
-
-- Larger Bugfixes
- - The Formula modulator vector output would crash or go into an infinite loop with 8 or more output values. Fixed
-to report a single error message when we have more than 8 outputs
- - Fixed a crash when using vector modulators to modulate an FX slot and drag and drop to reordering effects
- - On macOS, the menu outline box was not painted, making menus visually confusing for many users.
-Fixed to have parity in how menus look vs Windows and Linux
- - Fixed a set of issues with the Windows installer which we found once more people actually ran the installer on various systems
- - If two MIDI events had an identical timestamp, the second and all subsequent MIDI events in that block would push
-to the end of the block causing potential block-length synchronization errors
- - The introduction of JUCE created a bypass parameter for VST3 plugins, which in some cases was improperly automated (especially in the FL
-randomizer). While we wait for a longer term fix, we made Surge XT continue to render when bypassed
- - While most of our help links pointed to the XT manual, the actual Menu > Manual link pointed to the old manual!
-
-- Smaller issues and regressions from Surge 1.9
- - In touchscreen mode, always use Exact mouse sensitivity option
- - When modulating FM ratios, use a correct result if a typein retains the "C: " prefix
- - User patches without categories will now appear in an uncategorized submenu (instead of not at all)
- - ZIP files for Windows builds are now created with 7zip, so that Explorer can now unpack them without any 3rd party unpackers
- - Rename the Tutorials skin category properly
- - The filter cutoff slider wouldn't visually reset when using the Reset to Keytrack Root option
- - MSEG draw mode was incorrectly remembered across different MSEG modulator instances
- - Dark skin had a graphical error in filter configuration graphic
- - Favorites and Search icons were added to the Dark skin
-
-- Added a couple of XT 1.1 features which were harmless to merge
- - Improved our testcase runtime
- - Removed some OS specific APIs for thread handling now that we are on C++17
- - If a multi-channel .wav file is loaded as a wavetable, we will load only the left channel instead of erroring out
- - Ctrl-click on a modbutton will now arm a modulator without selecting it
- - Bring back certain patches from Luna that were in Surge 1.9
-
-
-
-Our next release of Surge - aptly named Surge XT - made a fundamental architectural break with prior
-Surge versions (up to 1.9), porting to the JUCE framework and changing the plugin ID, while
-adding a variety of exciting new features. Here's what's new!
-
-- Plugin Names
- - New names are Surge XT and Surge XT Effects
- - Similarly, the user data folder is now named Surge XT
- - Please consult the manual for a migration guide from Surge 1.9 or earlier (work in progress)
-
-- Port to JUCE
- - There are innumerable changes, including basically a rewrite of the entire plugin layer
- and re-implementing all of the widgets and UI components
- - Although we don't distribute an LV2 plugin, JUCE-LV2 port project branch allows Linux
- users to build LV2 if they wish, and it has almost all the features of the
- VST3 version (excluding the features VST3 supports and LV2 does not)
- - Port to JUCE also allows us to provide a standalone version of Surge XT
-
-- Patch Navigation
- - Implemented a system to mark patches as favorites
- - Click the heart button in the Patch Browser to tag a favorite
- - Right-click it to see all your favorites in a menu
- - Implemented a searchable database for all patches
- - Click the magnifier button in the patch browser and type away!
- - User can now choose a default patch that will be loaded upon instantiating Surge XT
- - Patch comments can span more than a single line now, and they also show up in a tooltip when you hover above the Patch Browser
-
-- Modulation
- - New Modulation List overlay
- - Provides a complete overview of all assigned modulations in the patch
- - You can filter the list by source or by target
- - You can add new modulation assignments using the Source and Target menus
- - You can mute or remove modulations, too
- - Modulation assignments in context menus now look nicer and show additional icon-based buttons with options (remove, mute, edit)
- - Added Copy and Paste with Modulation options to modbutton context menu
- - Formula modulator
- - As promised in Surge 1.9!
- - Enabled by embedding LuaJIT in Surge
- - Formula modulator enables you too many things to list here, so we have added a number of tutorials
- to showcase at least some of the things that are now possible
- - Vectorized/indexed modulators
- - Modulators can now provide more than one output simultaneously
- - Currently, modulators which employ this feature are Formula, Random and Alternate
- - Modbuttons can now be drag-and-dropped everywhere (without holding Control/Command like in Surge 1.9)
- - You can now temporarily mute modulations, either via context menu, or via the new Modulation List
- - Added a second deform mode for S&H LFO type
- - MSEG can now trigger FEG and/or AEG on each node, via context menu options
- - LFO Shuffle parameter can now be extended to allow bipolar shuffle (useful for adding swing in the step sequencer)
- - MSEG Editor now supports lasso/marquee node selection (Shift+left mouse drag )
- - LFO EG can now be deactivated. Right-click any of the DAHDSR sliders
- - Scene-level modulation sources can now independently modulate global parameters (any FX parameter, for example).
- Previously, only Scene A scene-level modulators were applied
- - Fixed a bug where Scene LFOs were triggered at the outset, which almost never mattered unless you modulated something latched, like a noisy FX
-
-- Accessibility
- - JUCE 6.1 added support for accesible interfaces, allowing screen readers and other navigation tools to work
- - So we made use of that, resulting in Surge XT sporting a comprehensive accessibility support
- - While most things are accessible, there are still some things that could be improved, which will be coming in Surge XT 1.1
-
-- Keyboard Shortcuts
- - There are numerous new keyboard shortcuts for both the plugin and standalone (optionally enabled in Menu->Workflow)
- - When pressing any of the below shortcuts for the first time, Surge will prompt for enabling the option automatically, with option to remember your choice
- - Num +/Num - zooms in/out by 10%, Shift+Num +/Num - zooms in/out by 25%, Shift+Num / resets zoom to default
- - Up/Down modifies focused parameter value, Home/End modifies the value to minimum/maximum, Del returns to default
- - Shift+Left/Right changes to previous or next patch category
- - Control/Command+Left/Right loads previous or next patch
- - Control/Command+S opens the Save Patch dialog
- - Control/Command+F starts patch search typeahead
- - Alt+F to toggle setting the patch as favorite
- - Alt+E to toggle the appropriate LFO editor overlay (MSEG or Formula)
- - Alt+T to toggle the new Tuning Editor overlay
- - Alt+M to toggle the new Modulation List overlay
- - Alt+D to toggle the debug console
- - Alt+K to toggle the new Virtual Keyboard
- - Alt/Option+1/2/3 to toggle between the oscillators
- - Alt+S to toggle between the scenes
- - F1 to open the manual
- - F5 to refresh the currently loaded skin
- - F12 to show the About screen
-
-- Microtuning
- - Tuning interface from Tuning Workbench Synth is now implemented in Surge XT!
- - Right-click the Tune button and choose Tuning Editor, then explore! It's even better than in TWS, containing lots of new views
- - Several smaller microtuning changes:
- - Voice skip in KBM with 'x' works
- - Added channel-per-octave mode for controllers such as Lumatone
- - Added extendability to the pitch bend range parameter, which enables fractional pitch bend ranges
- - In 'Apply tuning at MIDI input' mode, this results in frequency.cents, while in 'Apply tuning after modulation' mode this results in keys.cents
- - Pitch-based parameter type-ins allow entering values as fractions (for example, right-click Osc 1 Pitch, Edit Value, then type 9/8, you will get 204 cents)
- - There are now options to retain (lock) the current tuning and/or mapping when loading patches. Find them in Menu->Patch Defaults->Tuning on Patch Load
-
-- Filter Section
- - Added a new Tri-Pole filter type (inspired by Ian Fritz's Threeler filter)
- - Greatly expanded the waveshaper section
- - Increased the number of waveshaper types from 5 to 43!
- - Harmonic extension, noise, trigonometric wavefolders, classic wavefolders, and much more
- - Filters and waveshapers are now deactivatable by double-clicking the filter type icon/waveshaper curve, or a right-click context menu option
-
-- Effects
- - Surge now has 4 send, scene insert and global insert effect slots!
- - Added a new Clear Reverb parameter to Airwindows Infinity effect
- - Added a new Spring Reverb effect from Jatin Chowdhury
- - Waveshaper is now available in the FX section as well
- - Added a new Mid-Side Tool effect, which enables transformations from stereo to mid-side and back, with additional filtering for mid and side
- - Added a new Precision option to the Tape effect (right-click any of Hysteresis section parameters) - it also affects CPU usage of the effect!
- - SIMD vectorization improvements for the Tape effect
- - Added a highpass filter applied to the sides of the signal to the Conditioner effect
- - Added Airwindows Mackity, MackEQ and Chamber effects
-
-- Functional Differences vs Surge 1.9
- - Surge XT modifies where user content is stored
- - Surge XT uses a different folder for user content, with the name changed from `(Documents)/Surge` to `(Documents)/Surge XT`
- where `(Documents)` is the path to your OS-specific Documents folder
- - Surge XT forces content type into subfolders - `FX Presets`, `Patches`, `Wavetables` etc...
- - When you start the plugin for the first time, it will create an empty directory structure for you. You can simply copy your content from
- your Surge folder to your Surge XT folder
- - Note that, just like in Surge, all patches and wavetables need to be categorized. So a patch which was at `Surge/Basses/Plunky.fxp` needs to be
- moved to `Surge XT/Patches/Basses/Plunky.fxp`
- - Fixed a couple of bugs which means Surge XT will behave differently than Surge 1.9 in minor ways:
- - Mono FP play mode had a bug where the second to last held key would sometimes not trigger portamento to the last key
- - Twist oscillator's LPG incorrectly had its delay time sustained by about 4x in non-FM mode. This is now fixed, but patches which
- use Twist's LPG will need to be tweaked in order to adjust their delay
- - Surge XT Effects plugin now works with block sizes smaller than 32, which also fixes its behavior in FL Studio
-
-- Other Changes and Various Fixes
- - Window oscillator now has a Continuous Morph option, matching the Wavetable oscillator in behavior
- - Fixed gain and clipping math in the Ensemble effect
- - Global volume can now be saved and restored in newly created patches
- - All Notes Off and All Sounds Off MIDI messages are now properly supported
- - Fixed an initialization bug in some of the waveshapers used in Distortion effect, which could result in
- uninitialized audio and subsequent blowups
- - Fixed a bug which could cause Airwindows effects to crash when switching patches quickly
- - Fixed a bug where Polyphony set above 61 caused a voice stealing error, if voices went above 64
- - Fixed a bug where certain patches using the Window oscillator showed incorrect value for Formant parameter
- - Fixed a memory initialiation bug in Surge XT Effects plugin which would sporadically crash the plugin
-
-- UI, UX and Skin Engine Changes
- - Cleaned up and reorganized the main menu
- - Any overlay can now be torn out in a separate window (and reinstated back inside Surge XT window)
- - Overlays can now be moved around Surge XT's window
- - By default we no longer bind the TAB key to arm modulations (middle mouse click will still work!).
- If you want to restore this behavior (which can conflict with focus order and other accesibility
- features), Menu->Workflow contains an option to do so permanently
- - Added an option for appending the original patch author's name in parentheses when modifying the patch (defaults to on)
- - Skins can now include True Type fonts for skin-specific fonts. See Tutorial 10!
- - Skin version 1 is now deprecated and unsupported
- - A bunch of new skin color definitions - make sure to visit Menu->Skins->Skin Inspector with Surge Dark skin loaded to learn what's new!
- - Patch name, Category and Author fields in the Patch Browser will automatically adapt when displaying long patch names in order not to overlap
- - Added the Waveshaper Preview overlay (click on the waveshape button below the waveshaper type menu),
- which shows how would currently selected waveshaper curve affect a fullscale sine wave input
- - Added a QWERTY virtual keyboard (on by default in standalone, off by default in plugin)
- - Option to toggle the virtual keyboard is in Menu->Workflow
- - 'Audio Output Unavailable' message now overrides the output level meter instead of darkening the whole UI
- - File open dialogs for patches and tunings now properly remember your last visited folder
- - Macros and LFOs (!) can now be renamed by double-clicking on their respective slots (or through a context menu option)
- - Double-click on an FX slot in the FX grid will now toggle bypass
- (right-click still works, but will change functionality in XT 1.1 to show the FX preset menu!)
- - Alt/Opt+drag "rubberband edit" of sliders is now also possible on macros
- - When using keyboard shortcuts for loading prev/next category or patch, a dialog will pop up asking for confirmation to prevent you from losing the current patch,
- with option to remember your choice
- - Hovering over a slider will now show the parameter value by default - this can be turned off in Menu->Value Displays
- - You can now drop a `.surge-skin` folder onto Surge XT's interface and it will be installed automatically
- - You can now drop a `.zip` file onto Surge XT's interface and it will extract patches, FX presets, skins etc... into your user area
- - We now have an online [skin library](https://surge-synthesizer.github.io/skin-library), available from Menu->Skin Library
- - Added menu actions to Patch Browser to delete and rename a patch (not applicable to factory patches)
-
-- Infrastructural and Code Changes
- - Surge XT had a massive investment in our CMake and code layout, with the source being far more organized and our CMake files being way cleaner
- - Upgraded to C++17 on all platforms
- - Surge XT can now run without the factory directory succesfully
- - A number of cleanups in the InnoSetup installer scripts
- - Startup files (configuration.xml and windows.wt) are included as binaries in the plugin
- - Removed an unused dependency on `libmidifile`
- - Removed enormous swaths of code which was unused in Surge, thanks to JUCE and other cleanups
- - Started using constrained enumerations for user default settings
- - Delivered an RPM as well as a DEB on Linux
- - Clear CPU info available on the About screen, getting ready for optional AVX enhancements
- - Added proper support for Flush-to-Zero CPU flag
- - CMake 'install' rules are now in place for non-Apple Unixes
- - Finally (finally!) removed use of `_aligned_malloc` in favor of `alignas` everywhere
- - Windows (MSVC) specifies UTF-8 encoding
- - Removed old 'wide' getters which were only used by legacy VST3
- - Restored Windows MinGW builds
- - `install-resources` targets work with Ninja generator
- - Removed memory allocation from the audio thread for most oscillator types - implemented pooled allocation for String, and less allocation for Twist
- - Cleaned up Airwindows code by removing `processDoubleReplacing`, anti-denormalization and dithering from all effects
- - Upgraded to the latest Catch2
- - Lots of work on expanding the appropriate use of `const`
- - Moved the FX presets to individual files in the factory data folder, rather than config.xml
- - Most of our filesystem code works with `std::filesystem` (or a sub thereof)
- - On Linux, choose the `ghc` rather than system `std::filesystem` by default
- - Cross-compliation works from Linux to Windows and Mac if you want!
- - Surge XT is properly signed and notarized on macOS
- - Surge XT properly requests microphone access on macOS
-
-- Content
- - New patches from Altenberg
- - New patches from Cybersoda
- - New patches from Databroth
- - New patches from Jacky Ligon
- - New patches from John Valentine
- - New patches from Kinsey Dulcet
- - New patches from Luna
- - New patches from Malfunction
- - New patches from Slowboat
- - New patches from VincyZed
- - New patches from Xenofish
- - New FX presets from Arty
-
-
-
-CLAP is a new open standard for plugins and hosts. You can read more about this fully open source,
-industry supported, collaboratively developed standard at
-the June 15 announcement.
-
-We are thrilled to be part of the cross-industry team which actively engaged in developing CLAP, and
-are grateful to all the folks in the open and closed source community who worked with us
-as collaborators. We also welcome an innovative, industry-supported, fully open standard,
-and are proud that the Surge family of products supports it on launch day!
-
-
-
-The Surge Synth Team has been actively engaged in CLAP for more than a year, and Surge XT
-is one of the first synths to take full advantage of some of the newer features, such
-as polyphonic modulation.
-
-We have a collection of plugins and tools you can use today to try CLAP.
-
-
Plugins
-
-
-
Surge XT 1.1 Beta has full
- support for mono- and poly-modulation, note expressions, sample accurate automation, and more.
-
-We will get to Stochas soon! And Shortcircuit works as well as a CLAP as it does anything else, but thats
-still not very well! (In our defense, we've been working on CLAP!)
-
-
For Developers
-
-We have several CLAP-related assets useful for developers
-
-
-
The CLAP juce extensions allowed us to port
-our synths (and help with quite a few others also).
-
-
diff --git a/downloads.md b/downloads.md
deleted file mode 100644
index d82eb02dba..0000000000
--- a/downloads.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: page
-title: Downloads
-noheader: true
-permalink: downloads
----
-
-This page has direct links to our production downloads, as well as instructions on how to get older
-versions, betas and nightlies.
-
-# Stable version: Surge XT {% include stable_xt_version %}
-
-The stable version of Surge XT is the one we recommend for music making in a normal production environment.
-It is tested, widely used, and available for the following platforms:
-
-
-
-
-
-
-# Getting Started
-
-Thank you for using **Surge XT**\!
-
-Surge XT is a virtual synthesizer originally released as "Surge" into
-open source by creator Claes Johanson in September 2018. Since then, it is maintained by a group of volunteers.
-
-This first section is intended to give you a brief overview of some concepts
-that are specific to this synthesizer and an introduction on how to navigate,
-manipulate, and use Surge XT to its full potential.
-
-For detailed information regarding the synthesis engine and other advanced technical
-specifications and options of this synthesizer, there is a second section dedicated to
-[Technical Reference](#technical-reference).
-
-Note that most of the images and descriptions in this manual are made with the Classic skin in mind, as it's the
-default skin used when first loading Surge XT.
-
-Finally, for more tips and tricks, tutorials, and to download additional content, you can also take a look at
-[Surge's wiki](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki).
-
-
-
-## Installing or Building Surge XT
-
-*Audio Units, AU is a trademark of Apple Computer, Inc
-VST is a trademark of Steinberg Media Technologies GmbH*
-
-Surge XT's installer is available at [https://surge-synthesizer.github.io](https://surge-synthesizer.github.io).
-
-### Windows
-
-On the Windows platform, Surge XT is delivered as both a 32 or 64-bit VST3 and CLAP plug-in instrument.
-
-The file name for the VST3 is `Surge XT.vst3`. For CLAP, it is `Surge XT.clap`
-
-System Requirements:
-
- - Windows 7 or newer
- - A reasonably fast CPU (Pentium 4/Athlon 64 or above)
- - At least 4GB of RAM
- - VST-compatible host application
-
-In addition, to use the 64-bit version on Windows you need the following:
-
- - A CPU supporting the x64 (AMD64/EM64T) instruction set
- - A **64-bit** version of Windows
- - An application capable of hosting 64-bit VST plug-ins
-
-Both the VST3 and CLAP versions of the plug-in should be automatically installed in their default plug-in location and
-should be found by your host application, as long as it supports VST3 or CLAP. However, the Windows version also comes
-with a **portable mode**:
-
-- Portable Mode allows you to store assets in the same directory as the Surge XT VST3 or CLAP.
-- If Surge XT is installed in a folder and in that same folder there is a directory called `SurgeXTData`, Surge XT will use that for factory data rather than `%PROGRAMDATA%\Surge XT`.
-- If in that same folder there is a directory called `SurgeXTUserData`, Surge XT will use that for user data rather than `%DOCUMENTS%\Surge XT`.
-- Either none, one, or both of those folders can be there. Surge XT will fall back to the defaults if they are not present.
-You can always see your data paths in the [About screen](#about-surge-xt).
-
-### macOS
-
-On Mac, Surge XT is delivered as a 64-bit Plug-in Instrument for the Audio
-Unit (AU), VST3, and CLAP plug-in interfaces.
-
-System Requirements:
-
- - Mac OS X 10.11 or newer
- - A 64-bit x86 Intel or ARM Apple Silicon CPU
- - At least 4GB of RAM
- - 64-bit AU or VST-compatible host application
-
-To install, run the packaged installer. You will be given the option of automatically installing the
-AU `Surge XT.component` and the VST3 or CLAP to their correct locations.
-The factory patches and wavetables will also be automatically installed.
-
-Running the packaged installer will install Surge for all of the users of your
-Mac.
-
-### Linux
-
-On Linux, Surge is available as a 64-bit VST3 and CLAP in the form of a **deb** and **RPM** package.
-
-The system requirements can be hard to determine, as there are a lot of distributions out there and other factors.
-However, the following information might be good to know:
-
- - The installation package on **Surge XT's website** is in the form of a Debian package
- - The distribution package is built on Ubuntu 18.04
- - The packages required are listed in the source and in the deb file
-
-**Note:** Some actions in Surge XT are done by doing Alt + Drag or scroll wheel. On certain Linux distributions,
-those shortcuts and gestures may cause conflicts between Surge and the desktop environment. We decided we couldn't
-give up alt-drag for all platforms because one window manager in one distribution used it by default. Therefore,
-it's often possible to disable that global gesture in desktop environments, and would be the easiest way to solve
-that possible issue.
-
-### Building from Source
-
-If you would like to build Surge XT from source, see the instructions on
-[our Github repository](https://github.com/surge-synthesizer/surge).
-
-
-
-## Installing Alongside Older Versions
-
-Although Surge XT represents an evolution of Surge, Surge XT is an entirely new plugin. This means that you can
-effortlessly install it alongside Surge 1.9 or earlier, and you will need to keep Surge 1.9 installed in order
-to open existing projects containing older versions of Surge.
-
-## Locations
-
-### Windows
-
-The patch library and wavetables are at `C:ProgramData\Surge XT`.
-The user patches are at `C:\Users\your username\My Documents\Surge XT`.
-
-### macOS
-
-The patch library and wavetables are at `/Library/Application Support/Surge XT`.
-The user patches are at `~/Documents/Surge XT`.
-
-### Linux
-
-The patch library and wavetables are at `/usr/share/surge-xt` with a standard install.
-The user patches are at `~/Documents/Surge XT`. This directory will be created once you store a patch
-or change the user default settings for the first time.
-
-Note: These locations can be changed in Surge's menu (see [Data Folders](#data-folders)).
-
-If you put user content in the factory folder or otherwise change it, future installers will erase it.
-Surge XT's installers never touch anything in the user area.
-
-So, if you want to install a custom skin, set of patches, or otherwise add things to Surge,
-put them in your user data folder instead of here, or risk losing them when you upgrade.
-
-
-
-## Playing Your First Note
-
-Surge XT is most comfortably used with a [DAW](https://en.wikipedia.org/wiki/Digital_audio_workstation), or a physical device such as a keyboard. To get started however, you can make
-use of the virtual keyboard (see [Workflow](#workflow)), which can be opened from `menu -> workflow -> virtual keyboard`, or `alt+k`.
-
-Each note you play will be simulated based on the current Patch, so it's the perfect way to experiment before tackling a more complex setup.
-
-# User Interface Basics
-
-The user-interface of Surge XT is divided into four main sections:
- - Header
- - Scene controls
- - Modulation/Routing
- - Effects
-
-Keeping this structure in mind will make it easier to understand the layout.
-
-![Illustration 1: The four sections the user-interface that Surge XT is divided into.](../manual_xt/images/Pictures/sections.png)
-
-*The four sections of the user-interface that Surge is divided into.*
-
-
-
-## The Scene Concept
-
-Every patch in Surge XT contains two scenes (A & B) and an effect-section.
-Both scenes and all effect settings are stored in every patch. A scene is similar to a
-traditional synthesizer patch as it stores all the information used to synthesize a voice.
-Since there are two scenes in each patch, it's possible to have layered or split sounds stored within a single patch.
-(see [Scene Select and Scene Mode](#scene-select-and-scene-mode)).
-
-![Illustration 2: Both scenes and all effect settings are stored in every patch.](../manual_xt/images/Pictures/illu2.png)
-
-
-
-## Audio Outputs
-
-When loaded into a DAW, each instance of Surge XT has **3 audio outputs**:
-
-- Stereo Out
-- Scene A Out
-- Scene B Out
-
-Depending on the host, those outputs can be used and routed to be processed separately.
-
-
-
-## Sliders and Controls
-
-The most common user-interface control in Surge XT is the slider. They come
-in both horizontal and vertical orientations but their functionality is
-otherwise identical.
-
-Sliders are always dragged, there is no jump if you click on the slider
-tray instead of the slider head, it enters dragging mode nonetheless.
-
-Slider interactions:
- - **Left-click drag** - Drag slider
- - **Shift + Left-click drag** - Drag slider (fine)
- - **Ctrl/Cmd + Left-click drag** - Drag slider (quantized steps)
- - **Alt + Left-click drag** - Drag slider in elastic mode (snaps back to initial position upon release)
- - **Scroll Wheel** - Move Slider
- - **Shift + Scroll Wheel** - Move slider (fine)
- - **Double left-click** - Reset parameter to default value
- - **Right-click** - Context menu
- - **Hover** - See the slider's current value without clicking on it
-
-Other than sliders, some of Surge XT's parameters are also displayed as number and value fields, buttons and button rows.
-
-
-
-## Undo and Redo
-
-Below the [Patch Browser](#patch-browser), you will find curved arrow buttons just to the left of the **Save** button.
-Clicking on these will allow you to undo and redo the latest changes. You can also use keyboard shortcuts (by default,
-Ctrl+Z and Ctrl+Y) to undo and redo respectively.
-
-### Parameter Context Menu
-
-Any parameter's context menu can be brought up with a right-click. This menu has numerous useful functions:
-
-![Illustration 3: Slider context menu](../manual_xt/images/Pictures/slider_context_menu.png)
-
-#### Name and Contextual Help
-
-Clicking on this first option will open this user manual to the correct section explaining the parameter in question.
-Alternatively, you can simply hover over the control in question and press F1.
-
-#### Edit Value
-
-This option allows you to type in the desired value of a parameter. Once the value popup appears, its text will
-already be highlighted, and you can start typing the value right away. When you are done, simply press Enter to
-confirm the change. To cancel and close this popup, simply press the Escape key or move any other parameter.
-
-Note that for any value type-in windows in Surge XT, there is no need to type in the unit of the entered value.
-
-![Illustration 4: Type-in window](../manual_xt/images/Pictures/typein_window.png)
-
-For discrete parameters (Unison Voices, or a button row for instance), instead of a type-in field, all the possible
-values will be displayed right in the menu so they can be accessed directly.
-
-![Illustration 5: Discrete parameters](../manual_xt/images/Pictures/discrete_values.png)
-
-#### Extend Range
-
-Some parameters can have their range extended. The option **Extend range** will appear in the context menu
-if they do. **Pitch**, for instance, is one of those parameters.
-
-#### Tempo Sync
-
-Some parameters can be synchronized to the host tempo. The option **Tempo sync** will appear in the
-context menu if they do.
-
-Once tempo-synced, when using the Surge XT Classic skin, the slider will show a "TS" symbol on their handles to indicate that state, like so:
-
-![Illustration 6: Tempo sync slider](../manual_xt/images/Pictures/ts_slider.png)
-
-This indication can vary depending on the skin used.
-
-#### Enabled
-
-Some parameters can be enabled or disabled. If a slider appears transparent or is missing its handle,
-in some cases, it can be because the parameter is disabled. To toggle it, simply click on that option.
-
-#### Modulations
-
-This section of the menu will appear if the right-clicked slider is being modulated by some modulation source(s) (if it has a blue tint).
-See [Routing](#routing) for more information.
-
-- **Red X icon** - Clicking on this icon to the left of a modulation source will clear that modulation routing.
-- **Speaker icon** - Clicking on this will allow you to mute (bypass) a modulation source in the list. Simply click
-that icon again to unmute that source.
-- **Pencil icon** - This will bring up the modulation amount type-in window.
-Simply type-in the desired amount of modulation you want to apply to that parameter. See
-[Edit Value](#edit-value) for more information.
-
-#### Add Modulation From
-
-As its name suggests, this menu entry allows you to directly link a modulator to the right-clicked control.
-All the available modulation sources are sorted in different categories so you can find the desired one easier.
-Once a modulation source is chosen, a type-in window will appear, allowing you to enter the modulation amount you
-want to apply.
-
-#### Assign Parameter To
-
-This option allows to assign the right-clicked parameter to any MIDI CC.
-
-#### MIDI Learn
-
-This is where you assign a MIDI controller to the desired slider. To abort MIDI learning on that parameter,
-simply right-click again and the option will now become **Abort Parameter MIDI Learn**.
-
-#### Clear learned MIDI
-
-This option will be available if the selected parameter has already been MIDI learned. It allows you to clear that link (the
-existing link MIDI CC number will be shown in parentheses).
-
-#### VST3 Options
-
-Finally, the VST3 version of Surge XT supports VST3 context menu items. Depending on the host,
-there may be more or less options regarding automation, MIDI, or parameter values.
-
-
-
-# Header
-
-![Illustration 7: Header section](../manual_xt/images/Pictures/header.png)
-
-## Scene Select and Scene Mode
-
-![Illustration 8: Scene select and scene mode](../manual_xt/images/Pictures/scene_select.png)
-
-There are two setups of all controls within the Scene section of the user interface.
-The **Scene Select** buttons **[A|B]** determine which one is selected for editing.
-Right-clicking on these buttons brings up a context menu that allows you to copy/paste scene content.
-
-Depending on the **Scene Mode**, these two buttons could also be used to choose which scene will be *played*.
-Indeed, whether a scene will generate a voice when a key is pressed is determined by the **Scene Mode** setting:
-
- - **Single** – Notes will be played only by the selected scene.
- - **Key Split** – Notes below the **split key** will be played by scene A,
- notes above and including the **split key** will be played by scene
- B.
- - **Channel Split** Notes from MIDI channels below the **split MIDI channel** will be played by scene A,
- notes from MIDI channels above and including the **split MIDI channel** will be played by scene B.
- - **Dual** – Both scenes will play all the notes.
-
-In both **Key Split** and **Dual** mode, if MPE is disabled, the system also supports MIDI channel routing where Channel 2 plays only
-Scene A and channel 3 plays only Scene B. MIDI channel 1 and all other channels higher than 3 play the Split/Dual mode.
-
-**Poly** shows the number of voices currently playing and allows you to
-set an upper limit to the number of voices allowed to play at the same
-time by dragging horizontally on the value. The voice-limiter will kill off excess voices gently to avoid
-audible artifacts, thus it's not uncommon for the voice count to exceed
-the limit.
-
-
-
-## Patch Browser
-
-![Illustration 9: Patch browser](../manual_xt/images/Pictures/patchbrowser.png)
-
-### Navigation
-
-Cycling through sounds in Surge XT is easy: just press the arrow buttons
-until you find something you like. If you left-click the patch-name
-field (anywhere in the white area), a menu will list all available
-patches arranged into categories. A right-click will bring up a menu with just the
-patches of the current category. If you middle-click on these buttons, a random patch
-will be loaded.
-
-These categories are also grouped into three sections depending on who created them:
-
- - Factory Patches - Patches created in-house by the Surge XT authors.
-
- - 3rd party patches - Patches created by users and 3rd parties.
- Categorized by creators.
-
- - User Patches - Your own patches will be stored here. How you categorize them
- is entirely up to you. At the top of this section is where your favorites patches will show up.
-
-At the bottom, there is an option to
-[download additional content](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Additional-Content).
-
-By default, to help prevent you loosing an unsaved patch by switching patches, a confirmation dialog will open, asking
-you if you still want to proceed. You can turn off this warning by checking the *Don't ask me again* box, or by
-disabling the appropriate option in the [Workflow](#workflow) category found in the [main menu](#main-menu).
-A modified or unsaved patch name will show an asterisk in the patch name area.
-
-You can also directly load patches (.fxp) by dragging and dropping them anywhere over the Surge XT interface.
-
-There is also an option in the patch menu to set the current patch as the default one to be loaded when
-opening a new instance of Surge XT.
-
-Finally, the patch menu allows you to rename or delete a patch. Those options will only appear if you have a
-non-factory patch loaded in the synth.
-
-
-
-### Searching Patches
-
-To search patches by name, simply click on the magnifier glass icon to the left of the patch name area.
-You may see Surge XT first update the patch database before being able to type in your search query.
-
-You can also search for patches by **author** or **category** by typing "AUTHOR=" or "CATEGORY=", followed by
-your search query.
-
-If the **Retain patch search results after loading** option is enabled in the [Workflow](#workflow) category found in
-the main menu, holding Ctrl while selecting your desired search result with your mouse or while pressing enter will
-close the search results.
-
-
-
-### The Save Dialog
-
-![Illustration 10: Save dialog](../manual_xt/images/Pictures/store_dialog.png)
-
-Clicking the **Save** button of the patch browser opens the save dialog.
-This is where you name your new patch and choose which category it
-should belong in. You can also create a new category manually here as
-well. The patches you save will end up in the user section at the bottom
-of the patch menu. The save dialog also provides text fields for the name of the patch creator,
-license, and comments.
-
-Note: You can display the comments of a particular patch by hovering over the patch name area with your mouse.
-
-Holding down the **Shift** key when saving a patch will automatically overwrite an existing patch, which
-bypasses the dialog asking you for an overwrite confirmation.
-
-
-
-### Favoriting Patches
-
-Adding a patch to your favorites list is as easy as pressing the heart icon to the right of the patch name area.
-Right-clicking on that same icon will allow you to access the favorite patches list.
-
-
-
-## Status Area
-
-![Illustration 11: Status area](../manual_xt/images/Pictures/status.png)
-
-This area is meant to be a quick access to some of Surge XT's features that are also present in the Menu.
-(see [Main Menu](#main-menu))
-
-The **MPE** and **Tune** buttons are for quickly enabling/disabling those features in the current Surge XT instance.
-Right-clicking on one of these buttons will reveal more options which are also present in sub-menus under the Menu button as well.
-Left-clicking the Tune button while Surge XT is in its default tuning will also simply open the menu. See [Microtuning](#microtuning) for more information.
-
-
-
-## FX Bypass, Character, Global Volume
-
-![Illustration 12: FX bypass, character and global volume](../manual_xt/images/Pictures/fx_bypass.png)
-
-**FX Bypass** lets you quickly hear what a patch sounds like without the effect-units. (see [Effects](#effects))
-
- - **Off** – Bypass is disabled, all effects are active.
- - **Send** – The send effects are bypassed.
- - **Send + Global** - The send and global effects are bypassed.
- - **All** – All effects are bypassed.
-
-**Character** controls the amount of high-frequency content present in
-most of Surge XT's oscillator algorithms. Available choices are Warm, Neutral
-and Bright.
-
-**Global Volume** controls the last gain stage before the output.
- You can choose to hard clip the global output either at **+18 dBFS** (default) or **0 dBFS**
- by right-clicking on it.
-
-### Level Meter
-
-The level meter above the global volume shows the output level, and will become red if it goes
-above 0 dBFS. If you right-click on the level meter, you will find options to open the [oscilloscope](#oscilloscope),
-and also to display CPU usage.
-
-
-
-# Scene Controls
-
-The UI of the scene section can also be further divided into two parts:
-
- - Sound generation
- - Sound shaping
-
-The sound is generated and mixed in the sound generation section. After that, it
-goes through the sound shaping section.
-
-![Illustration 13: Scene controls](../manual_xt/images/Pictures/scene_sections.png)
-
-
-
-## Sound Generation
-
-This is where the sound is born. The oscillators generate waveforms
-according to the notes played. They are then summed up in the mixer.
-
-![Illustration 14: Sound generation](../manual_xt/images/Pictures/sound_generation.png)
-
-
-
-### Oscillators
-
-**1/2/3-buttons** – Chooses the active oscillator for editing. You can right-click on one of them
-and a context menu with the name, **Copy** and **Copy (with modulation)** options will show up.
-
-**Display** – Shows the active waveform. When the **Wavetable** or **Window** oscillator
-is used, it will also work as wavetable selector by clicking on the orange bar or on the straight arrow buttons
-to cycle through them. When the selected oscillator in the display is muted, the waveform will be semi-transparent.
-
-**Type** – Oscillator type. Chooses which algorithm is used for the
-oscillator. Available options are:
-- Classic
-- Modern
-- Wavetable
-- Window
-- Sine
-- FM2
-- FM3
-- String
-- Twist
-- Alias
-- S&H Noise
-- Audio Input.
-
-See [Oscillators](#oscillator-algorithms) in the Technical Reference section for more information.
-
-**Pitch & Octave** – Controls the pitch for this particular oscillator.
-Its context menu can be used to extend its range, or to set the pitch to **Absolute** mode, which makes the pitch shift
-in absolute frequency as opposed to relative to the note that is being played.
-
-**Keytrack** – When disabled, the oscillator will play the same pitch
-regardless of the key pressed. This button can be right-clicked to toggle its state across all
-oscillators in the scene.
-
-**Retrigger** – If active, the oscillator and all its unison voices will always start immediately
-at the same phase position. This is useful for snappy sounds where you want the
-attack to sound exactly the same each note. This button can be right-clicked to set its state across all
-oscillators in the scene.
-
-**Other** - The rest of the sliders from the oscillator editor are specific to each
-oscillator type. See [Oscillators](#oscillator-algorithms) in the
-Technical Reference section for more information.
-
-
-
-### Mixer
-
-#### Mixer Channels
-
-Excluding the **Pre-filter Gain** (slider on the right), the Mixer has 6 channels (sources) from left to right:
-
- - **Oscillators 1, 2, 3**
-
- - **Ring Modulation of 1x2, 2x3** – The source of these two channels is **digital ring modulation** from the oscillators.
- This type of RM is a bit different from the traditional carrier-modulator style ring modulation.
- Digital ring modulation is simply the result of multiplying the output of oscillators 1 and 2,
- or 2 and 3.
- - **Noise Oscillator**
-
-#### Channel Parameters
-
-Each channel has the following controls:
-
- - **M** – Mute. You can of course have multiple channels muted at the same time, but you can also keep only the channel
- you mute muted by holding down **Ctrl / Cmd** and clicking on the desired mute switch.
-
- - **S** – Solo (only play channels that have solo active). You can have multiple channels in solo at the same time, or
- only one at a time by holding down **Ctrl / Cmd** and clicking on the desired solo switch.
-
- - **Triple Orange Box** (Filter routing) – Chooses which filter the channel is routed to.
- The left position routes the channel output to filter 1, the right position
- routes it to filter 2, while the middle position, which is selected
- by default, routes it to both.
- However, this setting will only route the channel output to filter
- 1 if a **serial** filter block configuration is used, since the
- audio will then go through the second one in the filter block anyways.
- If any other configuration than serial is used, the audio will then
- be routed to both filters, as expected.
-
- - **Slider** – Gain control for each input.
-
-### Other Sound Generation Parameters
-
-**Pitch & Octave** – Controls the pitch for the entire scene. Affects
-the filter key-tracking and the keytrack modulation source as well. The
-range of the slider can be extended using the context menu.
-
-**Portamento** – Portamento is when a new note will slide in
-pitch from the pitch of the last played note. This setting determines how
-long the slide will be. A setting of 0 disables Portamento. This parameter can be
-tempo-synced.
-
-Portamento has some interesting options accessible in its context menu:
-- **Constant rate** - If this option is enabled, the time to cover **one octave** is
-defined by the Portamento slider value. From there on, gliding between 2 octaves
-for instance will take twice as long, and so on.
-By default, this option is disabled, so the **glide rate**
-is proportional to the distance between the two keys, making it so that it
-always takes the same time to glide between **any two keys**.
-- **Glissando** - If this option is enabled, the pitch slide will be quantized
-to the scale degrees.
-- **Retrigger at scale degrees** - If this option is enabled, the FEG and AEG
-(see [Envelope Generators](#envelope-generators)) will be triggered each time the portamento
-slide crosses a scale degree.
-- **Curve options** - You can choose between a **Logarithmic**, **Linear** or **Exponential**
-portamento curve. By default, the portamento slide follows a linear curve.
-
-**Osc Drift** – Applies a small amount of instability to the pitch of
-all oscillators, making them subtly detuned. Although the parameter is
-shared, the randomness of the instability effect is independent for all
-oscillators and all the unison voices of each oscillator. By right-clicking
-on this control, you can choose to also randomize the pitch at the very start of
-the note by enabling the **Randomize initial drift phase** option.
-
-**Noise Color** – Affects the frequency spectrum of the noise
-generator. The middle position results in white noise. Moving the slider
-to the left emphasizes low frequencies while moving it to the right emphasizes high frequencies.
-
-**Bend Depth** – Pitch Bend Depth Up/Down. Controls the range of the
-pitch bend wheel, in semitones.
-
-This control can be extended with the dedicated option in its context menu. It enables
-type-ins of fractions and cents for configuring microtonal pitch-bends of arbitrary size within the range
-of 24 semitones.
-
-**Play Mode** – Chooses how multiple notes are handled. Poly will allow
-multiple notes to be played simultaneously, while Mono will only let the last note
-play. Latch will continuously play the last played note (mono).
-
-Mono has two possible modifiers:
-
- - **Single Trigger EG (ST)** means that the two envelope generators are
- not restarted when sliding between two notes (two notes that overlap
- in time)
- - **Fingered Portamento (FP)** means that portamento is only applied when
- sliding between notes and not when there is time between the played
- notes.
-
-When **Play Mode** is set to one of the Poly modes, the context menu of that button list will display
-additional options related to the voice allocation for a key:
-- **Stack Multiple** - Selected by default. Surge XT will play the replayed note on a new voice, in a cyclic manner
-known as round-robin.
-- **Reuse Single** - Selecting this option will make Surge XT allocate the replayed note to the same voice with which
-that note was previously played.
-
-
-
-When **Play Mode** is set to one of the Mono modes, the context menu of that button list will display
-additional options related to mono notes:
-
-- **Note Priority**
- - **Last note priority** - Will play the latest note when multiple notes are played together
- - **High note priority** - Will play the highest note when multiple notes are played together
- - **Low note priority** - Will play the lowest note when multiple notes are played together
- - **Legacy note priority** - When multiple notes are played together, it will play the latest note once hit and play
- the highest remaining note once released.
-
-- **Envelope Retrigger Behavior**
- - **Reset to zero** - Selected by default. The envelopes will immediately reset to the beginning of the attack stage
- when pressing a note.
- - **Continue from current level** - Selecting this option will make the envelopes start at the level they were left
- off from the previous note.
-
-- **Sustain pedal in mono mode**
- - **Sustain pedal holds all notes (no note off retrigger)** - If sustain is engaged and multiple notes are hit then
- held one after the other, Surge XT will stay on the latest note when releasing that note instead of switching to the
- previous note.
- - **Sustain pedal allows note off retrigger** - If sustain is engaged and multiple notes are hit then held one after
- the other, Surge XT will switch to the previous note when the latest note is released.
-
-
-
-## Sound Shaping
-
-![Illustration 15: Sound shaping](../manual_xt/images/Pictures/sound_shaping.png)
-
-
-
-### Filter Controls
-
-**Filter Block Configuration** – Chooses how the filters, waveshaper and
-the gain stage are connected together. Note that only the Stereo and Wide configurations
-will output a stereo signal.
-
-- **Serial 1** - The signal from the Mixer goes into Filter 1, then into the Waveshaper, then into Filter 2, then the
-Amplifier which contains the Amplifier Envelope Generator (AEG), before going through the Scene Highpass and to the final
-Scene Output section.
-
-- **Serial 2** - The signal path is the same as with **Serial 1**, with the addition of a feedback path going from the
-output of the Amplifier back into Filter 1.
-
-- **Serial 3** - The signal path is the same as with **Serial 2**, but Filter 2 is in the feedback loop, which is after
-the signal is being tapped from the Amplifier instead of before.
-
-- **Dual 1** - The signal from the Mixer is sent to both Filter 1 and Filter 2 in parallel. The outputs from both filters are
-then summed, then sent to the Waveshaper, then into the Amplifier, and finally in the Scene Highpass before the Scene Output section.
-Feedback is again tapped at the output of the Amplifier and goes back into both filters (it is summed with the output from the Mixer).
-
-- **Dual 2** - The signal path is the same as with **Dual 1**, except that the Waveshaper is only applied to Filter 1
-before its output is summed with the output from Filter 2.
-
-- **Stereo** - The signal path is the same as with **Dual 1**, except that Filter 1 is always on the left channel and
-Filter 2 is always on the right channel.
-
-- **Ring** - The signal path is the same as with **Dual 1**, except that the outputs from Filter 1 and 2 are multiplied
-(ring modulated) together instead of being summed before continuing onwards to the Waveshaper.
-
-- **Wide** - The signal path is the same as with **Serial 2**, except it is being doubled for a full stereo signal path.
-
-**Feedback** – Controls the amount (and polarity) of output that's fed
-back into the input of the filter block. It has no effect when using filter
-block configurations without a feedback path.
-
-Note:
-Be careful with your monitoring volume when using feedback. It's easy to
-make really loud high-pitched noises by mistake if you're not familiar
-with how the synth reacts to feedback.
-
-Don't let this scare you though. There's a lot to be gained from proper
-and creative use of feedback. Changing the character of filters, making
-filters interact together, making basic physical models, making sounds
-that are just about to break apart. It is these things that make
-Surge XT truly special.
-
-**Filter Balance** – Controls how the two filters are mixed. The
-behavior depends on the filter block configuration.
-
-**Type** – Selects the type of the filter. There are [numerous types available](#filters).
-You can disable the filter in question here by unchecking the **Enabled** option below the different
-filter type categories.
-
-**Subtype** – Selects variations of each filter type. The difference can
-vary from subtle to radical depending on how the filter is used. See
-[Filters](#filters) in the Technical Reference section
-for information regarding subtypes of each filter type. It is displayed
-as a number next to the filter type (when available).
-
-**Cutoff** – Controls the cutoff frequency of the filter. When tweaked, while its tooltip
-will show frequency in Hz, it will also show its approximate MIDI note value,
-very useful when using the filter for melodic and tuning purposes.
-You can also right-click on this control and choose the option
-**Reset cutoff to keytrack root** which makes it very easy to tune filters
-when using filter keytracking. Finally, the **Apply SCL/KBM tuning to filter cutoff**
-option can be accessed when the **Apply tuning after modulation** option is enabled in the Tuning menu.
-See the [microtuning](#microtuning) section for more information.
-
-**Resonance** – Controls the amount of resonance of the filter.
-
-**Filter Analysis** – To open the Filter Analysis window, simply click on the small button above the filter
-balance control. It will display the current filter response according to the current type, subtype, cutoff and
-resonance settings. You can switch to the other filter by using the corresponding buttons. You can also drag on the
-display horizontally to change the displayed filter's cutoff frequency, and drag vertically to change its resonance.
-
-![Illustration 16: Filter Analysis](../manual_xt/images/Pictures/filter_analysis.png)
-
-**Filter 2 Offset Button** (small "+" button to the right of the filter parameters) – When active,
-the cutoff frequency will be set relative to filter 1.
-This includes any modulations (including the hardwired FEG depth &
-keytracking). Filter 2's cutoff frequency slider **becomes an offset** setting relative
-to filter 1's cutoff frequency.
-
-**Resonance Link Button** (small button, filter 2 only) – Makes the slider
-follow filter 1's resonance slider setting.
-
-**Keytrack \> F1/F2** – Controls how much the pitch of a note affects the
-cutoff frequency of the filter. A setting of 100% means the filter
-frequency will follow the pitch harmonically.
-
-
-
-### Envelope Generators
-
-There are two envelope generators connected to the filter block.
-
-![Illustration 17: Envelope generators](../manual_xt/images/Pictures/EGs.png)
-
-On the left is the Filter Envelope Generator (Filter EG).
-It is hardwired to the two filters, whose depth is set by the **\>F1** and **\>F2** sliders.
-
-On the right is the Amplifier Envelope Generator (Amp EG). This one is hardwired to the gain
-stage of the filter block.
-
-![Illustration 18: ADSR envelope structure](../manual_xt/images/Pictures/illu10.png)
-
-*The ADSR envelope structure*
-
-The envelope generators are of the 4-stage ADSR type. This is the most
-common form of EG used in synthesizers and it is named after its four
-stages **Attack**, **Decay**, **Sustain** and **Release**. If you're new
-to synthesizer programming the illustration should give you a good idea
-how they work. The thing you need to remember is that after going
-through the attack & decay stages the envelope will stick in the sustain
-stage until the key is released.
-
-**Attack**, **Decay** and **Release** are time-based parameters and can be tempo-synced by right-clicking on one of
-those sliders. You will also find an option to tempo-sync those three controls at once for each envelope generator.
-
-Above the envelope stage controls is a graphic representation of the
-ADSR structure.
-
-If the envelope mode is set to **Digital**, there will be small adjustable orange fields
-on the graphic. Dragging them horizontally allows you to choose the curvature of the different stages of the envelope.
-
-![Illustration 19: ASDR envelope fields](../manual_xt/images/Pictures/EGs_orange_fields.png)
-
-If the envelope mode is set to **Analog**, the curvature of the different stages
-will automatically be set to a shape that tries to emulate analog behavior.
-
-
-
-### Waveshaper
-
-The waveshaper module now features 43 waveforms and is an integral part of Surge's audio path.
-
-![Illustration 20: Waveshaper](../manual_xt/images/Pictures/waveshaper.png)
-
-**Waveshaper selector** - Menu allowing you to change the type of the non-linear wave-shaping.
-Alternatively, you can also use the arrow buttons, left-click and drag, or scroll with the mouse wheel
-over the waveshaper display to cycle through the different shapes.
-
-**Waveshaper drive** – The vertical slider to the right of the waveshaper display. Sets the drive amount
-of the waveshaper. This control can be extended.
-
-**Waveshaper Analysis window** - This panel can be opened by clicking on the small icon at the
-bottom of the waveshaper module. It allows you to visually preview the output of the waveshaper
-at different input levels, which can be controlled with the waveshaper's **Drive** control.
-
-![Illustration 21: Waveshaper analysis](../manual_xt/images/Pictures/waveshaper_analysis.png)
-
-
-
-### Other Sound Shaping Parameters
-
-**Keytrack root note** – Sets the root key of the filter keytracking and the
-keytrack modulation source. At the root key, the keytrack modulation
-source will have the value zero. Above/below it it will have
-positive/negative modulation depending on the distance to the root key
-in octaves. This parameter does not affect the oscillator pitch.
-
-**Keytrack amount sliders** - Sets the amount of filter keytracking applied to
-each filter.
-
-**HP** – Controls the scene high-pass filter (scene parameter). This parameter can be disabled, which will remove it
-from the audio path. You also have a choice for filter slope between **12**, **24**, **36**, **48** dB/Octave.
-
-**FM configuration** – Chooses how oscillator FM (frequency modulation) is
-routed.
-
-**FM depth** – Sets the depth of the oscillator FM.
-
-**Amp Vel.** - Controls how the **Amp Gain** scales with velocity. This
-is neutral at the maximum position. Other settings provide attenuation
-at lower velocities, thus this setting will never increase the **Amp
-Gain** parameter by velocity.
-
-**Amp Gain** – Controls the gain element inside the filter block.
-
-
-
-### Scene Output
-
-The output stage is located after the filter block in the audio-path. As
-it's outside the filter block-structure changing the gain here doesn't
-have any affect on the timbre of the voice (unlike the previous
-gain-control which may affect how the feedback and wave-shaping acts),
-but it can still change the timbre of the effect section if non-linear
-effects (like distortion) are used.
-
-**Volume** – Scene volume control. You can choose to hard clip the scene output at **+18 dBFS** (default),
-**0 dBFS** , or to **disable hard clipping** by right-clicking this control and choosing the desired option.
-
-**Pan** – Pan/balance control
-
-**Width** – The amount of stereo spread (only present for the **Stereo** and
-**Wide** filter block configurations)
-
-**Send FX 1/2 or 3/4 Level** – Send levels to send slot 1 to 4 (scene parameters).
-To display the send 3/4 levels, simply select one of those send FX units in the unit selector
-(see [Effect Unit Selector](#effect-unit-selector)).
-
-
-
-# Modulation/Routing
-
-The modulation section is different from the sound generation
-and shaping sections as no audio data is passed through it. Instead it
-allows you to control the parameters in the other sections from various
-sources.
-
-![Illustration 22: Modulation and routing](../manual_xt/images/Pictures/modulation_routing.png)
-
-## Routing
-
-Modulation routing in Surge XT is a bit different compared to most synthesizers,
-but it's actually very intuitive and extremely powerful, thanks to the routing bar.
-
-![Illustration 23: Routing section](../manual_xt/images/Pictures/routingbar.png)
-
-### How To Apply Modulation
-
-Here's how it works:
-
-1. Select the modulation source you want to use.
-
- ![Illustration 24: Modulation source](../manual_xt/images/Pictures/routing_1.png)
-
-2. Engage routing mode with a second click on the source. It will become bright green,
-and sliders that can be modulated with that source will display a blue modulation depth slider on top of their
-normal sliders.
-
- ![Illustration 25: Engage routing mode](../manual_xt/images/Pictures/routing_2.png)
-
-3. Drag the desired modulation slider (blue slider) to the position you want the parameter to be at
-when fully modulated (at the top peak of a Sine LFO, or after the attack stage of an envelope for example).
-The modulation's full range will then be shown with the corresponding range bar indicator on the slider.
-
- ![Illustration 26: Modulation slider](../manual_xt/images/Pictures/routing_3.png)
-
-4. Disengage routing mode by clicking again on the modulation source.
-
- ![Illustration 27: Disengage routing mode](../manual_xt/images/Pictures/routing_1.png)
-
-Alternatively, routing mode can also be engaged or disengaged by pressing the **middle** mouse buttons anywhere over
-the interface, or by pressing **TAB** on the keyboard if this option is enabled (see [Workflow section](#workflow)
-in the menu).
-
-You can also directly access the numerical modulation amount dialog (explained [here](#edit-value))
-by dragging the desired modulation source over a modulatable parameter.
-
-Note that modulation range is always **relative** to the base value represented by the gray slider,
-meaning that moving its position will then shift the whole modulation range up or down.
-This also means that if a modulation slider's value is smaller than the base value,
-the modulation polarity will be inverted.
-
-Also, when applying modulation to certain time-based parameters (such as Portamento, envelope attack, etc.) that are
-set to 0.00 seconds, in some cases, the modulation won't trigger properly due to the way it works internally.
-To fix this, simply increase the parameter in question by a very small amount, just so it doesn't have a value
-of 0.
-
-
-
-### Modulating a Modulator
-
-When clicking on one of the LFO buttons in the routing bar, both the LFO source
-selection and the LFO editor will be selected. However, the two actions can be separated, as you can choose which button
-is selected as the modulation routing source, and at the same time edit parameters from **a different LFO** than the source.
-
-To do that, select the source normally, and then click
-on the mini-button on another LFO (the small orange arrow):
-
-![Illustration 28: Modulation section](../manual_xt/images/Pictures/modulationsourceselectionbar.png)
-
-Alternatively, you can also left-click on a modulation source while holding **Ctrl / Cmd** to display it
-in the LFO editor as well.
-
-This effectively lets you **modulate the parameters of one LFO with any other mod source(s)**.
-However, as an example, note that logistically, an S-LFO can modulate parameters of an LFO, but
-an LFO **cannot** modulate parameters of an S-LFO
-(see [Voice vs Scene Modulators](#voice-vs-scene-modulators)).
-
-Remember that you can also see which LFO is currently being displayed in the editor by looking at what's written
-vertically to the left of the editor.
-
-
-
-### Modulated Sliders
-
-Once a slider is routed to a modulation source, the shade of blue on its tray indicates
-whether the parameter is modulated and by which source.
-
-![Illustration 29: Modulation sliders](../manual_xt/images/Pictures/illu7.png)
-
-1) Parameter is not modulated (gray)
-
-2) Parameter is modulated (gray-blue)
-
-3) Parameter is modulated by the currently selected modulation source (bright-blue)
-
-Moreover, if you hover your mouse pointer over any modulated slider, the source(s) it's being modulated
-from will be highlighted in the routing bar. This makes it easier to see what modulation source(s) are
-linked to a parameter.
-
-
-
-### Modulation Source Selectors
-
-Once routed to any parameter, the modulation source selectors change their appearance depending if they are selected,
-and if they are routed in the current patch or not. (scene dependent)
-
-![Illustration 30: Modulation source appearance](../manual_xt/images/Pictures/mod_source_buttons.png)
-
-1) Unused modulation source
-
-2) Used modulation source
-
-3) Unused selected modulation source
-
-4) Used selected modulation source
-
-Some modulation source selectors in the routing bar have a hamburger menu. This serves as an indicator that
-different types of that modulation source are available. You can access them directly by clicking on that
-hamburger menu, by right-clicking and going into the **Switch to...** submenu, or simply by scrolling with
-the mouse wheel over the modulation source selector in question.
-
-![Illustration 31: Modulation source hamburger menu](../manual_xt/images/Pictures/hamburger_menu_modsource.png)
-
-
-
-### Clearing Modulation
-
-After right-clicking on a modulated slider, you will see an option to easily clear the modulation and un-link it from its source.
-
-![Illustration 32: Clearing modulation](../manual_xt/images/Pictures/clear_modulation.png)
-
-Alternatively, you can also reset its modulation slider (blue slider) to 0 by double-clicking on it
-when routing mode is engaged, or entering 0 in the type-in editor (see [Edit Value](#edit-value)).
-
-Furthermore, by right-clicking on any modulation source, there will be options to clear a particular linked parameter,
-but also all of them at once.
-
-![Illustration 33: Modulation context menu](../manual_xt/images/Pictures/modsource_context_menu.png)
-
-
-
-## Modulation List
-
-Surge XT has a detailed modulation list that can be displayed by clicking on the vertical rectangular button at the left of the routing bar:
-
-![Illustration 34: Modulation list window](../manual_xt/images/Pictures/modlist.png)
-
-This panel will display the modulation routings and their amounts from both scenes in the current patch.
-Different display options are available to the left of its interface:
-
-**Sort by** - Allows you to choose whether the list of modulations is grouped according to the source they are
-coming from or to the target they are routed to.
-
-**Filter By...** - This option allows you to only display certain modulation routings by hiding those that
-aren't included in the desired source or target in this list.
-
-**Add Modulation** - These two menus allow you to directly add a new modulation routing directly from the
-modulation list panel. Simply select a modulation source and a modulation target to link a modulator to a
-parameter.
-
-**Value Display** - Allows you to choose between 4 different display options regarding the modulation values
-displayed in the sliders section, ranging from **None** to **Values, Depths and Ranges**.
-
-Finally, in the sliders section, you can both adjust the different modulation amounts, but also directly
-**mute** or **remove** a modulation routing entirely.
-
-
-
-## Modulators
-
-Surge XT has four main types of modulation sources :
-
- - LFOs
- - Internal modulators
- - Voice and note properties
- - Macros
-
-All of these modulation sources are located in the routing bar (see [Routing](#routing)) :
-
-![Illustration 35: Routing bar](../manual_xt/images/Pictures/routingbar.png)
-
-![Illustration 36: Routing bar sections](../manual_xt/images/Pictures/routingbar_sections.png)
-
-*The four types of modulation sources, separated in categories.*
-
-
-
-### Voice vs Scene Modulators
-
-Some modulation sources operate at the voice level, while others operate at the scene level.
-Although they might seem similar, there is an important factor that distinguishes them.
-
-One one hand, a voice modulator has separate modulation paths *for each voice*, meaning it can
-control voice-level parameters (like filter cutoff) but cannot control scene level parameters (like FX levels or scene pitch).
-
-On the other hand, a scene modulator has one identical modulation path *for the whole scene*, so it can control both scene
-level parameters **and** voice level parameters.
-
-![Illustration 37: Modulation source labels](../manual_xt/images/Pictures/modsource_labels.png)
-
-*On top, three voice LFOs. On the bottom, three Scene LFOs, "S-" meaning Scene.*
-
-To demonstrate this distinction, let's say an sine wave LFO is modulating the cutoff of a filter.
-Now, if 3 notes are being hit with a small delay between each of them, the phase of the LFO will
-be delayed between the notes accordingly.
-
-You will indeed clearly hear the cutoff of the filter moving independently for each note, which gives the impression
-that there are three LFOs and three filters (which there actually is!). The same principle applies for envelopes.
-
-However, unlike the first demonstration, this time, if an S-LFO is modulating a certain parameter,
-hitting more notes will not "add" an LFO for each voice, which gives the impression that there is a single LFO
-modulating the cutoff frequency of the filter instead of many.
-
-See [Modulation Routing Details](#modulation-routing-details) in the Technical Reference section for more information.
-
-
-
-### LFOs
-
-Compared to some other synthesizers, Surge XT does not have dedicated **LFO**, **Envelope**, **Step sequencer** or
-**MSEG** modulation sources. Instead, those are integrated within every LFO. This effectively enables the
-flexibility of having up to 12 LFOs, envelopes, step sequencers or MSEGs, and everything in between simply by
-changing their shape.
-
-Surge XT's LFOs are very flexible and come with a built in DAHDSR-envelope which can
-either work as a dedicated envelope generator or shape the amplitude of other modulation types over time.
-
-![Illustration 38: LFO editor](../manual_xt/images/Pictures/lfo_editor.png)
-
-Surge XT has a total of 12 LFOs:
-
- - 6 Voice LFO sources (labeled LFO 1-6 for instance)
- - 6 Scene LFO sources (labeled S-LFO 1-6 for instance)
-
-See [Voice vs. Scene](#voice-vs-scene-modulators) for an explanation about the difference LFOs and S-LFOs.
-
-#### Shapes
-
-![Illustration 39: LFO shape selector](../manual_xt/images/Pictures/lfo_shapes.png)
-
-LFO shapes (from left to right, top to bottom):
-
-| | | |
-|-|-|-|
-| Sine | Sine wave LFO | Vertical bend |
-| Triangle | Triangle wave LFO | Vertical bend |
-| Square | Pulse wave LFO | Pulse width |
-| Sawtooth | Sawtooth wave LFO | Vertical bend |
-| Noise | Smooth noise LFO | Correlation |
-| S&H | Sample & Hold (stepped noise) LFO | Correlation |
-| Envelope | Envelope generator - sets the LFO to a constant output of 1, which can then be shaped by the LFO EG (see [LFO Envelope Generator](#lfo-envelope-generator))| Envelope shape |
-| Step Seq | 16 step step-sequencer (see [Step Sequencer](#step-sequencer)).| Smoothness/Spikyness |
-| MSEG | Fully editable MSEG (Multi-Segment Envelope Generator) with a large number of curve types and various editing options (see [Envelope Generator](#envelope-generators))| Depends on segment type and configuration |
-| Formula | Script (Lua) enabled formula modulator | Depends on the coded modulation |
-
-*On the left, the different shapes and their explanation. On the right, the way that the* ***Deform*** *parameter affects the waveform.*
-
-Depending on the selected shape for a particular LFO, its name in the routing bar will change.
-When using the first 6 waveforms, it will be called **LFO**. However, when using the envelope shape, **ENV**
-will be displayed, **SEQ** will be displayed when the step-sequencer is used, and for the MSEG, **MSEG**
-will be displayed. Scene LFOs have their equivalent labels as well:
-
-![Illustration 40: Modulation source labels](../manual_xt/images/Pictures/modsource_labels.png)
-
-
-
-#### Parameters
-
-![Illustration 41: LFO parameters](../manual_xt/images/Pictures/lfo_editor.png)
-
-**Rate** – Controls the modulation rate. When the type is set to
-Step Seq, one step equals the whole cycle. This slider can be tempo-synced
-and disabled from its context menu.
-Deactivating the rate effectively freezes the LFO to a certain constant value depending on the
-Phase/Shuffle parameter.
-This can be useful for manually scrubbing in a waveform cycle of an LFO for instance, and can also be used in
-the same way in the sequencer. This feature can also be used to make the modulation source act as a
-**randomizer** in tandem with the "Random" trigger mode. A simpler Random (see [Internal Modulators](#internal-modulators))
-modulation source can however also be used for that purpose.
-Furthermore, modulation can even be applied to the Phase/Shuffle parameter with another modulation source
-which opens up a lot of possibilities, such as effectively using the frozen LFO as a mod mapper.
-
-Note: In the LFO editor, when right-clicking parameters that can be tempo-synced, there will also be an option to Tempo sync all the LFO parameters at once.
-
-**Phase/Shuffle** - Controls the starting phase of the modulation waveform. As with any parameter,
-it can be modulated. However, in this case, its modulated value will not change after the modulation is triggered
-(for instance, it's not possible to shift an LFO's phase while a note is pressed).
-Only starting phase is taken into account. This control can also be extended, allowing for bipolar shuffle,
-useful for adding swing in the step sequencer.
-
-**Amplitude** – Controls the amplitude of the modulation. This is the parameter
-you should use if you want to control the depth of an LFO with a
-controller (like controlling vibrato depth with the modulation wheel, for instance). This control can also be
-extended form its context menu, which allows you to reach a negative amplitude range (-100 to 100% instead of 0 to 100%).
-
-**Deform** – Deform the modulation shape in various ways. The effect varies depending on the selected shape.
-Different deform types are available for the **Sine**, **Triangle**, **Sawtooth**, **S&H**, **Envelope** and
-**Step Seq** shapes, and can be accessed by right-clicking on the **Deform** slider.
-
-**Trigger mode** – Chooses how the LFO is triggered when a new note is played:
-
-- **Freerun** – The LFO's starting phase is synchronized with the host's song position to make it continuously running in the background. The modulation will be trigged at its starting phase when playback position is either at the beginning position and the song starts playing, or when playback position goes back at the beginning of a loop
-for instance. Freerun behaves the same on voice LFOs or scene LFOs.
-- **Keytrigger** – The LFO's starting phase is triggered when a new note is pressed.
-If the synth is set to "Poly", each new voice gets its own LFO triggered with it when using a voice LFO.
-However, when using an scene LFO, the first voice sets the LFO's position, then the other ones will follow it.
-- **Random** – The LFO's starting phase is set to a random point in its cycle. If the synth is set to "Poly",
-each new voice gets its own LFO triggered with it when using an voice LFO.
-However, when using an scene LFO, the first voice sets the LFO's position, then the other ones will follow it.
-
-**Unipolar** - If active, the modulation will be in the \[0 .. 1\]
-range (unipolar). If not, it will be in the \[-1 .. 1\] range (bipolar).
-
-The modulation range on a parameter is represented by a green bar when routing
-mode is engaged (see [Routing](#routing)).
-
-![Illustration 42: Modulation from a bipolar source](../manual_xt/images/Pictures/routing_3.png)
-
-*Modulation on a control from a bipolar source*
-
-![Illustration 43: Modulation from a unipolar source](../manual_xt/images/Pictures/routing_3_unipolar.png)
-
-*Modulation on a control from a unipolar source*
-
-
-
-#### LFO Envelope Generator
-
-The Envelope Generators are of the 6-stage DAHDSR type that are
-multiplied with the waveform generator, no matter what the selected LFO shape is.
-This means that if the LFO shape is set to Envelope, the output will simply be 100%,
-and can then be shaped by the LFO EG.
-
-Also, note that when using the Envelope shape, the envelope will always trigger on key trigger,
-no matter what the trigger mode is set to.
-
-The LFO envelope generator can be completely disabled by right-clicking on one of its controls and unchecking
-the **Enabled** option.
-
-![Illustration 44: LFO envelope generator](../manual_xt/images/Pictures/lfo_eg.png)
-
-![Illustration 45: 6-stage DAHDSR envelope](../manual_xt/images/Pictures/illu12.png)
-
-*6-stage DAHDSR envelope*
-
-
-
-#### Step Sequencer
-
-The **Step Seq** shape houses a step sequencing editor where the LFO display would be. It allows you to draw
-the output waveform with up to 16 steps.
-
-![Illustration 46: Step sequencer editor](../manual_xt/images/Pictures/stepseq.png)
-
-*Step Sequencer editor*
-
-The two blue markers define loop-points in which the
-sequence will repeat once it gets into the loop. The left mouse button is
-used for drawing while the right one can be used to clear the values to
-zero.
-
-To quickly reset a step to 0, either double-click on a step, or hold down Ctrl/Cmd and click or drag with the mouse over
-the desired step(s).
-
-Right-clicking and dragging over steps allows you to draw a straight line over the desired steps,
-thus creating a perfectly linear staircase pattern.
-
-Holding down **Shift** while drawing will quantize the values to
-the scale degrees (1/12th in case of standard tuning, or possibly other
-for custom tuning) spanning the range of **one octave**.
-Furthermore, holding down **Shift + Alt** makes two times more values available, hence
-useful when modulating pitch by **two octaves** instead.
-
-For more information on microtonal pitch modulation using the step sequencer, visit our
-[Tuning Guide](../tuning_guide/#Surge-XT-Microtonal-Step-Sequencing)
-on Surge's wiki.
-
-The step sequencers inside **voice LFOs** have an extra lane at the top of the
-step editor allowing to re-trigger the two regular voice envelopes
-(The Amplifier and Filter Envelope Generators) when the small
-rectangle is filled at that particular step.
-
-![Illustration 47: Envelope retrigger pane of LFO 1](../manual_xt/images/Pictures/illu14.png)
-
-*Step Seq of LFO 1 containing the re-trigger pane*
-
-However, shift-clicking or right-clicking those rectangles allows the specified step in the sequencer to **only
-trigger one of the two envelopes**. When the step is half-filled on the left,
-only the filter envelope will be triggered. When filled on the right, only the amplifier envelope will be triggered.
-
-![Illustration 48: Trigger lanes](../manual_xt/images/Pictures/triggerlanes.png)
-
-The **Deform** parameter gives the **Step Seq** waveform a lot of flexibility. A value of
-0% will output the steps just as they look on the editor. Negative
-values will give an increasingly spiky waveform while positive values
-will make the output smoother.
-
-| | |
-|-|-|
-| **Negative deform** | ![Illustration 49: Negative deform](../manual_xt/images/Pictures/stepseq_deform1.png) |
-| **Positive deform** | ![Illustration 50: Positive deform](../manual_xt/images/Pictures/stepseq_deform2.png) |
-
-![Illustration 51: Effect of the deform parameter on the step sequencer waveform](../manual_xt/images/Pictures/illu15.png)
-
-*Effect of the deform parameter on the step Seq waveform*
-
-
-
-#### Multi-Segment Envelope Generator
-
-Surge XT's Multi-Segment Envelope Generator (MSEG) is powerful and fully editable with a large number of curve types
-and various editing options. It can be used to create more complicated LFO waveforms or envelopes
-compared to the previously mentioned modulation shapes.
-With the combination of various settings in the editing window and the usual parameters from the LFO editor,
-you can practically create any modulation shape you could think of.
-
-![Illustration 52: Multi-segment envelope generator](../manual_xt/images/Pictures/mseg.png)
-
-To open this MSEG editing window, you can either click on the little pencil button next to the wave display (1),
-click on the wave display itself (2), or double-click on the MSEG icon in the modulation type selector (3):
-
-![Illustration 53: Opening multi-segment envelope generator](../manual_xt/images/Pictures/open_mseg.png)
-
-**Default MSEG state**
-
-Once opened, you will see a shape working as an envelope if you're using a voice LFO, or a triangle wave
-working as an LFO if you're using a scene LFO. In any case, you can either build upon these
-shapes if they suit your needs, or you can reset them to a simple straight line by right-clicking anywhere
-in the edit window, then choosing **Create -> Minimal MSEG**. More information on those menu entries can be
-found below.
-
-![Illustration 54: Default multi-segment envelope generator state](../manual_xt/images/Pictures/default_mseg.png)
-
-**Zooming and panning**
-
-In the MSEG editor, you can pan the view left or right by either left-clicking or middle-clicking,
-then drag on the background left or right.
-
-You can also zoom in and out by either scrolling with the mouse wheel or left-clicking
-then dragging your mouse up or down. Alternatively, you can again middle-click and drag if you prefer.
-
-**Moving nodes**
-
-To move a node, simply left-click and drag it. To do the same with multiple nodes at the same time, you can
-Shift+left-click and drag, which makes a selection.
-
-**Adding and removing nodes**
-
-In Surge XT's MSEG, a segment is comprised of its starting node (point) and the segment itself. A "segment's end node"
-is actually the next segment's starting node. To add a new node, simply double-click where you want it to
-be added. To remove a node and its following segment, simply double-click on the node you want to remove.
-Note that you can only remove nodes if there are more than two nodes remaining in the shape.
-
-**Control points**
-
-In addition, you will also often find a **control point** in the middle of a segment. This one can be dragged
-vertically (and also sometimes horizontally) to alter the segment's curvature or other properties depending
-on the line type. To reset a control point to its default position, simply double-click on it.
-
-**MSEG editing and behavior options**
-
-At the bottom of the editor are a couple of options to configure editing modes and general behavior of the MSEG:
-
-- **Movement Mode** - Sets the behavior when moving nodes.
- - **Single** - When dragging a node horizontally, moves a single node without affecting the others.
- - **Shift** - When dragging a node horizontally, shifts around the nodes following the node being moved, keeping the length of the segment belonging to that node constant.
- - **Draw** - Locks horizontal dragging of nodes, allowing you to draw over existing nodes to set their value in a
- simple sweeping motion.
-
-- **Edit Mode** - Configures the MSEG editor to work in Envelope or LFO mode.
- - **Envelope** - Displays draggable loop points and region (effectively representing the Sustain stage in an envelope).
- - **LFO** - Hides the draggable loop points and region, links the value of the start and end nodes to complete the
- waveform cycle, always keep loop mode enabled (even if set to off).
-
-- **Loop Mode**
- - **Off** - Don't loop when in Envelope mode, turn off draggable loop points.
- - **On** - Loop forever in the loop region (between the loop points). Subsequent segments, if any,
- will never be reached.
- - **Gate** - Loop until the note is released, then immediately transition to the segments following the loop region.
-
-- **Snap To Grid**
- - **Horizontal** - Enables horizontal snapping to the grid. The number field to the right corresponds to the
- horizontal grid resolution. You can also temporarily enable horizontal snapping by holding down the Ctrl/Cmd key
- while dragging.
- - **Vertical** - Enables vertical snapping to the grid. The number field to the right corresponds to the
- vertical grid resolution. You can also temporarily enable vertical snapping by holding down the Alt key
- while dragging.
-
-**Segment options**
-
-Each segment has options in a context menu which can be accessed with a right-click in the
-area of that segment. Some of them are only applied to the right-clicked segment, while others are applied
-to the whole shape:
-
-- **Actions**
- - **Split** - Splits the segment into two by adding a new node in its center
- - **Delete** - Remove the segment and its starting node
- - **Double duration** - Doubles the total duration of the whole shape
- - **Half duration** - Halves the total duration of the whole shape
- - **Flip vertically** - Flips the whole shape vertically
- - **Flip horizontally** - Flips the whole shape horizontally
- - **Quantize notes to snap division** - Quantizes the nodes in the whole shape to the nearest horizontal grid position. Available in Envelope edit mode only.
- - **Quantize notes to whole units** - Quantizes the nodes in the whole shape horizontally to the nearest whole time units. Available in Envelope edit mode only.
- - **Distribute nodes evenly** - Distributes the existing nodes from the whole shape evenly in the horizontal axis between the first and last node.
-
-- **Create**
- - **Minimal MSEG** - Loads a straight line going from 1 to 0 in value, a great starting point to build upon.
- - **Default voice MSEG** - Loads the default voice MSEG preset (envelope shape).
- - **Default scene MSEG** - Loads the default scene MSEG preset (triangle wave LFO shape).
- - **8 to 128 step sequencer** - Replaces the existing shape by an 8 to 128-step sequencer shape.
- - **8 to 128 sawtooth plucks** - Replaces the existing shape by an 8 to 128 sawtooth plucks shape.
- - **8 to 128 lines sine** - Replaces the existing shape by a sine wave made out of 8 to 128 segments.
-
-- **Trigger**
- - **Filter EG** - Triggers the hardwired filter envelope generator at that point.
- - **Amp EG** - Triggers the hardwired amplifier envelope generator at that point.
- - **Nothing** - Disables the triggering of both the filter and amplifier envelope generators at that point.
- - **All** - Enables the triggering of both the filter and amplifier envelope generators at that point.
-
-- **Settings**
- - **Link start and end nodes** - Links the value of the start and end nodes (useful for seamless
- looping for example).
- - **Deform applied to segment** - Sets if the selected segment is affected by the
- Deform parameter found in the LFO editor or not (see [deform parameter](#parameters)).
- - **Invert deform value** - Inverts the deform polarity applied to the selected segment.
-
-
-- **Segment types** - List of line types from which a segment can be. The control point, if present, will have a different effect depending on the type used.
- - **Hold** - Holds the value of the previous node up to the segment's end node. No control point available.
- - **Linear** - Single line. The control point controls the curvature of the segment.
- - **Bezier** - Single line. The control point can freely bend the segment.
- - **S-curve** - Curved line. The control point determines how abrupt the S-shape is and its direction.
- - **Bump** - Single line. The control point can be moved up or down to create a "bump" in the segment.
- - **Sine, sawtooth, triangle, square** - Sine, sawtooth, triangle or square waves.
- The control point determines how many wave cycles there are between the segment's beginning and end node.
- - **Stairs, smooth stairs** - Stair or smooth stairs line types. The control point determines
- how many steps there are between the segment's beginning and end node.
- - **Brownian bridge** - Random between the beginning and end node every time it's being triggered.
- Moving the control point down adjusts the number of steps while quantizing them up to 24 equidistant steps
- (useful for random scales, for instance). Moving the control point up also adjusts the number of steps, but
- this time without any quantization. The horizontal value of the control point adjusts correlation.
-
-#### Formula
-
-The Formula modulator shape is a fully-fledged and Lua-enabled scriptable modulation source. Although this
-shape may not be as straight forward to use and to understand as the others listed above, in its complexity
-hides true modulation power, which technically-geared users will truly appreciate.
-
-Surge XT comes with a series of tutorials for the formula modulator available in the patch browser,
-each of them explaining different aspects and ideas you can re-create in the formula editor:
-
-![Illustration 55: Formula modulator](../manual_xt/images/Pictures/formula_modulator.png)
-
-These tutorials are definitely worth consulting, but here are some basic principles that may help you get started
-with the formula modulator.
-
-Every formula modulator instance must contain at least a **process** function. This is where the modulator
-output will be set or calculated.
-
-Different **variables** can be accessed (and some modified), allowing you to create the desired modulation
-behavior:
-- `rate` - Value of the modulator's Rate parameter.
-- `startphase` - Value of the modulator's Phase slider.
-- `amplitude` - Value of the modulator's Amplitude parameter.
-- `deform` - Value of the modulator's Deform parameter.
-
-- `output` - Output value of the formula modulator itself (ranges from -1 to 1).
-- `phase` - Continuous value representing the real-time phase position of the modulator output.
-- `intphase` - Integer value set to the number of cycles that have been executed.
-
-- `released` - Is set to true when the modulator is in the release state.
-- `songpos` - Host song position
-- `tempo` - Host tempo
-- `samplerate` - Host sample rate
-- `block_size` - Audio buffer size used by Surge XT
-
-You can access or modify those values by using the following syntax:
-
-modstate["*variable-name*"]
-
-To see a list of values corresponding to those variables, you can open the integrated Debugger by clicking on the
-**Show** button at the right of the interface. This debugger also allows you to initialize the modulator by clicking
-on **Init**, and to step through the code using the **Step** button.
-
-Since Formula is an indexed modulator, you can have up to 8 different outputs on a single formula
-modulator instance. This can be done by assigning the output to an array of values instead of a single
-value. An example of this can be seen in the tutorial *Both Time And Space* (#10).
-
-After entering code or modifying existing code, press the **Apply** button for changes to take effect.
-You will see the output display update with the new shape.
-
-Finally, you can switch to the **Prelude** view of the code by clicking on the corresponding button. The Surge
-prelude is loaded in each surge session and provides a set of built in utilities we've found handy in writing
-modulators.
-
-
-
-#### LFO Presets
-
-To the left of the **Rate** parameter, a small menu icon can be found. Clicking on it will reveal options to
-save the selected LFO state, open previously saved states, and finally rescan presets to update the list.
-Presets will be categorized by modulation shape.
-
-#### Raw Waveform and EG Only Outputs
-
-Each LFO is comprised of three distinct modulation outputs: the full **LFO**, the **raw waveform**, and
-the **envelope generator only**.
-
-While the full LFO output (default) will send the resulting LFO shape modulated with the integrated
-envelope generator, switching to **Raw Waveform** from the modulation source context-menu will bypass
-the envelope, and **Envelope Generator Only** will set aside the LFO shape itself and only produce an output
-from the envelope generator.
-Those three outputs are treated as three separate modulation sources.
-
-Right below, there is an option to apply the Amplitude parameter to still affect the Raw Waveform and
-Envelope Generator Only outputs of that modulator.
-
-#### Copy/Paste Options
-
-Finally, after setting up an LFO, its settings with or without its targets can be copied and pasted to
-another LFO. To do this, simply right-click on the source LFO in the routing bar and use the desired
-**Copy** option, depending on what you want to replicate on the new modulation source. Then, use the
-**Paste** option to paste it.
-
-#### Renaming
-
-LFOs and S-LFOs can be renamed to be more representative of their role and to help the user keep track of what each modulation source is doing in a patch. To do this, simply right-click on the LFO or SLFO in question,
-select **Rename Modulator...** and enter the desired name.
-
-For more information on LFO algorithms, see
-[LFOs](#lfos) in the Technical Reference section.
-
-
-
-### Internal Modulators
-
-#### Filter EG
-
-The Filter Envelope Generator modulation source, which is labeled "Filter EG", is simply a modulation
-source corresponding to the output of the Filter EG, which as its name suggests is already hardwired
-to the filter modules. Other parameters can also be modulated by the Filter EG by various amounts,
-simply by routing them to this source.
-
-#### Amp EG
-
-The Amp EG modulation source, which is labeled "Amp EG", is simply a modulation source corresponding to the
-output of the Amp EG, which as its name suggests is already hardwired to the output amp module. Other
-parameters can also be modulated by the Amp EG by various amounts,
-simply by routing them to this source.
-
-#### Random
-
-This modulation source operates at voice level. It will generate a single random value inside the modulation range
-for each voice every time a voice is played.
-
-By default, this modulation source is bipolar and its value distribution is uniform. However, you can
-switch to a unipolar and normal versions of it by right-clicking on it and selecting **Switch to...**, and then choosing the desired type from the list. All of those can be used at the same time,
-so they can be considered independent modulation sources.
-
-Note that multiple parameters routed to that modulation source will all receive the same value (in percentage).
-To send different randomized values to different parameters, multiple LFOs can be
-configured in a way to do this and with greater control. See the explanation of
-[the **Rate** parameter](#parameters).
-
-#### Alternate
-
-This modulation operates at the voice level. It will generate alternating values between the two modulation range's
-extremums.
-
-By default, this modulation source is bipolar. However, you can switch to a unipolar version of it by
-right-clicking on it and selecting **Switch to -> Alternate Unipolar**. The two can also be used at the same time,
-so they can be considered two independent modulation sources.
-
-
-
-### Voice and Note Properties
-
-Like other synthesizers, Surge XT receives MIDI data to determine what note(s) to play.
-However, it can also use **MIDI CC** data to modulate any routable parameter.
-
-There are 14 of those voice and note properties in the routing bar:
-
-| | | | |
-|-|-|-|-|
-|**Velocity**|Per note velocity amount|Voice modulator|Unipolar|
-|**Release Velocity**|Per note release velocity amount|Voice modulator|Unipolar|
-|**Polyphonic Aftertouch (labeled Poly AT)**|Per note polyphonic aftertouch|Voice modulator|Unipolar|
-|**Channel Aftertouch (labeled Channel AT)**|Monophonic aftertouch if MPE is disabled|Scene modulator, Voice modulator in MPE mode|Unipolar|
-|**Pitch Bend**|Pitch bend wheel value|Scene modulator|Bipolar|
-|**Modwheel**|Modulation wheel value|Scene modulator|Unipolar|
-|**Breath**|Breath controller signal|Scene modulator|Unipolar|
-|**Expression**|Often used in pedals and for crescendos or decrescendos|Scene modulator|Unipolar|
-|**Sustain**|Sustain signal, often from a pedal|Scene modulator|Unipolar|
-|**Timbre**|Primarily used for MPE controllers|Voice modulator|Bipolar|
-|**Keytrack**|Per note keytrack value|Voice modulator|Bipolar|
-|**Lowest Key**|Keytrack value corresponding to the lowest note played|Scene modulator|Bipolar|
-|**Highest Key**|Keytrack value corresponding to the highest note played|Scene modulator|Bipolar|
-|**Latest Key**|Keytrack value corresponding to the latest note played|Scene modulator|Bipolar|
-
-Note that only scene-level modulation sources can be routed to FX sends and parameters.
-For instance, you can use **Latest Key** instead of **Keytrack** to modulate FX parameters, as Keytrack is
-a voice-level modulation.
-See [Voice vs. Scene](#voice-vs-scene-modulators) modulators for more details.
-
-
-![Illustration 56: Routing bar sections](../manual_xt/images/Pictures/routingbar_sections.png)
-
-### Macros
-
-There are 8 macros, and by default, they are blank.
-
-What separates these assignable controllers from the rest is that with a right-click, they can be
-assigned to a MIDI controller or any MIDI CC signal, and their value can be edited on-screen
-with the blue digital slider below their names.
-
-By default, the macros are assigned to midi CC 41-48, which is often mapped by default to knobs or
-slider banks for a lot of midi controllers.
-
-See [MIDI CC Information](#midi-cc-information) in the Technical Reference section for more information.
-
-The right-click context menu also allows you to rename the controller.
-There is also the typical routing and clearing options,
-(see [Routing](#routing)) and you can choose if their modulation is bipolar (both positive and negative with 0
-in the middle) or unipolar (just positive).
-
-Macros can also be dragged and dropped over other macros to make them switch place. To do so, simply left-click + drag over the desired macro slot location.
-
-Finally, note that macros are considered **global modulators**, meaning they are shared between and act on both
-scenes A and B. This is useful in case you would want to quickly control certain parameters from both scenes
-in a single place.
-
-
-
-# Effects
-
-The FX Section controls the 16 effect units of the effect block
-stored in every patch.
-
-![Illustration 57: Effects section](../manual_xt/images/Pictures/fxsection.png)
-
-## Effect Unit Selector
-
-The effect unit selector can be found towards the top of the FX section. It also represents the signal path
-of the effects block. Here it is in more detail:
-
-![Illustration 58: The effect block](../manual_xt/images/Pictures/illu18.png)
-
-*The effect block*
-
-A **left-click** on a particular unit in the effect unit selector brings that unit in the editor.
-A **double-click** on a unit disables/enables it. This state is stored within patches,
-unlike the global FX bypass setting.
-A **right-click** on a unit displays the effect and preset picker specifically for that unit, allowing you to directly
-add or swap an effect on that unit.
-An **Alt+Click** clears the desired FX unit.
-
-Moreover, you can drag-and-drop units over other units to make them switch places. Holding down **Ctrl/Cmd** and
-dragging allows you to duplicate (copy) units on other units instead, and holding **Shift** allows to simply replace
-(overwrite) the target unit with the source one.
-
-Finally, you can right-click on either the **A** or **B** icons in the diagram to bring up output hard clipping
-options, which are the same as explained earlier in the [Scene Output](#scene-output)
-and [Global Volume](#fx-bypass-character-global-volume) sections.
-
-## Effect and Preset Picker
-
-Effects can be added or removed from the **Effect and preset picker**
-(just below the FX return sliders). You can also cycle through effects and presets using the
-same arrow buttons as those found in the global [Patch Browser](#patch-browser).
-
-You can also save your own effect presets which will be stored globally with
-the synth. Finally, at the bottom of this menu, there are **Copy** and **Paste** options,
-which allows you to copy an effect and its parameters and paste it on another unit.
-You can also use drag-and-drop gestures to accomplish this
-(see [Effect Unit Selector](#effect-unit-selector)).
-
-## Effect Editor
-
-This is where every effect parameter can be edited. Like with the oscillator editor, the parameter of each slider
-will change depending on the loaded effect.
-
-Here's a list of the available effects:
-- [EQ](#eq)
-- [Exciter](#exciter)
-- [Graphic EQ](#graphic-eq)
-- [Resonator](#resonator)
-- [CHOW](#chow)
-- [Distortion](#distortion)
-- [Neuron](#neuron)
-- [Tape](#tape)
-- [Waveshaper](#waveshaper-1)
-- [Combulator](#combulator)
-- [Frequency Shifter](#frequency-shifter)
-- [Nimbus](#nimbus)
-- [Ring Modulator](#ring-modulator)
-- [Treemonster](#treemonster)
-- [Vocoder](#vocoder)
-- [Chorus](#chorus)
-- [Ensemble](#ensemble)
-- [Flanger](#flanger)
-- [Phaser](#phaser)
-- [Rotary Speaker](#rotary-speaker)
-- [Delay](#delay)
-- [Reverb 1](#reverb-1)
-- [Reverb 2](#reverb-2)
-- [Spring Reverb](#spring-reverb)
-- [Airwindows](#airwindows)
-- [Conditioner](#conditioner)
-- [Mid-Side Tool](#mid-side-tool)
-
-See [Effects](#effects-1) in the Technical Reference section for more information about each effect.
-
-Note: remember that **FX parameters are scene controls**. This means that only scene-level modulation sources
-can modulate them.
-
-
-
-# Microtuning
-
-Surge XT has become known as a good synth for microtuning. It features full keyboard microtuning support using two
-different modes, **Scala SCL/KBM** and **MTS-ESP**, as well as from its internal **Tuning Editor**. Here we will focus
-on explaining the options in Surge XT's **Tune** menu, one by one. If you want to learn more about the different
-tuning workflows, and the pros and cons of each of them, please visit our [Tuning Guide](../tuning-guide/#methods)
-
-While using either of the modes, the **Tune** and **Filter Cutoff** menus will dynamically change to reveal the relevant
-tuning-related options. Also note, with any tuning mode active, left-clicking the **Tune** label in the [status area](#status-area)
-simply turns the tuning mode on or off. To access the menu from this state, right-click instead
-
-## Default
-
-By default, Surge XT tunes incoming MIDI notes the same way (nearly) every other software instrument does:
-To 12 equal divisions of an octave (12edo for short), with middle C tuned to 261.626Hz as a reference note (which makes A=440).
-
-From this default state, opening the tuning menu shows you this:
-
-![Illustration 59: Tuning menu default](../manual_xt/images/Pictures/tuning_menu.png)
-
-*The tuning menu in default mode*
-
-The options near the top pertain to the Tuning Editor and SCL/KBM mode of retuning, the ones at the bottom to MTS-ESP.
-Let's go through the menu options one by one, and also briefly describe the advantages of each tuning method.
-
-## Tuning Editor
-
-The first option on the previously shown menu opens Surge XT's built in tuning editor, which can
-change the intonation of the current Surge XT instance (and other instances and instruments too,
-via MTS-ESP, more on that later). Its function is described in more detail in our [Tuning Guide](../tuning-guide/#tuning-editor)
-
-## Scala SCL/KBM Mode
-
-Scala SCL/KBM uses small plain text files to give tuning information to an instrument. For more
-general information about this method, refer to our [Tuning Guide](../tuning-guide/#scala-files)
-
-Once in SCL/KBM mode, the tuning menu looks like this:
-
-![Illustration 60: Tuning menu](../manual_xt/images/Pictures/tuning_menu_2.png)
-
-*The tuning menu with an SCL/KBM pair loaded*
-
-- **Current tuning** - Once an SCL file has been loaded, the description line of the tuning will appear here.
-
-- **Current keyboard mapping** - Once a KBM has been loaded, the file name of the keyboard mapping will appear here.
-
-- **Open tuning editor…** - As mentioned above, opens the [Tuning Editor](../tuning-guide/#tuning-editor)
-
-
-The following three options are grayed out in the default menu, but become available once SCL/KBM files are loaded.
-Their purpose is returning the instrument to standard intonation settings:
-
-- **Set to standard tuning** - Resets the currently loaded SCL tuning table to 12 tone equal temperament, keeping
-the currently loaded KBM.
-
-- **Set to standard mapping (Concert C)** - Resets the currently loaded KBM such that the 1/1 of the loaded SCL is
-mapped to middle C.60 at 261.626 Hz, keeping the current SCL.
-
-- **Set to standard scale (12-TET)** - Resets both of the above.
-
-
-The next three options are for loading SCL/KBM files. These can also be imported via drag-and-drop
-anywhere on the Surge XT interface:
-
-- **Load .scl tuning** - Loads .scl files.
-
-- **Load .kbm keyboard mapping** - Loads .kbm files.
-
-- **Factory tuning library** - Clicking on this option will open the system file browser at the location of the
-included Surge XT factory SCL/KBM content.
-
-
-Then come some auxiliary options:
-
-- **Remap A4 (MIDI note 69) directly to…** - Instead of using a *.kbm* file, this option lets you directly type in the frequency (in Hz)
-of MIDI note 69, A above middle C.
-
-- **Use MIDI channel for octave shift** - Enables users of generalized array keyboard controllers (such as the
-Lumatone) to map large tuning gamuts and equal-temperaments contiguously across all 16 MIDI Channels.
-
-
-Then follow two options which determine how Surge XT's internal modulators will relate to the tuning information:
-
-- **Apply tuning at MIDI input** - Selected by default. When checked, the tuning is only applied
-to MIDI input, but pitch modulation is in 12-tone equal temperament amounts. So for example, a pitch bend of 2 always means
-200 cents, whether or not your chosen tuning has a 200 cent interval.
-
-- **Apply tuning after modulation** - When checked, pitch modulation is instead tuned to the loaded scale.
-For instance, this means that a pitch bend of 2 always lands on the same frequency as the note two steps up,
-even in tunings with unequal step sizes.
-
-
-Since choosing between one of the two options explained above fundamentally changes how a patch would play in tuned mode,
-this setting is stored at the patch level.
-
-
-
-## MTS-ESP Mode
-
-**MTS-ESP** is a system in which all software instruments are retuned simultaneously by one central interface.
-To learn more about what MTS-ESP is, visit our [Tuning Guide](../tuning-guide/#mts-esp)
-
-In MTS-ESP mode, the tuning menu will look like this:
-
-![Illustration 61: Tuning menu in MTS-ESP microtuning mode](../manual_xt/images/Pictures/tuning_mts-esp.png)
-
-*The Surge XT Tuning menu in MTS-ESP mode.*
-
-The MTS-ESP in parentheses at the top indicates that an MTS-ESP Source is present.
-
-
-- **Current tuning** - Displays the name of the currently active tuning in MTS-ESP.
-
-- **Use MTS-ESP if available** - This option was already visible in the previous menus. If this option is checked,
-when Surge XT detects the presence of an MTS-ESP Source, its tuning will be determined by that Source. If no source is present,
-Surge XT will go back to the default or SCL/KBM modes. This settings applies across all Surge XT instances that are loaded after
-it was checked.
-
-- **Act as MTS-ESP source** - When this option is checked, the current instance of Surge XT will become the MTS-ESP source.
-Any **SCL/KBM** loaded (or any changes applied from the **Tuning Editor**) in the current instance, will be applied to any
-MTS-ESP compatible instruments present, for example into all other instances of Surge XT (provided the "Use MTS-ESP..." option
-above was checked). The MTS-ESP specification only allows one source to exist at a time, so this option will be
-grayed out if another source is already present.
-
-- **Re-Initialize MTS-ESP Library and IPC** - Since there can only be one MTS-ESP source at a time, it's important that
-sources properly de-register themselves when closing. If that doesn't happen (say if the host crashes), that can lead to
-some problems. Pressing this button and re-starting your host session should solve these.
-
-- **Disconnect as client from MTS-ESP** - Provides a way to disable MTS-ESP in the current Surge XT instance,
-even when a Source is present, whereupon the individual instance will return to SCL-KBM mode.
-
-- **Query tuning at note on only** - This option is only relevant if you're using an MTS-ESP source which can change tunings
-on-the-fly, like for example [ODDsounds MTS-ESP Master](https://oddsound.com/mtsespsuite.php).
-If the MTS-ESP tuning changes while notes are held, a client can choose whether to adjust those notes immediately (which will
-sound like pitch bends) or to wait until the next note-on. The former behavior (known as Dynamic Microtuning, the
-default for Surge XT), can enable some unheard-of musical gestures like morphing gradually from one tuning to the next.
-That may not always be what you want though, which is why this option exists. With it enabled, held notes
-keep their pitch when the tuning changes.
-
-
-
-# Main Menu
-
-You can find this menu in the bottom-right corner of Surge XT's interface.
-Clicking it reveals various configuration options.
-
-Note: Some of these options are also present at the top of the user interface for easier access
-(see [Status Area](#status-area)).
-
-This menu can also be opened by right-clicking anywhere on the user interface where there are no controls.
-
-### Zoom
-
-The **Zoom** option can be extremely useful on certain monitors and configurations.
-
-In its sub-menu there are various options to change the scale of the whole user-interface to a certain size.
-Keep in mind that it will not let you change it to any size, as there is an upper limit depending on your screen resolution.
-
-When a new instance of Surge is loaded, its zoom will be set to default size. To change this value,
-go back in this sub-menu and select the option "Set [zoom %] as default", or "Set default zoom to ..." then enter the desired value.
-
-### Skins
-
-This is where the UI skin can be chosen. Surge XT comes with two factory skins: **Classic** and **Dark**.
-
-![Illustration 62: Classic skin](../manual_xt/images/Pictures/surge.png)
-
-![Illustration 63: Dark skin](../manual_xt/images/Pictures/surge_dark.png)
-
-Additional skins are available to download from our [**skin library**](https://surge-synthesizer.github.io/skin-library).
-Here is one of them, the **Royal** skin by [Voger Design](https://vogerdesign.com/):
-
-![Illustration 64: Royal skin](../manual_xt/images/Pictures/surge_royal.png)
-
-From there you can also reload the current skin and rescan the skins folder. You can even configure if the colors of
-context menus follow the OS light/dark mode settings, or are applied from the currently loaded skin.
-
-From there, you can also reload the current skin, rescan skins, open the current skin folder location, open the skin
-inspector and open the skin development guide.
-
-If you would like to get on board with the skin engine and developing skins,
-see the documentation on [developing Surge XT skins](https://surge-synthesizer.github.io/skin-manual.html).
-
-### Value Displays
-
-- **High Precision Value Readouts** - Allows value popups that appear when tweaking parameters to show more digits
-after the decimal point (6 digits). This can be useful in some more advanced and precise scenarios.
-
-- **Modulation value readout shows bounds** - Allows the value popup that appears when applying modulation and
-adjusting its amount to a parameter to show more values, such as the relative range in the negative direction,
-and both absolute minimum and maximum values underneath.
-
-- **Show value readout on mouse hover** - Allows you to enable or disable the gesture of hovering over a slider to
-display its value.
-
-- **Show ghosted LFO waveform reference** - Allows you to enable or disable the LFO waveform at full amplitude
-displayed with a dotted line in the LFO display area.
-
-- **Middle C** - Allows you to change the reference octave shown in popup displays of some frequency-related parameters,
-such as filter cutoff for instance. You can change Middle C to display either **C3**, **C4** or **C5**.
-
-### Data Folders
-
-In this sub-menu, there are a couple of options regarding user data and patches.
-
-**Open factory data folder...** - This opens the location where factory patches, wavetables and other
-configuration files are stored.
-
-**Open user data folder...** - This option opens the location where custom patches saved by the user will be stored.
-
-**Set custom user data folder...** - This allows you to change where user patches will be saved.
-
-**Rescan all data folders** - This option can be useful after importing patches created by someone else,
-after transferring user patches to another computer, or after downloading patches from the internet.
-
-### Mouse Behavior
-
-This sub-menu contains options allowing you to change the sensitivity of the mouse when moving sliders.
-While *Legacy* is used by default, the other 3 options range from *Slow* (more granular) to *Exact*
-(as fast as the mouse pointer). Also, there is an option to keep showing the mouse pointer on the
-screen when dragging on a control.
-
-Touchscreen mode automatically sets the mouse options to give the user the best experience when using Surge
-on a touch screen.
-
-### Patch Settings
-
-This is where you can configure what appears by default in the **Author** and **Comment** fields when saving a patch. \
-You can also set the currently loaded patch as the default patch, append the original author
-name to modified patches or not, and configure tuning and tuning mapping when loading patches. \
-Finally, there are options to export the currently loaded patch as an HTML file, either containing
-all parameters, or only the ones that aren't set to their default value.
-
-### Workflow
-
-- **Remember tab positions per scene** - Remember tab positions (for example, currently selected oscillator or
- LFO currently shown in the LFO editor) separately for each scene or unified in the whole synth.
-
-- **Load MSEG snap state from patch** - Tells Surge XT if it should load the MSEG snap parameters from the saved patch or
-keep the existing settings.
-
-- **Previous/next patch constrained to current category** - Turn this option off to allow the previous/next
-patch arrow buttons in the patch browser area to automatically switch categories after hitting the beginning or end
-of one.
-
-- **Retain patch search results after loading** - Prevents the search results box from closing after loading a searched
-patch. Useful if you want to preview all patches corresponding to your search query.
-
-- **Confirm patch loading if unsaved changes exist** - When this option is enabled, Surge XT will ask if you
-would like to save the currently edited patch before loading the next one.
-
-- **Use keyboard shortcuts** - Enables of disables the keyboard shortcuts.
-
-- **Edit keyboard shortcuts...** - Opens a window containing a list of all the available keyboard shortcuts in Surge XT.
-This is also where you can customize all those shortcuts and enable or disable them individually.
-
-- **Shift + F10 and Edit parameter value shortcuts** - If the first of the two options is enabled, the **Shift + F10**
-keyboard shortcut and **Enter** key will allow you to access a control's context menu.
-If the **Follow mouse hover focus** option is enabled, it will also follow the mouse cursor.
-
-- **Virtual keyboard** - Toggle this option to show or hide the virtual on-screen keyboard at the
-bottom of the user interface. The virtual keyboard also includes a pitch bend and modulation wheel control.
-
-- **Oscilloscope...** - This opens a window that displays an oscilloscope or a spectrum analyser. See [Oscilloscope](#oscilloscope) for more information.
-
-### Accessibility
-
-- **Set all recommended accessibility options** - Enables all the accessibility options found right below. Useful for quickly setting up
-Surge XT to work with screen readers.
-
-- **Send additional accessibility announcements** - Sends more information when using accessibility features, such as
-patch or category changes via the arrow buttons below the patch browser.
-
-- **Announce patch browser entries** - This is a Windows only option.
-If enabled, the narrator will announce the currently selected row in the patch browser.
-
-- **Add sub-menus for modulation menu items** - Makes the modulation options found in the context menu of controls work as a
-sub-menu with discrete Clear, Mute and Edit entries, alongside being able to directly click on the corresponding icons.
-
-- **Focus modulator editor on "Add modulation from" actions** - After using the context menu option ["Add modulation from"](#add-modulation-from),
-the modulator that is used to modulate the targeted control will be displayed in the modulation editor.
-
-
-### MPE Settings
-
-**MPE** stands for **MIDI Polyphonic Expression**. It can be enabled or disabled in its sub-menu.
-The current and default pitch bend range can be changed here as well. Finally, you can also configure
-the MPE pitch bend smoothing amount.
-
-### MIDI Settings
-
-This sub-menu contains options for MIDI mappings.
-
-#### Controller Smoothing
-
-This sub-menu contains options to set the amount of desired MIDI controller smoothing.
-
-#### Sustain Pedal in Mono Mode
-
-- **Sustain pedal holds all notes (no note off retrigger)** - If sustain is engaged and multiple notes are hit then
-held one after the other, Surge XT will stay on the latest note when releasing it instead of switching to the previous
-note.
-- **Sustain pedal allows note off retrigger** - If sustain is engaged and multiple notes are hit then held one after
-the other, Surge XT will switch to the previous note when the latest note is released.
-
-#### Use MIDI channels 2 and 3 to play scenes individually
-
-Playing MIDI channels 2 or 3 when this option is unchecked will not play scene A or B individually.
-
-#### Ignore MIDI Program Change messages
-Self-explanatory. You probably want to turn this on in most situations.
-
-#### Save MIDI mapping as...
-
-This allows you to save the current MIDI mapping. The newly created profile will appear in this menu under the two top options.
-
-#### Set current MIDI mapping as default
-When a new instance of Surge XT is opened, it will load this MIDI mapping by default if you select this option.
-
-#### Clear current MIDI mapping
-
-As its name suggests, this option clears the existing MIDI mapping in Surge XT and resets it back to default.
-
-#### Show Current MIDI Mapping
-
-This opens up an HTML file listing the currently loaded MIDI mapping.
-
-### Tuning
-
-These options are also present in the Tuning menu at the top of the interface. See [Microtuning](#microtuning) for
-detailed explanations on the tuning implementation within Surge XT.
-
-### Online Links
-
-The following items are for [reaching the developers and user feedback information](https://surge-synthesizer.github.io/feedback),
-[reading the code on GitHub](https://github.com/surge-synthesizer/surge/),
-[downloading additional content](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Additional-Content),
-visiting [Skin Library](https://surge-synthesizer.github.io/skin-library), opening this user manual,
-and finally [opening Surge's website](https://surge-synthesizer.github.io/).
-
-### About Surge XT
-
-Finally, there is an option to open the **About** pane containing various version, configuration and license information.
-
-### Developer Menu
-
-When right-clicking on the Menu button, some more options for development and testing purposes appear in various sub-menus.
-Holding down **Shift** when right-clicking anywhere where there is no control will also display this Developer option sub-menu.
-
-
-
-# Oscilloscope
-
-Surge XT offers a basic real-time waveform and spectrum display to help with your sound design. After opening the Oscilloscope window,
-you can choose between either a **Waveform Display** (oscilloscope) or **Spectrum Display**.
-
-In both modes, you can select to view only the left or right stereo channels or both simultaneously using the **L** and **R** buttons
-towards the top-right of the display. If both are selected, the results are averaged between the two channels. If neither are selected,
-the scope will be frozen in its current position until a channel is selected.
-
-## Waveform Display
-
-The waveform display is based on the well-known oscilloscope plugin s(M)exoscope. Big thanks to [Bram@Smartelectronix](https://github.com/bdejong/smartelectronix) for open-sourcing this useful tool!
-
-![Illustration 64: Royal skin](../manual_xt/images/Pictures/oscilloscope.png)
-
-The oscilloscope has four trigger modes:
-
-- **Freerun** - Enabled by the default. The display never erases and immediately starts writing again at the left as soon as the waveform reaches the right side of the display area.
-
-- **Rising Edge** This mode retriggers the display every time a waveform peak rises past a certain level. This level is set with the **Trigger Level** slider. Drag this slider to set the retrigger level above or below the zero crossing. The retrigger level will be indicated by a horizontal white line on the display.
-
-- **Falling Edge** Identical to Rising mode, except that the display retriggers only when the waveform falls past the retrigger level.
-
-- **Internal Trigger** - Retriggers the display at a frequency set by the **Internal Trigger Freq** slider. Values are measured in Hz, and retrigger rates range from as infrequently as 0.441 Hz to as often as 139.4 times a second. This mode is useful if you only want to watch a certain part of a waveform.
-
-In all of the above modes, the **Retrigger Threshold** slider determines how soon the display can be retriggered after the last trigger. This threshold is measured in samples, from 1 to 10000.
-For example, if the Retrigger Threshold is set to 450, then the display will not retrigger unless at least 450 samples have passed through the display since the last retrigger. This is useful if you absolutely need to see a certain number of samples in your waveform before it refreshes.
-
-There are also two other sliders that control the display:
-
-- **Time Scaling** - Controls the number of pixels per sample. The lower the number, the finer the resolution of the waveform. When you change this slider, you can see the time scale marks on the display change to represent the new timescale.
-
-- **Amplitude Scaling** - Controls the amplitude of the waveform in the display. If your waveform appears too thin, turn it up. If your waveform is cut off at the top or bottom of the display, turn it down.
-
-
-Finally, there are three options you can use to customize the oscilloscope's behavior even further:
-
-- **DC Block** - Enabling this option will automatically compensate for DC offset, if your waveform is too far off the zero crossing line for example.
-
-- **Freeze** - This button can be used to freeze the waveform on the display.
-
-- **Sync Redraw** - When activated, Surge XT will only update waveform data when the plugin's internal graphic buffer is full (as opposed to in real-time). In other words, turn this on to slow down how often the display refreshes, and adjust the Time Scaling slider again to find the right speed.
-
-
-
-## Spectrum Display
-
-The spectrum display provides a simple instantaneous view of the frequency domain of the current
-synthesizer output. It is done using FFT, with a fixed block size of 8192 samples.
-
-![Illustration 64: Royal skin](../manual_xt/images/Pictures/spectrum.png)
-
-The display is updated with new data extremely quickly as it streams in. It interpolates between the
-prior FFT block and the new block over the course of (8196 / sample size) seconds. Once this very
-brief smoothing period passes, all new data is displayed.
-
-The spectrum display can be controlled by a few parameters:
-
-- **Min Level** - Controls the lowest value that the display will show. Increase it in order to scale
-the display to your taste or your data.
-
-- **Max dB** - Controls the highest value that the display will show. Decrease it in order to
-scale the display to your taste or your data.
-
-- **Decay Rate** - Controls the time it takes for the spectrum's amplitude to decay after a decrease in
-amplitude.
-
-- **Freeze** - This button can be used to freeze the spectral content on the display.
-
-
-
-# Accessibility
-
-The Surge XT user interface can be completely navigated from the keyboard. Pressing Tab will allow you to move through all controls
-in the user interface, while pressing the up and down arrow keys will let you adjust them. Just like holding Shift or Control/Command
-while moving a slider with the mouse lets you make more precise adjustments, holding these modifiers while pressing the
-arrow keys will have a similar effect. Pressing Home, End or Delete will let you set a control to its maximum, minimum and default
-value respectively. Finally, pressing Shift+F10 or the Applications key on any control will open its right-click menu.
-
-With the exception of Tab, the other keys mentioned here need to be turned on before they can be used. If you press one of these keys
-with the shortcuts turned off, you will be asked whether you want to turn them on. Alternatively, they can be turned on by checking the
-**Use keyboard shortcuts** option in the [Workflow](#workflow) section of the menu. A number of additional shortcuts are available
-which allow you to quickly open specific dialogs, change patches or save your work and more.
-
-In addition to full keyboard support, Surge XT is compatible with screen reader software on both Mac and Windows. This means that as
-you navigate through the interface, the screen reader will give you full speech and braille feedback on the control that’s focused
-and what its value is. You can also navigate the interface using your screen reader’s review commands.
-
-For additional help on using Surge with specific Screen Readers, refer to this page.
-
-
-
-
-
-# Technical Reference
-
-## Surge XT Hierarchy
-
-### Overview
-
-![Illustration 65: Block diagram of the synthesizer engine](../manual_xt/images/Pictures/illu16.png)
-
-*Block diagram of the synthesizer engine.*
-
-![Illustration 66: Signal flow of the synthesizer engine](../manual_xt/images/Pictures/signal_flow.png)
-
-Illustration shows an overview of the synthesizer engine of Surge XT.
-
-
-
-### Voices
-
-![Illustration 67: Block diagram of a synthesizer voice](../manual_xt/images/Pictures/illu17.png)
-
-*Block diagram of a synthesizer voice*
-
-Illustration shows most audio and control-paths of a single
-voice. Not all processing elements of the voice are shown in the
-diagram.
-
-
-
-### LFOs
-
-Each voice has 6 configurable LFOs and each scene has an
-additional 6 configurable LFOs, making each voice effectively capable of receiving modulation from
-a total of 12 LFOs.
-
-![Illustration 68: LFO block diagram](../manual_xt/images/Pictures/tech_lfos.png)
-
-*LFO block diagram*
-
-
-
-### Modulation Routing Details
-
-How the modulation routing works internally isn't something you normally
-have to think about when using Surge XT. Just activate the modulation mode
-with the desired source and see which of the sliders that become blue.
-Nonetheless, it is useful to know which limitations are present and why.
-
-![Illustration 69: Modulation routing behind the scenes](../manual_xt/images/Pictures/illu19.png)
-
-*Modulation routing behind the scenes*
-
-The thing to remember is that voice modulation sources can't
-modulate scene parameters, global/effect parameters or parameters from scene LFOs, since these are two
-distinctly different modulation paths. Other than that it should be pretty straightforward.
-
-
-
-## Oscillator Algorithms
-
-Surge XT provides 12 different oscillator algorithms, each capable of
-generating sound in different ways with a different set of controls.
-They're not just different waveforms.
-
-### Classic
-
-The Classic oscillator algorithm consists of a main oscillator that can
-generate a pulse wave, a sawtooth wave, a dual-saw wave or anything in
-between.
-
-A sub-oscillator provides a pulse-wave one octave below the main
-oscillator. Changing the pulse-width of the sub-oscillator does affect
-the main oscillator as well, as they will both change levels at the same
-time except that the main oscillator does it twice as often.
-
-The Classic algorithm is also capable of oscillator self-sync. Note that
-the sub-oscillator will be used as the base-pitch for the sync.
-
-The algorithm provides unison at the oscillator-level with up to 16
-instances. Unlike the Wavetable oscillator, the cost of unison in terms
-of CPU usage for the Classic oscillator is quite modest. The unison
-oscillator voices are affected by the scene level Osc Drift parameter
-independently.
-
-| | | |
-|-|-|-|
-| Shape | Waveform shape. -100% = pulse, 0% = saw, 100% = dual saw. | -100 .. 100 % |
-| Width 1 | Duty cycle (pulse) or relative phase (dual saw). | 0 .. 100 % |
-| Width 2 | Squeezes or expands the waveform in a different way. If positive, the two latter halves of two consecutive single cycles get squeezed closer together. | 0 .. 100 % |
-| Sub Mix | Sub-oscillator mix, 0% = only main, 100% = only sub. | 0 .. 100 % |
-| Sync | Oscillator hard sync. | 0 .. 60 semitones |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison (1 = disabled). | 1 .. 16 |
-
-
-
-### Modern
-
-The Modern oscillator algorithm is a multi-waveform oscillator which creates clean,
-low aliasing versions of pulse, triangle, saw and sine waveforms with unison and
-sub-oscillator capabilities. It is based on the differentiated polynomial waveform
-algorithm, from [this paper](https://www.researchgate.net/profile/Juhan-Nam/publication/224557976_Alias-Suppressed_Oscillators_Based_on_Differentiated_Polynomial_Waveforms/links/573f274d08ae9ace84133dc9/Alias-Suppressed-Oscillators-Based-on-Differentiated-Polynomial-Waveforms.pdf).
-
-Three parameters labeled **Sawtooth**, **Pulse** and **Triangle** control relative mixes of those waveforms, while
-the **Width** parameter controls the pulse width for the Pulse wave. **Sync** offsets the pitch of the oscillator against the pitch of the internal reference oscillator
-while resetting the phase of the main oscillator to the phase of the reference oscillator, to achieve typical hard sync effects.
-Unison controls work like in other Surge XT oscillators.
-
-| | | |
-|-|-|-|
-| Sawtooth | Amplitude of the Sawtooth waveform. | -100 .. 100 % |
-| Pulse | Amplitude of the Pulse waveform. | -100 .. 100 % |
-| Triangle/Sine/Square | Amplitude of the third waveform, can be right-clicked (for more information, see below this parameter list). | -100 .. 100 % |
-| Width | Duty cycle of the Pulse waveform. | 0 .. 100 % |
-| Sync | Oscillator hard sync. | 0 .. 60 semitones |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison (1 = unison disabled). | 1 .. 16 |
-
-#### Third Waveform Parameter
-
-The third waveform parameter (labeled "Triangle" by default) is special in that
-it has several waveform options to choose from. If you right-click it, you can see
-that it can generate a triangle wave, a sine wave, or a square wave. This control
-can also become a sub-oscillator, playing at half the frequency of the other two waveforms.
-Importantly, in sub-oscillator mode, the third waveform does **not** participate in unison,
-which is in contrast to the Sub Mix parameter in Classic oscillator. Finally,
-there is also an option for the sub-oscillator to bypass hard syncing against the internal reference oscillator.
-
-
-
-### Wavetable
-
-A wavetable in Surge XT consists of up to 512 single-cycle waveforms (frames), each of which can consist of up to 4096 samples.
-Using the **Morph** parameter it is possible to sweep across the waveforms
-in the wavetable.
-
-![Illustration 70: Wavetable](../manual_xt/images/Pictures/tech_wavetable.png)
-
-The individual waves are equidistant in the table. When the shape
-setting is between two individual waves, they will be mixed to ensure
-smooth travel. You can't edit the wavetable contents directly within
-Surge XT, but it is possible to generate custom wavetables with external
-software.
-
-Surge XT can also import wavetables containing a **clm** block to indicate loop size (as used by Serum),
-a **cue** block (as used by various products including Native Instruments) and a **smpl** block.
-Wavetable files without loop information are loaded as one-shots.
-
-This effectively lets you import various wavetables from other products such as **Serum**.
-All those 3rd party wavetables that have been tested in Surge XT have been reported to work flawlessly.
-
-To import custom wavetables, use the wavetable selection bar at the bottom of the oscillator display. This is where you can also
-[download additional wavetable content](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Additional-Content).
-
-Alternatively, you can simply drag-and-drop any compatible wavetable file anywhere over the Surge interface to load it.
-
-You can even create your own wavetables for Surge using [wt-tool](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Creating-Wavetables-For-Surge) or [WaveEdit](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Creating-Wavetables-With-WaveEdit).
-
-Once a wavetable is loaded, you can also export it using the wavetable selection bar.
-
-Then, by modulating the **Morph** parameter, it is possible to create motion,
-dynamic response to playing and sonic variation. If you want to select an exact frame, drag the slider while holding
-down Ctrl/Cmd, which allows you to snap to exact values in the table, useful for switching between distinct
-shapes, for example.
-
-What real-life property, if any, the **Morph** parameter is supposed to mirror depend on
-each wavetable. Common cases are:
-
- - Analyzed from sounds that evolve over time. The behavior can be
- recreated by letting shape increase over time by modulation. It's
- the most common among the analyzed wavetables.
- - Analyzed from static sounds over different pitches to capture the
- formant shift of a sound. The behavior can be recreated by
- modulating shape by the keytrack modsource.
- - A parameter of a mathematical equation.
-
-In the end it's just a set of data and Surge XT doesn't care how it was
-generated, all that matters is how it sounds.
-
-The Wavetable oscillator has some interesting sonic characteristics. It
-outputs the waveform in a stair-stepped fashion, making no attempts to
-'smooth the steps' in the process, but does so in a manner that is
-completely band-limited. This makes it similar in sound to 1980s era
-wave-table synths and samplers which didn't use resampling but had
-dedicated D/A-converters for each voice instead and changed the pitch by
-varying the sample rate of the individual D/As.
-
-The fact that the steps aren't smoothed causes an artifact known as
-harmonic aliasing. This is not to be confused with inharmonic aliasing
-which sounds somewhat similar to an AM-radio being tuned and is
-generally nasty. Instead, this artifact will cause the harmonics of the
-waveform to repeat themselves and fill up the entire audible spectra
-even at low pitches, just like a square-wave would, preventing the
-waveform from sounding dull. As this artifact is completely harmonic it
-is also musically pleasing. Nonetheless, it may sound a bit out of place
-on very smooth waveforms but the effect can be filtered out by a
-lowpass filter in the filter block if desired. Some of the wave-tables,
-such as the regular triangle wave, are large enough for this artifact to
-never appear in the normally used range for this specific reason.
-
-The important thing is that just like most other oscillators in Surge XT,
-it doesn't output any inharmonic aliasing whatsoever or any audible
-levels of interpolation-noise, two artifacts which has played a big part
-in giving digital synthesizers a bad name.
-
-For more information, you can read
-[this article](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Why-you-may-get-high-frequency-distortion-from-some-wavetables)
-on Surge's wiki.
-
-**For developers and advanced users**:
-
-There is a reference for the .wt file-format used by the wavetables. It
-is located at: `surgedata/wavetables/wt fileformat.txt`
-
-| | | |
-|-|-|-|
-| Morph | Interpolates between wavetable frames. 0% = first frame, 100% = last frame. Can be set to non-continuous.| 0 .. 100 % |
-| Skew Vertical | Vertical skew of the waveform. | -100 .. 100 % |
-| Saturate | Soft saturation of the waveform. | 0 .. 100 % |
-| Formant | Compresses the waveform in time but keeps the cycle-time intact. | 0 .. 60 semitones |
-| Skew Horizontal | Horizontal skew of the waveform. | -100 .. 100 % |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison. 1 = disabled. | 1 .. 16 |
-
-
-
-### Window
-
-The Window oscillator is another shot at wavetable
-synthesis that is quite different from the previous wavetable algorithm.
-
-The wave, which can be any wavetable included with Surge XT, is multiplied
-by a second waveform, the window, which can be one of 9 waveform types
-that are specifically made for the window oscillator. The formant
-parameter controls the pitch of the wave independently of the window,
-but as the wave is always restarted with the window, the pitch will
-remain the same. Instead, the timbre of the sound will change
-dramatically, much depending on which window is selected.
-
-Unlike the Wavetable algorithm, the Window oscillator uses a more
-traditional resampling approach which doesn't result in harmonic
-aliasing.
-
-| | | |
-|-|-|-|
-| Morph | Selects a frame from the wavetable, without interpolation. 0% = first frame, 100% = last frame. Can be set to continuous. | 0 .. 100 % |
-| Formant | Adjusts pitch of the wavetable frame, independently from the pitch of the window. | -60 .. 60 semitones |
-| Window | Chooses the waveform used for the amplitude window. | Triangle, Cosine, Blend 1, Blend 2, Blend 3, Sawtooth, Sine, Square, Rectangle |
-| Low Cut | Cutoff frequency of built-in highpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| High Cut | Cutoff frequency of built-in lowpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison. 1 = disabled. | 1 .. 16 |
-
-
-
-### Sine
-
-Quite unsurprisingly, this oscillator generates a sine waveform. However, there's a number of other interesting things this oscillator can do!
-
-| | | |
-|-|-|-|
-| Shape | Various variants of sine wave achieved through quadrant masking, shifting and frequency doubling. | 1 .. 28 |
-| Feedback | FM feedback amount. Can be extended. | -100 .. 100 % -400 .. 400 % |
-| FM Behavior | Chooses whether FM behaves like Surge 1.6.1.1 and earlier, or consistent with FM2/3 oscillators. | Legacy (before v1.6.2), Consistent with FM2/3 |
-| Low Cut | Cutoff frequency of built-in highpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| High Cut | Cutoff frequency of built-in lowpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison, 1 = disabled. | 1 .. 16 |
-
-
-
-### FM2
-
-![Illustration 71: FM2 modulation matrix](../manual_xt/images/Pictures/FM2.png)
-
-FM2 provides a miniature FM synthesizer voice in an oscillator that is
-specifically tailored towards making nice and musical FM sounds. A
-single sine carrier is modulated by two sine modulators, whose ratios to
-the carrier are always integer thus the resulting waveform is always
-cyclic. However, **M1/2 Offset** lets you offset the modulators slightly in
-an absolute fashion, creating an evolving and pleasing detune
-effect.
-
-| | | |
-|-|-|-|
-| M1 Amount | Modulation amount of the first modulator | 0 .. 100 % |
-| M1 Ratio | Ratio of the first modulator to the carrier | 1 .. 32 |
-| M2 Amount | Modulation amount of the second modulator | 0 .. 100 % |
-| M2 Ratio | Ratio of the second modulator to the carrier | 1 .. 32 |
-| M1/2 Offset | Absolute detuning of the modulators Can be extended. | -10 .. 10 Hz -1000 .. 1000 Hz |
-| M1/2 Phase | Changes the initial phase of the modulators to give different variations of the waveform. | 0 .. 100 % |
-| Feedback | Modulation amount of the carrier to itself Extended mode (default) can be disabled. |-400 .. 400 % -100 .. 100 % |
-
-
-
-### FM3
-
-![Illustration 72: FM3 modulation matrix](../manual_xt/images/Pictures/FM3.png)
-
-As a contrast to FM2, FM3 is the algorithm of choice for scraping paint
-off the walls. The modulators have a larger range, the ratios can be
-non-integer and there's a third modulator which has its rate set as an
-absolute frequency.
-
-| | | |
-|-|-|-|
-| M1 Amount | Modulation amount of the first modulator | 0 .. 100 % |
-| M1 Ratio | Ratio of the first modulator to the carrier, can either be extended or absolute. | 0.0 .. 32.00 1/32.0 .. 32.0 ~ 8 Hz .. 24 kHz |
-| M2 Amount | Modulation amount of the second modulator | 0 .. 100 % |
-| M2 Ratio | Ratio of the second modulator to the carrier, can either be extended or absolute. | 0.0 .. 32.00 1/32.0 .. 32.0 ~ 8 Hz .. 24 kHz |
-| M3 Amount | Modulation amount of the third modulator | 0 .. 100 % |
-| M3 Frequency | Frequency of the third modulator | ~ 14 Hz .. 25 kHz |
-| Feedback | Modulation amount of the carrier to itself Extended mode (default) can be disabled. | -400 .. 400 % -100 .. 100 % |
-
-
-
-### String
-
-The String oscillator uses a physical modeling technique where excitation sources
-are sent into a tuned delay line with feedback, with various filters inline
-(based on the original Karplus-Strong algorithm). The oscillator runs two strings
-at all times which can be detuned from each other and individually damped.
-
-To make the model create sound, you need to excite it. We have two classes of
-excitation modes, **Burst** and **Constant**. In Burst mode, the delay line is loaded with a pattern
-before a note is played, and then no further signal is added to the oscillator.
-Think of this as emulating a plucked string. In Constant mode, the delay
-line is also pre-loaded, but the signal continues to be applied for as long as you hold the key.
-Think of this as emulating a bowed string. In almost all cases, Continuous excitation modes would be used
-along with modulation of **Exciter Level** parameter, in order to emulate bow pressure, and so on.
-
-Exciter modes provide various waveforms - noise, pink noise, ramp, etc. - which you can use to excite the strings,
-leading to different timbres. Surge XT's audio input can also be used as an exciter signal!
-
-| | | |
-|-|-|-|
-|Exciter|Determines mode and waveform used to excite the string.|Burst, Constant|
-|Exciter Level|Determines how strongly the string gets excited. Oversampling and interpolation can be configured in its context-menu. |-100 .. 100 %|
-|String 1 Decay|Sets the decay time of the first string (amount of delay line feedback).|-100 .. 100 % |
-|String 2 Decay|Sets the decay time of the second string (amount of delay line feedback).|-100 .. 100 %|
-|String 2 Detune|Adjusts tuning of the second string. Can be extended. Can be switched between relative (default) and absolute.|-100 .. 100 cents -1200 .. 1200 cents -16 .. 16 Hz -192 .. 192 Hz|
-|String Balance|Adjusts mix between the two strings.|-100 .. 100%|
-|Stiffness|Applies lowpass (left) and highpass (right) filters in the feedback loop. Results in inharmonic timbres at the extremes. The stiffness filter can be configured in its context-menu.|-100 .. 100%|
-
-
-
-### Twist
-
-This oscillator imports a rather famous Eurorack macro oscillator into Surge XT, based on Émilie Gillet's
-device. You can read the manual for the hardware module on which this oscillator is based
-[here](https://mutable-instruments.net/modules/plaits/manual).
-
-This implementation presents all 16 oscillator modes and the controls are dynamically renamed
-appropriately for every model. Core differences between the hardware module and Surge XT's implementation are:
-
-1. By default, the LPG in the module is disabled, but by activating the LPG level and decay sliders with (right-click, then Activate),
-the LPG will be triggered per voice for each received MIDI note.
-
-2. By default, you can mix between the main and the auxiliary oscillator outputs with the **Mix** parameter.
-You can also right-click the Mix parameter and enable **Pan main and auxiliary signals** option,
-in which case -100% value is Main to left/Aux to right, +100% is Main to right/Aux to left, and 0% is an even mix of both signals sent to both left and right.
-Do note that for this to be audible, you have to be in one of stereo filter configuration modes.
-
-Twist can be more CPU demanding than most other Surge XT oscillator algorithms.
-Judiciously using maximum polyphony setting and being careful with Amp EG release times
-can go a long way in minimizing the CPU usage, thus making robust patches.
-
-
-
-### Alias
-
-The Alias oscillator purposefully ignores a few decades of research into making digital signals with low or no
-aliasing, and does all the things you shouldn't do, so it purposefully sounds digital, gross, broken, terrible,
-yet awesome all at once.
-
-| | | |
-|-|-|-|
-| Shape | Sets the oscillator waveform. | See explanation [below](#shape) |
-| Wrap | Mangles the waveform by amplifying it, then making it wrap around from the other side instead of hard clipping. | -100 .. 100 % |
-| Mask | Sets a 8-bit bitmask applied to the waveform. | -100 .. 100 % |
-| Threshold | Adjusts the turning point (ramp), duty cycle (pulse) or wavetable readout offset (others) of the waveform. | -100 .. 100 % |
-| Bitcrush | Sets the amount of bitcrushing applied to the waveform. | 1.00 .. 8.00 bits |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison, 1 = disabled. | 1 .. 16 |
-
-#### Shape
-
-**Shape** parameter (comes in the form of a menu) is very important and is worth explaining in more detail,
-as it allows you to choose the source used for the Alias algorithm.
-
-In addition to the more regular shapes (such as Sine, Ramp, Pulse and Noise), Surge XT's audio input can be also used.
-
-Going further, there is Additive, which allows you to create a custom waveform by adjusting amplitudes of up to 16
-harmonics, accessible by clicking on the Edit button that appears in this mode:
-
-![Illustration 73: Alias additive editor](../manual_xt/images/Pictures/alias_additive_editor.png)
-
-This editor works in a similar way to the step sequencer editor, however there are some additional options available when right-clicking:
-
-- **Shapes** - Partial level presets which roughly represent different wave shapes, including a random option.
-- **Absolute** - Sets the level of all the partials in the positive range.
-- **Invert** - Flips the partial levels vertically.
-- **Reverse** - Flips the partial levels horizontally.
-
-Additionally, you can also use **Quadrant Shaping** waveforms as a source, which are also found in the
-[Sine](#sine) oscillator.
-
-Finally, we have various **Memory from...** options:
-
-- **This Alias Instance** - Generates a waveform based on reading memory associated with the currently selected instance of Alias.
-- **Oscillator Data** - Generates a waveform based on reading memory associated with general oscillator data.
-- **Step Sequencer Data** - Generates a waveform based on reading memory associated with step sequencer data.
-- **Scene Data** - Generates a waveform based on reading memory associated with general scene data.
-- **DAW Chunk Data** - Generates a waveform based on reading memory that serves as additional DAW chunk data (various non-automatable parameters and settings).
-
-**Note:** When using **Memory From...** as a source, there is no guarantee that the resulting waveform
-will be consistent, as memory data can vary depending on a number of things: the DAW used, the particular Surge XT instance, rebooting your machine, and so on.
-Thus, it's good practice to bounce the audio output from Surge XT when using this mode.
-You know what they say; "If you like it, you should... put a mic on it."
-
-
-
-### S&H Noise
-
-S&H is an abbreviation for 'Sample and Hold'. The S&H Noise oscillator algorithm works like a pulse oscillator,
-but instead of always switching between +1 and -1, the levels used are determined stochastically.
-
-The correlation parameter determines how new levels are calculated. A
-setting of 0% will have no memory and each new level will
-effectively be a random number (white noise). A lower setting will
-favor new values that are closer to the previous level and will
-provide noise with a darker spectra. Higher values will favor
-values as far away from the previous one as possible, with 100%
-resulting in a harmonic pulse wave.
-
-| | | |
-|-|-|-|
-| Correlation | Noise correlation. 0% = white noise, 100% = pulse wave. | -100 .. 100 % |
-| Width | Duty cycle of the oscillator. | 0 .. 100 % |
-| Low Cut | Cutoff frequency of built-in highpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| High Cut | Cutoff frequency of built-in lowpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| Sync | Oscillator hard sync. | 0 .. 60 semitones |
-| Unison Detune | Detuning of unison oscillators. Can be extended. Can be switched between relative (default) and absolute. | 0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz |
-| Unison Voices | Number of oscillators used for unison. 1 = disabled. | 1 .. 16 |
-
-
-
-### Audio Input
-
-Audio Input lets you route external audio into the voice architecture of
-Surge XT. It also allows you to route the audio output from Scene A into Scene B.
-
-| | | |
-|-|-|-|
-| Audio In L/R Channel | Chooses which external input is used. -100% = left, 0% = both (stereo), 100% = right. | -100 .. 100 % |
-| Audio In Gain | External input gain in dB. | 48 .. +48 dB |
-| Scene A L/R Channel**1** | Chooses which input from Scene A is used. -100% = left, 0% = both (stereo), 100% = right. | -100 .. 100% |
-| Scene A Gain**1** | Scene A input gain in dB. | 48 .. +48 dB |
-| Audio In<>Scene A Mix**1** | Blend control between the external audio-in signal and the output of Scene A. | -100 .. +100% |
-| Low Cut | Cutoff frequency of built-in highpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-| High Cut | Cutoff frequency of built-in lowpass filter. Must be activated in context menu. | 13.75 .. 25087.71 Hz |
-
-**1** Only available in Scene B
-
-Note: When using the Audio Input oscillator type in Scene B to get audio from Scene A,
-you will likely want to **set Play Mode to Latch**. That way, Scene B will always be triggered.
-
-For more information and possible applications, you can read
-[this article](https://github.com/surge-synthesizer/surge-synthesizer.github.io/wiki/Using-Surge-as-an-effect-(and-vocoder))
-on Surge's wiki.
-
-
-
-## Filters
-
-There are multiple filter algorithms available for each of the 2
-filter units in the filter block. Each of the algorithms have
-different subtypes, which alter their sound.
-
-Some of the filter-(sub)types have some non-linear elements in them
-to allow them to self-oscillate in a stable and predictable manner.
-This means they will sound different depending on how hard they're
-driven, which can be conveniently controlled with the Pre-Filter
-Gain setting found in the mixer. For example, if the resonance peaks of a filter is too
-loud, increase the Pre-Filter Gain to make the rest of the signal
-more dominant (and if needed decrease the gain at the output stage
-of the voice to compensate).
-
-Filters in Surge XT are divided into the following categories:
-- Lowpass filters
-- Highpass filters
-- Bandpass filters
-- Notch filters
-- Effect filters
-
-### Filter Types
-
-**12 dB** - 2-Pole filter. Available in **Lowpass**, **Highpass**, **Bandpass**
-and **Notch** types.
-
-**24 dB** - 4-Pole filter. Available in **Lowpass**, **Highpass**, **Bandpass**
-and **Notch** types.
-
-Sub-types for both **12 dB** and **24 dB**:
-
-1. **Standard** - clear with a strong resonance, capable of self-oscillation. Handles transient behavior extremely well.
-2. **Driven** - chesty, somewhat distorted sound with a more held-back resonance. Capable of self-oscillation.
-3. **Clean** - the smoothest and cleanest sounding subtype, capable of lower resonance than the others, which is suitable when you do not want the sound of the filter to be noticed but only to roll-off a part of the spectrum.
-
-**Legacy Ladder** - 4-Pole ladder filter. This is Surge's original and older ladder filter.
-It has stable self-oscillation and requires less CPU processing than the newer Vintage Ladder filter.
-Available in **Lowpass** type.
-
-Sub-types:
-
-1. **6 dB** - Output taken from 1st stage (1-pole).
-2. **12 dB** - Output taken from 2nd stage (2-pole).
-3. **18 dB** - Output taken from 3rd stage (3-pole).
-4. **24 dB** - Output taken from 4th stage (4-pole).
-
-**Vintage Ladder** - 4-Pole ladder filter. This is a more recent, accurate and often better-sounding ladder filter.
-It also has stable self-oscillation, but requires more CPU processing than the older Legacy Ladder filter.
-Available in **Lowpass** type.
-
-Sub-types:
-
-1. **Type 1** - Imitates a Moog resonant filter by Runge-Kutta numerical integration of
-a differential equation approximately describing the dynamics of the circuit.
-2. **Type 1 Compensated** - Gain-compensated version of Type 1.
-3. **Type 2** - Moog Ladder filter that builds upon the work done by Smith and Stilson from Antti Huovilainen's paper.
-4. **Type 2 Compensated** - Gain compensated version of Type 2.
-
-Thanks to [@ddiakopoulos](https://github.com/ddiakopoulos) for maintaining this very
-useful [repository](https://github.com/ddiakopoulos/MoogLadders) of research and code which
-heavily informed the models we implemented.
-
-**K35** - 12 dB/Octave filters from the Odin 2 synthesizer, and inspired by the Korg MS-20 filter topology.
-Increasing resonance will make them sound dirtier and more aggressive.
-Available in **Lowpass** and **Highpass** types.
-
-Sub-types:
-
-1. No Saturation
-2. Mild Saturation
-3. Moderate Saturation
-4. Heavy Saturation
-5. Extreme Saturation
-
-Thanks to [@TheWaveWarden](https://github.com/TheWaveWarden) for allowing us to implement Odin 2's K35
-filters inside Surge XT. You can download Odin 2 [here](https://www.thewavewarden.com/odin2), or read the code
-[here](https://github.com/TheWaveWarden/odin2).
-
-**Diode Ladder** - 4-pole diode ladder filter from the Odin 2 synthesizer with individually
-tapped pole outputs. This filter attempts to model the sound of a ladder filter that uses diodes
-instead of transistors. This filter does not self-oscillate without feedback.
-Available in **Lowpass** type.
-
-Sub-types:
-
-1. **6 dB** - Output taken from 1st stage (1-pole).
-2. **12 dB** - Output taken from 2nd stage (2-pole).
-3. **18 dB** - Output taken from 3rd stage (3-pole).
-4. **24 dB** - Output taken from 4th stage (4-pole).
-
-Thanks to [@TheWaveWarden](https://github.com/TheWaveWarden) for allowing us to implement Odin 2's Diode Ladder
-filters inside Surge XT. You can download Odin 2 [here](https://www.thewavewarden.com/odin2), or read the code
-[here](https://github.com/TheWaveWarden/odin2).
-
-**OB-Xd 12dB** - 12dB filters from the OB-Xd synthesizer by discoDSP, and from the work of Vadim Filatov, which is based on the filters found in the Oberheim OB-Xa. Available in **Lowpass**, **Highpass**, **Bandpass**
-and **Notch** types.
-
-Sub-types:
-1. **Standard** - Standard filter response.
-2. **Pushed** - Adds boosted non-linearities that drives the filter into more self-oscillation at high resonance
-values.
-
-Thanks to [discoDSP](https://www.discodsp.com/news/) for allowing us to implement OB-Xd's filters inside Surge XT. You can get OB-Xd [here](https://www.discodsp.com/obxd/), or read the source [here](https://github.com/reales/OB-Xd).
-
-**OB-Xd 24dB** - 24dB filters found in the OB-Xd synthesizer by discoDSP, and from the work of Vadim Filatov, which is based on the filters found in the Oberheim OB-Xa. Available in **Lowpass** type.
-
-Sub-types:
-
-1. **6 dB** - Output taken from 1st stage (1-pole).
-2. **12 dB** - Output taken from 2nd stage (2-pole).
-3. **18 dB** - Output taken from 3rd stage (3-pole).
-4. **24 dB** - Output taken from 4th stage (4-pole).
-
-Thanks to [discoDSP](https://www.discodsp.com/news/) for allowing us to implement OB-Xd's filters inside Surge XT. You can get OB-Xd [here](https://www.discodsp.com/obxd/), or read the source [here](https://github.com/reales/OB-Xd).
-
-**Cutoff Warp** - 12dB/Octave filters created using a nonlinear biquad filter structure. The nonlinearities in the Cutoff Warp filter cause the cutoff frequency to sweep to higher frequencies as the signal level increases (see below). Available in **Lowpass**, **Highpass**, **Bandpass**, **Notch** and **Allpass (Effect)** types.
-
-![Illustration 74: Cutoff warp frequency response](../manual_xt/images/Pictures/cutoff_warp.png)
-
-For more information on the Cutoff Warp filter, you can see [this blog post](https://jatinchowdhury18.medium.com/complex-nonlinearities-episode-4-nonlinear-biquad-filters-ae6b3f23cb0e) by Jatin Chowdhury, or [this 2020 DAFx paper](https://dafx2020.mdw.ac.at/proceedings/papers/DAFx2020_paper_3.pdf), specifically section 4.
-
-**Resonance Warp** - 12dB/Octave filters created using a nonlinear biquad filter structure. The nonlinearities in the Resonance Warp filter cause the resonance of the filter to decrease as the signal level increases (see below). Available in **Lowpass**, **Highpass**, **Bandpass**, **Notch** and **Allpass (Effect)** types.
-
-![Illustration 75: Resonance warp frequency response](../manual_xt/images/Pictures/reso_warp.png)
-
-For more information on the Cutoff Warp filter, you can see [this blog post](https://jatinchowdhury18.medium.com/complex-nonlinearities-episode-5-nonlinear-feedback-filters-115e65fc0402) by Jatin Chowdhury, or [this 2020 DAFx paper](https://dafx2020.mdw.ac.at/proceedings/papers/DAFx2020_paper_3.pdf), specifically section 3.
-
-Sub-types for **Cutoff Warp** and **Resonance Warp**:
-
-1. **1 Stage tanh** - Output taken from 1st stage (2-pole), using `tanh` nonlinearities.
-2. **2 Stages tanh** - Output taken from 2nd stage (4-pole), using `tanh` nonlinearities.
-3. **3 Stages tanh** - Output taken from 3rd stage (6-pole), using `tanh` nonlinearities.
-4. **4 Stages tanh** - Output taken from 4th stage (8-pole), using `tanh` nonlinearities.
-5. **1 Stage Soft Clip** - Output taken from 1st stage (2-pole), using soft-clipping nonlinearities.
-6. **2 Stages Soft Clip** - Output taken from 2nd stage (4-pole), using soft-clipping nonlinearities.
-7. **3 Stages Soft Clip** - Output taken from 3rd stage (6-pole), using soft-clipping nonlinearities.
-8. **4 Stages Soft Clip** - Output taken from 4th stage (8-pole), using soft-clipping nonlinearities.
-9. **1 Stage OJD** - Output taken from 1st stage (2-pole), using OJD nonlinearities.
-10. **2 Stages OJD** - Output taken from 2nd stage (4-pole), using OJD nonlinearities.
-11. **3 Stages OJD** - Output taken from 3rd stage (6-pole), using OJD nonlinearities.
-12. **4 Stages OJD** - Output taken from 4th stage (8-pole), using OJD nonlinearities.
-
-**Tri-Pole** - 3-pole filter based on the [Threeler filter](http://ijfritz.byethost4.com/Threeler_board_doc.pdf)
-designed by Ian Fritz, which contains 3 filter stages and a resonance stage all in a global feedback loop.
-
-1. **Low -> Low -> Low, First** - Output taken from the 1st filter stage.
-Filter stages are: LPF, LPF, LPF.
-2. **Low -> High -> Low, First** - Output taken from the 1st filter stage.
-Filter stages are: LPF, HPF, LPF.
-3. **High -> Low -> High, First** - Output taken from the 1st filter stage.
-Filter stages are: HPF, LPF, HPF.
-4. **High -> High -> High, First** - Output taken from the 1st filter stage.
-Filter stages are: HPF, HPF, HPF.
-5. **Low -> Low -> Low, Second** - Output taken from the 2nd filter stage.
-Filter stages are: LPF, LPF, LPF.
-6. **Low -> High -> Low, Second** - Output taken from the 2nd filter stage.
-Filter stages are: LPF, HPF, LPF.
-7. **High -> Low -> High, Second** - Output taken from the 2nd filter stage.
-Filter stages are: HPF, LPF, HPF.
-8. **High -> High -> High, Second** - Output taken from the 2nd filter stage.
-Filter stages are: HPF, HPF, HPF.
-9. **Low -> Low -> Low, Third** - Output taken from the 3rd filter stage.
-Filter stages are: LPF, LPF, LPF.
-10. **Low -> High -> Low, Third** - Output taken from the 3rd filter stage.
-Filter stages are: LPF, HPF, LPF.
-11. **High -> Low -> High, Third** - Output taken from the 3rd filter stage.
-Filter stages are: HPF, LPF, HPF.
-12. **High -> High -> High, Third** - Output taken from the 3rd filter stage.
-Filter stages are: HPF, HPF, HPF.
-
-For more information on the development of the Tri-Pole filter, please see
-[this Python notebook](https://github.com/surge-synthesizer/surge-python/blob/main/scripts/dsp_simulations/ThreelerAnalysis.ipynb)
-which outlines the development of the signal processing building blocks behind the filter.
-
-**Allpass** - As its name suggests, this filter passes all frequencies equally in gain. However, it is useful to alter the phase relationship in the spectrum. Unless feedback is involved, its effect can mostly be heard when the Cutoff frequency is in movement. Thus, modulation can be used to get interesting results.
-
-Allpass can be found under the **Effect** category.
-
-**Comb +** and **Comb -** - Comb filter, which is different compared to the previous filter types since it doesn't
-filter any part of the spectrum, but instead plays back the original signal with a delay. The former type has
-positive feedback and the latter has negative feedback.
-
-Sub-types:
-
-1. **50% Wet**
-2. **100% Wet**
-
-When the sub-type is set to 2 and resonance is 0%, the
-comb filter will work purely as a delay unit (with sub-sample
-precision). This can be used together with the other filter unit
-along with filter block feedback to provide interesting options. The
-"Winds/Clarinet" and " Plucks/Simple Waveguide" patches
-showcase how this ability can be used for simple physical modeling.
-They only use the oscillator section to ignite the sound, the rest
-is in the filter block.
-
-Moreover, the negative comb filter produces the sound an octave lower than the positive comb filter.
-
-Comb + and Comb - can be found in the **Effect** category.
-
-**Sample & Hold** - The Sample & Hold module will sample the audio at the rate set by the
-cutoff frequency. Resonance will emphasize oscillations around the
-cutoff frequency, not unlike the resonance peak of a lowpass filter.
-
-Sample & Hold can be found in the **Effect** category.
-
-
-
-## Effects
-
-Surge XT has 8 effect units which each can run one of the 10 provided
-algorithms.
-
-### EQ
-
-The EQ unit provides 3-bands of fully parametric equalizing. This
-high-quality algorithm has a much better response at high frequencies
-than digital equalizers usually have.
-
-| | | |
-|-|-|-|
-|Band 1/2/3 Gain|Band gain, can be disabled|-48 .. +48 dB|
-|Band 1/2/3 Freq|Band frequency|14Hz .. 25kHz|
-|Band 1/2/3 Bandwidth|Band bandwidth|0 .. 5 octaves|
-|Output gain|Gain control|-48 .. +48 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Exciter
-
-Exciter is a harmonic exciter based on the famous Aphex Aural Exciter unit.
-For more information, see [this blog post](https://jatinchowdhury18.medium.com/complex-nonlinearities-epsiode-2-harmonic-exciter-cd883d888a43) by Jatin Chowdhury.
-
-| | | |
-|-|-|-|
-|Drive|Controls the amount of generated harmonics.|0 .. 100 %|
-|Tone|Controls the tone balance of the generated harmonics.|0 .. 100 %|
-|Attack|Controls the attack time of the generated harmonics.|5 .. 20 ms|
-|Release|Controls the release time of the generated harmonics.|50 .. 200 ms|
-|Mix|Controls the mix of wet and dry signals.|0 .. 100 %|
-
-
-
-### Graphic EQ
-
-Graphic EQ is, as its name suggests, a graphic equalizer. It is comprised of
-11 level-adjustable and deactivatable (from the right-click menu) bands, which
-makes this equalizer better than the normal EQ at sculpting relatively complex response curves.
-Apart from the fact that there is also an output gain control at the bottom
-of the interface, there is not much else to add.
-
-
-
-### Resonator
-
-The Resonator provides carefully tuned lowpass, bandpass, bandpass + notch or highpass filters,
-each with individual output gain and resonance. By default, the filters cannot be driven into self-oscillation,
-but if you right-click any of the three **Resonance** parameters and enable **Modulation extends into self-oscillation**,
-modulation sources can drive the filters to a self-oscillating point. Similarly, the three resonator bands
-are tuned to match the ranges of a very famous resonator circuit, but they can be extended to allow a wider range.
-
-| | | |
-|-|-|-|
-|Frequency 1/2/3|Frequency of the filter for the the first, second or third band. Can be extended.|60 .. 300 Hz 60 .. 7500 Hz|
-|Resonance 1/2/3|Amount of resonance for the first, second or third band. Modulation can be allowed to push the filter into self-oscillation from the right-click menu.|0 .. 100 %|
-|Gain 1/2/3|First, second or third band gain.|-inf .. 0 dB|
-|Mode|Sets the filter type used in the resonator effect.|Lowpass, Bandpass, Bandpass+Notch, Highpass|
-|Mix|Controls the mix of wet and dry signals|0 .. 100 %|
-
-
-
-### CHOW
-
-Chow is a half-wave rectifier distortion effect with controls similar to those found in a compressor.
-The original effect was implemented as an [open source audio plugin](https://github.com/Chowdhury-DSP/CHOW) by Jatin Chowdhury.
-
-| | | |
-|-|-|-|
-|Threshold|Controls the threshold at which rectification starts.|-96dB .. 0dB|
-|Ratio|Controls the amount of rectification.|1:1 .. 1:20|
-|Flip|Flips the output signal to be positive or negative.|On/Off|
-|Mix|Controls the mix of wet and dry signals.|0 .. 100 %|
-
-
-
-### Distortion
-
-Distortion algorithm. Provides plenty of EQ options as well as a
-feedback loop to alter the tonality of the clipping stage.
-
-![Illustration 76: Distortion algorithm block diagram](../manual_xt/images/Pictures/tech_distortion.png)
-
-*Distortion algorithm block diagram*
-
-| | | |
-|-|-|-|
-|Pre-EQ Gain/Freq/BW|Parametric EQ band parameters prior to the clipping stage, Gain can be extended.||
-|Pre-EQ High cut|High cut element prior to the clipping stage|14Hz .. 25kHz|
-|Model|Waveshaper used for distortion|Soft, Hard, Asymmetric, Sine, Digital|
-|Drive|Drive of the clipping stage, Can be extended.|-24 .. +24 dB -120 .. 120 dB|
-|Feedback|Feedback loop around the clipping stage|-100 .. 100 %|
-|Post-EQ Gain/Freq/BW|Parametric EQ band parameters after the clipping stage, Gain can be extended.||
-|Post-EQ High cut|High cut element prior to the clipping stage|14Hz .. 25kHz|
-|Output gain|Output gain|-24 .. +24 dB|
-
-
-
-### Neuron
-
-Neuron is an effect based on a [Gated Recurrent Unit](https://en.wikipedia.org/wiki/Gated_recurrent_unit)
-(GRU), a commonly used building block in recurrent neural networks.
-
-![Illustration 77: Neuron diagram](../manual_xt/images/Pictures/gru.png)
-
-For more information on the development of the Neuron effect, you can read
-[this blog post](https://jatinchowdhury18.medium.com/complex-nonlinearities-episode-10-gated-recurrent-distortion-6d60948323cf) by Jatin Chowdhury.
-
-| | | |
-|-|-|-|
-|Drive|The Wh coefficient of the GRU; controls the input gain of the main signal path.|0 .. 100 %|
-|Squash|The Wf coefficient; controls the input gain of the sidechain signal path.|0 .. 100 %|
-|Stab|The Uf coefficient; controls the feedback gain of the sidechain signal path.|0 .. 100 %|
-|Asymmetry|The Uh coefficient; controls the feedback gain of the main signal path.|0 .. 100 %|
-|Bias|The bf coefficient; controls the bias amount of the sidechain signal path.|0 .. 100 %|
-|Comb Freq|Controls the length of the feedback delay, creating an internal comb filter.|14Hz .. 25kHz|
-|Comb Separation|Controls the separation between the comb frequencies in the left and right channels.|-96 .. 96 semitones|
-|LFO Waveform/Rate/Depth|Controls for the modulation of the comb frequency.||
-
-
-
-### Tape
-
-Tape effect is a port of the Chow Tape Model tape emulation effect, a real-time
-physical model of a reel-to-reel analog tape machine. The model contains
-parameters for controlling the amount of tape distortion and degradation,
-as well as physical characteristics of the tape machine, like the play head
-width, or tape thickness.
-
-The original plugin can be found [on GitHub](https://github.com/jatinchowdhury18/AnalogTapeModel),
-and signal processing details are outlined in [this 2019
-DAFx paper](http://dafx2019.bcu.ac.uk/papers/DAFx2019_paper_3.pdf).
-
-| | | |
-|-|-|-|
-|Drive|Controls the gain of the tape distortion|0 .. 100 %|
-|Saturation|Controls the amount of tape saturation|0 .. 100 %|
-|Bias|Controls the amount of tape bias|0 .. 100 %|
-|Tone|Controls the tone balance of the tape distortion|-100 .. 100 %|
-|Speed|Controls the tape speed|1 .. 50 ips|
-|Gap|Controls the width of the playhead gap|0.1 .. 20 microns|
-|Spacing|Controls the spacing between the tape and the playhead|0.1 .. 50 microns|
-|Thickness|Controls the tape thickness|1 .. 50 microns|
-|Depth|Controls the tone balance of the tape distortion|0 .. 100 %|
-|Amount|Controls the tone balance of the tape distortion|0 .. 100 %|
-|Variance|Controls the tone balance of the tape distortion|0 .. 100 %|
-|Mix|Controls the mix of wet and dry signals|0 .. 100 %|
-
-
-
-### Waveshaper
-
-The full waveshaper module present in the sound shaping section of the synth (see [Waveshaper](#waveshaper))
-is also available as an effect unit which, like other effects, can be loaded anywhere in the FX signal path.
-It also hosts additional controls for further adjustments of the resulting distorted output.
-
-| | | |
-|-|-|-|
-|Low Cut (pre)|Low cut filter prior to the waveshaping stage. disabled by default, but can be activated.|13.75 Hz .. 25kHz|
-|High cut (pre)|High cut filter prior to the waveshaping stage. disabled by default, but can be activated.|13.75 Hz .. 25kHz|
-|Shape|Shape used for waveshaping|Full list of wave shapes also present in the waveshaper|
-|Bias|Alters the symmetry of the shaping curve|-100 .. 100 %|
-|Drive|Drive of the waveshaping stage. Can be extended.|-24 .. +24 dB -120 .. 120 dB|
-|Low Cut (post)|Low cut filter after the waveshaping stage. Can be activated.|13.75 Hz .. 25kHz|
-|High cut (post)|High cut filter after the waveshaping stage. Can be activated.|13.75 Hz .. 25kHz|
-|Gain|Output gain|-24 .. +24 dB|
-|Mix|Controls the mix of wet and dry signals|0 .. 100 %|
-
-
-
-### Combulator
-
-Combulator effect is somewhat similar to the [Resonator](#resonator) in that it
-is also made of three filter bands. However, it uses comb filters instead.
-These three filters are tuned to a center pitch and two offsets, each with
-its own gain control, and combs 2 and 3 with individual pan.
-A common use case is to use a monophonic (scene-level) modulation source like **Highest Key** to modulate the
-center pitch. The circuit also implements an envelope
-follower on the input signal, and mixes additional noise in based on the followed envelope and the **Extra
-Noise** parameter.
-
-| | | |
-|-|-|-|
-|Extra Noise|Controls the level of extra noise added to the comb filters|0 .. 100 %|
-|Center|Master center pitch control, offsets the three comb filters simultaneously|0.5 .. 25087.71 Hz %|
-|Offset 1/2|Controls the offset independently for two of the comb filters Can be set to absolute (unlinked from the center comb filter).|-60 .. 60 semitones|
-|Feedback|Controls the feedback amount applied to the comb filters|-100 .. 100 %|
-|Tone|Applies low-pass filtering (left) or high-pass filtering (right)|-100 .. 100 %|
-|Comb 1/2/3|Output gain for each of the comb filters|-inf .. 0 dB|
-|Pan 2/3|Independent output panning controls for two of the comb filters|-inf .. 0 dB|
-|Mix|Controls the mix of wet and dry signals|0 .. 100 %|
-
-
-
-### Frequency Shifter
-
-Based on the classic Bode frequency shifter effect, which uses a carrier wave to shift frequencies linearly.
-This changes the frequency relationships between overtones, usually resulting in a more inharmonic sound.
-This version also provides a delay unit and a feedback loop to create
-consecutively shifted repeating delays, as heard in a classic english sci-fi theme.
-
-| | | |
-|-|-|-|
-|Left|Amount of frequency shift (in hertz) for the left channel, Can be extended|-10 .. 10 Hz -1 .. 1 kHz|
-|Right|Amount of frequency shift (relative to the left channel) for the right channel.|-100 .. 100 %|
-|Time|Delay time for the frequency-shifted signal. Can be tempo-synced.|0 .. 32 s 1/512 .. 16 whole notes|
-|Feedback|Feedback around the frequency shifter and delay-unit.|-inf .. 0 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Nimbus
-
-The Nimbus effect imports the granular texture effect from Émilie Gillet's Eurorack project.
-You can read the manual for the hardware device on which this effect is based
-[here](https://mutable-instruments.net/modules/clouds/manual).
-
-The labels and ranges in the effect adjust based on the mode to allow you to use this
-effect appropriately in Surge XT.
-
-
-
-### Ring Modulator
-
-Flexible ring modulation algorithm.
-
-| | | |
-|-|-|-|
-|Shape|Shape used by the carrier oscillator.|1 .. 24|
-|Frequency|Frequency of the carrier oscillator.|8.18 .. 12543.86 Hz|
-|Unison Detune|Detuning of the carrier unison voices. Can be extended. Can be switched between relative (default) and absolute.|0 .. 100 cents 0 .. 1200 cents 0 .. 16 Hz 0 .. 192 Hz|
-|Unison Voices|Number of unison voices used by the carrier oscillator. 1 = disabled.|1 .. 16|
-|Forward Bias|Controls the approximate model of the diode **1**.|0 .. 100 %|
-|Linear Region|Controls the approximate model of the diode **1**.|0 .. 100 %|
-|Low Cut|Low cut element before the output stage.|13.75 .. 25087.71 Hz|
-|High Cut|High cut element before the output stage.|13.75 .. 25087.71 Hz|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-**1** For more information on the diode model used by the ring modulator,
-you can read [this paper](http://dafx.de/paper-archive/2011/Papers/66_e.pdf).
-
-
-
-### Treemonster
-
-Treemonster is a specialized effect ported from Shortcircuit 2, a proper Vember Audio classic!
-Treemonster runs a naïve pitch detection algorithm on the input signal, runs a
-sine oscillator at the detected pitch, then ring modulates the input signal with the
-resulting tuned sine oscillator. It can get pretty crazy, especially if you apply pitch
-shifts to the generated oscillator. Like the emulated analog ring modulation in Surge XT,
-this effect can very rapidly become very inharmonic.
-
-| | | |
-|-|-|-|
-|Threshold|Level above which the input signal will have its pitch detected.|-96 .. 0 dB|
-|Speed|Transition speed between two detected pitches.|0 .. 100 %|
-|Low Cut|Cutoff frequency of the highpass filter applied to the input signal before pitch detection. Can be disabled.|13.75 .. 25087.71 Hz|
-|High Cut|Cutoff frequency of the lowpass filter applied to the input signal before pitch detection. Can be disabled.|13.75 .. 25087.71 Hz|
-|Pitch|Pitch offset of the carrier oscillator.|0 .. 100 %|
-|Ring Modulation|Mix between the clean sine carrier oscillator (left) and the ring modulated signal (right).|0 .. 100 %|
-|Width|Stereo width. 0% = mono, 100% = stereo, -100% = reverse stereo |-100 .. 100 %|
-|Mix|Blend control between the dry and the wet signal.|-100 .. +100%|
-
-
-
-### Vocoder
-
-The audio input of Surge XT is used to modulate the carrier signal at the
-input stage of this 20-band vocoder algorithm.
-
-| | | |
-|-|-|-|
-|Gain|Gain control of the modulator|-48 .. +48 dB|
-|Gate|Bands below this level will be silenced.|-96 .. 0 dB|
-|Env Follow|Rate of the envelope followers.|0 .. 100 %|
-|Q|Controls the steepness of the filters.|-100 .. 100 %|
-|Bands|The number of vocoder bands.|4 .. 20|
-|Min Frequency|Frequency of the lowest vocoder band applied to the carrier. Bands will be spread evenly in pitch between it and the high band.|55 .. 3520 Hz|
-|Max Frequency|Frequency of the highest vocoder band applied to the carrier. Bands will be spread evenly in pitch between it and the low band.|440 .. 14080 Hz|
-|Input|Chooses the input source configuration.|Mono Sum, Left Only, Right Only, Stereo|
-|Range|Squeezes or expands the range of the modulator bands.|-100 .. 100 %|
-|Center|The modulator bands default to the carrier bands, but this recenters the modulator while keeping the same low/high distance.|-100 .. 100 %|
-
-
-
-### Chorus
-
-4-stage chorus algorithm.
-
-| | | |
-|-|-|-|
-|Rate|Rate of the modulation, Can be tempo-synced.|0.008 .. 512 Hz 64 .. 1/1024 note|
-|Depth|Depth of the modulation.|0 .. 100 %|
-|Time|Delay time used as center.|0 .. 0.125 s|
-|Feedback|Amount fed from the output back into the input.|-inf .. 0 dB|
-|Low/High-cut|EQ controls of the chorused signal.|14Hz .. 25kHz|
-|Width|Gain scaling of the Side-component of the wet signal.|-24 .. 24 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Ensemble
-
-Ensemble chorus effect based on BBD (bucket-brigade device) delay lines (with optional clean digital delay lines, too).
-
-Implementation of the BBD chip is based on a [2018
-DAFx paper](http://dafx2018.web.ua.pt/papers/DAFx2018_paper_12.pdf)
-by Martin Holters and Julian Parker.
-
-| | | |
-|-|-|-|
-|Filter|The frequency of the anti-aliasing filter used by the BBD|14Hz .. 25kHz|
-|Modulation Freq 1/2|Controls the modulation frequency of the chorus|0.01 .. 20 Hz|
-|Modulation Depth 1/2|Controls the modulation depth of the chorus|0 .. 100 %|
-|Delay Type|Controls the type of delay line used for the chorusing effect|128 .. 4096 BBD Stages, Digital|
-|Clock Rate|Controls the clock rate used by the BBD delays|1.5kHz .. 100kHz|
-|Saturation|Controls a BBD-style saturation on the chorusing delays|0 .. 100 %|
-|Feedback|Controls feedback around the chorusing delays, creating a flanging effect|0 .. 100 %|
-
-
-
-### Flanger
-
-Versatile Flanging algorithm.
-
-| | | |
-|-|-|-|
-|Waveform|Waveform of the modulation|Sine, Triangle, Sawtooth, Sample & Hold|
-|Rate|Rate of the modulation, Can be tempo-synced|0.008 .. 512 Hz 64 .. 1/1024 note|
-|Depth|Depth of the modulation|0 .. 100%|
-|Count|Number of comb filters used for the flanging algorithm.|1.00 .. 4.00|
-|Base Pitch|Cutoff frequency/pitch of the first comb filter.|0 .. 127 semitones|
-|Spacing|Cutoff frequency offset for the other comb filters.|0 .. 12 semitones|
-|Feedback|Increases the flanging resonance. |0 .. 100 %|
-|LF Damping|Damping for low frequencies.|0 .. 100%|
-|Mode|Mode used for the flanging algorithm|Dry Signal + Combs, Combs Only, Dry Signal + Arpeggiated Combs, Arpeggiated Combs Only|
-|Width|Gain scaling of the Side-component of the wet signal.|-24 .. +24 dB|
-|Mix|Blend control between the dry and the wet signal.|-100 .. +100%|
-
-
-
-### Phaser
-
-Flexible phaser with adjustable number of stages.
-
-| | | |
-|-|-|-|
-|Waveform|Shape of the modulation|Sine, Triangle, Sawtooth, Noise, Sample & Hold, Square|
-|Rate|Rate of modulation LFO, Can be tempo-synced. Can be disabled**1**.|0.008 .. 512 Hz 64 .. 1/1024 note|
-|Depth|Depth of the phaser modulation LFO.|0 .. 100 %|
-|Stereo|LFO Phase relation between stereo channels 0% = 0 degrees, 100% = 180 degrees.|0 .. 100 %|
-|Count|Number of stages|2 .. 16|
-|Spread|Distance between the stages.|0 .. 100%|
-|Center|Base frequency for the stages.|-100 .. 100 %|
-|Sharpness|Q setting for the stages.|-100 .. 100 %|
-|Feedback|Feedback of the phaser.|-100 .. 100 %|
-|Tone|Applies Low Pass filtering (left) or High Pass filtering (right)|-100 .. 100 %|
-|Width|Gain scaling of the Side-component of the wet signal.|-24 .. +24 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-**1** Once disabled, the **Rate** parameter acts like a phase parameter, which can be
-scrubbed through and modulated to achieve manual phasing and combing effects.
-
-
-
-### Rotary Speaker
-
-Rotary speaker simulator algorithm.
-
-| | | |
-|-|-|-|
-|Horn rate|Rate of HF horn rotation, the LF horn is a lower multiple of this rate, Can be tempo-synced.|0.008 .. 512 Hz 64 .. 1/1024 note|
-|Rotor Rate|Rotor rate (as a factor of Horn rate).|0 .. 200 %|
-|Model|Waveshaper used for distortion.|Soft, Hard, Asymmetric, Sine, Digital|
-|Drive|Distortion amount|0 .. 100 %|
-|Doppler|The amount of Doppler shift (vibrato).|0 .. 100 %|
-|Tremolo|The amount of amplitude modulation.|0 .. 100 %|
-|Width|Gain scaling of the side component of the wet signal.|-24 .. +24 dB|
-|Mix|Blend control between the dry and the wet signal.|-100 .. +100%|
-
-
-
-### Delay
-
-The delay algorithm in Surge XT is very versatile and can work well both as
-an echo/delay and chorus.
-
-![Illustration 78: Delay algorithm block diagram](../manual_xt/images/Pictures/illu20.png)
-
-*Delay algorithm block diagram*
-
-There is an LFO connected to the delay-lines (not shown in diagram)
-which can provide stereo-widening/detuning of the delay-line.
-
-| | | |
-|-|-|-|
-|Channel|Routes the two channels to the delay-units by panning. The gain of the input-channels remain unaffected, it's only their stereo location that changes. (a sound only heard in the left channel will still be heard when pan is set to 100% here, but only in the right channel.)|-100 .. 100 %|
-|Delay time Left|Delay time for the left channel. Can be tempo-synced.|0 .. 32 s 1/512 .. 16 whole notes|
-|Delay time Right|Delay time for the right channel. Can be tempo-synced. Can be linked to left channel.|0 .. 32 s 1/512 .. 16 whole notes|
-|Feedback|Amount fed from the channel to its own input. Can be extended. Clipping can be configured in its context-menu.|-inf .. 0 dB|
-|Crossfeed|Amount fed from the channel to the input of the opposing channel.|-inf .. 0 dB|
-|Low/High- cut|EQ controls of the delayed signal.|14Hz .. 25kHz|
-|Modulation rate|Rate of the modulation LFO (triangle). |0.008 .. 512 Hz 64 .. 1/1024 note|
-|Modulation depth|Indirect control of the modulation LFO depth. The effect adjust the depth to match the detuning in cents set here.|0 .. 200 cents|
-|Width|Gain scaling of the Side-component of the wet signal.|-24 .. 24 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Reverb 1
-
-The Reverb 1 algorithm is a classic and older sounding digital reverb.
-
-| | | |
-|-|-|-|
-|Pre-Delay|Amount of delay applied to the signal before it is fed to the reverberation unit. Can be tempo-synced.|0 .. 32 s 1/512 .. 16 whole notes|
-|Room Shape|Selects between 4 room shapes that has different sounds. (changing this parameter will interrupt the signal)|0 .. 3|
-|Size|Changes the apparent size of the simulated room. (changing this parameter will interrupt the signal)|0 .. 100 %|
-|Decay Time|The time it takes for the reverberation to ring-out. (-60 dB)|0 .. 64 s|
-|HF Damping|Amount of HF damping applied to the signal inside the reverberator.|0 .. 100 %|
-|Low Cut, Peak Freq/Gain, High Cut|Post-reverb equalizer controls.||
-|Width|Gain scaling of the Side-component of the wet signal|-24 .. 24 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Reverb 2
-
-The Reverb 2 algorithm is a second version of Surge's original Reverb effect and has a different algorithm and controls.
-Reverb 2 is more natural and contains less digital artifacts. For most use cases, Reverb 2 sounds better than Reverb 1.
-
-| | | |
-|-|-|-|
-|Pre-Delay|Amount of delay applied to the signal before it is fed to the reverberation unit. Can be tempo-synced.|0 .. 2 s 1/512 .. whole notes|
-|Room Size|Changes the apparent size of the simulated room.|-100 .. 100 %|
-|Decay time|The time it takes for the reverberation to ring-out. (-60 dB)|0 .. 64 s|
-|Diffusion|Changes the complexity of the room, thus adjusting diffusion amount|0 .. 100 %|
-|Buildup|Controls how long the reverb takes to come to its peak and how "smeared" in time the effect is.|0 .. 100 %|
-|Modulation|Amount of pitch modulation applied to the input for a more lush sound|0 .. 100 %|
-|LF/HF Damping|The amount of absorption/reduction for Low or High frequencies|0 .. 100 %|
-|Width|Gain scaling of the Side-component of the wet signal|-24 .. 24 dB|
-|Mix|Blend control between the dry and the wet signal.|0 .. 100 %|
-
-
-
-### Spring Reverb
-
-The Spring Reverb algorithm is an emulation of old spring reverb effects. It is based loosely on the
-algorithm outlined by Parker ([EURASIP 2011](https://asp-eurasipjournals.springeropen.com/articles/10.1155/2011/646134)).
-
-| | | |
-|-|-|-|
-| Size | Size of the springs being used to create the reverb. | 0 .. 100 % |
-| Decay | Decay time of the reverb. | 0.5 .. 4.5 s |
-| Reflections | Amount of early reflections propagated through the springs. | 0 .. 100 % |
-| Damping | Amount of high-frequency damping in the springs. | 0 .. 100 % |
-| Spin | Amount of frequency smearing happening in the springs. | 0 .. 100 % |
-| Chaos | Amount of random modulation used to excite the springs. | 0 .. 100 % |
-| Knock | Emulates the sound of a person knocking against the spring reverb unit. | Off/On |
-| Mix | Blend control between the dry and the wet signal. | 0 .. 100 % |
-
-
-
-### Airwindows
-
-Airwindows effect is an integration of 56 diverse effects by Chris Johnson.
-Thanks to Airwindows for providing high quality open source effects!
-
-You can read more about these effects [here](https://www.airwindows.com/category/free/),
-and read the code [here](https://github.com/airwindows/airwindows).
-
-
-
-### Conditioner
-
-The Conditioner is a simple EQ, stereo image control and a limiter built
-into one unit. The limiter applies make-up gain automatically.
-
-![Illustration 79: Conditioner block diagram](../manual_xt/images/Pictures/tech_conditioner.png)
-
-| | | |
-|-|-|-|
-| Bass | LF boost/cut. | \-12 .. +12 dB |
-| Treble | HF boost/cut. | \-12 .. +12 dB |
-| Width | Stereo width. 0% = mono, 100% = stereo, -100% = reverse stereo. | \-100 .. 100 % |
-| Side Low Cut | Low cut filter for the side component. Must be enabled to be used. | 13.75 .. 25087.71 Hz |
-| Balance | Stereo balance (left-right). | \-100 .. 100 % |
-| Threshold | Limiter threshold level. | \-48 .. 0 dB |
-| Attack | Limiter attack rate. Negative values are faster and positive values are slower.| \-100 .. 100 % |
-| Release | Limiter release rate. Negative values are faster and positive values are slower.| \-100 .. 100 % |
-| Output | Limiter output attenuation. | \-48 .. 0 dB |
-
-
-
-### Mid-Side Tool
-
-The Mid-Side tool is a set of controls useful for transforming a stereo signal to mid-side and vice versa,
-with additional separate filtering for the mid and side signal.
-
-| | | |
-|-|-|-|
-| (Mid) Low Cut | Low cut filter for mid component. Must be enabled to be used. | 13.75 .. 25087.71 Hz |
-| (Mid) Gain | Gain of the mid peak band. Must be enabled (with Frequency) to be used. | -24 .. 24 dB |
-| (Mid) Frequency | Frequency of the mid peak band. Must be enabled (with Gain) to be used. | -24 .. 24 dB |
-| (Mid) High Cut | Low cut filter for mid component. Must be enabled to be used. | 13.75 .. 25087.71 Hz |
-| (Side) Low Cut | Low cut filter for side component. Must be enabled to be used. | 13.75 .. 25087.71 Hz |
-| (Side) Gain | Gain of the side peak band. Must be enabled (with Frequency) to be used. | -24 .. 24 dB |
-| (Side) Frequency | Frequency of the side peak band. Must be enabled (with Gain) to be used. | -24 .. 24 dB |
-| (Side) High Cut | Low cut filter for side component. Must be enabled to be used. | 13.75 .. 25087.71 Hz |
-| Mid Gain | Output level of mid component. | -48 .. 12 dB |
-| Side Gain | Output level of side component. | -48 .. 12 dB |
-| Balance | Stereo balance (left-right). | -100 (Left) .. 100 % (Right) |
-
-
-
-## MIDI CC Information
-
-The eight macros atop the routing bar have MIDI CCs assigned to them by default. They are as follows:
-
-**Macro 1** = CC 41
-
-**Macro 2** = CC 42
-
-**Macro 3** = CC 43
-
-**Macro 4** = CC 44
-
-**Macro 5** = CC 45
-
-**Macro 6** = CC 46
-
-**Macro 7** = CC 47
-
-**Macro 8** = CC 48
-
-
-
-# Questions?
-
-Feel free to visit the Surge Synth Team Discord server [here](https://discord.com/invite/spGANHw) if you have questions
-about Surge XT, want to help in developing it further or if you come across any bugs or other issues.
diff --git a/nightly-xt.md b/nightly-xt.md
deleted file mode 100644
index 29d4c1dd98..0000000000
--- a/nightly-xt.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: page
-title: Surge XT Nightly Releases
-noheader: true
-permalink: nightly_XT
----
-
-Current build: {% include latest_xt_version %} built at {% include latest_xt_build_time %}
-
-You can always find the latest nightly release in every available format here, but for convenience, direct download links for our most popular platforms are below.
-
-
-
-Note that the direct links can break for 90-120 seconds while we are releasing a new build, but the all formats link is always valid.
-
-The draft changelog can be found here.
-
-Testing the beta is how the release gets good, though! We need and welcome your feedback, either on [GitHub](https://github.com/surge-synthesizer/surge/issues) or
-[Discord](https://discord.gg/aFQDdMV).
-
-Recent changes:
-
-```
-{% include git_nightly_xt_recent_five %}
-```
-
-## Caveats
-
-Please take a moment to understand the nightlies. We automatically build Surge XT on all our
-platforms with every commit to our main branch. This means
-the code you are about to download may be minutes old. Depending on the pace of development at Surge Synth Team,
-the code could contain bugs, new features which don't work, and may even end up making patches that
-future Surge versions load differently, incorrectly, or not at all.
-
-
-Our minimum advice if you use a nightly is to use a limiter on the output. We have made DSP errors in the nightlies before
-which created nasty clicks and pops, in worst cases sudden blasts of noise.
-
-
-But despite the above warning, we work really hard to have the nightlies be great. Most of Surge Synth Team runs the nightly in their
-music-making environment, and the software is generally stable and robust. Also, using the nightly, finding a bug, and letting us
-know is how bugs get fixed. For more on that, learn how to contact us with questions and comments.
-
diff --git a/nightly.md b/nightly.md
deleted file mode 100644
index f7a7833bca..0000000000
--- a/nightly.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-layout: page
-title: Surge 1.9 Beta
-noheader: true
-permalink: nightly
----
-
-Welcome to the Surge 1.9 Beta site!
-
-We released Surge 1.8.1 in January 2021, and are planning to release Surge 1.9 in late April
-or early May of 2021. The 1.9 release candidate contains many new features, including 4 new oscillators
-and 16 new effects! You can read the nightly changelog here.
-
-There's no real difference between a Surge nightly and a beta, except that late in the release cycle
-we get confident that the nightly is pretty good, and so call it a beta. At this point, we think the
-bugs are mostly gone, the features all work, and barring an unforseen error, patches made with this
-Beta should work in the 1.9 production release, with the following exceptions:
-
-1. We still have some more modes and behaviors to add to the Alias oscillator, which will likely change its behavior still
-2. We may still make some tweaks to the Ensemble effect Clock Rate parameter in BBD modes
-3. We are still adapting the FX bank to include all the new features and so there will be UI change coming for sure
-
-You all testing the beta is how the release gets good, though! We need and welcome your feedback, either on [GitHub](https://github.com/surge-synthesizer/surge/issues) or
-on [Discord](https://discord.gg/aFQDdMV). And even though the beta is in pretty good shape, it may still have bugs. Please be
-careful, use a limiter, don't use in-ear headphones when experimenting, and so forth, in case we
-have made a DSP error and you run across it.
-
-Finally, enjoy making music with Surge!
-
-
-
-Build: {% include latest_version %} built at {% include latest_build_time %}
-
-