diff --git a/.gitignore b/.gitignore
index b6ece0b..3756b43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-.vscode/ipch
-*.o
-.DS_STORE
+.vscode/ipch
+*.o
+.DS_STORE
diff --git a/.gitmodules b/.gitmodules
index e0a3620..448e5cb 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
-[submodule "simulation/imgui"]
- path = simulation/imgui
- url = https://github.com/ocornut/imgui.git
- ignore = untracked
+[submodule "simulation/imgui"]
+ path = simulation/imgui
+ url = https://github.com/ocornut/imgui.git
+ ignore = untracked
diff --git a/LICENSE.md b/LICENSE.md
index 9cecc1d..c65825e 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,674 +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.
-
- {one line to give the program's name and a brief idea of what it does.}
- Copyright (C) {year} {name of author}
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-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:
-
- {project} Copyright (C) {year} {fullname}
- 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
-.
+ 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.
+
+ {one line to give the program's name and a brief idea of what it does.}
+ Copyright (C) {year} {name of author}
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+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:
+
+ {project} Copyright (C) {year} {fullname}
+ 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/NuEVI-audio/NuEVI-audio.ino b/NuEVI-audio/NuEVI-audio.ino
index a18d82e..9a72d73 100644
--- a/NuEVI-audio/NuEVI-audio.ino
+++ b/NuEVI-audio/NuEVI-audio.ino
@@ -1,5567 +1,5567 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include // for the breath signal LP filtering, https://github.com/edgar-bonet/Filters
-#include
-#include
-#include
-
-/*
-NAME: NuEVI
-WRITTEN BY: JOHAN BERGLUND
-DATE: 2018-04-19
-FILE SAVED AS: NuEVI.ino
-FOR: PJRC Teensy 3.2 and a MPR121 capactive touch sensor board.
- Uses an SSD1306 controlled OLED display communicating over I2C.
-PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath sensor
- and capacitive touch keys. Output to both USB MIDI and DIN MIDI.
-
-*/
-
-//_______________________________________________________________________________________________ DECLARATIONS
-
-// Compile options, comment/uncomment to change
-
-#define REVB
-
-
-// Pin definitions
-
-// Teensy pins
-
-#define specialKeyPin 0 // SK or S2
-#define halfPitchBendKeyPin 1 // PD or S1
-
-#define bitePin 17
-#define extraPin 16
-#define pbUpPin 23
-#define pbDnPin 22
-#define vibratoPin 15
-
-#define dPin 3
-#define ePin 4
-#define uPin 5
-#define mPin 6
-
-#define bLedPin 10
-#define pLedPin 9
-
-#define vMeterPin A11
-
-#define PBD 12
-
-#if defined(REVB)
-
-// MPR121 pins Rev B (angled pins at top edge for main keys and rollers)
-
-#define R1Pin 0
-#define R2Pin 2
-#define R3Pin 4
-#define R4Pin 6
-#define R5Pin 8
-
-#define K4Pin 10
-#define K1Pin 1
-#define K2Pin 3
-#define K3Pin 5
-#define K5Pin 7
-#define K6Pin 9
-#define K7Pin 11
-
-/*
- * PINOUT ON PCB vs PINS ON MPR121 - Rev. B
- *
- * (R1) (R2) (R3/6) (R4) (R5) (K4) <-> (00) (02) (04) (06) (08) (10)
- *
- * (K1) (K2) (K3) (K5) (K6) (K7) <-> (01) (03) (05) (07) (09) (11)
- *
- */
-
-# else
-
-// MPR121 pins Rev A (upright pins below MPR121 for main keys and rollers)
-
-#define R1Pin 10
-#define R2Pin 11
-#define R3Pin 8
-#define R4Pin 9
-#define R5Pin 6
-
-#define K4Pin 7
-#define K1Pin 4
-#define K2Pin 5
-#define K3Pin 2
-#define K5Pin 3
-#define K6Pin 0
-#define K7Pin 1
-
-/*
- * PINOUT ON PCB vs PINS ON MPR121 - Rev. A
- *
- * (R2) (R4) (K4) (K2) (K5) (K7) <-> (11) (09) (07) (05) (03) (01)
- *
- * (R1) (R3/6) (R5) (K1) (K3) (K6) <-> (10) (08) (06) (04) (02) (00)
- *
- */
-
-#endif
-
-#define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak)
-#define touch_Thr 1200 // sensitivity for Teensy touch sensors
-#define CCN_Port 5 // Controller number for portamento level
-#define CCN_PortOnOff 65// Controller number for portamento on/off
-
-
-// Send CC data no more than every CC_INTERVAL
-// milliseconds
-#define CC_INTERVAL 5
-
-
-// The three states of our main state machine
-
-// No note is sounding
-#define NOTE_OFF 1
-
-// We've observed a transition from below to above the
-// threshold value. We wait a while to see how fast the
-// breath velocity is increasing
-#define RISE_WAIT 2
-
-// A note is sounding
-#define NOTE_ON 3
-
-
-//display states
-#define DISPLAYOFF_IDL 0
-#define MAIN_MENU 1
-#define PATCH_VIEW 2
-#define BREATH_ADJ_IDL 10
-#define BREATH_ADJ_THR 11
-#define BREATH_ADJ_MAX 12
-#define PORTAM_ADJ_IDL 20
-#define PORTAM_ADJ_THR 21
-#define PORTAM_ADJ_MAX 22
-#define PITCHB_ADJ_IDL 30
-#define PITCHB_ADJ_THR 31
-#define PITCHB_ADJ_MAX 32
-#define EXTRAC_ADJ_IDL 40
-#define EXTRAC_ADJ_THR 41
-#define EXTRAC_ADJ_MAX 42
-#define VIBRAT_ADJ_IDL 50
-#define VIBRAT_ADJ_THR 51
-#define VIBRAT_ADJ_DPT 52
-#define CTOUCH_ADJ_IDL 60
-#define CTOUCH_ADJ_THR 61
-#define SETUP_BR_MENU 80
-#define SETUP_CT_MENU 90
-#define ROTATOR_MENU 100
-#define SYNTH_MENU 110
-
-// EEPROM addresses for settings
-#define VERSION_ADDR 0
-#define BREATH_THR_ADDR 2
-#define BREATH_MAX_ADDR 4
-#define PORTAM_THR_ADDR 6
-#define PORTAM_MAX_ADDR 8
-#define PITCHB_THR_ADDR 10
-#define PITCHB_MAX_ADDR 12
-#define TRANSP_ADDR 14
-#define MIDI_ADDR 16
-#define BREATH_CC_ADDR 18
-#define BREATH_AT_ADDR 20
-#define VELOCITY_ADDR 22
-#define PORTAM_ADDR 24
-#define PB_ADDR 26
-#define EXTRA_ADDR 28
-#define VIBRATO_ADDR 30
-#define DEGLITCH_ADDR 32
-#define EXTRAC_THR_ADDR 34
-#define EXTRAC_MAX_ADDR 36
-#define PATCH_ADDR 38
-#define OCTAVE_ADDR 40
-#define CTOUCH_THR_ADDR 42
-#define BREATHCURVE_ADDR 44
-#define VEL_SMP_DL_ADDR 46
-#define VEL_BIAS_ADDR 48
-#define PINKY_KEY_ADDR 50
-#define FP1_ADDR 52
-#define FP2_ADDR 54
-#define FP3_ADDR 56
-#define FP4_ADDR 58
-#define FP5_ADDR 60
-#define FP6_ADDR 62
-#define FP7_ADDR 64
-#define DIPSW_BITS_ADDR 66
-#define PARAL_ADDR 68
-#define ROTN1_ADDR 70
-#define ROTN2_ADDR 72
-#define ROTN3_ADDR 74
-#define ROTN4_ADDR 76
-#define PRIO_ADDR 78
-
-//"factory" values for settings
-#define VERSION 28
-#define BREATH_THR_FACTORY 1400
-#define BREATH_MAX_FACTORY 4000
-#define PORTAM_THR_FACTORY 2600
-#define PORTAM_MAX_FACTORY 3300
-#define PITCHB_THR_FACTORY 1400
-#define PITCHB_MAX_FACTORY 2300
-#define EXTRAC_THR_FACTORY 1200
-#define EXTRAC_MAX_FACTORY 2400
-#define TRANSP_FACTORY 12 // 12 is 0 transpose
-#define MIDI_FACTORY 1 // 1-16
-#define BREATH_CC_FACTORY 2 //thats CC#2, see ccList
-#define BREATH_AT_FACTORY 0 //aftertouch default off
-#define VELOCITY_FACTORY 0 // 0 is dynamic/breath controlled velocity
-#define PORTAM_FACTORY 2 // 0 - OFF, 1 - ON, 2 - SW
-#define PB_FACTORY 1 // 0 - OFF, 1 - 12
-#define EXTRA_FACTORY 2 // 0 - OFF, 1 - Modulation wheel, 2 - Foot pedal, 3 - Filter Cutoff, 4 - Sustain pedal
-#define VIBRATO_FACTORY 4 // 0 - OFF, 1 - 9 depth
-#define DEGLITCH_FACTORY 20 // 0 - OFF, 5 to 70 ms in steps of 5
-#define PATCH_FACTORY 1 // MIDI program change 1-128
-#define OCTAVE_FACTORY 3 // 3 is 0 octave change
-#define CTOUCH_THR_FACTORY 125 // MPR121 touch threshold
-#define BREATHCURVE_FACTORY 4 // 0 to 12 (-4 to +4, S1 to S4)
-#define VEL_SMP_DL_FACTORY 20 // 0 to 30 ms in steps of 5
-#define VEL_BIAS_FACTORY 0 // 0 to 9
-#define PINKY_KEY_FACTORY 12 // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 22 (QuickTranspose +1 to +12)
-#define DIPSW_BITS_FACTORY 0 // virtual dip switch settings for special modes (work in progress)
-#define PARAL_FACTORY 31 // 7 (+ 24) Rotator parallel
-#define ROTN1_FACTORY 19 // -5 (+24) Rotation 1
-#define ROTN2_FACTORY 14 // -10 (+24) Rotation 2
-#define ROTN3_FACTORY 17 // -7 (+24) Rotation 3
-#define ROTN4_FACTORY 10 // -14 (+24) Rotation 4
-#define PRIO_FACTORY 0 // Mono priority 0 - BAS(e note), 1 - ROT(ating note)
-
-#define OLED_RESET 4
-Adafruit_SSD1306 display(OLED_RESET);
-
-#define LOGO16_GLCD_HEIGHT 16
-#define LOGO16_GLCD_WIDTH 16
-
- // 'NuEVI' logo
-static const unsigned char PROGMEM nuevi_logo_bmp[] = {
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x07, 0x73, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x0e, 0xe3, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x00, 0x1d, 0xc3, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x3b, 0x83, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x77, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xee, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x01, 0xdc, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x03, 0xb8, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x07, 0x70, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x0e, 0xe0, 0x03, 0x60, 0x00,
-0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x1d, 0xc0, 0x03, 0x60, 0x00,
-0x00, 0x03, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x3b, 0x80, 0x03, 0x60, 0x00,
-0x00, 0x03, 0x00, 0xe0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x77, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x03, 0x00, 0xc0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0xee, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x03, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x61, 0xdc, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x07, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x63, 0xb8, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x07, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x67, 0x70, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x06, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x6e, 0xe0, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x06, 0x60, 0xc1, 0x01, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x7d, 0xc0, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x06, 0x30, 0xc3, 0x03, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x7b, 0x80, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x0c, 0x30, 0xc3, 0x07, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x77, 0x00, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x0c, 0x1c, 0xc3, 0x06, 0x01, 0x80, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x0c, 0x0c, 0xc2, 0x0e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x0c, 0x0e, 0xc6, 0x1e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xf8, 0x00, 0x00, 0x03, 0x60, 0x00,
-0x00, 0x0c, 0x07, 0xc6, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x03, 0xc6, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x01, 0xc7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x00, 0xc7, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-const int16_t AKWF_vgame_0006[257] = {
- 1, 2, 2, 2, 4, 5, 6, 7, 9,
- 7, 10, 10, 11, 11, 13, 12, 15, 12, 16,
- 14, 16, 14, 18, 16, 18, 15, 20, 16, 21,
- 18, 20, 21, 20, 21, 19, 24, 19, 25, 16,
- 27, 15, 29, 13, 32, 13, 34, 11, 34, 12,
- 34, 13, 33, 17, 30, 20, 25, 25, 19, 32,
- 12, 41, 3, 50, -7, 63, -21, 78, -38, 98,
- -63, 128, -105, 189, -211, 370, -473, 11424, 28860, 30309,
- 32767, 20949, 3562, 277, -2542, -2886, -3011, -2718, -2830, -2678,
- -2711, -2583, -2584, -2495, -2470, -2404, -2359, -2315, -2257, -2226,
- -2161, -2140, -2068, -2054, -1980, -1970, -1897, -1888, -1818, -1808,
- -1743, -1731, -1670, -1654, -1601, -1579, -1535, -1510, -1469, -1442,
- -1408, -1376, -1348, -1315, -1289, -1255, -1233, -1199, -1178, -1145,
- -1123, -1092, -1073, -1044, -1024, -995, -975, -950, -929, -906,
- -885, -864, -842, -823, -803, -783, -764, -746, -727, -710,
- -691, -675, -656, -641, -625, -608, -594, -579, -563, -549,
- -535, -521, -507, -494, -480, -468, -456, -442, -430, -418,
- -407, -397, -386, -375, -364, -353, -343, -334, -324, -314,
- -306, -296, -288, -279, -271, -262, -255, -247, -240, -232,
- -225, -218, -211, -204, -198, -191, -184, -178, -172, -167,
- -162, -155, -150, -144, -140, -134, -129, -124, -120, -116,
- -112, -109, -103, -100, -95, -92, -87, -85, -81, -77,
- -74, -70, -67, -63, -60, -58, -56, -52, -49, -48,
- -44, -42, -40, -37, -35, -33, -31, -29, -26, -24,
- -23, -21, -20, -17, -15, -14, -12, -11, -9, -8,
- -7, -6, -5, -3, -1, -1, 0, 1
-};
-
-const int16_t AKWF_vgtri_0008[257] = {
- 63, 609, 287, 611, 129, 1825, 2747, 2663, 2408,
- 3562, 5515, 5160, 5230, 5504, 7586, 7340, 7533, 7305, 7687,
- 9613, 9631, 9637, 9524, 11857, 12359, 12250, 12081, 13593, 14672,
- 14355, 14361, 15180, 16991, 16376, 16863, 16293, 17459, 18916, 18848,
- 18683, 19150, 21474, 21446, 21417, 21419, 23298, 23784, 23498, 23745,
- 23423, 25488, 25834, 25908, 25526, 27395, 28652, 28406, 28302, 29161,
- 30890, 30482, 30739, 30475, 31022, 32065, 31842, 32069, 31644, 29346,
- 29267, 29344, 29327, 27546, 26910, 27287, 26952, 27382, 25289, 24917,
- 24820, 25244, 23430, 22091, 22333, 22448, 21624, 19895, 20195, 20142,
- 19911, 17841, 17994, 17872, 18024, 17770, 15792, 15732, 15724, 15878,
- 13625, 12958, 13165, 13239, 11947, 10581, 11185, 10683, 11303, 9673,
- 8649, 8681, 8968, 7981, 5921, 6172, 6155, 5952, 3918, 3941,
- 3920, 3973, 3846, 1818, 1744, 1706, 1893, 33, -562, -425,
- -292, -1562, -2952, -2401, -2849, -2282, -3780, -4860, -6817, -7657,
- -7320, -7501, -7404, -7421, -7549, -9619, -9605, -9669, -9484,-11431,
--14014,-13961,-14049,-13933,-14078,-13894,-14153,-13685,-15369,-16886,
--16534,-16605,-16969,-19998,-21140,-20949,-21022,-20982,-21006,-21004,
--20963,-21098,-23516,-23658,-23634,-23504,-25279,-28009,-27935,-28085,
--27892,-28127,-27839,-28221,-27607,-29387,-30757,-30699,-30366,-31414,
--32079,-30342,-30740,-30564,-30652,-30617,-30606,-30669,-30547,-28194,
--27905,-28032,-28080,-26491,-23630,-23689,-23533,-23720,-23513,-23745,
--23459,-23902,-22617,-21243,-21480,-21483,-21109,-17813,-16475,-16670,
--16600,-16636,-16612,-16626,-16626,-16623,-14639,-14373,-14424,-14589,
--12705, -9668, -9671, -9554, -9699, -9536, -9725, -9480, -9883, -8706,
- -7231, -7497, -7458, -7173, -3925, -2474, -2670, -2602, -2637, -2612,
- -2630, -2620, -2658, -712, -321, -490, -442, 63
-};
-
-const int16_t AKWF_violin_0010[257] = {
- 27, 303, 1129, 2595, 4250, 5804, 7288, 8741, 10134,
- 11437, 12646, 13753, 14783, 15739, 16600, 17358, 17995, 18484, 18819,
- 19029, 19146, 19172, 19102, 18942, 18690, 18357, 17953, 17508, 17045,
- 16549, 15998, 15414, 14847, 14338, 13865, 13406, 12962, 12521, 12076,
- 11672, 11380, 11203, 11075, 10944, 10836, 10785, 10802, 10885, 11040,
- 11260, 11529, 11844, 12213, 12636, 13125, 13679, 14304, 14993, 15730,
- 16512, 17335, 18205, 19111, 20049, 21018, 22026, 23082, 24153, 25186,
- 26174, 27109, 27982, 28814, 29631, 30426, 31136, 31727, 32189, 32513,
- 32694, 32764, 32754, 32643, 32391, 31986, 31429, 30703, 29836, 28882,
- 27852, 26719, 25456, 24081, 22672, 21248, 19761, 18182, 16530, 14891,
- 13302, 11750, 10238, 8774, 7337, 5936, 4571, 3254, 1999, 838,
- -206, -1154, -2020, -2805, -3462, -3967, -4341, -4611, -4787, -4881,
- -4906, -4858, -4722, -4495, -4199, -3848, -3448, -2979, -2446, -1905,
- -1410, -956, -492, -1, 487, 952, 1385, 1766, 2086, 2364,
- 2632, 2871, 3014, 3016, 2915, 2754, 2536, 2256, 1914, 1498,
- 981, 364, -325, -1065, -1872, -2795, -3839, -4945, -6079, -7240,
- -8461, -9748,-11061,-12369,-13671,-15008,-16373,-17730,-19056,-20330,
--21545,-22694,-23794,-24888,-25950,-26909,-27739,-28460,-29112,-29690,
--30154,-30490,-30711,-30828,-30849,-30782,-30640,-30412,-30088,-29668,
--29163,-28585,-27940,-27231,-26473,-25692,-24920,-24149,-23323,-22440,
--21568,-20770,-20039,-19334,-18639,-17973,-17337,-16749,-16256,-15873,
--15569,-15310,-15090,-14918,-14789,-14721,-14736,-14834,-14992,-15204,
--15451,-15702,-15952,-16211,-16480,-16760,-17041,-17318,-17591,-17852,
--18087,-18267,-18377,-18423,-18407,-18336,-18233,-18101,-17901,-17587,
--17175,-16711,-16203,-15622,-14930,-14131,-13237,-12246,-11172,-10039,
- -8840, -7580, -6262, -4870, -3317, -1690, -473, 27
-};
-
-const int16_t AKWF_oboe_0006[257] = {
- 8, 267, 522, 775, 1026, 1276, 1525, 1768, 2015,
- 2254, 2496, 2736, 2980, 3228, 3484, 3750, 4029, 4321, 4627,
- 4957, 5314, 5705, 6136, 6607, 7119, 7679, 8282, 8931, 9626,
- 10366, 11151, 11982, 12854, 13771, 14724, 15718, 16754, 17818, 18909,
- 20012, 21117, 22221, 23311, 24383, 25434, 26446, 27412, 28331, 29186,
- 29972, 30688, 31317, 31868, 32317, 32670, 32767, 32761, 32767, 32764,
- 32762, 32523, 32105, 31593, 30966, 30239, 29403, 28475, 27447, 26323,
- 25111, 23820, 22460, 21052, 19591, 18097, 16571, 15021, 13464, 11900,
- 10330, 8772, 7225, 5698, 4210, 2752, 1341, -13, -1307, -2533,
- -3692, -4791, -5819, -6782, -7679, -8501, -9261, -9956,-10585,-11155,
--11667,-12121,-12524,-12878,-13190,-13465,-13708,-13925,-14116,-14289,
--14453,-14616,-14786,-14974,-15179,-15404,-15651,-15919,-16208,-16519,
--16850,-17200,-17571,-17961,-18365,-18781,-19209,-19639,-20077,-20515,
--20949,-21376,-21787,-22182,-22560,-22912,-23235,-23527,-23779,-23989,
--24156,-24277,-24347,-24369,-24337,-24254,-24116,-23925,-23674,-23367,
--22996,-22558,-22057,-21493,-20871,-20195,-19465,-18689,-17871,-17011,
--16116,-15192,-14250,-13299,-12353,-11419,-10490, -9569, -8654, -7737,
- -6822, -5901, -4975, -4056, -3147, -2262, -1407, -581, 209, 964,
- 1679, 2346, 2960, 3523, 4026, 4470, 4857, 5193, 5490, 5755,
- 5990, 6199, 6375, 6520, 6630, 6702, 6733, 6724, 6678, 6594,
- 6470, 6305, 6096, 5846, 5553, 5222, 4859, 4472, 4068, 3656,
- 3236, 2808, 2374, 1937, 1491, 1036, 579, 116, -343, -794,
- -1236, -1658, -2057, -2433, -2781, -3105, -3408, -3684, -3939, -4171,
- -4376, -4555, -4705, -4819, -4899, -4941, -4948, -4920, -4856, -4756,
- -4621, -4453, -4251, -4015, -3755, -3475, -3184, -2888, -2587, -2286,
- -1983, -1683, -1387, -1094, -806, -528, -256, 8
-};
-
-const int16_t AKWF_altosax_0013[257] = {
- 8, 934, 1757, 2638, 3598, 4607, 5581, 6586, 7689,
- 8646, 9725, 10834, 12000, 13106, 14181, 15300, 16377, 17445, 18545,
- 19676, 20849, 21955, 23006, 23981, 24859, 25715, 26548, 27465, 28299,
- 29019, 29731, 30311, 30822, 31392, 31861, 32242, 32505, 32679, 32767,
- 32759, 32734, 32668, 32605, 32508, 32224, 31908, 31595, 31137, 30655,
- 30172, 29538, 28750, 27959, 27072, 26057, 24937, 23664, 22228, 20739,
- 19332, 17922, 16535, 15097, 13764, 12691, 11815, 11097, 10334, 9541,
- 8660, 7781, 6784, 5645, 4402, 3061, 1763, 414, -967, -2355,
- -3633, -4711, -5737, -6695, -7510, -8359, -9124, -9794,-10386,-10944,
--11430,-11840,-12295,-12690,-13049,-13436,-13791,-14104,-14336,-14452,
--14495,-14466,-14485,-14466,-14357,-14255,-14105,-13952,-13820,-13584,
--13384,-13189,-12951,-12723,-12493,-12211,-11873,-11578,-11242,-10853,
--10496,-10149, -9693, -9160, -8531, -7916, -7337, -6652, -5955, -5338,
- -4709, -4165, -3686, -3221, -2916, -2549, -2221, -1909, -1621, -1312,
- -1023, -879, -752, -703, -638, -631, -657, -678, -783, -920,
- -1049, -1247, -1493, -1745, -1996, -2203, -2414, -2671, -2936, -3229,
- -3543, -3908, -4205, -4536, -4896, -5202, -5584, -5959, -6371, -6794,
- -7162, -7496, -7841, -8162, -8495, -8845, -9179, -9510, -9784,-10049,
--10332,-10596,-10844,-11051,-11225,-11349,-11471,-11550,-11581,-11579,
--11589,-11672,-11690,-11688,-11679,-11666,-11603,-11594,-11632,-11563,
--11467,-11350,-11294,-11267,-11210,-11105,-10995,-10919,-10846,-10764,
--10713,-10727,-10755,-10765,-10764,-10728,-10627,-10543,-10549,-10573,
--10531,-10489,-10433,-10295,-10183,-10164,-10141,-10110,-10039, -9999,
- -9982, -9883, -9737, -9605, -9494, -9428, -9332, -9216, -9024, -8735,
- -8516, -8309, -8102, -7768, -7410, -6969, -6519, -6075, -5624, -5218,
- -4672, -4132, -3663, -3046, -2306, -1555, -774, 8
-};
-
-const int16_t AKWF_sinharm_0011[257] = {
- 0, 3519, 6994, 10388, 13660, 16769, 19684, 22368, 24792,
- 26928, 28755, 30254, 31411, 32218, 32668, 32763, 32508, 31910, 30987,
- 29754, 28237, 26457, 24447, 22238, 19860, 17355, 14758, 12104, 9435,
- 6784, 4192, 1691, -685, -2907, -4946, -6777, -8379, -9739,-10843,
--11681,-12248,-12549,-12585,-12365,-11903,-11215,-10322, -9246, -8013,
- -6653, -5196, -3670, -2110, -550, 980, 2449, 3825, 5082, 6192,
- 7130, 7879, 8419, 8737, 8827, 8678, 8291, 7669, 6819, 5752,
- 4482, 3027, 1409, -345, -2212, -4158, -6155, -8168,-10164,-12111,
--13974,-15722,-17324,-18749,-19972,-20969,-21716,-22201,-22404,-22322,
--21945,-21276,-20315,-19074,-17561,-15793,-13795,-11587, -9198, -6657,
- -4000, -1258, 1528, 4324, 7090, 9789, 12382, 14831, 17105, 19172,
- 20998, 22559, 23833, 24798, 25441, 25752, 25722, 25355, 24650, 23615,
- 22266, 20620, 18696, 16520, 14121, 11534, 8788, 5926, 2983, 0,
- -2982, -5926, -8789,-11534,-14122,-16520,-18695,-20620,-22266,-23615,
--24649,-25355,-25722,-25753,-25441,-24798,-23833,-22560,-20998,-19172,
--17105,-14831,-12382, -9789, -7091, -4323, -1529, 1258, 3999, 6656,
- 9198, 11587, 13796, 15794, 17560, 19073, 20315, 21276, 21945, 22322,
- 22405, 22200, 21716, 20968, 19973, 18749, 17324, 15722, 13975, 12112,
- 10165, 8168, 6154, 4158, 2212, 346, -1409, -3027, -4482, -5752,
- -6819, -7670, -8291, -8678, -8827, -8737, -8418, -7879, -7130, -6192,
- -5082, -3825, -2449, -980, 550, 2110, 3669, 5195, 6653, 8013,
- 9246, 10321, 11215, 11903, 12366, 12585, 12550, 12249, 11680, 10844,
- 9739, 8380, 6777, 4946, 2907, 686, -1691, -4192, -6783, -9434,
--12103,-14757,-17356,-19860,-22238,-24446,-26458,-28237,-29755,-30987,
--31911,-32508,-32763,-32668,-32217,-31411,-30254,-28755,-26928,-24792,
--22369,-19684,-16770,-13660,-10388, -6994, -3519, 0
-};
-
-const int16_t AKWF_raw_0004[257] = {
- 0, 512, 1024, 1534, 2047, 2558, 3072, 3582, 4097,
- 4607, 5119, 5632, 6143, 6656, 7168, 7681, 8191, 8703, 9215,
- 9728, 10239, 10752, 11264, 11776, 12288, 12799, 13313, 13823, 14337,
- 14847, 15360, 15872, 16385, 16895, 17408, 17920, 18432, 18943, 19456,
- 19968, 20480, 20993, 21503, 22016, 22527, 23041, 23550, 24065, 24574,
- 25089, 25597, 26114, 26621, 27139, 27644, 28163, 28667, 29188, 29690,
- 30214, 30713, 31240, 31733, 32275, 32662, 32244, 31699, 31193, 30659,
- 30149, 29618, 29108, 28579, 28065, 27539, 27024, 26498, 25984, 25460,
- 24946, 24422, 23907, 23384, 22868, 22347, 21830, 21311, 20795, 20275,
- 19759, 19241, 18724, 18206, 17687, 17173, 16655, 16140, 15622, 15107,
- 14590, 14075, 13558, 13044, 12528, 12014, 11497, 10983, 10468, 9954,
- 9438, 8924, 8411, 7896, 7383, 6870, 6356, 5842, 5330, 4817,
- 4304, 3792, 3279, 2767, 2254, 1742, 1230, 720, 208, -302,
- -813, -1325, -1836, -2346, -2857, -3367, -3876, -4387, -4896, -5406,
- -5915, -6426, -6933, -7444, -7952, -8461, -8968, -9479, -9984,-10495,
--11000,-11510,-12014,-12526,-13029,-13539,-14044,-14552,-15057,-15566,
--16070,-16577,-17082,-17588,-18094,-18598,-19106,-19605,-20116,-20614,
--21126,-21622,-22137,-22629,-23146,-23634,-24154,-24641,-25162,-25647,
--26167,-26653,-27171,-27662,-28160,-28628,-29038,-29389,-29762,-30127,
--30471,-30871,-31135,-32329,-32371,-31676,-31279,-30682,-30239,-29670,
--29205,-28652,-28174,-27635,-27146,-26615,-26118,-25595,-25091,-24574,
--24065,-23552,-23038,-22529,-22013,-21506,-20989,-20483,-19965,-19459,
--18941,-18434,-17916,-17411,-16892,-16386,-15870,-15362,-14845,-14338,
--13822,-13313,-12798,-12288,-11775,-11263,-10753,-10239, -9729, -9215,
- -8705, -8191, -7681, -7167, -6656, -6142, -5632, -5119, -4607, -4095,
- -3583, -3071, -2559, -2048, -1535, -1024, -512, 0
-};
-
-#if (SSD1306_LCDHEIGHT != 64)
-#error("Height incorrect, please fix Adafruit_SSD1306.h!");
-#endif
-
-
-//variables setup
-
-unsigned short breathThrVal;// = 350;
-unsigned short breathMaxVal;// = 1000;
-unsigned short portamThrVal;// = 1730;
-unsigned short portamMaxVal;// = 3300;
-unsigned short pitchbThrVal;// = 1200;
-unsigned short pitchbMaxVal;// = 2400;
-unsigned short extracThrVal;// = 1200;
-unsigned short extracMaxVal;// = 2400;
-unsigned short ctouchThrVal;// = 120;
-unsigned short transpose;
-unsigned short MIDIchannel;
-unsigned short breathCC; // OFF:MW:BR:VL:EX:MW+:BR+:VL+:EX+
-unsigned short breathAT;
-unsigned short velocity;
-unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
-unsigned short PBdepth; // OFF:1-12 divider
-unsigned short extraCT; // OFF:MW:FP:FC:SP
-unsigned short vibrato; // OFF:1-9
-unsigned short deglitch; // 0-70 ms in steps of 5
-unsigned short patch; // 1-128
-unsigned short octave;
-unsigned short curve;
-unsigned short velSmpDl; // 0-30 ms
-unsigned short velBias; // 0-9
-unsigned short pinkySetting; // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 24 (QuickTranspose +1 to +12)
-unsigned short dipSwBits; // virtual dip switch settings for special modes (work in progress)
-unsigned short priority; // mono priority for rotator chords
-unsigned short wave = 2; // SAW, SQR, TRI
-unsigned short cutoff = 7; // 0-9
-unsigned short reso = 2; //0-9
-unsigned short filter = 0; // 0 INT, 1 EXT
-unsigned short vol = 7; // 0-9
-
-unsigned short fastPatch[7] = {0,0,0,0,0,0,0};
-
-byte rotatorOn = 0;
-byte currentRotation = 0;
-int rotations[4] = { -5, -10, -7, -14 }; // semitones { -5, -10, -7, -14 };
-int parallel = 7; // semitones
-
-int breathLoLimit = 0;
-int breathHiLimit = 4095;
-int portamLoLimit = 1000;
-int portamHiLimit = 5000;
-int pitchbLoLimit = 500;
-int pitchbHiLimit = 4000;
-int extracLoLimit = 500;
-int extracHiLimit = 4000;
-int ctouchLoLimit = 50;
-int ctouchHiLimit = 350;
-
-int breathStep;
-int portamStep;
-int pitchbStep;
-int extracStep;
-int ctouchStep;
-
-int minOffset = 50;
-
-int deumButtons = 0;
-int lastDeumButtons = 0;
-int deumButtonState = 0;
-byte buttonPressedAndNotUsed = 0;
-
-byte mainMenuCursor = 1;
-byte setupBrMenuCursor = 1;
-byte setupCtMenuCursor = 1;
-byte rotatorMenuCursor = 1;
-byte synthMenuCursor = 1;
-
-byte state = 0;
-byte stateFirstRun = 1;
-
-byte subTranspose = 0;
-byte subOctave = 0;
-byte subMIDI = 0;
-byte subBreathCC = 0;
-byte subBreathAT = 0;
-byte subVelocity = 0;
-byte subCurve = 0;
-byte subPort = 0;
-byte subPB = 0;
-byte subExtra = 0;
-byte subVibrato = 0;
-byte subDeglitch = 0;
-byte subPinky = 0;
-byte subVelSmpDl = 0;
-byte subVelBias = 0;
-byte subParallel = 0;
-byte subRotator = 0;
-byte subPriority = 0;
-byte subWave = 0;
-byte subCutoff = 0;
-byte subReso = 0;
-byte subFilter = 0;
-byte subVolume = 0;
-
-byte ccList[9] = {0,1,2,7,11,1,2,7,11}; // OFF, Modulation, Breath, Volume, Expression (then same sent in hires)
-
-int pbDepthList[13] = {0,8192,4096,2731,2048,1638,1365,1170,1024,910,819,744,683};
-
-byte cursorNow;
-byte forcePix = 0;
-byte forceRedraw = 0;
-
-int pos1;
-int pos2;
-
-// the following variables are unsigned longs because the time, measured in
-// milliseconds, will quickly become a bigger number than can be stored in an int.
-unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
-unsigned long debounceDelay = 30; // the debounce time; increase if the output flickers
-unsigned long buttonRepeatTime = 0;
-unsigned long buttonPressedTime = 0;
-unsigned long buttonRepeatInterval = 50;
-unsigned long buttonRepeatDelay = 400;
-unsigned long pixelUpdateTime = 0;
-unsigned long pixelUpdateInterval = 100;
-unsigned long cursorBlinkTime = 0; // the last time the cursor was toggled
-unsigned long cursorBlinkInterval = 300; // the cursor blink toggle interval time
-unsigned long patchViewTime = 0;
-unsigned long patchViewTimeUp = 2000; // ms until patch view shuts off
-unsigned long menuTime = 0;
-unsigned long menuTimeUp = 60000; // menu shuts off after one minute of button inactivity
-unsigned long lastDeglitchTime = 0; // The last time the fingering was changed
-unsigned long ccSendTime = 0L; // The last time we sent CC values
-unsigned long breath_on_time = 0L; // Time when breath sensor value went over the ON threshold
-
-int lastFingering = 0; // Keep the last fingering value for debouncing
-
-int mainState; // The state of the main state machine
-
-int initial_breath_value; // The breath value at the time we observed the transition
-
-byte activeMIDIchannel=1; // MIDI channel
-byte activePatch=0;
-byte doPatchUpdate=0;
-
-byte FPD = 0;
-
-int breathLevel=0; // breath level (smoothed) not mapped to CC value
-int oldbreath=0;
-unsigned int oldbreathhires=0;
-unsigned int breathCV=0;
-float filterFreq = 30.0;
-
-float filterVal = 0.15;
-float smoothedVal;
-int pressureSensor; // pressure data from breath sensor, for midi breath cc and breath threshold checks
-int lastPressure;
-byte velocitySend; // remapped midi velocity from breath sensor (or set to static value if selected)
-
-int biteSensor=0; // capacitance data from bite sensor, for midi cc and threshold checks
-byte portIsOn=0; // keep track and make sure we send CC with 0 value when off threshold
-int oldport=0;
-int lastBite=0;
-
-int exSensor=0;
-byte extracIsOn=0;
-int oldextrac=0;
-int lastEx=0;
-
-int pitchBend=8192;
-int oldpb=8192;
-int pbUp=0;
-int pbDn=0;
-int lastPbUp=0;
-int lastPbDn=0;
-
-byte oldpkey = 0;
-
-float vibDepth[10] = {0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45}; // max pitch bend values (+/-) for the vibrato settings
-
-unsigned int curveM4[] = {0,4300,7000,8700,9900,10950,11900,12600,13300,13900,14500,15000,15450,15700,16000,16250,16383};
-unsigned int curveM3[] = {0,2900,5100,6650,8200,9500,10550,11500,12300,13100,13800,14450,14950,15350,15750,16150,16383};
-unsigned int curveM2[] = {0,2000,3600,5000,6450,7850,9000,10100,11100,12100,12900,13700,14400,14950,15500,16000,16383};
-unsigned int curveM1[] = {0,1400,2850,4100,5300,6450,7600,8700,9800,10750,11650,12600,13350,14150,14950,15650,16383};
-unsigned int curveIn[] = {0,1023,2047,3071,4095,5119,6143,7167,8191,9215,10239,11263,12287,13311,14335,15359,16383};
-unsigned int curveP1[] = {0,600,1350,2150,2900,3800,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-unsigned int curveP2[] = {0,400,800,1300,2000,2650,3500,4300,5300,6250,7400,8500,9600,11050,12400,14100,16383};
-unsigned int curveP3[] = {0,200,500,900,1300,1800,2350,3100,3800,4600,5550,6550,8000,9500,11250,13400,16383};
-unsigned int curveP4[] = {0,100,200,400,700,1050,1500,1950,2550,3200,4000,4900,6050,7500,9300,12100,16383};
-unsigned int curveS1[] = {0,600,1350,2150,2900,3800,4700,6000,8700,11000,12400,13400,14300,14950,15500,16000,16383};
-unsigned int curveS2[] = {0,600,1350,2150,2900,4000,6100,9000,11000,12100,12900,13700,14400,14950,15500,16000,16383};
-//unsigned int curveS3[] = {0,600,1350,2300,3800,6200,8700,10200,11100,12100,12900,13700,14400,14950,15500,16000,16383};
-//unsigned int curveS4[] = {0,600,1700,4000,6600,8550,9700,10550,11400,12200,12900,13700,14400,14950,15500,16000,16383};
-
-unsigned int curveZ1[] = {0,1400,2100,2900,3200,3900,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-unsigned int curveZ2[] = {0,2000,3200,3800,4096,4800,5100,5900,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-
-int vibThr; // this gets auto calibrated in setup
-int vibThrLo;
-int oldvibRead=0;
-byte dirUp=0; // direction of first vibrato wave
-
-int fingeredNote; // note calculated from fingering (switches), transpose and octave settings
-byte activeNote; // note playing
-byte startNote=36; // set startNote to C (change this value in steps of 12 to start in other octaves)
-int slurBase; // first note in slur sustain chord
-
-int slurInterval[9] = {-5,0,0,0,0,0,0,0,0};
-byte addedIntervals = 1;
-
-// Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
-byte K1; // Valve 1 (pitch change -2)
-byte K2; // Valve 2 (pitch change -1)
-byte K3; // Valve 3 (pitch change -3)
-byte K4; // Left Hand index finger (pitch change -5)
-byte K5; // Trill key 1 (pitch change +2)
-byte K6; // Trill key 2 (pitch change +1)
-byte K7; // Trill key 3 (pitch change +4)
-
-byte octaveR = 0;
-
-byte halfPitchBendKey;
-byte specialKey;
-byte pinkyKey;
-byte lastSpecialKey = 0;
-
-byte slurSustain = 0;
-byte parallelChord = 0;
-byte subOctaveDouble = 0;
-
-unsigned int breathLedBrightness = 7000; // up to 16383, PWM
-unsigned int portamLedBrightness = 7000; // up to 16383, PWM
-
-int internalNote = 0;
-int internalPitchbend = 0;
-//int ipb=8192;
-//int oldipb=8192;
-float cents = 0;
-float cent = 1.000577789;
-float internalVolume = 0.50;
-float playVolume = 0;
-byte intPatch = 1; // 0 = sine, 1 = saw
-
-float midiToFreq[128]; // for storing pre calculated frequencies for note numbers
-
-
-// GUItool: begin automatically generated code
-AudioSynthWaveform waveform1; //xy=167.77777862548828,86.66667079925537
-AudioFilterStateVariable filter1; //xy=285.4444389343262,245.8888816833496
-AudioMixer4 mixer2; //xy=408.88888931274414,128.77777862548828
-AudioOutputAnalog dac1; //xy=588.444450378418,216.99999618530273
-AudioConnection patchCord1(waveform1, 0, filter1, 0);
-AudioConnection patchCord2(waveform1, 0, mixer2, 0);
-AudioConnection patchCord3(filter1, 0, mixer2, 1);
-AudioConnection patchCord4(mixer2, dac1);
-// GUItool: end automatically generated code
-
-
-
-Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
-
-
-//_______________________________________________________________________________________________ SETUP
-
-void setup() {
-
- analogReadResolution(12); // set resolution of ADCs to 12 bit
- analogWriteFrequency(A6,2929.687); // set PWM freq for CV out
- analogWriteResolution(14); // set resolution of PWMs to 14 bit (match hi-res midi)
-
- pinMode(dPin, INPUT_PULLUP);
- pinMode(ePin, INPUT_PULLUP);
- pinMode(uPin, INPUT_PULLUP);
- pinMode(mPin, INPUT_PULLUP);
-
- pinMode(bLedPin, OUTPUT); // breath indicator LED
- pinMode(pLedPin, OUTPUT); // portam indicator LED
- pinMode(13,OUTPUT); // Teensy onboard LED
-
-
- // if stored settings are not for current version, or Enter+Menu are pressed at startup, they are replaced by factory settings
-
- if ((readSetting(VERSION_ADDR) != VERSION) && (readSetting(VERSION_ADDR) < 24) || (!digitalRead(ePin) && !digitalRead(mPin))){
- writeSetting(VERSION_ADDR,VERSION);
- writeSetting(BREATH_THR_ADDR,BREATH_THR_FACTORY);
- writeSetting(BREATH_MAX_ADDR,BREATH_MAX_FACTORY);
- writeSetting(PORTAM_THR_ADDR,PORTAM_THR_FACTORY);
- writeSetting(PORTAM_MAX_ADDR,PORTAM_MAX_FACTORY);
- writeSetting(PITCHB_THR_ADDR,PITCHB_THR_FACTORY);
- writeSetting(PITCHB_MAX_ADDR,PITCHB_MAX_FACTORY);
- writeSetting(EXTRAC_THR_ADDR,EXTRAC_THR_FACTORY);
- writeSetting(EXTRAC_MAX_ADDR,EXTRAC_MAX_FACTORY);
- writeSetting(CTOUCH_THR_ADDR,CTOUCH_THR_FACTORY);
- }
-
- if ((readSetting(VERSION_ADDR) != VERSION) || (!digitalRead(ePin) && !digitalRead(mPin))){
- writeSetting(VERSION_ADDR,VERSION);
-
- writeSetting(TRANSP_ADDR,TRANSP_FACTORY);
- writeSetting(MIDI_ADDR,MIDI_FACTORY);
- writeSetting(BREATH_CC_ADDR,BREATH_CC_FACTORY);
- writeSetting(BREATH_AT_ADDR,BREATH_AT_FACTORY);
- writeSetting(VELOCITY_ADDR,VELOCITY_FACTORY);
- writeSetting(PORTAM_ADDR,PORTAM_FACTORY);
- writeSetting(PB_ADDR,PB_FACTORY);
- writeSetting(EXTRA_ADDR,EXTRA_FACTORY);
- writeSetting(VIBRATO_ADDR,VIBRATO_FACTORY);
- writeSetting(DEGLITCH_ADDR,DEGLITCH_FACTORY);
- writeSetting(PATCH_ADDR,PATCH_FACTORY);
- writeSetting(OCTAVE_ADDR,OCTAVE_FACTORY);
- writeSetting(BREATHCURVE_ADDR,BREATHCURVE_FACTORY);
- writeSetting(VEL_SMP_DL_ADDR,VEL_SMP_DL_FACTORY);
- writeSetting(VEL_BIAS_ADDR,VEL_BIAS_FACTORY);
- writeSetting(PINKY_KEY_ADDR,PINKY_KEY_FACTORY);
- writeSetting(FP1_ADDR,0);
- writeSetting(FP2_ADDR,0);
- writeSetting(FP3_ADDR,0);
- writeSetting(FP4_ADDR,0);
- writeSetting(FP5_ADDR,0);
- writeSetting(FP6_ADDR,0);
- writeSetting(FP7_ADDR,0);
- writeSetting(DIPSW_BITS_ADDR,DIPSW_BITS_FACTORY);
- writeSetting(PARAL_ADDR,PARAL_FACTORY);
- writeSetting(ROTN1_ADDR,ROTN1_FACTORY);
- writeSetting(ROTN2_ADDR,ROTN2_FACTORY);
- writeSetting(ROTN3_ADDR,ROTN3_FACTORY);
- writeSetting(ROTN4_ADDR,ROTN4_FACTORY);
- writeSetting(PRIO_ADDR,PRIO_FACTORY);
- }
- // read settings from EEPROM
- breathThrVal = readSetting(BREATH_THR_ADDR);
- breathMaxVal = readSetting(BREATH_MAX_ADDR);
- portamThrVal = readSetting(PORTAM_THR_ADDR);
- portamMaxVal = readSetting(PORTAM_MAX_ADDR);
- pitchbThrVal = readSetting(PITCHB_THR_ADDR);
- pitchbMaxVal = readSetting(PITCHB_MAX_ADDR);
- transpose = readSetting(TRANSP_ADDR);
- MIDIchannel = readSetting(MIDI_ADDR);
- breathCC = readSetting(BREATH_CC_ADDR);
- breathAT = readSetting(BREATH_AT_ADDR);
- velocity = readSetting(VELOCITY_ADDR);
- portamento = readSetting(PORTAM_ADDR);
- PBdepth = readSetting(PB_ADDR);
- extraCT = readSetting(EXTRA_ADDR);
- vibrato = readSetting(VIBRATO_ADDR);
- deglitch = readSetting(DEGLITCH_ADDR);
- extracThrVal = readSetting(EXTRAC_THR_ADDR);
- extracMaxVal = readSetting(EXTRAC_MAX_ADDR);
- patch = readSetting(PATCH_ADDR);
- octave = readSetting(OCTAVE_ADDR);
- ctouchThrVal = readSetting(CTOUCH_THR_ADDR);
- curve = readSetting(BREATHCURVE_ADDR);
- velSmpDl = readSetting(VEL_SMP_DL_ADDR);
- velBias = readSetting(VEL_BIAS_ADDR);
- pinkySetting = readSetting(PINKY_KEY_ADDR);
- fastPatch[0] = readSetting(FP1_ADDR);
- fastPatch[1] = readSetting(FP2_ADDR);
- fastPatch[2] = readSetting(FP3_ADDR);
- fastPatch[3] = readSetting(FP4_ADDR);
- fastPatch[4] = readSetting(FP5_ADDR);
- fastPatch[5] = readSetting(FP6_ADDR);
- fastPatch[6] = readSetting(FP7_ADDR);
- dipSwBits = readSetting(DIPSW_BITS_ADDR);
- parallel = readSetting(PARAL_ADDR)-24;
- rotations[0] = readSetting(ROTN1_ADDR)-24;
- rotations[1] = readSetting(ROTN2_ADDR)-24;
- rotations[2] = readSetting(ROTN3_ADDR)-24;
- rotations[3] = readSetting(ROTN4_ADDR)-24;
- priority = readSetting(PRIO_ADDR);
-
- activePatch = patch;
-
- breathStep = (breathHiLimit - breathLoLimit)/92; // 92 is the number of pixels in the settings bar
- portamStep = (portamHiLimit - portamLoLimit)/92;
- pitchbStep = (pitchbHiLimit - pitchbLoLimit)/92;
- extracStep = (extracHiLimit - extracLoLimit)/92;
- ctouchStep = (ctouchHiLimit - ctouchLoLimit)/92;
-
- for(int i=0;i<128;i++) { // set up table, midi note number to frequency
- midiToFreq[i] = numToFreq(i);
- }
-
- if (!touchSensor.begin(0x5A)) {
- while (1); // Touch sensor initialization failed - stop doing stuff
- }
-
-
- // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
- // init done
-
- // Show image buffer on the display hardware.
- // Since the buffer is intialized with an Adafruit splashscreen
- // internally, this will display the splashscreen.
-
- display.clearDisplay();
- display.drawBitmap(0,0,nuevi_logo_bmp,128,64,1);
- display.display();
-
-
- AudioMemory(50);
-
- dac1.analogReference(INTERNAL); // normal volume
- //dac1.analogReference(EXTERNAL); // louder
-
- //waveform1.arbitraryWaveform(AKWF_vgame_0006,172.00);
- //waveform1.arbitraryWaveform(AKWF_vgtri_0008,172.00);
- //waveform1.arbitraryWaveform(AKWF_violin_0010,172.00);
- //waveform1.arbitraryWaveform(AKWF_oboe_0006,172.00);
- //waveform1.arbitraryWaveform(AKWF_altosax_0013,172.00);
- //waveform1.arbitraryWaveform(AKWF_sinharm_0011,172.00);
- waveform1.arbitraryWaveform(AKWF_raw_0004,172.00);
-
- updateSynth();
-
-
- //auto-calibrate the vibrato "dead zone" while showing splash screen
- int cv1=touchRead(15);
- digitalWrite(13,HIGH);
- delay(250);
- int cv2=touchRead(15);
- digitalWrite(13,LOW);
- delay(250);
- int cv3=touchRead(15);
- digitalWrite(13,HIGH);
- delay(250);
- digitalWrite(13,LOW);
- int cv4=touchRead(15);
- vibThr=(cv1+cv2+cv3+cv4)/4-30;
- vibThrLo=(cv1+cv2+cv3+cv4)/4+30;
- delay(250);
- digitalWrite(13,HIGH);
- delay(250);
- digitalWrite(13,LOW);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(85,52);
- display.println("v.1.1.5"); // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
- display.display();
-
- delay(2000);
-
- state = DISPLAYOFF_IDL;
- mainState = NOTE_OFF; // initialize main state machine
-
- if (!digitalRead(ePin)) {
- activePatch=0;
- doPatchUpdate=1;
- }
-
- Serial3.begin(31250); // start serial with midi baudrate 31250
- Serial3.flush();
-
- digitalWrite(13,HIGH); // Switch on the onboard LED to indicate power on/ready
-
- midiReset();
-
-}
-
-//_______________________________________________________________________________________________ MAIN LOOP
-
-void loop() {
- mainLoop();
-}
-
-void mainLoop() {
- FilterOnePole breathFilter( LOWPASS, filterFreq ); // create a one pole (RC) lowpass filter
- while (1){
- breathFilter.input(analogRead(A0));
- pressureSensor = constrain((int)breathFilter.output(),0,4095); // Get the filtered pressure sensor reading from analog pin A0, input from sensor MP3V5004GP
- breathCV = breathCurve(map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
- analogWrite(A6,breathCV);
- //pressureSensor = analogRead(A0);
- //pressureSensor = smooth(analogRead(0), filterVal, smoothedVal); // second parameter determines smoothness - 0 is off, .9999 is max smooth
- if (mainState == NOTE_OFF) {
- if (activeMIDIchannel != MIDIchannel) activeMIDIchannel = MIDIchannel; // only switch channel if no active note
- if ((activePatch != patch) && doPatchUpdate){
- activePatch = patch;
- usbMIDI.sendProgramChange(activePatch-1,activeMIDIchannel);
- dinMIDIsendProgramChange(activePatch-1,activeMIDIchannel-1);
- if (readSetting(PATCH_ADDR) != activePatch) writeSetting(PATCH_ADDR,activePatch);
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- doPatchUpdate = 0;
- }
-
- readSwitches();
- fingeredNote=noteValueCheck(fingeredNote);
- if (internalNote != fingeredNote) {
- internalNote = fingeredNote;
- internalFreqChange();
- }
-
- //gate always on - put code for note on here?
-
- if (pressureSensor > breathThrVal) {
- // Value has risen above threshold. Move to the RISE_WAIT
- // state. Record time and initial breath value.
- breath_on_time = millis();
- initial_breath_value = pressureSensor;
- mainState = RISE_WAIT; // Go to next state
- }
- specialKey=(touchRead(specialKeyPin) > touch_Thr); //S2 on pcb
- if (lastSpecialKey != specialKey){
- if (specialKey){
- // special key just pressed, check other keys
- readSwitches();
- if (K4) {
- if (!slurSustain) {
- slurSustain = 1;
- parallelChord = 0;
- rotatorOn = 0;
- } else slurSustain = 0;
- }
- if (K5) {
- if (!parallelChord) {
- parallelChord = 1;
- slurSustain = 0;
- rotatorOn = 0;
- } else parallelChord = 0;
- }
- if (K1) {
- if (!subOctaveDouble) {
- subOctaveDouble = 1;
- rotatorOn = 0;
- } else subOctaveDouble = 0;
- }
- if (!K1 && !K4 && !K5){
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- rotatorOn = 0;
- }
- if (pinkyKey){
- if (!rotatorOn) {
- rotatorOn = 1;
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- } else rotatorOn = 0;
- }
- }
- }
- lastSpecialKey = specialKey;
- } else if (mainState == RISE_WAIT) {
- if (pressureSensor > breathThrVal) {
- // Has enough time passed for us to collect our second
- // sample?
- if ((millis() - breath_on_time > velSmpDl) || (0 == velSmpDl)) {
- // Yes, so calculate MIDI note and velocity, then send a note on event
- readSwitches();
- // We should be at tonguing peak, so set velocity based on current pressureSensor value unless fixed velocity is set
- breathLevel=constrain(max(pressureSensor,initial_breath_value),breathThrVal,breathMaxVal);
- if (!velocity) {
- unsigned int breathValHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
- velocitySend = (breathValHires >>7) & 0x007F;
- velocitySend = constrain(velocitySend+velocitySend*.1*velBias,1,127);
- //velocitySend = map(constrain(max(pressureSensor,initial_breath_value),breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,1,127);
- } else velocitySend = velocity;
- breath(); // send breath data
- internalBreath();
- fingeredNote=noteValueCheck(fingeredNote);
- internalNote = fingeredNote;
- internalFreqChange();
- if (priority){ // mono prio to last chord note
- usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
- }
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
- }
- }
- if (slurSustain){
- usbMIDI.sendControlChange(64,127, activeMIDIchannel);
- dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
- slurBase = fingeredNote;
- addedIntervals = 0;
- }
- if (subOctaveDouble){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel);
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel - 1);
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
- }
- }
- }
- if (rotatorOn){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel - 1);
- if (currentRotation < 3) currentRotation++; else currentRotation = 0;
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
- }
- if (!priority){ // mono prio to base note
- usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
- }
- activeNote=fingeredNote;
- mainState = NOTE_ON;
- }
- } else {
- // Value fell below threshold before velocity sample delay time passed. Return to
- // NOTE_OFF state (e.g. we're ignoring a short blip of breath)
- mainState = NOTE_OFF;
- }
- } else if (mainState == NOTE_ON) {
- cursorBlinkTime = millis(); // keep display from updating with cursor blinking if note on
- if (pressureSensor < breathThrVal) {
- // Value has fallen below threshold - turn the note off
- activeNote=noteValueCheck(activeNote);
- if (priority){
- usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
- dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
- }
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
- }
- }
- if (subOctaveDouble){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel);
- dinMIDIsendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel - 1);
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
- }
- }
- }
- if (rotatorOn){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel - 1);
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
- }
- if (!priority){
- usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
- dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
- }
- if (slurSustain){
- usbMIDI.sendControlChange(64,0, activeMIDIchannel);
- dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
- }
- breathLevel=0;
- mainState = NOTE_OFF;
- } else {
- readSwitches();
- if (fingeredNote != lastFingering){ //
- // reset the debouncing timer
- lastDeglitchTime = millis();
- }
- if ((millis() - lastDeglitchTime) > deglitch) {
- // whatever the reading is at, it's been there for longer
- // than the debounce delay, so take it as the actual current state
- if (noteValueCheck(fingeredNote) != activeNote) {
- // Player has moved to a new fingering while still blowing.
- // Send a note off for the current note and a note on for
- // the new note.
- if (!velocity){
- unsigned int breathValHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
- velocitySend = (breathValHires >>7) & 0x007F;
- velocitySend = constrain(velocitySend+velocitySend*.1*velBias,1,127);
- //velocitySend = map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,7,127); // set new velocity value based on current pressure sensor level
- }
- activeNote=noteValueCheck(activeNote);
- if ((parallelChord || subOctaveDouble || rotatorOn) && priority){ // poly playing, send old note off before new note on
- usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
- }
-
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
- }
- }
- if (subOctaveDouble){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel - 1);
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
- }
- }
- }
- if (rotatorOn){
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel - 1);
- usbMIDI.sendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
- }
- if ((parallelChord || subOctaveDouble || rotatorOn) && !priority){ // poly playing, send old note off before new note on
- usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message for old note
- dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
- }
-
-
- fingeredNote=noteValueCheck(fingeredNote);
- internalNote = fingeredNote;
- internalFreqChange();
- if (priority){
- usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
- }
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
- }
- }
- if (subOctaveDouble){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel - 1);
- if (parallelChord){
- for (int i=0; i < addedIntervals; i++){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
- }
- }
- }
- if (rotatorOn){
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel - 1);
- if (currentRotation < 3) currentRotation++; else currentRotation = 0;
- usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
- }
-
- if (!priority){
- usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
- dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
- }
-
- if (!parallelChord && !subOctaveDouble && !rotatorOn){ // mono playing, send old note off after new note on
- usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
- dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
- }
-
- if (slurSustain){
- addedIntervals++;
- slurInterval[addedIntervals-1] = fingeredNote - slurBase;
- }
- activeNote=fingeredNote;
- }
- }
- }
- }
- // Is it time to send more CC data?
- if (millis() - ccSendTime > CC_INTERVAL) {
- // deal with Breath, Pitch Bend, Modulation, etc.
- breath();
- internalBreath();
- pitch_bend();
- portamento_();
- extraController();
- statusLEDs();
- ccSendTime = millis();
- }
- if (millis() - pixelUpdateTime > pixelUpdateInterval){
- // even if we just alter a pixel, the whole display is redrawn (35ms of MPU lockup) and we can't do that all the time
- // this is one of the big reasons the display is for setup use only
- drawSensorPixels(); // live sensor monitoring for the setup screens
- pixelUpdateTime = millis();
- }
- lastFingering=fingeredNote;
- //do menu stuff
- menu();
- }
-}
-
-//_______________________________________________________________________________________________ FUNCTIONS
-
-// non linear mapping function (http://playground.arduino.cc/Main/MultiMap)
-// note: the _in array should have increasing values
-unsigned int multiMap(unsigned int val, unsigned int* _in, unsigned int* _out, uint8_t size)
-{
- // take care the value is within range
- // val = constrain(val, _in[0], _in[size-1]);
- if (val <= _in[0]) return _out[0];
- if (val >= _in[size-1]) return _out[size-1];
-
- // search right interval
- uint8_t pos = 1; // _in[0] allready tested
- while(val > _in[pos]) pos++;
-
- // this will handle all exact "points" in the _in array
- if (val == _in[pos]) return _out[pos];
-
- // interpolate in the right segment for the rest
- return (val - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1]) + _out[pos-1];
-}
-
-//**************************************************************
-
-// map breath values to selected curve
-unsigned int breathCurve(unsigned int inputVal){
- // 0 to 16383, moving mid value up or down
- switch (curve){
- case 0:
- // -4
- return multiMap(inputVal,curveIn,curveM4,17);
- break;
- case 1:
- // -3
- return multiMap(inputVal,curveIn,curveM3,17);
- break;
- case 2:
- // -2
- return multiMap(inputVal,curveIn,curveM2,17);
- break;
- case 3:
- // -1
- return multiMap(inputVal,curveIn,curveM1,17);
- break;
- case 4:
- // 0, linear
- return inputVal;
- break;
- case 5:
- // +1
- return multiMap(inputVal,curveIn,curveP1,17);
- break;
- case 6:
- // +2
- return multiMap(inputVal,curveIn,curveP2,17);
- break;
- case 7:
- // +3
- return multiMap(inputVal,curveIn,curveP3,17);
- break;
- case 8:
- // +4
- return multiMap(inputVal,curveIn,curveP4,17);
- break;
- case 9:
- // S1
- return multiMap(inputVal,curveIn,curveS1,17);
- break;
- case 10:
- // S2
- return multiMap(inputVal,curveIn,curveS2,17);
- break;
- case 11:
- // Z1
- return multiMap(inputVal,curveIn,curveZ1,17);
- break;
- case 12:
- // Z2
- return multiMap(inputVal,curveIn,curveZ2,17);
- break;
- }
-}
-
-//**************************************************************
-/*
-int smooth(int data, float filterVal, float smoothedVal){
-
-
- if (filterVal > 1){ // check to make sure param's are within range
- filterVal = .99;
- }
- else if (filterVal <= 0){
- filterVal = 0;
- }
-
- smoothedVal = (data * (1 - filterVal)) + (smoothedVal * filterVal);
-
- return (int)smoothedVal;
-}
-
-*/
-//**************************************************************
-
-// MIDI note number to frequency calculation
-float numToFreq(int input) {
- int number = input - 21; // set to midi note numbers = start with 21 at A0
- number = number - 60; // A0 is 48 steps below A4 = 440hz
- return 440*(pow (1.059463094359,number));
-}
-
-//**************************************************************
-
-// MIDI note value check with out of range octave repeat
-int noteValueCheck(int note){
- if (note > 127){
- note = 115+(note-127)%12;
- } else if (note < 0) {
- note = 12-abs(note)%12;
- }
- return note;
-}
-
-//**************************************************************
-
-void midiPanic(){ // all notes off
- usbMIDI.sendControlChange(123, 0, activeMIDIchannel);
- dinMIDIsendControlChange(123, 0, activeMIDIchannel - 1);
-}
-
-//**************************************************************
-
-void midiReset(){ // reset all controllers
- usbMIDI.sendControlChange(121, 0, activeMIDIchannel);
- dinMIDIsendControlChange(121, 0, activeMIDIchannel - 1);
- usbMIDI.sendControlChange(7, 100, activeMIDIchannel);
- dinMIDIsendControlChange(7, 100, activeMIDIchannel - 1);
- usbMIDI.sendControlChange(11, 127, activeMIDIchannel);
- dinMIDIsendControlChange(11, 127, activeMIDIchannel - 1);
-}
-
-//**************************************************************
-
-// Send a three byte din midi message
-void midiSend3B(byte midistatus, byte data1, byte data2) {
- Serial3.write(midistatus);
- Serial3.write(data1);
- Serial3.write(data2);
-}
-
-//**************************************************************
-
-// Send a two byte din midi message
-void midiSend2B(byte midistatus, byte data) {
- Serial3.write(midistatus);
- Serial3.write(data);
-}
-
-//**************************************************************
-
-// Send din pitchbend
-void dinMIDIsendPitchBend(int pb, byte ch) {
- int pitchLSB = pb & 0x007F;
- int pitchMSB = (pb >>7) & 0x007F;
- midiSend3B((0xE0 | ch), pitchLSB, pitchMSB);
-}
-
-//**************************************************************
-
-// Send din control change
-void dinMIDIsendControlChange(byte ccNumber, int cc, byte ch) {
- midiSend3B((0xB0 | ch), ccNumber, cc);
-}
-
-//**************************************************************
-
-// Send din note on
-void dinMIDIsendNoteOn(byte note, int vel, byte ch) {
- midiSend3B((0x90 | ch), note, vel);
-}
-
-//**************************************************************
-
-// Send din note off
-void dinMIDIsendNoteOff(byte note, int vel, byte ch) {
- midiSend3B((0x80 | ch), note, vel);
-}
-
-//**************************************************************
-
-// Send din aftertouch
-void dinMIDIsendAfterTouch(byte value, byte ch) {
- midiSend2B((0xD0 | ch), value);
-}
-
-//**************************************************************
-
-// Send din program change
-void dinMIDIsendProgramChange(byte value, byte ch) {
- midiSend2B((0xC0 | ch), value);
-}
-
-//**************************************************************
-
-void internalFreqChange(){
- if (midiToFreq[internalNote] > 20.0){
- waveform1.frequency(midiToFreq[internalNote]+internalPitchbend);
- }
-}
-
-//**************************************************************
-
-void internalBreath(){
- int intBreath;
- breathLevel = constrain(pressureSensor,breathThrVal,breathMaxVal);
- intBreath = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,1000*(cutoff+1)));
- if (0 == intPatch){
- playVolume = constrain(internalVolume * intBreath/10000, 0, internalVolume);
- //mixer2.gain(0, playVolume);
- //mixer2.gain(1, 0);
- } else {
- //playVolume = constrain(internalVolume * intBreath/1000, 0.5, internalVolume);
- //mixer2.gain(0, 0);
- //mixer2.gain(1, playVolume);
- filter1.frequency(intBreath);
- }
-}
-
-//**************************************************************
-
-void updateSynth(){
- if (vol > 9) vol = 9; //
- internalVolume = 0.05 * vol;
- if (0 == filter){ // internal
- mixer2.gain(0, 0.00);
- mixer2.gain(1, internalVolume);
- } else { //external
- mixer2.gain(0, internalVolume);
- mixer2.gain(1, 0.00);
- }
- mixer2.gain(2, 0.00);
- mixer2.gain(3, 0.00);
- delay(100);
- filter1.frequency(0);
- filter1.resonance(0.7+0.1*reso);
- switch (wave){
- case 0:
- waveform1.begin(WAVEFORM_SAWTOOTH);
- waveform1.amplitude(0.3);
- break;
- case 1:
- waveform1.begin(WAVEFORM_SQUARE);
- waveform1.amplitude(0.3);
- break;
- case 2:
- waveform1.begin(WAVEFORM_ARBITRARY);
- waveform1.amplitude(0.6);
- break;
- }
-
-}
-
-//**************************************************************
-
-void statusLEDs() {
- if (breathLevel > breathThrVal){ // breath indicator LED, labeled "B" on PCB
- analogWrite(bLedPin, map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,500,breathLedBrightness));
- } else {
- analogWrite(bLedPin, 0);
- }
- if (biteSensor > portamThrVal){ // portamento indicator LED, labeled "P" on PCB
- analogWrite(pLedPin, map(constrain(biteSensor,portamThrVal,portamMaxVal),portamThrVal,portamMaxVal,500,portamLedBrightness));
- } else {
- analogWrite(pLedPin, 0);
- }
-}
-
-//**************************************************************
-
-void breath(){
- int breathCCval,breathCCvalFine;
- unsigned int breathCCvalHires;
- breathLevel = constrain(pressureSensor,breathThrVal,breathMaxVal);
- //breathLevel = breathLevel*0.6+pressureSensor*0.4; // smoothing of breathLevel value
- ////////breathCCval = map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,127);
- breathCCvalHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
- breathCCval = (breathCCvalHires >>7) & 0x007F;
- breathCCvalFine = breathCCvalHires & 0x007F;
-
- if (breathCCval != oldbreath){ // only send midi data if breath has changed from previous value
- if (breathCC){
- // send midi cc
- usbMIDI.sendControlChange(ccList[breathCC], breathCCval, activeMIDIchannel);
- dinMIDIsendControlChange(ccList[breathCC], breathCCval, activeMIDIchannel - 1);
- }
- if (breathAT){
- // send aftertouch
- usbMIDI.sendAfterTouch(breathCCval, activeMIDIchannel);
- dinMIDIsendAfterTouch(breathCCval, activeMIDIchannel - 1);
- }
- oldbreath = breathCCval;
- }
-
- if (breathCCvalHires != oldbreathhires){
- if (breathCC > 4){ // send high resolution midi
- usbMIDI.sendControlChange(ccList[breathCC]+32, breathCCvalFine, activeMIDIchannel);
- dinMIDIsendControlChange(ccList[breathCC]+32, breathCCvalFine, activeMIDIchannel - 1);
- }
- oldbreathhires = breathCCvalHires;
- }
-}
-
-//**************************************************************
-
-void pitch_bend(){
- // handle input from pitchbend touchpads and
- // on-pcb variable capacitor for vibrato.
- float nudge;
- int calculatedPBdepth;
- byte vibratoMoved = 0;
- pbUp = touchRead(pbUpPin); // SENSOR PIN 23 - PCB PIN "Pu"
- pbDn = touchRead(pbDnPin); // SENSOR PIN 22 - PCB PIN "Pd"
- halfPitchBendKey = (pinkySetting == PBD) && (touchRead(halfPitchBendKeyPin) > touch_Thr); // SENSOR PIN 1 - PCB PIN "S1" - hold for 1/2 pitchbend value
- int vibRead = touchRead(vibratoPin); // SENSOR PIN 15 - built in var cap
- if (PBdepth){
- calculatedPBdepth = pbDepthList[PBdepth];
- if (halfPitchBendKey) calculatedPBdepth = calculatedPBdepth*0.5;
- }
- if (((vibRead < vibThr) || (vibRead > vibThrLo))&&(vibRead > oldvibRead)){
- nudge = 0.01*constrain(abs(vibRead - oldvibRead),0,100);
- if (!dirUp){
- pitchBend=oldpb*(1-nudge)+nudge*(8192 + calculatedPBdepth*vibDepth[vibrato]);
- //ipb=oldipb*(1-nudge)+nudge*(8192 + 8192*vibDepth[vibrato]);
- vibratoMoved = 1;
- } else {
- pitchBend=oldpb*(1-nudge)+nudge*(8191 - calculatedPBdepth*vibDepth[vibrato]);
- //ipb=oldipb*(1-nudge)+nudge*(8192 - 8192*vibDepth[vibrato]);
- vibratoMoved = 1;
- }
- } else if (((vibRead < vibThr) || (vibRead > vibThrLo))&&(vibRead < oldvibRead)){
- nudge = 0.01*constrain(abs(vibRead - oldvibRead),0,100);
- if (!dirUp ){
- pitchBend=oldpb*(1-nudge)+nudge*(8191 - calculatedPBdepth*vibDepth[vibrato]);
- //ipb=oldipb*(1-nudge)+nudge*(8192 - 8192*vibDepth[vibrato]);
- vibratoMoved = 1;
- } else {
- pitchBend=oldpb*(1-nudge)+nudge*(8192 + calculatedPBdepth*vibDepth[vibrato]);
- //ipb=oldipb*(1-nudge)+nudge*(8192 + 8192*vibDepth[vibrato]);
- vibratoMoved = 1;
- }
- } else {
- vibratoMoved = 0;
- }
-
- oldvibRead = vibRead;
-
- if ((pbUp > pitchbThrVal) && PBdepth){
- pitchBend=pitchBend*0.6+0.4*map(constrain(pbUp,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,(8193 + calculatedPBdepth));
- //ipb=ipb*0.6+0.4*map(constrain(pbUp,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,16383);
- } else if ((pbDn > pitchbThrVal) && PBdepth){
- pitchBend=pitchBend*0.6+0.4*map(constrain(pbDn,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,(8192 - calculatedPBdepth));
- //ipb=ipb*0.6+0.4*map(constrain(pbDn,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,0);
- } else if (oldvibRead > vibThr){
- pitchBend = pitchBend*0.6+8192*0.4; // released, so smooth your way back to zero
- if ((pitchBend > 8187) && (pitchBend < 8197)) {
- pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
- //ipb = 8192;
- }
- } else if (!vibratoMoved){
- pitchBend = oldpb*0.8+8192*0.2; // released, so smooth your way back to zero
- if ((pitchBend > 8187) && (pitchBend < 8197)) {
- pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
- //ipb = 8192;
- }
- }
- pitchBend=constrain(pitchBend, 0, 16383);
- //ipb=constrain(ipb, 0, 16383);
-
- if (pitchBend != oldpb){// only send midi data if pitch bend has changed from previous value
- usbMIDI.sendPitchBend(pitchBend-8192, activeMIDIchannel); // newer teensyduino "pitchBend-8192" older just "pitchBend"... strange thing to change
- dinMIDIsendPitchBend(pitchBend, activeMIDIchannel - 1);
- cents = (pitchBend - 8192)/40;
- internalPitchbend = (midiToFreq[internalNote]*pow(cent,cents)) - midiToFreq[internalNote];
- internalFreqChange();
-
- oldpb=pitchBend;
- }
- /*if (ipb != oldipb){ // only alter signal data if pitch bend has changed from previous value
- cents = (ipb - 8192)/40;
- internalPitchbend = (midiToFreq[internalNote]*pow(cent,cents)) - midiToFreq[internalNote];
- internalFreqChange();
- oldipb=ipb;
- }*/
-}
-
-//***********************************************************
-
-void extraController(){
- // Extra Controller is the lip touch sensor (proportional) in front of the mouthpiece
- exSensor=exSensor*0.6+0.4*touchRead(extraPin); // get sensor data, do some smoothing - SENSOR PIN 16 - PCB PIN "EC" (marked K4 on some prototype boards)
- if (extraCT && (exSensor >= extracThrVal)) { // if we are enabled and over the threshold, send data
- if (!extracIsOn) {
- extracIsOn=1;
- if (extraCT == 4){ //Sustain ON
- usbMIDI.sendControlChange(64,127, activeMIDIchannel);
- dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
- }
- }
- if (extraCT == 1){ //Send modulation
- int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
- if (extracCC != oldextrac){
- usbMIDI.sendControlChange(1,extracCC, activeMIDIchannel);
- dinMIDIsendControlChange(1,extracCC, activeMIDIchannel - 1);
- }
- oldextrac = extracCC;
- }
- if (extraCT == 2){ //Send foot pedal (CC#4)
- int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
- if (extracCC != oldextrac){
- usbMIDI.sendControlChange(4,extracCC, activeMIDIchannel);
- dinMIDIsendControlChange(4,extracCC, activeMIDIchannel - 1);
- }
- oldextrac = extracCC;
- }
- if (extraCT == 3){ //Send filter cutoff (CC#74)
- int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
- if (extracCC != oldextrac){
- usbMIDI.sendControlChange(74,extracCC, activeMIDIchannel);
- dinMIDIsendControlChange(74,extracCC, activeMIDIchannel - 1);
- }
- oldextrac = extracCC;
- }
- } else if (extracIsOn) { // we have just gone below threshold, so send zero value
- extracIsOn=0;
- if (extraCT == 1){ //MW
- //send modulation 0
- usbMIDI.sendControlChange(1,0, activeMIDIchannel);
- dinMIDIsendControlChange(1,0, activeMIDIchannel - 1);
- oldextrac = 0;
- } else if (extraCT == 2){ //FP
- //send foot pedal 0
- usbMIDI.sendControlChange(4,0, activeMIDIchannel);
- dinMIDIsendControlChange(4,0, activeMIDIchannel - 1);
- oldextrac = 0;
- } else if (extraCT == 3){ //FC
- //send foot pedal 0
- usbMIDI.sendControlChange(74,0, activeMIDIchannel);
- dinMIDIsendControlChange(74,0, activeMIDIchannel - 1);
- oldextrac = 0;
- } else if (extraCT == 4){ //SP
- //send sustain off
- usbMIDI.sendControlChange(64,0, activeMIDIchannel);
- dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
- }
- }
-}
-
-//***********************************************************
-
-void portamento_(){
- // Portamento is controlled with the bite sensor (variable capacitor) in the mouthpiece
- biteSensor=biteSensor*0.6+0.4*touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
- if (portamento && (biteSensor >= portamThrVal)) { // if we are enabled and over the threshold, send portamento
- if (!portIsOn) {
- portOn();
- }
- port();
- } else if (portIsOn) { // we have just gone below threshold, so send zero value
- portOff();
- }
-}
-
-//***********************************************************
-
-void portOn(){
- if (portamento == 2){ // if portamento midi switching is enabled
- usbMIDI.sendControlChange(CCN_PortOnOff, 127, activeMIDIchannel);
- dinMIDIsendControlChange(CCN_PortOnOff, 127, activeMIDIchannel - 1);
- }
- portIsOn=1;
-}
-
-//***********************************************************
-
-void port(){
- int portCC;
- portCC = map(constrain(biteSensor,portamThrVal,portamMaxVal),portamThrVal,portamMaxVal,0,127);
- if (portCC!=oldport){
- usbMIDI.sendControlChange(CCN_Port, portCC, activeMIDIchannel);
- dinMIDIsendControlChange(CCN_Port, portCC, activeMIDIchannel - 1);
- }
- oldport = portCC;
-}
-
-//***********************************************************
-
-void portOff(){
- usbMIDI.sendControlChange(CCN_Port, 0, activeMIDIchannel);
- dinMIDIsendControlChange(CCN_Port, 0, activeMIDIchannel - 1);
- if (portamento == 2){ // if portamento midi switching is enabled
- usbMIDI.sendControlChange(CCN_PortOnOff, 0, activeMIDIchannel);
- dinMIDIsendControlChange(CCN_PortOnOff, 0, activeMIDIchannel - 1);
- }
- portIsOn=0;
- oldport = 0;
-}
-
-//***********************************************************
-
-void readSwitches(){
- int qTransp;
- // Read touch pads (MPR121) and put value in variables
- int touchValue[12];
- for (byte i=0; i<12; i++){
- touchValue[i]=touchSensor.filteredData(i);
- }
-
- // Octave rollers
- octaveR = 0;
- if ((touchValue[R5Pin] < ctouchThrVal) && (touchValue[R3Pin] < ctouchThrVal)) octaveR = 6; //R6 = R5 && R3
- else if (touchValue[R5Pin] < ctouchThrVal) octaveR = 5; //R5
- else if (touchValue[R4Pin] < ctouchThrVal) octaveR = 4; //R4
- else if (touchValue[R3Pin] < ctouchThrVal) octaveR = 3; //R3
- else if (touchValue[R2Pin] < ctouchThrVal) octaveR = 2; //R2
- else if (touchValue[R1Pin] < ctouchThrVal) octaveR = 1; //R1
-
- // Valves and trill keys
- K4=(touchValue[K4Pin] < ctouchThrVal);
- K1=(touchValue[K1Pin] < ctouchThrVal);
- K2=(touchValue[K2Pin] < ctouchThrVal);
- K3=(touchValue[K3Pin] < ctouchThrVal);
- K5=(touchValue[K5Pin] < ctouchThrVal);
- K6=(touchValue[K6Pin] < ctouchThrVal);
- K7=(touchValue[K7Pin] < ctouchThrVal);
-
- pinkyKey = (touchRead(halfPitchBendKeyPin) > touch_Thr); // SENSOR PIN 1 - PCB PIN "S1"
-
- if ((pinkySetting < 12) && pinkyKey){
- qTransp = pinkySetting - 12;
- } else if ((pinkySetting > 12) && pinkyKey){
- qTransp = pinkySetting - 12;
- } else {
- qTransp = 0;
- }
-
-
- // Calculate midi note number from pressed keys
- fingeredNote=startNote-2*K1-K2-3*K3-5*K4+2*K5+K6+4*K7+octaveR*12+(octave-3)*12+transpose-12+qTransp;
-}
-
-//***********************************************************
-
-int readTrills(){
- readSwitches();
- return K5+2*K6+4*K7;
-}
-
-//***********************************************************
-
-void setFPS(int trills){
- fastPatch[trills-1] = patch;
- writeSetting(FP1_ADDR+2*(trills-1),patch);
- FPD = 2;
-}
-
-//***********************************************************
-
-void clearFPS(int trills){
- fastPatch[trills-1] = 0;
- writeSetting(FP1_ADDR+2*(trills-1),0);
- FPD = 3;
-}
-
-
-// MENU STUFF FROM THIS POINT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
-
-
-
-
-
-
-
-
-
-void menu() {
-
- // read the state of the switches
- deumButtons = !digitalRead(dPin)+2*!digitalRead(ePin)+4*!digitalRead(uPin)+8*!digitalRead(mPin);
-
- // check to see if you just pressed the button
- // (i.e. the input went from LOW to HIGH), and you've waited long enough
- // since the last press to ignore any noise:
-
- // If the switch changed, due to noise or pressing:
- if (deumButtons != lastDeumButtons) {
- // reset the debouncing timer
- lastDebounceTime = millis();
- }
-
- if ((millis() - lastDebounceTime) > debounceDelay) {
- // whatever the reading is at, it's been there for longer than the debounce
- // delay, so take it as the actual current state:
-
- // if the button state has changed:
- if (deumButtons != deumButtonState) {
- deumButtonState = deumButtons;
- menuTime = millis();
- Serial.println(deumButtonState);
- buttonPressedAndNotUsed = 1;
- buttonPressedTime = millis();
- }
-
- if (((deumButtons == 1) || (deumButtons == 4)) && (millis() - buttonPressedTime > buttonRepeatDelay) && (millis() - buttonRepeatTime > buttonRepeatInterval)){
- buttonPressedAndNotUsed = 1;
- buttonRepeatTime = millis();
- }
-
- }
-
-
- // save the reading. Next time through the loop, it'll be the lastButtonState:
- lastDeumButtons = deumButtons;
-
- if (state && ((millis() - menuTime) > menuTimeUp)) { // shut off menu system if not used for a while (changes not stored by exiting a setting manually will not be stored in EEPROM)
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- subTranspose = 0;
- subMIDI = 0;
- subBreathCC = 0;
- subBreathAT = 0;
- subVelocity = 0;
- subPort = 0;
- subPB = 0;
- subExtra = 0;
- subVibrato = 0;
- subDeglitch = 0;
- subPinky = 0;
- subVelSmpDl = 0;
- subVelBias = 0;
- subParallel = 0;
- subRotator = 0;
- subPriority = 0;
- subWave = 0;
- subCutoff = 0;
- subReso = 0;
- subFilter = 0;
- subVolume = 0;
- }
-
-
-
- if (state == DISPLAYOFF_IDL){
- if (stateFirstRun) {
- display.ssd1306_command(SSD1306_DISPLAYOFF);
- stateFirstRun = 0;
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- int trills = readTrills();
- switch (deumButtonState){
- case 1:
- // down
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- } else if (!trills) buttonPressedAndNotUsed = 1;
- display.ssd1306_command(SSD1306_DISPLAYON);
- state = PATCH_VIEW;
- stateFirstRun = 1;
- break;
- case 2:
- // enter
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- }
- display.ssd1306_command(SSD1306_DISPLAYON);
- state = PATCH_VIEW;
- stateFirstRun = 1;
- break;
- case 4:
- // up
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- } else if (!trills) buttonPressedAndNotUsed = 1;
- display.ssd1306_command(SSD1306_DISPLAYON);
- state = PATCH_VIEW;
- buttonPressedAndNotUsed = 1;
- stateFirstRun = 1;
- break;
- case 8:
- // menu
- display.ssd1306_command(SSD1306_DISPLAYON);
- if (pinkyKey){
- state = ROTATOR_MENU;
- } else if (specialKey){
- state = SYNTH_MENU;
- } else {
- state = MAIN_MENU;
- }
- stateFirstRun = 1;
- break;
- case 15:
- //all keys depressed, reboot to programming mode
- _reboot_Teensyduino_();
- }
- }
- } else if (state == PATCH_VIEW){
- if (stateFirstRun) {
- drawPatchView();
- patchViewTime = millis();
- stateFirstRun = 0;
- }
- if ((millis() - patchViewTime) > patchViewTimeUp) {
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- doPatchUpdate = 1;
- FPD = 0;
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- int trills = readTrills();
- switch (deumButtonState){
- case 1:
- // down
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- } else if (!trills){
- if (patch > 1){
- patch--;
- } else patch = 128;
- FPD = 0;
- }
- drawPatchView();
- patchViewTime = millis();
- break;
- case 2:
- // enter
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- drawPatchView();
- }
- patchViewTime = millis();
- break;
- case 4:
- // up
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- } else if (!trills){
- if (patch < 128){
- patch++;
- } else patch = 1;
- FPD = 0;
- }
- drawPatchView();
- patchViewTime = millis();
- break;
- case 8:
- // menu
- if (FPD < 2){
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- doPatchUpdate = 1;
- }
- FPD = 0;
- break;
- case 10:
- // enter + menu
- midiPanic();
- midiReset();
- display.clearDisplay();
- display.setTextColor(WHITE);
- display.setTextSize(2);
- display.setCursor(35,15);
- display.println("DON'T");
- display.setCursor(35,30);
- display.println("PANIC");
- display.display();
- patchViewTime = millis();
- break;
- case 15:
- //all keys depressed, reboot to programming mode
- _reboot_Teensyduino_();
- }
- }
- } else if (state == MAIN_MENU){ // MAIN MENU HERE <<<<<<<<<<<<<<<
- if (stateFirstRun) {
- drawMenuScreen();
- stateFirstRun = 0;
- }
- if (subTranspose){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotTranspose(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (transpose > 0){
- plotTranspose(BLACK);
- transpose--;
- plotTranspose(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotTranspose(WHITE);
- cursorNow = BLACK;
- display.display();
- subTranspose = 0;
- if (readSetting(TRANSP_ADDR) != transpose) writeSetting(TRANSP_ADDR,transpose);
- break;
- case 4:
- // up
- if (transpose < 24){
- plotTranspose(BLACK);
- transpose++;
- plotTranspose(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotTranspose(WHITE);
- cursorNow = BLACK;
- display.display();
- subTranspose = 0;
- if (readSetting(TRANSP_ADDR) != transpose) writeSetting(TRANSP_ADDR,transpose);
- break;
- }
- }
- } else if (subOctave){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotOctave(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (octave > 0){
- plotOctave(BLACK);
- octave--;
- plotOctave(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotOctave(WHITE);
- cursorNow = BLACK;
- display.display();
- subOctave = 0;
- if (readSetting(OCTAVE_ADDR) != octave) writeSetting(OCTAVE_ADDR,octave);
- break;
- case 4:
- // up
- if (octave < 6){
- plotOctave(BLACK);
- octave++;
- plotOctave(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotOctave(WHITE);
- cursorNow = BLACK;
- display.display();
- subOctave = 0;
- if (readSetting(OCTAVE_ADDR) != octave) writeSetting(OCTAVE_ADDR,octave);
- break;
- }
- }
- } else if (subMIDI) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotMIDI(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (MIDIchannel > 1){
- plotMIDI(BLACK);
- MIDIchannel--;
- plotMIDI(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotMIDI(WHITE);
- cursorNow = BLACK;
- display.display();
- subMIDI = 0;
- if (readSetting(MIDI_ADDR) != MIDIchannel) writeSetting(MIDI_ADDR,MIDIchannel);
- break;
- case 4:
- // up
- if (MIDIchannel < 16){
- plotMIDI(BLACK);
- MIDIchannel++;
- plotMIDI(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotMIDI(WHITE);
- cursorNow = BLACK;
- display.display();
- subMIDI = 0;
- if (readSetting(MIDI_ADDR) != MIDIchannel) writeSetting(MIDI_ADDR,MIDIchannel);
- break;
- }
- }
- } else {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(mainMenuCursor, cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- int trills = readTrills();
- switch (deumButtonState){
- case 1:
- // down
- if (mainMenuCursor < 6){
- drawMenuCursor(mainMenuCursor, BLACK);
- mainMenuCursor++;
- drawMenuCursor(mainMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 2:
- // enter
- selectMainMenu();
- break;
- case 4:
- // up
- if (mainMenuCursor > 1){
- drawMenuCursor(mainMenuCursor, BLACK);
- mainMenuCursor--;
- drawMenuCursor(mainMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 8:
- // menu
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- break;
- case 9:
- //menu+down
-
- break;
- case 10:
- //menu+enter
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- setFPS(trills);
- }
- break;
- case 12:
- //menu+up
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- clearFPS(trills);
-
- }
- break;
- }
- }
- }
- } else if (state == ROTATOR_MENU){ // ROTATOR MENU HERE <<<<<<<<<<<<<<<
- if (stateFirstRun) {
- drawRotatorMenuScreen();
- stateFirstRun = 0;
- }
- if (subParallel){
- if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- if (forceRedraw){
- forceRedraw = 0;
- cursorNow = WHITE;
- }
- plotRotator(cursorNow,parallel);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (parallel > -24){
- plotRotator(BLACK,parallel);
- parallel--;
- plotRotator(WHITE,parallel);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotRotator(WHITE,parallel);
- cursorNow = BLACK;
- display.display();
- subParallel = 0;
- if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
- break;
- case 4:
- // up
- if (parallel < 24){
- plotRotator(BLACK,parallel);
- parallel++;
- plotRotator(WHITE,parallel);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotRotator(WHITE,parallel);
- cursorNow = BLACK;
- display.display();
- subParallel = 0;
- if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
- break;
- }
- }
- } else if (subRotator){
- if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- if (forceRedraw){
- forceRedraw = 0;
- cursorNow = WHITE;
- }
- plotRotator(cursorNow,rotations[subRotator-1]);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (rotations[subRotator-1] > -24){
- plotRotator(BLACK,rotations[subRotator-1]);
- rotations[subRotator-1]--;
- plotRotator(WHITE,rotations[subRotator-1]);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotRotator(WHITE,rotations[subRotator-1]);
- cursorNow = BLACK;
- display.display();
- if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != rotations[subRotator-1]) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
- subRotator = 0;
- break;
- case 4:
- // up
- if (rotations[subRotator-1] < 24){
- plotRotator(BLACK,rotations[subRotator-1]);
- rotations[subRotator-1]++;
- plotRotator(WHITE,rotations[subRotator-1]);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotRotator(WHITE,rotations[subRotator-1]);
- cursorNow = BLACK;
- display.display();
- if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != (rotations[subRotator-1]+24)) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
- subRotator = 0;
- break;
- }
- }
- } else if (subPriority){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotPriority(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotPriority(BLACK);
- priority = !priority;
- plotPriority(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotPriority(WHITE);
- cursorNow = BLACK;
- display.display();
- subPriority = 0;
- if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- case 4:
- // up
- plotPriority(BLACK);
- priority = !priority;
- plotPriority(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotPriority(WHITE);
- cursorNow = BLACK;
- display.display();
- subPriority = 0;
- if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- }
- }
- } else {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(rotatorMenuCursor, cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- int trills = readTrills();
- switch (deumButtonState){
- case 1:
- // down
- if (rotatorMenuCursor < 6){
- drawMenuCursor(rotatorMenuCursor, BLACK);
- rotatorMenuCursor++;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 2:
- // enter
- selectRotatorMenu();
- break;
- case 4:
- // up
- if (rotatorMenuCursor > 1){
- drawMenuCursor(rotatorMenuCursor, BLACK);
- rotatorMenuCursor--;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 8:
- // menu
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- break;
- case 9:
- //menu+down
-
- break;
- case 10:
- //menu+enter
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- setFPS(trills);
- }
- break;
- case 12:
- //menu+up
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- clearFPS(trills);
-
- }
- break;
- }
- }
- }
- // end rotator menu
- } else if (state == SYNTH_MENU){ // SYNTH MENU HERE <<<<<<<<<<<<<<<
- if (stateFirstRun) {
- drawSynthMenuScreen();
- stateFirstRun = 0;
- }
- if (subWave){
- if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- if (forceRedraw){
- forceRedraw = 0;
- cursorNow = WHITE;
- }
- plotWave(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (wave > 0){
- plotWave(BLACK);
- wave--;
- plotWave(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotWave(WHITE);
- cursorNow = BLACK;
- display.display();
- subWave = 0;
- // if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
- break;
- case 4:
- // up
- if (wave < 2){
- plotWave(BLACK);
- wave++;
- plotWave(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotWave(WHITE);
- cursorNow = BLACK;
- display.display();
- subWave = 0;
- //if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
- break;
- }
- updateSynth();
- }
- } else if (subCutoff){
- if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- if (forceRedraw){
- forceRedraw = 0;
- cursorNow = WHITE;
- }
- plotCutoff(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (cutoff > 0){
- plotCutoff(BLACK);
- cutoff--;
- plotCutoff(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotCutoff(WHITE);
- cursorNow = BLACK;
- display.display();
- //if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != rotations[subRotator-1]) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
- subCutoff = 0;
- break;
- case 4:
- // up
- if (cutoff < 9){
- plotCutoff(BLACK);
- cutoff++;
- plotCutoff(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotCutoff(WHITE);
- cursorNow = BLACK;
- display.display();
- //if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != (rotations[subRotator-1]+24)) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
- subCutoff = 0;
- break;
- }
- updateSynth();
- }
- } else if (subReso){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotReso(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (reso > 0){
- plotReso(BLACK);
- reso--;
- plotReso(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotReso(WHITE);
- cursorNow = BLACK;
- display.display();
- subReso = 0;
- // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- case 4:
- // up
- if (reso < 9){
- plotReso(BLACK);
- reso++;
- plotReso(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotReso(WHITE);
- cursorNow = BLACK;
- display.display();
- subReso = 0;
- // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- }
- updateSynth();
- }
- } else if (subVolume){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotVol(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (vol > 0){
- plotVol(BLACK);
- vol--;
- plotVol(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotVol(WHITE);
- cursorNow = BLACK;
- display.display();
- subVolume = 0;
- // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- case 4:
- // up
- if (vol < 9){
- plotVol(BLACK);
- vol++;
- plotVol(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotVol(WHITE);
- cursorNow = BLACK;
- display.display();
- subVolume = 0;
- // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- }
- updateSynth();
- }
- } else if (subFilter){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotFilter(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotFilter(BLACK);
- filter = !filter;
- plotFilter(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotFilter(WHITE);
- cursorNow = BLACK;
- display.display();
- subFilter = 0;
- //if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- case 4:
- // up
- plotFilter(BLACK);
- filter = !filter;
- plotFilter(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotFilter(WHITE);
- cursorNow = BLACK;
- display.display();
- subFilter = 0;
- //if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
- break;
- }
- updateSynth();
- }
- } else {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(synthMenuCursor, cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- int trills = readTrills();
- switch (deumButtonState){
- case 1:
- // down
- if (synthMenuCursor < 5){
- drawMenuCursor(synthMenuCursor, BLACK);
- synthMenuCursor++;
- drawMenuCursor(synthMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 2:
- // enter
- selectSynthMenu();
- break;
- case 4:
- // up
- if (synthMenuCursor > 1){
- drawMenuCursor(synthMenuCursor, BLACK);
- synthMenuCursor--;
- drawMenuCursor(synthMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 8:
- // menu
- state = DISPLAYOFF_IDL;
- stateFirstRun = 1;
- break;
- case 9:
- //menu+down
-
- break;
- case 10:
- //menu+enter
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- setFPS(trills);
- }
- break;
- case 12:
- //menu+up
- if (trills){
- state = PATCH_VIEW;
- stateFirstRun = 1;
- clearFPS(trills);
-
- }
- break;
- }
- }
- }
- // end synth menu
- } else if (state == BREATH_ADJ_IDL){
- if (stateFirstRun) {
- drawBreathScreen();
- forcePix = 1;
- stateFirstRun = 0;
- }
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- state = PORTAM_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
- if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
- break;
- case 2:
- // enter
- state = BREATH_ADJ_THR;
- break;
- case 4:
- // up
- state = CTOUCH_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
- if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
- if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
- break;
- }
- }
- } else if (state == BREATH_ADJ_THR){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos1,20,pos1,26,cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (breathThrVal - breathStep > breathLoLimit){
- breathThrVal -= breathStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = BREATH_ADJ_MAX;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (breathThrVal + breathStep < breathHiLimit){
- breathThrVal += breathStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = BREATH_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == BREATH_ADJ_MAX){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos2,50,pos2,57,cursorNow);;
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if ((breathMaxVal - breathStep) > (breathThrVal + minOffset)){
- breathMaxVal -= breathStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = BREATH_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (breathMaxVal + breathStep < breathHiLimit){
- breathMaxVal += breathStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = BREATH_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == PORTAM_ADJ_IDL){
- if (stateFirstRun) {
- drawPortamScreen();
- forcePix = 1;
- stateFirstRun = 0;
- }
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- state = PITCHB_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
- if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
- break;
- case 2:
- // enter
- state = PORTAM_ADJ_THR;
- break;
- case 4:
- // up
- state = BREATH_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
- if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
- if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
- break;
- }
- }
- } else if (state == PORTAM_ADJ_THR){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos1,20,pos1,26,cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (portamThrVal - portamStep > portamLoLimit){
- portamThrVal -= portamStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = PORTAM_ADJ_MAX;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (portamThrVal + portamStep < portamHiLimit){
- portamThrVal += portamStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = PORTAM_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == PORTAM_ADJ_MAX){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos2,50,pos2,57,cursorNow);;
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if ((portamMaxVal - portamStep) > (portamThrVal + minOffset)){
- portamMaxVal -= portamStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = PORTAM_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (portamMaxVal + portamStep < portamHiLimit){
- portamMaxVal += portamStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = PORTAM_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == PITCHB_ADJ_IDL){
- if (stateFirstRun) {
- drawPitchbScreen();
- forcePix = 1;
- stateFirstRun = 0;
- }
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- state = EXTRAC_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
- if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
- break;
- case 2:
- // enter
- state = PITCHB_ADJ_THR;
- break;
- case 4:
- // up
- state = PORTAM_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
- if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
- if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
- break;
- }
- }
- } else if (state == PITCHB_ADJ_THR){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos1,20,pos1,26,cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (pitchbThrVal - pitchbStep > pitchbLoLimit){
- pitchbThrVal -= pitchbStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = PITCHB_ADJ_MAX;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (pitchbThrVal + pitchbStep < pitchbHiLimit){
- pitchbThrVal += pitchbStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = PITCHB_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == PITCHB_ADJ_MAX){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos2,50,pos2,57,cursorNow);;
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if ((pitchbMaxVal - pitchbStep) > (pitchbThrVal + minOffset)){
- pitchbMaxVal -= pitchbStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = PITCHB_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (pitchbMaxVal + pitchbStep < pitchbHiLimit){
- pitchbMaxVal += pitchbStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = PITCHB_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- }
- }
-
- } else if (state == EXTRAC_ADJ_IDL){
- if (stateFirstRun) {
- drawExtracScreen();
- forcePix = 1;
- stateFirstRun = 0;
- }
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- state = CTOUCH_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
- if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
- break;
- case 2:
- // enter
- state = EXTRAC_ADJ_THR;
- break;
- case 4:
- // up
- state = PITCHB_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
- if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
- if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
- break;
- }
- }
- } else if (state == EXTRAC_ADJ_THR){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos1,20,pos1,26,cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (extracThrVal - extracStep > extracLoLimit){
- extracThrVal -= extracStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = EXTRAC_ADJ_MAX;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (extracThrVal + extracStep < extracHiLimit){
- extracThrVal += extracStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = EXTRAC_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- }
- }
- } else if (state == EXTRAC_ADJ_MAX){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos2,50,pos2,57,cursorNow);;
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if ((extracMaxVal - extracStep) > (extracThrVal + minOffset)){
- extracMaxVal -= extracStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = EXTRAC_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (extracMaxVal + extracStep < extracHiLimit){
- extracMaxVal += extracStep;
- display.drawLine(pos2,50,pos2,57,BLACK);
- pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = EXTRAC_ADJ_IDL;
- display.drawLine(pos2,50,pos2,57,WHITE);
- display.display();
- break;
- }
- }
-
- } else if (state == CTOUCH_ADJ_IDL){
- if (stateFirstRun) {
- drawCtouchScreen();
- forcePix = 1;
- stateFirstRun = 0;
- }
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- state = BREATH_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
- break;
- case 2:
- // enter
- state = CTOUCH_ADJ_THR;
- break;
- case 4:
- // up
- state = EXTRAC_ADJ_IDL;
- stateFirstRun = 1;
- if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
- break;
- }
- }
- } else if (state == CTOUCH_ADJ_THR){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- display.drawLine(pos1,20,pos1,26,cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (ctouchThrVal - ctouchStep > ctouchLoLimit){
- ctouchThrVal -= ctouchStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 2:
- // enter
- state = CTOUCH_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- case 4:
- // up
- if (ctouchThrVal + ctouchStep < ctouchHiLimit){
- ctouchThrVal += ctouchStep;
- display.drawLine(pos1,20,pos1,26,BLACK);
- pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- cursorBlinkTime = millis();
- cursorNow = BLACK;
- }
- break;
- case 8:
- // menu
- state = CTOUCH_ADJ_IDL;
- display.drawLine(pos1,20,pos1,26,WHITE);
- display.display();
- break;
- }
- }
-
-
- } else if (state == SETUP_BR_MENU) { // SETUP BREATH MENU HERE <<<<<<<<<<<<<<
- if (stateFirstRun) {
- drawSetupBrMenuScreen();
- stateFirstRun = 0;
- }
- if (subBreathCC){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotBreathCC(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (breathCC > 0){
- plotBreathCC(BLACK);
- breathCC--;
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- } else {
- plotBreathCC(BLACK);
- breathCC = 8;
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- subBreathCC = 0;
- if (readSetting(BREATH_CC_ADDR) != breathCC) {
- writeSetting(BREATH_CC_ADDR,breathCC);
- midiReset();
- }
- break;
- case 4:
- // up
- if (breathCC < 8){
- plotBreathCC(BLACK);
- breathCC++;
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- } else {
- plotBreathCC(BLACK);
- breathCC = 0;
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotBreathCC(WHITE);
- cursorNow = BLACK;
- display.display();
- subBreathCC = 0;
- if (readSetting(BREATH_CC_ADDR) != breathCC) {
- writeSetting(BREATH_CC_ADDR,breathCC);
- midiReset();
- }
- break;
- }
- }
- } else if (subBreathAT) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotBreathAT(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotBreathAT(BLACK);
- breathAT=!breathAT;
- plotBreathAT(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotBreathAT(WHITE);
- cursorNow = BLACK;
- display.display();
- subBreathAT = 0;
- if (readSetting(BREATH_AT_ADDR) != breathAT){
- writeSetting(BREATH_AT_ADDR,breathAT);
- midiReset();
- }
- break;
- case 4:
- // up
- plotBreathAT(BLACK);
- breathAT=!breathAT;
- plotBreathAT(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotBreathAT(WHITE);
- cursorNow = BLACK;
- display.display();
- subBreathAT = 0;
- if (readSetting(BREATH_AT_ADDR) != breathAT){
- writeSetting(BREATH_AT_ADDR,breathAT);
- midiReset();
- }
- break;
- }
- }
- } else if (subVelocity) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotVelocity(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotVelocity(BLACK);
- if (velocity > 0){
- velocity--;
- } else velocity = 127;
- plotVelocity(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotVelocity(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelocity = 0;
- if (readSetting(VELOCITY_ADDR) != velocity) writeSetting(VELOCITY_ADDR,velocity);
- break;
- case 4:
- // up
- plotVelocity(BLACK);
- if (velocity < 127){
- velocity++;
- } else velocity = 0;
- plotVelocity(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotVelocity(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelocity = 0;
- if (readSetting(VELOCITY_ADDR) != velocity) writeSetting(VELOCITY_ADDR,velocity);
- break;
- }
- }
-
-
- } else if (subCurve) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotCurve(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotCurve(BLACK);
- if (curve > 0){
- curve--;
- } else curve = 12;
- plotCurve(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotCurve(WHITE);
- cursorNow = BLACK;
- display.display();
- subCurve = 0;
- if (readSetting(BREATHCURVE_ADDR) != curve) writeSetting(BREATHCURVE_ADDR,curve);
- break;
- case 4:
- // up
- plotCurve(BLACK);
- if (curve < 12){
- curve++;
- } else curve = 0;
- plotCurve(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotCurve(WHITE);
- cursorNow = BLACK;
- display.display();
- subCurve = 0;
- if (readSetting(BREATHCURVE_ADDR) != curve) writeSetting(BREATHCURVE_ADDR,curve);
- break;
- }
- }
-
- } else if (subVelSmpDl) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotVelSmpDl(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotVelSmpDl(BLACK);
- if (velSmpDl > 0){
- velSmpDl-=5;
- } else velSmpDl = 30;
- plotVelSmpDl(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotVelSmpDl(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelSmpDl = 0;
- if (readSetting(VEL_SMP_DL_ADDR) != velSmpDl) writeSetting(VEL_SMP_DL_ADDR,velSmpDl);
- break;
- case 4:
- // up
- plotVelSmpDl(BLACK);
- if (velSmpDl < 30){
- velSmpDl+=5;
- } else velSmpDl = 0;
- plotVelSmpDl(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotVelSmpDl(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelSmpDl = 0;
- if (readSetting(VEL_SMP_DL_ADDR) != velSmpDl) writeSetting(VEL_SMP_DL_ADDR,velSmpDl);
- break;
- }
- }
-
- } else if (subVelBias) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotVelBias(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotVelBias(BLACK);
- if (velBias > 0){
- velBias--;
- } else velBias = 9;
- plotVelBias(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotVelBias(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelBias = 0;
- if (readSetting(VEL_BIAS_ADDR) != velBias) writeSetting(VEL_BIAS_ADDR,velBias);
- break;
- case 4:
- // up
- plotVelBias(BLACK);
- if (velBias < 9){
- velBias++;
- } else velBias = 0;
- plotVelBias(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotVelBias(WHITE);
- cursorNow = BLACK;
- display.display();
- subVelBias = 0;
- if (readSetting(VEL_BIAS_ADDR) != velBias) writeSetting(VEL_BIAS_ADDR,velBias);
- break;
- }
- }
-
- } else {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(setupBrMenuCursor, cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (setupBrMenuCursor < 6){
- drawMenuCursor(setupBrMenuCursor, BLACK);
- setupBrMenuCursor++;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 2:
- // enter
- selectSetupBrMenu();
- break;
- case 4:
- // up
- if (setupBrMenuCursor > 1){
- drawMenuCursor(setupBrMenuCursor, BLACK);
- setupBrMenuCursor--;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- break;
- }
- }
- }
-
-
- } else if (state == SETUP_CT_MENU) { // SETUP CONTROLLERS MENU HERE <<<<<<<<<<<<<
- if (stateFirstRun) {
- drawSetupCtMenuScreen();
- stateFirstRun = 0;
- }
- if (subPort){
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotPort(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotPort(BLACK);
- if (portamento > 0){
- portamento--;
- } else portamento = 2;
- plotPort(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotPort(WHITE);
- cursorNow = BLACK;
- display.display();
- subPort = 0;
- if (readSetting(PORTAM_ADDR) != portamento) writeSetting(PORTAM_ADDR,portamento);
- break;
- case 4:
- // up
- plotPort(BLACK);
- if (portamento < 2){
- portamento++;
- } else portamento = 0;
- plotPort(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotPort(WHITE);
- cursorNow = BLACK;
- display.display();
- subPort = 0;
- if (readSetting(PORTAM_ADDR) != portamento) writeSetting(PORTAM_ADDR,portamento);
- break;
- }
- }
- } else if (subPB) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotPB(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (PBdepth > 0){
- plotPB(BLACK);
- PBdepth--;
- plotPB(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotPB(WHITE);
- cursorNow = BLACK;
- display.display();
- subPB = 0;
- if (readSetting(PB_ADDR) != PBdepth) writeSetting(PB_ADDR,PBdepth);
- break;
- case 4:
- // up
- if (PBdepth < 12){
- plotPB(BLACK);
- PBdepth++;
- plotPB(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotPB(WHITE);
- cursorNow = BLACK;
- display.display();
- subPB = 0;
- if (readSetting(PB_ADDR) != PBdepth) writeSetting(PB_ADDR,PBdepth);
- break;
- }
- }
- } else if (subExtra) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotExtra(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- plotExtra(BLACK);
- if (extraCT > 0){
- extraCT--;
- } else extraCT = 4;
- plotExtra(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 2:
- // enter
- plotExtra(WHITE);
- cursorNow = BLACK;
- display.display();
- subExtra = 0;
- if (readSetting(EXTRA_ADDR) != extraCT) writeSetting(EXTRA_ADDR,extraCT);
- break;
- case 4:
- // up
- plotExtra(BLACK);
- if (extraCT < 4){
- extraCT++;
- } else extraCT = 0;
- plotExtra(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- break;
- case 8:
- // menu
- plotExtra(WHITE);
- cursorNow = BLACK;
- display.display();
- subExtra = 0;
- if (readSetting(EXTRA_ADDR) != extraCT) writeSetting(EXTRA_ADDR,extraCT);
- break;
- }
- }
- } else if (subVibrato) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotVibrato(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (vibrato > 0){
- plotVibrato(BLACK);
- vibrato--;
- plotVibrato(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotVibrato(WHITE);
- cursorNow = BLACK;
- display.display();
- subVibrato = 0;
- if (readSetting(VIBRATO_ADDR) != vibrato) writeSetting(VIBRATO_ADDR,vibrato);
- break;
- case 4:
- // up
- if (vibrato < 9){
- plotVibrato(BLACK);
- vibrato++;
- plotVibrato(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotVibrato(WHITE);
- cursorNow = BLACK;
- display.display();
- subVibrato = 0;
- if (readSetting(VIBRATO_ADDR) != vibrato) writeSetting(VIBRATO_ADDR,vibrato);
- break;
- }
- }
- } else if (subDeglitch) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotDeglitch(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (deglitch > 0){
- plotDeglitch(BLACK);
- deglitch-=5;
- plotDeglitch(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotDeglitch(WHITE);
- cursorNow = BLACK;
- display.display();
- subDeglitch = 0;
- if (readSetting(DEGLITCH_ADDR) != deglitch) writeSetting(DEGLITCH_ADDR,deglitch);
- break;
- case 4:
- // up
- if (deglitch < 70){
- plotDeglitch(BLACK);
- deglitch+=5;
- plotDeglitch(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotDeglitch(WHITE);
- cursorNow = BLACK;
- display.display();
- subDeglitch = 0;
- if (readSetting(DEGLITCH_ADDR) != deglitch) writeSetting(DEGLITCH_ADDR,deglitch);
- break;
- }
- }
- } else if (subPinky) {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- plotPinkyKey(cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (pinkySetting > 0){
- plotPinkyKey(BLACK);
- pinkySetting-=1;
- plotPinkyKey(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 2:
- // enter
- plotPinkyKey(WHITE);
- cursorNow = BLACK;
- display.display();
- subPinky = 0;
- if (readSetting(PINKY_KEY_ADDR) != pinkySetting) writeSetting(PINKY_KEY_ADDR,pinkySetting);
- break;
- case 4:
- // up
- if (pinkySetting < 24){
- plotPinkyKey(BLACK);
- pinkySetting+=1;
- plotPinkyKey(WHITE);
- cursorNow = BLACK;
- display.display();
- cursorBlinkTime = millis();
- }
- break;
- case 8:
- // menu
- plotPinkyKey(WHITE);
- cursorNow = BLACK;
- display.display();
- subPinky = 0;
- if (readSetting(PINKY_KEY_ADDR) != pinkySetting) writeSetting(PINKY_KEY_ADDR,pinkySetting);
- break;
- }
- }
- } else {
- if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(setupCtMenuCursor, cursorNow);
- display.display();
- cursorBlinkTime = millis();
- }
- if (buttonPressedAndNotUsed){
- buttonPressedAndNotUsed = 0;
- switch (deumButtonState){
- case 1:
- // down
- if (setupCtMenuCursor < 6){
- drawMenuCursor(setupCtMenuCursor, BLACK);
- setupCtMenuCursor++;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 2:
- // enter
- selectSetupCtMenu();
- break;
- case 4:
- // up
- if (setupCtMenuCursor > 1){
- drawMenuCursor(setupCtMenuCursor, BLACK);
- setupCtMenuCursor--;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- cursorNow = BLACK;
- clearSub();
- display.display();
- }
- break;
- case 8:
- // menu
- state = MAIN_MENU;
- stateFirstRun = 1;
- break;
- }
- }
- }
- }
-
-}
-
-void selectMainMenu(){
- switch (mainMenuCursor){
- case 1:
- subTranspose = 1;
- drawMenuCursor(mainMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubTranspose();
- break;
- case 2:
- subOctave = 1;
- drawMenuCursor(mainMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubOctave();
- break;
- case 3:
- subMIDI = 1;
- drawMenuCursor(mainMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubMIDI();
- break;
- case 4:
- state = BREATH_ADJ_IDL;
- stateFirstRun = 1;
- break;
- case 5:
- state = SETUP_BR_MENU;
- stateFirstRun = 1;
- break;
- case 6:
- state = SETUP_CT_MENU;
- stateFirstRun = 1;
- break;
- }
-}
-
-void selectRotatorMenu(){
- switch (rotatorMenuCursor){
- case 1:
- subParallel = 1;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubRotator();
- break;
- case 2:
- subRotator = 1;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubRotator();
- break;
- case 3:
- subRotator = 2;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubRotator();
- break;
- case 4:
- subRotator = 3;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubRotator();
- break;
- case 5:
- subRotator = 4;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubRotator();
- break;
- case 6:
- subPriority = 1;
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubPriority();
- break;
- }
-}
-
-void selectSynthMenu(){
- switch (synthMenuCursor){
- case 1:
- subWave = 1;
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubWave();
- break;
- case 2:
- subCutoff = 1;
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubCutoff();
- break;
- case 3:
- subReso = 1;
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubReso();
- break;
- case 4:
- subVolume = 1;
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubVol();
- break;
- case 5:
- subFilter = 1;
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubFilter();
- break;
- }
-}
-
-void selectSetupBrMenu(){
- switch (setupBrMenuCursor){
- case 1:
- subBreathCC = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubBreathCC();
- break;
- case 2:
- subBreathAT = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubBreathAT();
- break;
- case 3:
- subVelocity = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubVelocity();
- break;
- case 4:
- subCurve = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubCurve();
- break;
- case 5:
- subVelSmpDl = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubVelSmpDl();
- break;
- case 6:
- subVelBias = 1;
- drawMenuCursor(setupBrMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubVelBias();
- break;
- }
-}
-
-void selectSetupCtMenu(){
- switch (setupCtMenuCursor){
- case 1:
- subPort = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubPort();
- break;
- case 2:
- subPB = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubPB();
- break;
- case 3:
- subExtra = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubExtra();
- break;
- case 4:
- subVibrato = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubVibrato();
- break;
- case 5:
- subDeglitch = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubDeglitch();
- break;
- case 6:
- subPinky = 1;
- drawMenuCursor(setupCtMenuCursor, WHITE);
- display.display();
- cursorBlinkTime = millis();
- drawSubPinkyKey();
- }
-}
-void drawBreathScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(25,2);
- display.println("BREATH");
- //display.drawLine(0,10,127,10,WHITE);
- display.setCursor(0,20);
- display.println("THR");
- display.drawLine(25,17,120,17,WHITE);
- display.drawLine(25,18,25,19,WHITE);
- display.drawLine(120,18,120,19,WHITE);
- display.drawLine(25,29,120,29,WHITE);
- display.drawLine(25,27,25,28,WHITE);
- display.drawLine(120,27,120,28,WHITE);
- display.setCursor(0,35);
- display.println("SNS");
- //display.drawLine(25,38,120,38,WHITE);
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
- display.setCursor(0,50);
- display.println("MAX");
- display.drawLine(25,47,120,47,WHITE);
- display.drawLine(25,48,25,49,WHITE);
- display.drawLine(120,48,120,49,WHITE);
- display.drawLine(25,60,120,60,WHITE);
- display.drawLine(25,58,25,59,WHITE);
- display.drawLine(120,58,120,59,WHITE);
-
- //display.drawLine(38,20,38,26,WHITE); // indikation thr
- pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- cursorNow = WHITE;
- //display.drawLine(115,50,115,57,WHITE); // indikation max
- pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- //display.drawPixel(34, 38, WHITE);
- drawAdjCursor(WHITE);
- display.display();
-}
-
-void drawPortamScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(25,2);
- display.println("PORTAMENTO");
- //display.drawLine(0,10,127,10,WHITE);
- display.setCursor(0,20);
- display.println("THR");
- display.drawLine(25,17,120,17,WHITE);
- display.drawLine(25,18,25,19,WHITE);
- display.drawLine(120,18,120,19,WHITE);
- display.drawLine(25,29,120,29,WHITE);
- display.drawLine(25,27,25,28,WHITE);
- display.drawLine(120,27,120,28,WHITE);
- display.setCursor(0,35);
- display.println("SNS");
- //display.drawLine(25,38,120,38,WHITE);
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
- display.setCursor(0,50);
- display.println("MAX");
- display.drawLine(25,47,120,47,WHITE);
- display.drawLine(25,48,25,49,WHITE);
- display.drawLine(120,48,120,49,WHITE);
- display.drawLine(25,60,120,60,WHITE);
- display.drawLine(25,58,25,59,WHITE);
- display.drawLine(120,58,120,59,WHITE);
-
- //display.drawLine(38,20,38,26,WHITE); // indikation thr
- pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- cursorNow = WHITE;
- //display.drawLine(115,50,115,57,WHITE); // indikation max
- pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- //display.drawPixel(34, 38, WHITE);
- drawAdjCursor(WHITE);
- display.display();
-}
-
-void drawPitchbScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(25,2);
- display.println("PITCH BEND");
- //display.drawLine(0,10,127,10,WHITE);
- display.setCursor(0,20);
- display.println("THR");
- display.drawLine(25,17,120,17,WHITE);
- display.drawLine(25,18,25,19,WHITE);
- display.drawLine(120,18,120,19,WHITE);
- display.drawLine(25,29,120,29,WHITE);
- display.drawLine(25,27,25,28,WHITE);
- display.drawLine(120,27,120,28,WHITE);
- display.setCursor(0,35);
- display.println("SNS");
- //display.drawLine(25,38,120,38,WHITE);
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
- display.setCursor(0,50);
- display.println("MAX");
- display.drawLine(25,47,120,47,WHITE);
- display.drawLine(25,48,25,49,WHITE);
- display.drawLine(120,48,120,49,WHITE);
- display.drawLine(25,60,120,60,WHITE);
- display.drawLine(25,58,25,59,WHITE);
- display.drawLine(120,58,120,59,WHITE);
-
- //display.drawLine(38,20,38,26,WHITE); // indikation thr
- pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- cursorNow = WHITE;
- //display.drawLine(115,50,115,57,WHITE); // indikation max
- pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- //display.drawPixel(34, 38, WHITE);
- drawAdjCursor(WHITE);
- display.display();
-}
-
-void drawExtracScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(25,2);
- display.println("EXTRA CONTROLLER");
- //display.drawLine(0,10,127,10,WHITE);
- display.setCursor(0,20);
- display.println("THR");
- display.drawLine(25,17,120,17,WHITE);
- display.drawLine(25,18,25,19,WHITE);
- display.drawLine(120,18,120,19,WHITE);
- display.drawLine(25,29,120,29,WHITE);
- display.drawLine(25,27,25,28,WHITE);
- display.drawLine(120,27,120,28,WHITE);
- display.setCursor(0,35);
- display.println("SNS");
- //display.drawLine(25,38,120,38,WHITE);
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
- display.setCursor(0,50);
- display.println("MAX");
- display.drawLine(25,47,120,47,WHITE);
- display.drawLine(25,48,25,49,WHITE);
- display.drawLine(120,48,120,49,WHITE);
- display.drawLine(25,60,120,60,WHITE);
- display.drawLine(25,58,25,59,WHITE);
- display.drawLine(120,58,120,59,WHITE);
-
- //display.drawLine(38,20,38,26,WHITE); // indikation thr
- pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- cursorNow = WHITE;
- //display.drawLine(115,50,115,57,WHITE); // indikation max
- pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
- display.drawLine(pos2,50,pos2,57,WHITE);
- //display.drawPixel(34, 38, WHITE);
- drawAdjCursor(WHITE);
- display.display();
-}
-
-
-void drawCtouchScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(25,2);
- display.println("TOUCH SENSE");
- //display.drawLine(0,10,127,10,WHITE);
- display.setCursor(0,20);
- display.println("THR");
- display.drawLine(25,17,120,17,WHITE);
- display.drawLine(25,18,25,19,WHITE);
- display.drawLine(120,18,120,19,WHITE);
- display.drawLine(25,29,120,29,WHITE);
- display.drawLine(25,27,25,28,WHITE);
- display.drawLine(120,27,120,28,WHITE);
- display.setCursor(0,35);
- display.println("SNS");
- //display.drawLine(25,38,120,38,WHITE);
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
-
- //display.drawLine(38,20,38,26,WHITE); // indikation thr
- pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
- display.drawLine(pos1,20,pos1,26,WHITE);
- cursorNow = WHITE;
-
- //display.drawPixel(34, 38, WHITE);
- drawAdjCursor(WHITE);
- display.display();
-}
-
-void drawMenuCursor(byte itemNo, byte color){
- byte xmid = 6 + 9 * itemNo;
- display.drawTriangle(57,xmid,61,xmid+2,61,xmid-2,color);
-}
-
-void drawAdjCursor(byte color){
- display.drawTriangle(16,4,20,4,18,1,color);
- display.drawTriangle(16,6,20,6,18,9,color);
-}
-
-void drawMenuScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.print("MENU ");
- int vMeterReading = analogRead(vMeterPin);
- if (vMeterReading > 3000) display.print("USB "); else display.print("BAT ");
- if (vMeterReading < 2294) display.print("LOW"); else {
- display.print(map(vMeterReading,0,3030,0,50)*0.1,1);
- display.print("V");
- }
- display.drawLine(0,9,127,9,WHITE);
- display.setCursor(0,12);
- display.println("TRANSPOSE");
- display.setCursor(0,21);
- display.println("OCTAVE");
- display.setCursor(0,30);
- display.println("MIDI CH");
- display.setCursor(0,39);
- display.println("ADJUST");
- display.setCursor(0,48);
- display.println("SETUP BR");
- display.setCursor(0,57);
- display.println("SETUP CTL");
- drawMenuCursor(mainMenuCursor, WHITE);
- display.display();
-}
-
-void drawRotatorMenuScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.print("ROTATOR SETUP");
- display.drawLine(0,9,127,9,WHITE);
- display.setCursor(0,12);
- display.println("INTERVAL");
- display.setCursor(0,21);
- display.println("ROTATE 1");
- display.setCursor(0,30);
- display.println("ROTATE 2");
- display.setCursor(0,39);
- display.println("ROTATE 3");
- display.setCursor(0,48);
- display.println("ROTATE 4");
- display.setCursor(0,57);
- display.println("PRIORITY");
- drawMenuCursor(rotatorMenuCursor, WHITE);
- display.display();
-}
-
-void drawSynthMenuScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.print("SYNTH SETUP");
- display.drawLine(0,9,127,9,WHITE);
- display.setCursor(0,12);
- display.println("WAVE");
- display.setCursor(0,21);
- display.println("CUTOFF");
- display.setCursor(0,30);
- display.println("RESO");
- display.setCursor(0,39);
- display.println("VOLUME");
- display.setCursor(0,48);
- display.println("FILTER");
- display.setCursor(0,57);
- display.println("");
- drawMenuCursor(synthMenuCursor, WHITE);
- display.display();
-}
-
-void drawPatchView(){
- display.clearDisplay();
- if (FPD){
- drawTrills();
- }
- if (FPD < 2){
- display.setTextColor(WHITE);
- display.setTextSize(6);
- if (patch < 10){
- // 1-9
- display.setCursor(48,10);
- } else if (patch < 100){
- // 10-99
- display.setCursor(31,10);
- } else {
- // 99-128
- display.setCursor(10,10);
- }
- display.println(patch);
- } else if (FPD == 2){
- display.setTextColor(WHITE);
- display.setTextSize(6);
- display.setCursor(10,10);
- display.println("SET");
- } else {
- display.setTextColor(WHITE);
- display.setTextSize(6);
- display.setCursor(10,10);
- display.println("CLR");
- }
- display.display();
-}
-
-void drawTrills(){
- if (K5) display.fillRect(0,0,5,5,WHITE); else display.drawRect(0,0,5,5,WHITE);
- if (K6) display.fillRect(10,0,5,5,WHITE); else display.drawRect(10,0,5,5,WHITE);
- if (K7) display.fillRect(20,0,5,5,WHITE); else display.drawRect(20,0,5,5,WHITE);
-}
-
-void clearSub(){
- display.fillRect(63,11,64,52,BLACK);
-}
-
-void drawSubTranspose(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("TRANSPOSE");
- plotTranspose(WHITE);
- display.display();
-}
-
-void plotTranspose(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(80,33);
- if ((transpose-12) > -1){
- display.println("+");
- display.setCursor(93,33);
- display.println(transpose-12);
- } else {
- display.println("-");
- display.setCursor(93,33);
- display.println(abs(transpose-12));
- }
-}
-void drawSubRotator(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("SEMITONES");
- //plotRotator(WHITE,value);
- forceRedraw = 1;
- display.display();
-}
-
-void plotRotator(int color,int value){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(80,33);
- if ((value) > -1){
- display.println("+");
- display.setCursor(93,33);
- display.println(value);
- } else {
- display.println("-");
- display.setCursor(93,33);
- display.println(abs(value));
- }
-}
-
-void drawSubPriority(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("MONO PRIO");
- plotPriority(WHITE);
- display.display();
-}
-
-void plotPriority(int color){
- display.setTextColor(color);
- display.setTextSize(2);
-
- if (priority){
- display.setCursor(83,33);
- //display.setCursor(79,33);
- display.println("LO");
- } else {
- display.setCursor(83,33);
- //display.setCursor(79,33);
- display.println("HI");
- }
-}
-
-
-void drawSubOctave(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(77,15);
- display.println("OCTAVE");
- plotOctave(WHITE);
- display.display();
-}
-
-void plotOctave(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(80,33);
- if ((octave-3) > -1){
- display.println("+");
- display.setCursor(93,33);
- display.println(octave-3);
- } else {
- display.println("-");
- display.setCursor(93,33);
- display.println(abs(octave-3));
- }
-}
-
-void drawSubMIDI(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("MIDI CHNL");
- plotMIDI(WHITE);
- display.display();
-}
-
-void plotMIDI(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(90,33);
- display.println(MIDIchannel);
-}
-
-void drawSubBreathCC(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("BREATH CC");
- plotBreathCC(WHITE);
- display.display();
-}
-
-void plotBreathCC(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- if (breathCC){
- switch (breathCC){
- case 1:
- display.setCursor(83,33);
- display.println("MW");
- break;
- case 2:
- display.setCursor(83,33);
- display.println("BR");
- break;
- case 3:
- display.setCursor(83,33);
- display.println("VL");
- break;
- case 4:
- display.setCursor(83,33);
- display.println("EX");
- break;
- case 5:
- display.setCursor(79,33);
- display.println("MW+");
- break;
- case 6:
- display.setCursor(79,33);
- display.println("BR+");
- break;
- case 7:
- display.setCursor(79,33);
- display.println("VL+");
- break;
- case 8:
- display.setCursor(79,33);
- display.println("EX+");
- break;
- }
- } else {
- display.setCursor(79,33);
- display.println("OFF");
- }
-}
-
-void drawSubBreathAT(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("BREATH AT");
- plotBreathAT(WHITE);
- display.display();
-}
-
-void plotBreathAT(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (breathAT){
- display.println("ON");
- } else {
- display.println("OFF");
- }
-}
-
-void drawSubVelocity(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(71,15);
- display.println("VELOCITY");
- plotVelocity(WHITE);
- display.display();
-}
-
-void plotVelocity(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (velocity){
- display.println(velocity);
- } else {
- display.println("DYN");
- }
-}
-
-void drawSubWave(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(80,15);
- display.println("SHAPE");
- plotWave(WHITE);
- display.display();
-}
-
-void plotWave(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- switch (wave){
- case 0:
- display.setCursor(79,33);
- display.println("SAW");
- break;
- case 1:
- display.setCursor(79,33);
- display.println("SQR");
- break;
- case 2:
- display.setCursor(79,33);
- display.println("TRI");
- break;
- }
-}
-
-void drawSubCutoff(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(80,15);
- display.println("LEVEL");
- plotCutoff(WHITE);
- display.display();
-}
-
-void plotCutoff(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(90,33);
- display.println(cutoff);
-}
-
-void drawSubReso(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(80,15);
- display.println("LEVEL");
- plotReso(WHITE);
- display.display();
-}
-
-void plotReso(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(90,33);
- display.println(reso);
-}
-
-void drawSubVol(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(80,15);
- display.println("LEVEL");
- plotVol(WHITE);
- display.display();
-}
-
-void plotVol(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- if (vol){
- display.setCursor(90,33);
- display.println(vol);
- } else {
- display.setCursor(79,33);
- display.println("OFF");
- }
-}
-
-void drawSubFilter(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(75,15);
- display.println("SELECT");
- plotFilter(WHITE);
- display.display();
-}
-
-void plotFilter(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- if (!filter){
- display.setCursor(79,33);
- display.println("INT");
- } else {
- display.setCursor(79,33);
- display.println("EXT");
- }
-}
-
-void drawSubCurve(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(80,15);
- display.println("CURVE");
- plotCurve(WHITE);
- display.display();
-}
-
-void plotCurve(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- switch (curve){
- case 0:
- display.setCursor(83,33);
- display.println("-4");
- break;
- case 1:
- display.setCursor(83,33);
- display.println("-3");
- break;
- case 2:
- display.setCursor(83,33);
- display.println("-2");
- break;
- case 3:
- display.setCursor(83,33);
- display.println("-1");
- break;
- case 4:
- display.setCursor(79,33);
- display.println("LIN");
- break;
- case 5:
- display.setCursor(83,33);
- display.println("+1");
- break;
- case 6:
- display.setCursor(83,33);
- display.println("+2");
- break;
- case 7:
- display.setCursor(83,33);
- display.println("+3");
- break;
- case 8:
- display.setCursor(83,33);
- display.println("+4");
- break;
- case 9:
- display.setCursor(83,33);
- display.println("S1");
- break;
- case 10:
- display.setCursor(83,33);
- display.println("S2");
- break;
- case 11:
- display.setCursor(83,33);
- display.println("Z1");
- break;
- case 12:
- display.setCursor(83,33);
- display.println("Z2");
- break;
- }
-}
-
-
-void drawSubPort(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(71,15);
- display.println("PORT/GLD");
- plotPort(WHITE);
- display.display();
-}
-
-void plotPort(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (portamento == 1){
- display.println("ON");
- } else if (portamento == 2){
- display.println("SW");
- } else {
- display.println("OFF");
- }
-}
-
-void drawSubPB(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("PITCHBEND");
- plotPB(WHITE);
- display.display();
-}
-
-void plotPB(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(76,33);
- if (PBdepth){
- display.println("1/");
- display.setCursor(101,33);
- display.println(PBdepth);
- } else {
- display.println("OFF");
- }
-}
-
-void drawSubExtra(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("EXTRA CTR");
- plotExtra(WHITE);
- display.display();
-}
-
-void plotExtra(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- switch (extraCT){
- case 0:
- display.setCursor(79,33);
- display.println("OFF");
- break;
- case 1:
- display.setCursor(83,33);
- display.println("MW");
- break;
- case 2:
- display.setCursor(83,33);
- display.println("FP");
- break;
- case 3:
- display.setCursor(83,33);
- display.println("FC");
- break;
- case 4:
- display.setCursor(83,33);
- display.println("SP");
- break;
- }
-}
-
-void drawSubVibrato(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(74,15);
- display.println("VIBRATO");
- plotVibrato(WHITE);
- display.display();
-}
-
-void plotVibrato(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- if (vibrato){
- display.setCursor(90,33);
- display.println(vibrato);
- } else {
- display.setCursor(79,33);
- display.println("OFF");
- }
-}
-
-void drawSubDeglitch(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(71,15);
- display.println("DEGLITCH");
- plotDeglitch(WHITE);
- display.display();
-}
-
-void plotDeglitch(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (deglitch){
- display.println(deglitch);
- display.setCursor(105,40);
- display.setTextSize(1);
- display.println("ms");
- } else {
- display.println("OFF");
- }
-}
-void drawSubPinkyKey(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(68,15);
- display.println("PINKY KEY");
- plotPinkyKey(WHITE);
- display.display();
-}
-
-void plotPinkyKey(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (pinkySetting < 12){
- display.println(pinkySetting - 12);
- } else if (pinkySetting == PBD) {
- display.println("PBD");
- } else {
- display.print("+");
- display.println(pinkySetting - 12);
- }
-}
-void drawSubVelSmpDl(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(69,15);
- display.println("VEL DELAY");
- plotVelSmpDl(WHITE);
- display.display();
-}
-
-void plotVelSmpDl(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- display.setCursor(79,33);
- if (velSmpDl){
- display.println(velSmpDl);
- display.setCursor(105,40);
- display.setTextSize(1);
- display.println("ms");
- } else {
- display.println("OFF");
- }
-}
-
-void drawSubVelBias(){
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(72,15);
- display.println("VEL BIAS");
- plotVelBias(WHITE);
- display.display();
-}
-
-void plotVelBias(int color){
- display.setTextColor(color);
- display.setTextSize(2);
- if (velBias){
- display.setCursor(90,33);
- display.println(velBias);
- } else {
- display.setCursor(79,33);
- display.println("OFF");
- }
-}
-
-void drawSetupBrMenuScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.println("SETUP BREATH");
- display.drawLine(0,9,127,9,WHITE);
- display.setCursor(0,12);
- display.println("BREATH CC");
- display.setCursor(0,21);
- display.println("BREATH AT");
- display.setCursor(0,30);
- display.println("VELOCITY");
- display.setCursor(0,39);
- display.println("CURVE");
- display.setCursor(0,48);
- display.println("VEL DELAY");
- display.setCursor(0,57);
- display.println("VEL BIAS");
-
- display.display();
-}
-
-void drawSetupCtMenuScreen(){
- // Clear the buffer.
- display.clearDisplay();
-
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.println("SETUP CTRLS");
- display.drawLine(0,9,127,9,WHITE);
- display.setCursor(0,12);
- display.println("PORT/GLD");
- display.setCursor(0,21);
- display.println("PITCHBEND");
- display.setCursor(0,30);
- display.println("EXTRA CTR");
- display.setCursor(0,39);
- display.println("VIBRATO");
- display.setCursor(0,48);
- display.println("DEGLITCH");
- display.setCursor(0,57);
- display.println("PINKY KEY");
-
- display.display();
-}
-
-void drawSensorPixels(){
- int pos,oldpos;
- int redraw=0;
- if ((state == BREATH_ADJ_IDL) || (state == BREATH_ADJ_THR) || (state == BREATH_ADJ_MAX)){
- pos = map(constrain(pressureSensor, breathLoLimit, breathHiLimit), breathLoLimit, breathHiLimit, 28, 118);
- oldpos = map(constrain(lastPressure, breathLoLimit, breathHiLimit), breathLoLimit, breathHiLimit, 28, 118);
- if (pos!=oldpos){
- display.drawPixel(oldpos, 38, BLACK);
- display.drawPixel(pos, 38, WHITE);
- display.display();
- } else if (forcePix) {
- display.drawPixel(pos, 38, WHITE);
- display.display();
- }
- lastPressure=pressureSensor;
- }
- if ((state == PORTAM_ADJ_IDL) || (state == PORTAM_ADJ_THR) || (state == PORTAM_ADJ_MAX)){
- pos = map(constrain(biteSensor,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
- oldpos = map(constrain(lastBite,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
- if (pos!=oldpos){
- display.drawPixel(oldpos, 38, BLACK);
- display.drawPixel(pos, 38, WHITE);
- display.display();
- } else if (forcePix) {
- display.drawPixel(pos, 38, WHITE);
- display.display();
- }
- lastBite=biteSensor;
- }
- if ((state == PITCHB_ADJ_IDL) || (state == PITCHB_ADJ_THR) || (state == PITCHB_ADJ_MAX)){
- pos = map(constrain(pbUp, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- oldpos = map(constrain(lastPbUp, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- if (pos!=oldpos){
- display.drawPixel(oldpos, 38, BLACK);
- display.drawPixel(pos, 38, WHITE);
- redraw=1;
- } else if (forcePix) {
- display.drawPixel(pos, 38, WHITE);
- redraw=1;
- }
- pos = map(constrain(pbDn, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- oldpos = map(constrain(lastPbDn, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- if (pos!=oldpos){
- display.drawPixel(oldpos, 38, BLACK);
- display.drawPixel(pos, 38, WHITE);
- redraw=1;
- } else if (forcePix) {
- display.drawPixel(pos, 38, WHITE);
- redraw=1;
- }
- if (redraw){
- display.display();
- redraw=0;
- }
- lastPbUp=pbUp;
- lastPbDn=pbDn;
- }
- if ((state == EXTRAC_ADJ_IDL) || (state == EXTRAC_ADJ_THR) || (state == EXTRAC_ADJ_MAX)){
- pos = map(constrain(exSensor, extracLoLimit, extracHiLimit), extracLoLimit, extracHiLimit, 28, 118);
- oldpos = map(constrain(lastEx, extracLoLimit, extracHiLimit), extracLoLimit, extracHiLimit, 28, 118);
- if (pos!=oldpos){
- display.drawPixel(oldpos, 38, BLACK);
- display.drawPixel(pos, 38, WHITE);
- display.display();
- } else if (forcePix) {
- display.drawPixel(pos, 38, WHITE);
- display.display();
- }
- lastEx=exSensor;
- }
- if ((state == CTOUCH_ADJ_IDL) || (state == CTOUCH_ADJ_THR)){
- display.drawLine(28,38,118,38,BLACK);
- for (byte i=0; i<12; i++){
- pos = map(constrain(touchSensor.filteredData(i), ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- display.drawPixel(pos, 38, WHITE);
- }
- display.display();
- }
- forcePix = 0;
-}
-
-void writeSetting(byte address, unsigned short value){
- union {
- byte v[2];
- unsigned short val;
- } data;
- data.val = value;
- EEPROM.write(address, data.v[0]);
- EEPROM.write(address+1, data.v[1]);
-}
-
-unsigned short readSetting(byte address){
- union {
- byte v[2];
- unsigned short val;
- } data;
- data.v[0] = EEPROM.read(address);
- data.v[1] = EEPROM.read(address+1);
- return data.val;
-}
-
-
+#include
+#include
+#include
+#include
+#include
+#include
+#include // for the breath signal LP filtering, https://github.com/edgar-bonet/Filters
+#include
+#include
+#include
+
+/*
+NAME: NuEVI
+WRITTEN BY: JOHAN BERGLUND
+DATE: 2018-04-19
+FILE SAVED AS: NuEVI.ino
+FOR: PJRC Teensy 3.2 and a MPR121 capactive touch sensor board.
+ Uses an SSD1306 controlled OLED display communicating over I2C.
+PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath sensor
+ and capacitive touch keys. Output to both USB MIDI and DIN MIDI.
+
+*/
+
+//_______________________________________________________________________________________________ DECLARATIONS
+
+// Compile options, comment/uncomment to change
+
+#define REVB
+
+
+// Pin definitions
+
+// Teensy pins
+
+#define specialKeyPin 0 // SK or S2
+#define halfPitchBendKeyPin 1 // PD or S1
+
+#define bitePin 17
+#define extraPin 16
+#define pbUpPin 23
+#define pbDnPin 22
+#define vibratoPin 15
+
+#define dPin 3
+#define ePin 4
+#define uPin 5
+#define mPin 6
+
+#define bLedPin 10
+#define pLedPin 9
+
+#define vMeterPin A11
+
+#define PBD 12
+
+#if defined(REVB)
+
+// MPR121 pins Rev B (angled pins at top edge for main keys and rollers)
+
+#define R1Pin 0
+#define R2Pin 2
+#define R3Pin 4
+#define R4Pin 6
+#define R5Pin 8
+
+#define K4Pin 10
+#define K1Pin 1
+#define K2Pin 3
+#define K3Pin 5
+#define K5Pin 7
+#define K6Pin 9
+#define K7Pin 11
+
+/*
+ * PINOUT ON PCB vs PINS ON MPR121 - Rev. B
+ *
+ * (R1) (R2) (R3/6) (R4) (R5) (K4) <-> (00) (02) (04) (06) (08) (10)
+ *
+ * (K1) (K2) (K3) (K5) (K6) (K7) <-> (01) (03) (05) (07) (09) (11)
+ *
+ */
+
+# else
+
+// MPR121 pins Rev A (upright pins below MPR121 for main keys and rollers)
+
+#define R1Pin 10
+#define R2Pin 11
+#define R3Pin 8
+#define R4Pin 9
+#define R5Pin 6
+
+#define K4Pin 7
+#define K1Pin 4
+#define K2Pin 5
+#define K3Pin 2
+#define K5Pin 3
+#define K6Pin 0
+#define K7Pin 1
+
+/*
+ * PINOUT ON PCB vs PINS ON MPR121 - Rev. A
+ *
+ * (R2) (R4) (K4) (K2) (K5) (K7) <-> (11) (09) (07) (05) (03) (01)
+ *
+ * (R1) (R3/6) (R5) (K1) (K3) (K6) <-> (10) (08) (06) (04) (02) (00)
+ *
+ */
+
+#endif
+
+#define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak)
+#define touch_Thr 1200 // sensitivity for Teensy touch sensors
+#define CCN_Port 5 // Controller number for portamento level
+#define CCN_PortOnOff 65// Controller number for portamento on/off
+
+
+// Send CC data no more than every CC_INTERVAL
+// milliseconds
+#define CC_INTERVAL 5
+
+
+// The three states of our main state machine
+
+// No note is sounding
+#define NOTE_OFF 1
+
+// We've observed a transition from below to above the
+// threshold value. We wait a while to see how fast the
+// breath velocity is increasing
+#define RISE_WAIT 2
+
+// A note is sounding
+#define NOTE_ON 3
+
+
+//display states
+#define DISPLAYOFF_IDL 0
+#define MAIN_MENU 1
+#define PATCH_VIEW 2
+#define BREATH_ADJ_IDL 10
+#define BREATH_ADJ_THR 11
+#define BREATH_ADJ_MAX 12
+#define PORTAM_ADJ_IDL 20
+#define PORTAM_ADJ_THR 21
+#define PORTAM_ADJ_MAX 22
+#define PITCHB_ADJ_IDL 30
+#define PITCHB_ADJ_THR 31
+#define PITCHB_ADJ_MAX 32
+#define EXTRAC_ADJ_IDL 40
+#define EXTRAC_ADJ_THR 41
+#define EXTRAC_ADJ_MAX 42
+#define VIBRAT_ADJ_IDL 50
+#define VIBRAT_ADJ_THR 51
+#define VIBRAT_ADJ_DPT 52
+#define CTOUCH_ADJ_IDL 60
+#define CTOUCH_ADJ_THR 61
+#define SETUP_BR_MENU 80
+#define SETUP_CT_MENU 90
+#define ROTATOR_MENU 100
+#define SYNTH_MENU 110
+
+// EEPROM addresses for settings
+#define VERSION_ADDR 0
+#define BREATH_THR_ADDR 2
+#define BREATH_MAX_ADDR 4
+#define PORTAM_THR_ADDR 6
+#define PORTAM_MAX_ADDR 8
+#define PITCHB_THR_ADDR 10
+#define PITCHB_MAX_ADDR 12
+#define TRANSP_ADDR 14
+#define MIDI_ADDR 16
+#define BREATH_CC_ADDR 18
+#define BREATH_AT_ADDR 20
+#define VELOCITY_ADDR 22
+#define PORTAM_ADDR 24
+#define PB_ADDR 26
+#define EXTRA_ADDR 28
+#define VIBRATO_ADDR 30
+#define DEGLITCH_ADDR 32
+#define EXTRAC_THR_ADDR 34
+#define EXTRAC_MAX_ADDR 36
+#define PATCH_ADDR 38
+#define OCTAVE_ADDR 40
+#define CTOUCH_THR_ADDR 42
+#define BREATHCURVE_ADDR 44
+#define VEL_SMP_DL_ADDR 46
+#define VEL_BIAS_ADDR 48
+#define PINKY_KEY_ADDR 50
+#define FP1_ADDR 52
+#define FP2_ADDR 54
+#define FP3_ADDR 56
+#define FP4_ADDR 58
+#define FP5_ADDR 60
+#define FP6_ADDR 62
+#define FP7_ADDR 64
+#define DIPSW_BITS_ADDR 66
+#define PARAL_ADDR 68
+#define ROTN1_ADDR 70
+#define ROTN2_ADDR 72
+#define ROTN3_ADDR 74
+#define ROTN4_ADDR 76
+#define PRIO_ADDR 78
+
+//"factory" values for settings
+#define VERSION 28
+#define BREATH_THR_FACTORY 1400
+#define BREATH_MAX_FACTORY 4000
+#define PORTAM_THR_FACTORY 2600
+#define PORTAM_MAX_FACTORY 3300
+#define PITCHB_THR_FACTORY 1400
+#define PITCHB_MAX_FACTORY 2300
+#define EXTRAC_THR_FACTORY 1200
+#define EXTRAC_MAX_FACTORY 2400
+#define TRANSP_FACTORY 12 // 12 is 0 transpose
+#define MIDI_FACTORY 1 // 1-16
+#define BREATH_CC_FACTORY 2 //thats CC#2, see ccList
+#define BREATH_AT_FACTORY 0 //aftertouch default off
+#define VELOCITY_FACTORY 0 // 0 is dynamic/breath controlled velocity
+#define PORTAM_FACTORY 2 // 0 - OFF, 1 - ON, 2 - SW
+#define PB_FACTORY 1 // 0 - OFF, 1 - 12
+#define EXTRA_FACTORY 2 // 0 - OFF, 1 - Modulation wheel, 2 - Foot pedal, 3 - Filter Cutoff, 4 - Sustain pedal
+#define VIBRATO_FACTORY 4 // 0 - OFF, 1 - 9 depth
+#define DEGLITCH_FACTORY 20 // 0 - OFF, 5 to 70 ms in steps of 5
+#define PATCH_FACTORY 1 // MIDI program change 1-128
+#define OCTAVE_FACTORY 3 // 3 is 0 octave change
+#define CTOUCH_THR_FACTORY 125 // MPR121 touch threshold
+#define BREATHCURVE_FACTORY 4 // 0 to 12 (-4 to +4, S1 to S4)
+#define VEL_SMP_DL_FACTORY 20 // 0 to 30 ms in steps of 5
+#define VEL_BIAS_FACTORY 0 // 0 to 9
+#define PINKY_KEY_FACTORY 12 // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 22 (QuickTranspose +1 to +12)
+#define DIPSW_BITS_FACTORY 0 // virtual dip switch settings for special modes (work in progress)
+#define PARAL_FACTORY 31 // 7 (+ 24) Rotator parallel
+#define ROTN1_FACTORY 19 // -5 (+24) Rotation 1
+#define ROTN2_FACTORY 14 // -10 (+24) Rotation 2
+#define ROTN3_FACTORY 17 // -7 (+24) Rotation 3
+#define ROTN4_FACTORY 10 // -14 (+24) Rotation 4
+#define PRIO_FACTORY 0 // Mono priority 0 - BAS(e note), 1 - ROT(ating note)
+
+#define OLED_RESET 4
+Adafruit_SSD1306 display(OLED_RESET);
+
+#define LOGO16_GLCD_HEIGHT 16
+#define LOGO16_GLCD_WIDTH 16
+
+ // 'NuEVI' logo
+static const unsigned char PROGMEM nuevi_logo_bmp[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x07, 0x73, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x0e, 0xe3, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x00, 0x1d, 0xc3, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x3b, 0x83, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x77, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xee, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x01, 0xdc, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x03, 0xb8, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x07, 0x70, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x0e, 0xe0, 0x03, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x1d, 0xc0, 0x03, 0x60, 0x00,
+0x00, 0x03, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x3b, 0x80, 0x03, 0x60, 0x00,
+0x00, 0x03, 0x00, 0xe0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x77, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x03, 0x00, 0xc0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0xee, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x03, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x61, 0xdc, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x07, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x63, 0xb8, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x07, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x67, 0x70, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x06, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x6e, 0xe0, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x06, 0x60, 0xc1, 0x01, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x7d, 0xc0, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x06, 0x30, 0xc3, 0x03, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x7b, 0x80, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x0c, 0x30, 0xc3, 0x07, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x77, 0x00, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x0c, 0x1c, 0xc3, 0x06, 0x01, 0x80, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x0c, 0x0c, 0xc2, 0x0e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x0c, 0x0e, 0xc6, 0x1e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xf8, 0x00, 0x00, 0x03, 0x60, 0x00,
+0x00, 0x0c, 0x07, 0xc6, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x03, 0xc6, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x01, 0xc7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x00, 0xc7, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const int16_t AKWF_vgame_0006[257] = {
+ 1, 2, 2, 2, 4, 5, 6, 7, 9,
+ 7, 10, 10, 11, 11, 13, 12, 15, 12, 16,
+ 14, 16, 14, 18, 16, 18, 15, 20, 16, 21,
+ 18, 20, 21, 20, 21, 19, 24, 19, 25, 16,
+ 27, 15, 29, 13, 32, 13, 34, 11, 34, 12,
+ 34, 13, 33, 17, 30, 20, 25, 25, 19, 32,
+ 12, 41, 3, 50, -7, 63, -21, 78, -38, 98,
+ -63, 128, -105, 189, -211, 370, -473, 11424, 28860, 30309,
+ 32767, 20949, 3562, 277, -2542, -2886, -3011, -2718, -2830, -2678,
+ -2711, -2583, -2584, -2495, -2470, -2404, -2359, -2315, -2257, -2226,
+ -2161, -2140, -2068, -2054, -1980, -1970, -1897, -1888, -1818, -1808,
+ -1743, -1731, -1670, -1654, -1601, -1579, -1535, -1510, -1469, -1442,
+ -1408, -1376, -1348, -1315, -1289, -1255, -1233, -1199, -1178, -1145,
+ -1123, -1092, -1073, -1044, -1024, -995, -975, -950, -929, -906,
+ -885, -864, -842, -823, -803, -783, -764, -746, -727, -710,
+ -691, -675, -656, -641, -625, -608, -594, -579, -563, -549,
+ -535, -521, -507, -494, -480, -468, -456, -442, -430, -418,
+ -407, -397, -386, -375, -364, -353, -343, -334, -324, -314,
+ -306, -296, -288, -279, -271, -262, -255, -247, -240, -232,
+ -225, -218, -211, -204, -198, -191, -184, -178, -172, -167,
+ -162, -155, -150, -144, -140, -134, -129, -124, -120, -116,
+ -112, -109, -103, -100, -95, -92, -87, -85, -81, -77,
+ -74, -70, -67, -63, -60, -58, -56, -52, -49, -48,
+ -44, -42, -40, -37, -35, -33, -31, -29, -26, -24,
+ -23, -21, -20, -17, -15, -14, -12, -11, -9, -8,
+ -7, -6, -5, -3, -1, -1, 0, 1
+};
+
+const int16_t AKWF_vgtri_0008[257] = {
+ 63, 609, 287, 611, 129, 1825, 2747, 2663, 2408,
+ 3562, 5515, 5160, 5230, 5504, 7586, 7340, 7533, 7305, 7687,
+ 9613, 9631, 9637, 9524, 11857, 12359, 12250, 12081, 13593, 14672,
+ 14355, 14361, 15180, 16991, 16376, 16863, 16293, 17459, 18916, 18848,
+ 18683, 19150, 21474, 21446, 21417, 21419, 23298, 23784, 23498, 23745,
+ 23423, 25488, 25834, 25908, 25526, 27395, 28652, 28406, 28302, 29161,
+ 30890, 30482, 30739, 30475, 31022, 32065, 31842, 32069, 31644, 29346,
+ 29267, 29344, 29327, 27546, 26910, 27287, 26952, 27382, 25289, 24917,
+ 24820, 25244, 23430, 22091, 22333, 22448, 21624, 19895, 20195, 20142,
+ 19911, 17841, 17994, 17872, 18024, 17770, 15792, 15732, 15724, 15878,
+ 13625, 12958, 13165, 13239, 11947, 10581, 11185, 10683, 11303, 9673,
+ 8649, 8681, 8968, 7981, 5921, 6172, 6155, 5952, 3918, 3941,
+ 3920, 3973, 3846, 1818, 1744, 1706, 1893, 33, -562, -425,
+ -292, -1562, -2952, -2401, -2849, -2282, -3780, -4860, -6817, -7657,
+ -7320, -7501, -7404, -7421, -7549, -9619, -9605, -9669, -9484,-11431,
+-14014,-13961,-14049,-13933,-14078,-13894,-14153,-13685,-15369,-16886,
+-16534,-16605,-16969,-19998,-21140,-20949,-21022,-20982,-21006,-21004,
+-20963,-21098,-23516,-23658,-23634,-23504,-25279,-28009,-27935,-28085,
+-27892,-28127,-27839,-28221,-27607,-29387,-30757,-30699,-30366,-31414,
+-32079,-30342,-30740,-30564,-30652,-30617,-30606,-30669,-30547,-28194,
+-27905,-28032,-28080,-26491,-23630,-23689,-23533,-23720,-23513,-23745,
+-23459,-23902,-22617,-21243,-21480,-21483,-21109,-17813,-16475,-16670,
+-16600,-16636,-16612,-16626,-16626,-16623,-14639,-14373,-14424,-14589,
+-12705, -9668, -9671, -9554, -9699, -9536, -9725, -9480, -9883, -8706,
+ -7231, -7497, -7458, -7173, -3925, -2474, -2670, -2602, -2637, -2612,
+ -2630, -2620, -2658, -712, -321, -490, -442, 63
+};
+
+const int16_t AKWF_violin_0010[257] = {
+ 27, 303, 1129, 2595, 4250, 5804, 7288, 8741, 10134,
+ 11437, 12646, 13753, 14783, 15739, 16600, 17358, 17995, 18484, 18819,
+ 19029, 19146, 19172, 19102, 18942, 18690, 18357, 17953, 17508, 17045,
+ 16549, 15998, 15414, 14847, 14338, 13865, 13406, 12962, 12521, 12076,
+ 11672, 11380, 11203, 11075, 10944, 10836, 10785, 10802, 10885, 11040,
+ 11260, 11529, 11844, 12213, 12636, 13125, 13679, 14304, 14993, 15730,
+ 16512, 17335, 18205, 19111, 20049, 21018, 22026, 23082, 24153, 25186,
+ 26174, 27109, 27982, 28814, 29631, 30426, 31136, 31727, 32189, 32513,
+ 32694, 32764, 32754, 32643, 32391, 31986, 31429, 30703, 29836, 28882,
+ 27852, 26719, 25456, 24081, 22672, 21248, 19761, 18182, 16530, 14891,
+ 13302, 11750, 10238, 8774, 7337, 5936, 4571, 3254, 1999, 838,
+ -206, -1154, -2020, -2805, -3462, -3967, -4341, -4611, -4787, -4881,
+ -4906, -4858, -4722, -4495, -4199, -3848, -3448, -2979, -2446, -1905,
+ -1410, -956, -492, -1, 487, 952, 1385, 1766, 2086, 2364,
+ 2632, 2871, 3014, 3016, 2915, 2754, 2536, 2256, 1914, 1498,
+ 981, 364, -325, -1065, -1872, -2795, -3839, -4945, -6079, -7240,
+ -8461, -9748,-11061,-12369,-13671,-15008,-16373,-17730,-19056,-20330,
+-21545,-22694,-23794,-24888,-25950,-26909,-27739,-28460,-29112,-29690,
+-30154,-30490,-30711,-30828,-30849,-30782,-30640,-30412,-30088,-29668,
+-29163,-28585,-27940,-27231,-26473,-25692,-24920,-24149,-23323,-22440,
+-21568,-20770,-20039,-19334,-18639,-17973,-17337,-16749,-16256,-15873,
+-15569,-15310,-15090,-14918,-14789,-14721,-14736,-14834,-14992,-15204,
+-15451,-15702,-15952,-16211,-16480,-16760,-17041,-17318,-17591,-17852,
+-18087,-18267,-18377,-18423,-18407,-18336,-18233,-18101,-17901,-17587,
+-17175,-16711,-16203,-15622,-14930,-14131,-13237,-12246,-11172,-10039,
+ -8840, -7580, -6262, -4870, -3317, -1690, -473, 27
+};
+
+const int16_t AKWF_oboe_0006[257] = {
+ 8, 267, 522, 775, 1026, 1276, 1525, 1768, 2015,
+ 2254, 2496, 2736, 2980, 3228, 3484, 3750, 4029, 4321, 4627,
+ 4957, 5314, 5705, 6136, 6607, 7119, 7679, 8282, 8931, 9626,
+ 10366, 11151, 11982, 12854, 13771, 14724, 15718, 16754, 17818, 18909,
+ 20012, 21117, 22221, 23311, 24383, 25434, 26446, 27412, 28331, 29186,
+ 29972, 30688, 31317, 31868, 32317, 32670, 32767, 32761, 32767, 32764,
+ 32762, 32523, 32105, 31593, 30966, 30239, 29403, 28475, 27447, 26323,
+ 25111, 23820, 22460, 21052, 19591, 18097, 16571, 15021, 13464, 11900,
+ 10330, 8772, 7225, 5698, 4210, 2752, 1341, -13, -1307, -2533,
+ -3692, -4791, -5819, -6782, -7679, -8501, -9261, -9956,-10585,-11155,
+-11667,-12121,-12524,-12878,-13190,-13465,-13708,-13925,-14116,-14289,
+-14453,-14616,-14786,-14974,-15179,-15404,-15651,-15919,-16208,-16519,
+-16850,-17200,-17571,-17961,-18365,-18781,-19209,-19639,-20077,-20515,
+-20949,-21376,-21787,-22182,-22560,-22912,-23235,-23527,-23779,-23989,
+-24156,-24277,-24347,-24369,-24337,-24254,-24116,-23925,-23674,-23367,
+-22996,-22558,-22057,-21493,-20871,-20195,-19465,-18689,-17871,-17011,
+-16116,-15192,-14250,-13299,-12353,-11419,-10490, -9569, -8654, -7737,
+ -6822, -5901, -4975, -4056, -3147, -2262, -1407, -581, 209, 964,
+ 1679, 2346, 2960, 3523, 4026, 4470, 4857, 5193, 5490, 5755,
+ 5990, 6199, 6375, 6520, 6630, 6702, 6733, 6724, 6678, 6594,
+ 6470, 6305, 6096, 5846, 5553, 5222, 4859, 4472, 4068, 3656,
+ 3236, 2808, 2374, 1937, 1491, 1036, 579, 116, -343, -794,
+ -1236, -1658, -2057, -2433, -2781, -3105, -3408, -3684, -3939, -4171,
+ -4376, -4555, -4705, -4819, -4899, -4941, -4948, -4920, -4856, -4756,
+ -4621, -4453, -4251, -4015, -3755, -3475, -3184, -2888, -2587, -2286,
+ -1983, -1683, -1387, -1094, -806, -528, -256, 8
+};
+
+const int16_t AKWF_altosax_0013[257] = {
+ 8, 934, 1757, 2638, 3598, 4607, 5581, 6586, 7689,
+ 8646, 9725, 10834, 12000, 13106, 14181, 15300, 16377, 17445, 18545,
+ 19676, 20849, 21955, 23006, 23981, 24859, 25715, 26548, 27465, 28299,
+ 29019, 29731, 30311, 30822, 31392, 31861, 32242, 32505, 32679, 32767,
+ 32759, 32734, 32668, 32605, 32508, 32224, 31908, 31595, 31137, 30655,
+ 30172, 29538, 28750, 27959, 27072, 26057, 24937, 23664, 22228, 20739,
+ 19332, 17922, 16535, 15097, 13764, 12691, 11815, 11097, 10334, 9541,
+ 8660, 7781, 6784, 5645, 4402, 3061, 1763, 414, -967, -2355,
+ -3633, -4711, -5737, -6695, -7510, -8359, -9124, -9794,-10386,-10944,
+-11430,-11840,-12295,-12690,-13049,-13436,-13791,-14104,-14336,-14452,
+-14495,-14466,-14485,-14466,-14357,-14255,-14105,-13952,-13820,-13584,
+-13384,-13189,-12951,-12723,-12493,-12211,-11873,-11578,-11242,-10853,
+-10496,-10149, -9693, -9160, -8531, -7916, -7337, -6652, -5955, -5338,
+ -4709, -4165, -3686, -3221, -2916, -2549, -2221, -1909, -1621, -1312,
+ -1023, -879, -752, -703, -638, -631, -657, -678, -783, -920,
+ -1049, -1247, -1493, -1745, -1996, -2203, -2414, -2671, -2936, -3229,
+ -3543, -3908, -4205, -4536, -4896, -5202, -5584, -5959, -6371, -6794,
+ -7162, -7496, -7841, -8162, -8495, -8845, -9179, -9510, -9784,-10049,
+-10332,-10596,-10844,-11051,-11225,-11349,-11471,-11550,-11581,-11579,
+-11589,-11672,-11690,-11688,-11679,-11666,-11603,-11594,-11632,-11563,
+-11467,-11350,-11294,-11267,-11210,-11105,-10995,-10919,-10846,-10764,
+-10713,-10727,-10755,-10765,-10764,-10728,-10627,-10543,-10549,-10573,
+-10531,-10489,-10433,-10295,-10183,-10164,-10141,-10110,-10039, -9999,
+ -9982, -9883, -9737, -9605, -9494, -9428, -9332, -9216, -9024, -8735,
+ -8516, -8309, -8102, -7768, -7410, -6969, -6519, -6075, -5624, -5218,
+ -4672, -4132, -3663, -3046, -2306, -1555, -774, 8
+};
+
+const int16_t AKWF_sinharm_0011[257] = {
+ 0, 3519, 6994, 10388, 13660, 16769, 19684, 22368, 24792,
+ 26928, 28755, 30254, 31411, 32218, 32668, 32763, 32508, 31910, 30987,
+ 29754, 28237, 26457, 24447, 22238, 19860, 17355, 14758, 12104, 9435,
+ 6784, 4192, 1691, -685, -2907, -4946, -6777, -8379, -9739,-10843,
+-11681,-12248,-12549,-12585,-12365,-11903,-11215,-10322, -9246, -8013,
+ -6653, -5196, -3670, -2110, -550, 980, 2449, 3825, 5082, 6192,
+ 7130, 7879, 8419, 8737, 8827, 8678, 8291, 7669, 6819, 5752,
+ 4482, 3027, 1409, -345, -2212, -4158, -6155, -8168,-10164,-12111,
+-13974,-15722,-17324,-18749,-19972,-20969,-21716,-22201,-22404,-22322,
+-21945,-21276,-20315,-19074,-17561,-15793,-13795,-11587, -9198, -6657,
+ -4000, -1258, 1528, 4324, 7090, 9789, 12382, 14831, 17105, 19172,
+ 20998, 22559, 23833, 24798, 25441, 25752, 25722, 25355, 24650, 23615,
+ 22266, 20620, 18696, 16520, 14121, 11534, 8788, 5926, 2983, 0,
+ -2982, -5926, -8789,-11534,-14122,-16520,-18695,-20620,-22266,-23615,
+-24649,-25355,-25722,-25753,-25441,-24798,-23833,-22560,-20998,-19172,
+-17105,-14831,-12382, -9789, -7091, -4323, -1529, 1258, 3999, 6656,
+ 9198, 11587, 13796, 15794, 17560, 19073, 20315, 21276, 21945, 22322,
+ 22405, 22200, 21716, 20968, 19973, 18749, 17324, 15722, 13975, 12112,
+ 10165, 8168, 6154, 4158, 2212, 346, -1409, -3027, -4482, -5752,
+ -6819, -7670, -8291, -8678, -8827, -8737, -8418, -7879, -7130, -6192,
+ -5082, -3825, -2449, -980, 550, 2110, 3669, 5195, 6653, 8013,
+ 9246, 10321, 11215, 11903, 12366, 12585, 12550, 12249, 11680, 10844,
+ 9739, 8380, 6777, 4946, 2907, 686, -1691, -4192, -6783, -9434,
+-12103,-14757,-17356,-19860,-22238,-24446,-26458,-28237,-29755,-30987,
+-31911,-32508,-32763,-32668,-32217,-31411,-30254,-28755,-26928,-24792,
+-22369,-19684,-16770,-13660,-10388, -6994, -3519, 0
+};
+
+const int16_t AKWF_raw_0004[257] = {
+ 0, 512, 1024, 1534, 2047, 2558, 3072, 3582, 4097,
+ 4607, 5119, 5632, 6143, 6656, 7168, 7681, 8191, 8703, 9215,
+ 9728, 10239, 10752, 11264, 11776, 12288, 12799, 13313, 13823, 14337,
+ 14847, 15360, 15872, 16385, 16895, 17408, 17920, 18432, 18943, 19456,
+ 19968, 20480, 20993, 21503, 22016, 22527, 23041, 23550, 24065, 24574,
+ 25089, 25597, 26114, 26621, 27139, 27644, 28163, 28667, 29188, 29690,
+ 30214, 30713, 31240, 31733, 32275, 32662, 32244, 31699, 31193, 30659,
+ 30149, 29618, 29108, 28579, 28065, 27539, 27024, 26498, 25984, 25460,
+ 24946, 24422, 23907, 23384, 22868, 22347, 21830, 21311, 20795, 20275,
+ 19759, 19241, 18724, 18206, 17687, 17173, 16655, 16140, 15622, 15107,
+ 14590, 14075, 13558, 13044, 12528, 12014, 11497, 10983, 10468, 9954,
+ 9438, 8924, 8411, 7896, 7383, 6870, 6356, 5842, 5330, 4817,
+ 4304, 3792, 3279, 2767, 2254, 1742, 1230, 720, 208, -302,
+ -813, -1325, -1836, -2346, -2857, -3367, -3876, -4387, -4896, -5406,
+ -5915, -6426, -6933, -7444, -7952, -8461, -8968, -9479, -9984,-10495,
+-11000,-11510,-12014,-12526,-13029,-13539,-14044,-14552,-15057,-15566,
+-16070,-16577,-17082,-17588,-18094,-18598,-19106,-19605,-20116,-20614,
+-21126,-21622,-22137,-22629,-23146,-23634,-24154,-24641,-25162,-25647,
+-26167,-26653,-27171,-27662,-28160,-28628,-29038,-29389,-29762,-30127,
+-30471,-30871,-31135,-32329,-32371,-31676,-31279,-30682,-30239,-29670,
+-29205,-28652,-28174,-27635,-27146,-26615,-26118,-25595,-25091,-24574,
+-24065,-23552,-23038,-22529,-22013,-21506,-20989,-20483,-19965,-19459,
+-18941,-18434,-17916,-17411,-16892,-16386,-15870,-15362,-14845,-14338,
+-13822,-13313,-12798,-12288,-11775,-11263,-10753,-10239, -9729, -9215,
+ -8705, -8191, -7681, -7167, -6656, -6142, -5632, -5119, -4607, -4095,
+ -3583, -3071, -2559, -2048, -1535, -1024, -512, 0
+};
+
+#if (SSD1306_LCDHEIGHT != 64)
+#error("Height incorrect, please fix Adafruit_SSD1306.h!");
+#endif
+
+
+//variables setup
+
+unsigned short breathThrVal;// = 350;
+unsigned short breathMaxVal;// = 1000;
+unsigned short portamThrVal;// = 1730;
+unsigned short portamMaxVal;// = 3300;
+unsigned short pitchbThrVal;// = 1200;
+unsigned short pitchbMaxVal;// = 2400;
+unsigned short extracThrVal;// = 1200;
+unsigned short extracMaxVal;// = 2400;
+unsigned short ctouchThrVal;// = 120;
+unsigned short transpose;
+unsigned short MIDIchannel;
+unsigned short breathCC; // OFF:MW:BR:VL:EX:MW+:BR+:VL+:EX+
+unsigned short breathAT;
+unsigned short velocity;
+unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
+unsigned short PBdepth; // OFF:1-12 divider
+unsigned short extraCT; // OFF:MW:FP:FC:SP
+unsigned short vibrato; // OFF:1-9
+unsigned short deglitch; // 0-70 ms in steps of 5
+unsigned short patch; // 1-128
+unsigned short octave;
+unsigned short curve;
+unsigned short velSmpDl; // 0-30 ms
+unsigned short velBias; // 0-9
+unsigned short pinkySetting; // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 24 (QuickTranspose +1 to +12)
+unsigned short dipSwBits; // virtual dip switch settings for special modes (work in progress)
+unsigned short priority; // mono priority for rotator chords
+unsigned short wave = 2; // SAW, SQR, TRI
+unsigned short cutoff = 7; // 0-9
+unsigned short reso = 2; //0-9
+unsigned short filter = 0; // 0 INT, 1 EXT
+unsigned short vol = 7; // 0-9
+
+unsigned short fastPatch[7] = {0,0,0,0,0,0,0};
+
+byte rotatorOn = 0;
+byte currentRotation = 0;
+int rotations[4] = { -5, -10, -7, -14 }; // semitones { -5, -10, -7, -14 };
+int parallel = 7; // semitones
+
+int breathLoLimit = 0;
+int breathHiLimit = 4095;
+int portamLoLimit = 1000;
+int portamHiLimit = 5000;
+int pitchbLoLimit = 500;
+int pitchbHiLimit = 4000;
+int extracLoLimit = 500;
+int extracHiLimit = 4000;
+int ctouchLoLimit = 50;
+int ctouchHiLimit = 350;
+
+int breathStep;
+int portamStep;
+int pitchbStep;
+int extracStep;
+int ctouchStep;
+
+int minOffset = 50;
+
+int deumButtons = 0;
+int lastDeumButtons = 0;
+int deumButtonState = 0;
+byte buttonPressedAndNotUsed = 0;
+
+byte mainMenuCursor = 1;
+byte setupBrMenuCursor = 1;
+byte setupCtMenuCursor = 1;
+byte rotatorMenuCursor = 1;
+byte synthMenuCursor = 1;
+
+byte state = 0;
+byte stateFirstRun = 1;
+
+byte subTranspose = 0;
+byte subOctave = 0;
+byte subMIDI = 0;
+byte subBreathCC = 0;
+byte subBreathAT = 0;
+byte subVelocity = 0;
+byte subCurve = 0;
+byte subPort = 0;
+byte subPB = 0;
+byte subExtra = 0;
+byte subVibrato = 0;
+byte subDeglitch = 0;
+byte subPinky = 0;
+byte subVelSmpDl = 0;
+byte subVelBias = 0;
+byte subParallel = 0;
+byte subRotator = 0;
+byte subPriority = 0;
+byte subWave = 0;
+byte subCutoff = 0;
+byte subReso = 0;
+byte subFilter = 0;
+byte subVolume = 0;
+
+byte ccList[9] = {0,1,2,7,11,1,2,7,11}; // OFF, Modulation, Breath, Volume, Expression (then same sent in hires)
+
+int pbDepthList[13] = {0,8192,4096,2731,2048,1638,1365,1170,1024,910,819,744,683};
+
+byte cursorNow;
+byte forcePix = 0;
+byte forceRedraw = 0;
+
+int pos1;
+int pos2;
+
+// the following variables are unsigned longs because the time, measured in
+// milliseconds, will quickly become a bigger number than can be stored in an int.
+unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
+unsigned long debounceDelay = 30; // the debounce time; increase if the output flickers
+unsigned long buttonRepeatTime = 0;
+unsigned long buttonPressedTime = 0;
+unsigned long buttonRepeatInterval = 50;
+unsigned long buttonRepeatDelay = 400;
+unsigned long pixelUpdateTime = 0;
+unsigned long pixelUpdateInterval = 100;
+unsigned long cursorBlinkTime = 0; // the last time the cursor was toggled
+unsigned long cursorBlinkInterval = 300; // the cursor blink toggle interval time
+unsigned long patchViewTime = 0;
+unsigned long patchViewTimeUp = 2000; // ms until patch view shuts off
+unsigned long menuTime = 0;
+unsigned long menuTimeUp = 60000; // menu shuts off after one minute of button inactivity
+unsigned long lastDeglitchTime = 0; // The last time the fingering was changed
+unsigned long ccSendTime = 0L; // The last time we sent CC values
+unsigned long breath_on_time = 0L; // Time when breath sensor value went over the ON threshold
+
+int lastFingering = 0; // Keep the last fingering value for debouncing
+
+int mainState; // The state of the main state machine
+
+int initial_breath_value; // The breath value at the time we observed the transition
+
+byte activeMIDIchannel=1; // MIDI channel
+byte activePatch=0;
+byte doPatchUpdate=0;
+
+byte FPD = 0;
+
+int breathLevel=0; // breath level (smoothed) not mapped to CC value
+int oldbreath=0;
+unsigned int oldbreathhires=0;
+unsigned int breathCV=0;
+float filterFreq = 30.0;
+
+float filterVal = 0.15;
+float smoothedVal;
+int pressureSensor; // pressure data from breath sensor, for midi breath cc and breath threshold checks
+int lastPressure;
+byte velocitySend; // remapped midi velocity from breath sensor (or set to static value if selected)
+
+int biteSensor=0; // capacitance data from bite sensor, for midi cc and threshold checks
+byte portIsOn=0; // keep track and make sure we send CC with 0 value when off threshold
+int oldport=0;
+int lastBite=0;
+
+int exSensor=0;
+byte extracIsOn=0;
+int oldextrac=0;
+int lastEx=0;
+
+int pitchBend=8192;
+int oldpb=8192;
+int pbUp=0;
+int pbDn=0;
+int lastPbUp=0;
+int lastPbDn=0;
+
+byte oldpkey = 0;
+
+float vibDepth[10] = {0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45}; // max pitch bend values (+/-) for the vibrato settings
+
+unsigned int curveM4[] = {0,4300,7000,8700,9900,10950,11900,12600,13300,13900,14500,15000,15450,15700,16000,16250,16383};
+unsigned int curveM3[] = {0,2900,5100,6650,8200,9500,10550,11500,12300,13100,13800,14450,14950,15350,15750,16150,16383};
+unsigned int curveM2[] = {0,2000,3600,5000,6450,7850,9000,10100,11100,12100,12900,13700,14400,14950,15500,16000,16383};
+unsigned int curveM1[] = {0,1400,2850,4100,5300,6450,7600,8700,9800,10750,11650,12600,13350,14150,14950,15650,16383};
+unsigned int curveIn[] = {0,1023,2047,3071,4095,5119,6143,7167,8191,9215,10239,11263,12287,13311,14335,15359,16383};
+unsigned int curveP1[] = {0,600,1350,2150,2900,3800,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
+unsigned int curveP2[] = {0,400,800,1300,2000,2650,3500,4300,5300,6250,7400,8500,9600,11050,12400,14100,16383};
+unsigned int curveP3[] = {0,200,500,900,1300,1800,2350,3100,3800,4600,5550,6550,8000,9500,11250,13400,16383};
+unsigned int curveP4[] = {0,100,200,400,700,1050,1500,1950,2550,3200,4000,4900,6050,7500,9300,12100,16383};
+unsigned int curveS1[] = {0,600,1350,2150,2900,3800,4700,6000,8700,11000,12400,13400,14300,14950,15500,16000,16383};
+unsigned int curveS2[] = {0,600,1350,2150,2900,4000,6100,9000,11000,12100,12900,13700,14400,14950,15500,16000,16383};
+//unsigned int curveS3[] = {0,600,1350,2300,3800,6200,8700,10200,11100,12100,12900,13700,14400,14950,15500,16000,16383};
+//unsigned int curveS4[] = {0,600,1700,4000,6600,8550,9700,10550,11400,12200,12900,13700,14400,14950,15500,16000,16383};
+
+unsigned int curveZ1[] = {0,1400,2100,2900,3200,3900,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
+unsigned int curveZ2[] = {0,2000,3200,3800,4096,4800,5100,5900,6650,7700,8800,9900,11100,12300,13500,14850,16383};
+
+int vibThr; // this gets auto calibrated in setup
+int vibThrLo;
+int oldvibRead=0;
+byte dirUp=0; // direction of first vibrato wave
+
+int fingeredNote; // note calculated from fingering (switches), transpose and octave settings
+byte activeNote; // note playing
+byte startNote=36; // set startNote to C (change this value in steps of 12 to start in other octaves)
+int slurBase; // first note in slur sustain chord
+
+int slurInterval[9] = {-5,0,0,0,0,0,0,0,0};
+byte addedIntervals = 1;
+
+// Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
+byte K1; // Valve 1 (pitch change -2)
+byte K2; // Valve 2 (pitch change -1)
+byte K3; // Valve 3 (pitch change -3)
+byte K4; // Left Hand index finger (pitch change -5)
+byte K5; // Trill key 1 (pitch change +2)
+byte K6; // Trill key 2 (pitch change +1)
+byte K7; // Trill key 3 (pitch change +4)
+
+byte octaveR = 0;
+
+byte halfPitchBendKey;
+byte specialKey;
+byte pinkyKey;
+byte lastSpecialKey = 0;
+
+byte slurSustain = 0;
+byte parallelChord = 0;
+byte subOctaveDouble = 0;
+
+unsigned int breathLedBrightness = 7000; // up to 16383, PWM
+unsigned int portamLedBrightness = 7000; // up to 16383, PWM
+
+int internalNote = 0;
+int internalPitchbend = 0;
+//int ipb=8192;
+//int oldipb=8192;
+float cents = 0;
+float cent = 1.000577789;
+float internalVolume = 0.50;
+float playVolume = 0;
+byte intPatch = 1; // 0 = sine, 1 = saw
+
+float midiToFreq[128]; // for storing pre calculated frequencies for note numbers
+
+
+// GUItool: begin automatically generated code
+AudioSynthWaveform waveform1; //xy=167.77777862548828,86.66667079925537
+AudioFilterStateVariable filter1; //xy=285.4444389343262,245.8888816833496
+AudioMixer4 mixer2; //xy=408.88888931274414,128.77777862548828
+AudioOutputAnalog dac1; //xy=588.444450378418,216.99999618530273
+AudioConnection patchCord1(waveform1, 0, filter1, 0);
+AudioConnection patchCord2(waveform1, 0, mixer2, 0);
+AudioConnection patchCord3(filter1, 0, mixer2, 1);
+AudioConnection patchCord4(mixer2, dac1);
+// GUItool: end automatically generated code
+
+
+
+Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
+
+
+//_______________________________________________________________________________________________ SETUP
+
+void setup() {
+
+ analogReadResolution(12); // set resolution of ADCs to 12 bit
+ analogWriteFrequency(A6,2929.687); // set PWM freq for CV out
+ analogWriteResolution(14); // set resolution of PWMs to 14 bit (match hi-res midi)
+
+ pinMode(dPin, INPUT_PULLUP);
+ pinMode(ePin, INPUT_PULLUP);
+ pinMode(uPin, INPUT_PULLUP);
+ pinMode(mPin, INPUT_PULLUP);
+
+ pinMode(bLedPin, OUTPUT); // breath indicator LED
+ pinMode(pLedPin, OUTPUT); // portam indicator LED
+ pinMode(13,OUTPUT); // Teensy onboard LED
+
+
+ // if stored settings are not for current version, or Enter+Menu are pressed at startup, they are replaced by factory settings
+
+ if ((readSetting(VERSION_ADDR) != VERSION) && (readSetting(VERSION_ADDR) < 24) || (!digitalRead(ePin) && !digitalRead(mPin))){
+ writeSetting(VERSION_ADDR,VERSION);
+ writeSetting(BREATH_THR_ADDR,BREATH_THR_FACTORY);
+ writeSetting(BREATH_MAX_ADDR,BREATH_MAX_FACTORY);
+ writeSetting(PORTAM_THR_ADDR,PORTAM_THR_FACTORY);
+ writeSetting(PORTAM_MAX_ADDR,PORTAM_MAX_FACTORY);
+ writeSetting(PITCHB_THR_ADDR,PITCHB_THR_FACTORY);
+ writeSetting(PITCHB_MAX_ADDR,PITCHB_MAX_FACTORY);
+ writeSetting(EXTRAC_THR_ADDR,EXTRAC_THR_FACTORY);
+ writeSetting(EXTRAC_MAX_ADDR,EXTRAC_MAX_FACTORY);
+ writeSetting(CTOUCH_THR_ADDR,CTOUCH_THR_FACTORY);
+ }
+
+ if ((readSetting(VERSION_ADDR) != VERSION) || (!digitalRead(ePin) && !digitalRead(mPin))){
+ writeSetting(VERSION_ADDR,VERSION);
+
+ writeSetting(TRANSP_ADDR,TRANSP_FACTORY);
+ writeSetting(MIDI_ADDR,MIDI_FACTORY);
+ writeSetting(BREATH_CC_ADDR,BREATH_CC_FACTORY);
+ writeSetting(BREATH_AT_ADDR,BREATH_AT_FACTORY);
+ writeSetting(VELOCITY_ADDR,VELOCITY_FACTORY);
+ writeSetting(PORTAM_ADDR,PORTAM_FACTORY);
+ writeSetting(PB_ADDR,PB_FACTORY);
+ writeSetting(EXTRA_ADDR,EXTRA_FACTORY);
+ writeSetting(VIBRATO_ADDR,VIBRATO_FACTORY);
+ writeSetting(DEGLITCH_ADDR,DEGLITCH_FACTORY);
+ writeSetting(PATCH_ADDR,PATCH_FACTORY);
+ writeSetting(OCTAVE_ADDR,OCTAVE_FACTORY);
+ writeSetting(BREATHCURVE_ADDR,BREATHCURVE_FACTORY);
+ writeSetting(VEL_SMP_DL_ADDR,VEL_SMP_DL_FACTORY);
+ writeSetting(VEL_BIAS_ADDR,VEL_BIAS_FACTORY);
+ writeSetting(PINKY_KEY_ADDR,PINKY_KEY_FACTORY);
+ writeSetting(FP1_ADDR,0);
+ writeSetting(FP2_ADDR,0);
+ writeSetting(FP3_ADDR,0);
+ writeSetting(FP4_ADDR,0);
+ writeSetting(FP5_ADDR,0);
+ writeSetting(FP6_ADDR,0);
+ writeSetting(FP7_ADDR,0);
+ writeSetting(DIPSW_BITS_ADDR,DIPSW_BITS_FACTORY);
+ writeSetting(PARAL_ADDR,PARAL_FACTORY);
+ writeSetting(ROTN1_ADDR,ROTN1_FACTORY);
+ writeSetting(ROTN2_ADDR,ROTN2_FACTORY);
+ writeSetting(ROTN3_ADDR,ROTN3_FACTORY);
+ writeSetting(ROTN4_ADDR,ROTN4_FACTORY);
+ writeSetting(PRIO_ADDR,PRIO_FACTORY);
+ }
+ // read settings from EEPROM
+ breathThrVal = readSetting(BREATH_THR_ADDR);
+ breathMaxVal = readSetting(BREATH_MAX_ADDR);
+ portamThrVal = readSetting(PORTAM_THR_ADDR);
+ portamMaxVal = readSetting(PORTAM_MAX_ADDR);
+ pitchbThrVal = readSetting(PITCHB_THR_ADDR);
+ pitchbMaxVal = readSetting(PITCHB_MAX_ADDR);
+ transpose = readSetting(TRANSP_ADDR);
+ MIDIchannel = readSetting(MIDI_ADDR);
+ breathCC = readSetting(BREATH_CC_ADDR);
+ breathAT = readSetting(BREATH_AT_ADDR);
+ velocity = readSetting(VELOCITY_ADDR);
+ portamento = readSetting(PORTAM_ADDR);
+ PBdepth = readSetting(PB_ADDR);
+ extraCT = readSetting(EXTRA_ADDR);
+ vibrato = readSetting(VIBRATO_ADDR);
+ deglitch = readSetting(DEGLITCH_ADDR);
+ extracThrVal = readSetting(EXTRAC_THR_ADDR);
+ extracMaxVal = readSetting(EXTRAC_MAX_ADDR);
+ patch = readSetting(PATCH_ADDR);
+ octave = readSetting(OCTAVE_ADDR);
+ ctouchThrVal = readSetting(CTOUCH_THR_ADDR);
+ curve = readSetting(BREATHCURVE_ADDR);
+ velSmpDl = readSetting(VEL_SMP_DL_ADDR);
+ velBias = readSetting(VEL_BIAS_ADDR);
+ pinkySetting = readSetting(PINKY_KEY_ADDR);
+ fastPatch[0] = readSetting(FP1_ADDR);
+ fastPatch[1] = readSetting(FP2_ADDR);
+ fastPatch[2] = readSetting(FP3_ADDR);
+ fastPatch[3] = readSetting(FP4_ADDR);
+ fastPatch[4] = readSetting(FP5_ADDR);
+ fastPatch[5] = readSetting(FP6_ADDR);
+ fastPatch[6] = readSetting(FP7_ADDR);
+ dipSwBits = readSetting(DIPSW_BITS_ADDR);
+ parallel = readSetting(PARAL_ADDR)-24;
+ rotations[0] = readSetting(ROTN1_ADDR)-24;
+ rotations[1] = readSetting(ROTN2_ADDR)-24;
+ rotations[2] = readSetting(ROTN3_ADDR)-24;
+ rotations[3] = readSetting(ROTN4_ADDR)-24;
+ priority = readSetting(PRIO_ADDR);
+
+ activePatch = patch;
+
+ breathStep = (breathHiLimit - breathLoLimit)/92; // 92 is the number of pixels in the settings bar
+ portamStep = (portamHiLimit - portamLoLimit)/92;
+ pitchbStep = (pitchbHiLimit - pitchbLoLimit)/92;
+ extracStep = (extracHiLimit - extracLoLimit)/92;
+ ctouchStep = (ctouchHiLimit - ctouchLoLimit)/92;
+
+ for(int i=0;i<128;i++) { // set up table, midi note number to frequency
+ midiToFreq[i] = numToFreq(i);
+ }
+
+ if (!touchSensor.begin(0x5A)) {
+ while (1); // Touch sensor initialization failed - stop doing stuff
+ }
+
+
+ // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
+ display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
+ // init done
+
+ // Show image buffer on the display hardware.
+ // Since the buffer is intialized with an Adafruit splashscreen
+ // internally, this will display the splashscreen.
+
+ display.clearDisplay();
+ display.drawBitmap(0,0,nuevi_logo_bmp,128,64,1);
+ display.display();
+
+
+ AudioMemory(50);
+
+ dac1.analogReference(INTERNAL); // normal volume
+ //dac1.analogReference(EXTERNAL); // louder
+
+ //waveform1.arbitraryWaveform(AKWF_vgame_0006,172.00);
+ //waveform1.arbitraryWaveform(AKWF_vgtri_0008,172.00);
+ //waveform1.arbitraryWaveform(AKWF_violin_0010,172.00);
+ //waveform1.arbitraryWaveform(AKWF_oboe_0006,172.00);
+ //waveform1.arbitraryWaveform(AKWF_altosax_0013,172.00);
+ //waveform1.arbitraryWaveform(AKWF_sinharm_0011,172.00);
+ waveform1.arbitraryWaveform(AKWF_raw_0004,172.00);
+
+ updateSynth();
+
+
+ //auto-calibrate the vibrato "dead zone" while showing splash screen
+ int cv1=touchRead(15);
+ digitalWrite(13,HIGH);
+ delay(250);
+ int cv2=touchRead(15);
+ digitalWrite(13,LOW);
+ delay(250);
+ int cv3=touchRead(15);
+ digitalWrite(13,HIGH);
+ delay(250);
+ digitalWrite(13,LOW);
+ int cv4=touchRead(15);
+ vibThr=(cv1+cv2+cv3+cv4)/4-30;
+ vibThrLo=(cv1+cv2+cv3+cv4)/4+30;
+ delay(250);
+ digitalWrite(13,HIGH);
+ delay(250);
+ digitalWrite(13,LOW);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(85,52);
+ display.println("v.1.1.5"); // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
+ display.display();
+
+ delay(2000);
+
+ state = DISPLAYOFF_IDL;
+ mainState = NOTE_OFF; // initialize main state machine
+
+ if (!digitalRead(ePin)) {
+ activePatch=0;
+ doPatchUpdate=1;
+ }
+
+ Serial3.begin(31250); // start serial with midi baudrate 31250
+ Serial3.flush();
+
+ digitalWrite(13,HIGH); // Switch on the onboard LED to indicate power on/ready
+
+ midiReset();
+
+}
+
+//_______________________________________________________________________________________________ MAIN LOOP
+
+void loop() {
+ mainLoop();
+}
+
+void mainLoop() {
+ FilterOnePole breathFilter( LOWPASS, filterFreq ); // create a one pole (RC) lowpass filter
+ while (1){
+ breathFilter.input(analogRead(A0));
+ pressureSensor = constrain((int)breathFilter.output(),0,4095); // Get the filtered pressure sensor reading from analog pin A0, input from sensor MP3V5004GP
+ breathCV = breathCurve(map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
+ analogWrite(A6,breathCV);
+ //pressureSensor = analogRead(A0);
+ //pressureSensor = smooth(analogRead(0), filterVal, smoothedVal); // second parameter determines smoothness - 0 is off, .9999 is max smooth
+ if (mainState == NOTE_OFF) {
+ if (activeMIDIchannel != MIDIchannel) activeMIDIchannel = MIDIchannel; // only switch channel if no active note
+ if ((activePatch != patch) && doPatchUpdate){
+ activePatch = patch;
+ usbMIDI.sendProgramChange(activePatch-1,activeMIDIchannel);
+ dinMIDIsendProgramChange(activePatch-1,activeMIDIchannel-1);
+ if (readSetting(PATCH_ADDR) != activePatch) writeSetting(PATCH_ADDR,activePatch);
+ slurSustain = 0;
+ parallelChord = 0;
+ subOctaveDouble = 0;
+ doPatchUpdate = 0;
+ }
+
+ readSwitches();
+ fingeredNote=noteValueCheck(fingeredNote);
+ if (internalNote != fingeredNote) {
+ internalNote = fingeredNote;
+ internalFreqChange();
+ }
+
+ //gate always on - put code for note on here?
+
+ if (pressureSensor > breathThrVal) {
+ // Value has risen above threshold. Move to the RISE_WAIT
+ // state. Record time and initial breath value.
+ breath_on_time = millis();
+ initial_breath_value = pressureSensor;
+ mainState = RISE_WAIT; // Go to next state
+ }
+ specialKey=(touchRead(specialKeyPin) > touch_Thr); //S2 on pcb
+ if (lastSpecialKey != specialKey){
+ if (specialKey){
+ // special key just pressed, check other keys
+ readSwitches();
+ if (K4) {
+ if (!slurSustain) {
+ slurSustain = 1;
+ parallelChord = 0;
+ rotatorOn = 0;
+ } else slurSustain = 0;
+ }
+ if (K5) {
+ if (!parallelChord) {
+ parallelChord = 1;
+ slurSustain = 0;
+ rotatorOn = 0;
+ } else parallelChord = 0;
+ }
+ if (K1) {
+ if (!subOctaveDouble) {
+ subOctaveDouble = 1;
+ rotatorOn = 0;
+ } else subOctaveDouble = 0;
+ }
+ if (!K1 && !K4 && !K5){
+ slurSustain = 0;
+ parallelChord = 0;
+ subOctaveDouble = 0;
+ rotatorOn = 0;
+ }
+ if (pinkyKey){
+ if (!rotatorOn) {
+ rotatorOn = 1;
+ slurSustain = 0;
+ parallelChord = 0;
+ subOctaveDouble = 0;
+ } else rotatorOn = 0;
+ }
+ }
+ }
+ lastSpecialKey = specialKey;
+ } else if (mainState == RISE_WAIT) {
+ if (pressureSensor > breathThrVal) {
+ // Has enough time passed for us to collect our second
+ // sample?
+ if ((millis() - breath_on_time > velSmpDl) || (0 == velSmpDl)) {
+ // Yes, so calculate MIDI note and velocity, then send a note on event
+ readSwitches();
+ // We should be at tonguing peak, so set velocity based on current pressureSensor value unless fixed velocity is set
+ breathLevel=constrain(max(pressureSensor,initial_breath_value),breathThrVal,breathMaxVal);
+ if (!velocity) {
+ unsigned int breathValHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
+ velocitySend = (breathValHires >>7) & 0x007F;
+ velocitySend = constrain(velocitySend+velocitySend*.1*velBias,1,127);
+ //velocitySend = map(constrain(max(pressureSensor,initial_breath_value),breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,1,127);
+ } else velocitySend = velocity;
+ breath(); // send breath data
+ internalBreath();
+ fingeredNote=noteValueCheck(fingeredNote);
+ internalNote = fingeredNote;
+ internalFreqChange();
+ if (priority){ // mono prio to last chord note
+ usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
+ }
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ if (slurSustain){
+ usbMIDI.sendControlChange(64,127, activeMIDIchannel);
+ dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
+ slurBase = fingeredNote;
+ addedIntervals = 0;
+ }
+ if (subOctaveDouble){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel);
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel - 1);
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ }
+ if (rotatorOn){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel - 1);
+ if (currentRotation < 3) currentRotation++; else currentRotation = 0;
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
+ }
+ if (!priority){ // mono prio to base note
+ usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
+ }
+ activeNote=fingeredNote;
+ mainState = NOTE_ON;
+ }
+ } else {
+ // Value fell below threshold before velocity sample delay time passed. Return to
+ // NOTE_OFF state (e.g. we're ignoring a short blip of breath)
+ mainState = NOTE_OFF;
+ }
+ } else if (mainState == NOTE_ON) {
+ cursorBlinkTime = millis(); // keep display from updating with cursor blinking if note on
+ if (pressureSensor < breathThrVal) {
+ // Value has fallen below threshold - turn the note off
+ activeNote=noteValueCheck(activeNote);
+ if (priority){
+ usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
+ dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
+ }
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ if (subOctaveDouble){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel);
+ dinMIDIsendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel - 1);
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ }
+ if (rotatorOn){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel - 1);
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
+ }
+ if (!priority){
+ usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
+ dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
+ }
+ if (slurSustain){
+ usbMIDI.sendControlChange(64,0, activeMIDIchannel);
+ dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
+ }
+ breathLevel=0;
+ mainState = NOTE_OFF;
+ } else {
+ readSwitches();
+ if (fingeredNote != lastFingering){ //
+ // reset the debouncing timer
+ lastDeglitchTime = millis();
+ }
+ if ((millis() - lastDeglitchTime) > deglitch) {
+ // whatever the reading is at, it's been there for longer
+ // than the debounce delay, so take it as the actual current state
+ if (noteValueCheck(fingeredNote) != activeNote) {
+ // Player has moved to a new fingering while still blowing.
+ // Send a note off for the current note and a note on for
+ // the new note.
+ if (!velocity){
+ unsigned int breathValHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
+ velocitySend = (breathValHires >>7) & 0x007F;
+ velocitySend = constrain(velocitySend+velocitySend*.1*velBias,1,127);
+ //velocitySend = map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,7,127); // set new velocity value based on current pressure sensor level
+ }
+ activeNote=noteValueCheck(activeNote);
+ if ((parallelChord || subOctaveDouble || rotatorOn) && priority){ // poly playing, send old note off before new note on
+ usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
+ }
+
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ if (subOctaveDouble){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote-12), velocitySend, activeMIDIchannel - 1);
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ }
+ if (rotatorOn){
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+parallel), velocitySend, activeMIDIchannel - 1);
+ usbMIDI.sendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(noteValueCheck(activeNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
+ }
+ if ((parallelChord || subOctaveDouble || rotatorOn) && !priority){ // poly playing, send old note off before new note on
+ usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message for old note
+ dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
+ }
+
+
+ fingeredNote=noteValueCheck(fingeredNote);
+ internalNote = fingeredNote;
+ internalFreqChange();
+ if (priority){
+ usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
+ }
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ if (subOctaveDouble){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote-12), velocitySend, activeMIDIchannel - 1);
+ if (parallelChord){
+ for (int i=0; i < addedIntervals; i++){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+slurInterval[i]-12), velocitySend, activeMIDIchannel - 1);
+ }
+ }
+ }
+ if (rotatorOn){
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+parallel), velocitySend, activeMIDIchannel - 1);
+ if (currentRotation < 3) currentRotation++; else currentRotation = 0;
+ usbMIDI.sendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(noteValueCheck(fingeredNote+rotations[currentRotation]), velocitySend, activeMIDIchannel - 1);
+ }
+
+ if (!priority){
+ usbMIDI.sendNoteOn(fingeredNote, velocitySend, activeMIDIchannel); // send Note On message for new note
+ dinMIDIsendNoteOn(fingeredNote, velocitySend, activeMIDIchannel - 1);
+ }
+
+ if (!parallelChord && !subOctaveDouble && !rotatorOn){ // mono playing, send old note off after new note on
+ usbMIDI.sendNoteOff(activeNote, velocitySend, activeMIDIchannel); // send Note Off message
+ dinMIDIsendNoteOff(activeNote, velocitySend, activeMIDIchannel - 1);
+ }
+
+ if (slurSustain){
+ addedIntervals++;
+ slurInterval[addedIntervals-1] = fingeredNote - slurBase;
+ }
+ activeNote=fingeredNote;
+ }
+ }
+ }
+ }
+ // Is it time to send more CC data?
+ if (millis() - ccSendTime > CC_INTERVAL) {
+ // deal with Breath, Pitch Bend, Modulation, etc.
+ breath();
+ internalBreath();
+ pitch_bend();
+ portamento_();
+ extraController();
+ statusLEDs();
+ ccSendTime = millis();
+ }
+ if (millis() - pixelUpdateTime > pixelUpdateInterval){
+ // even if we just alter a pixel, the whole display is redrawn (35ms of MPU lockup) and we can't do that all the time
+ // this is one of the big reasons the display is for setup use only
+ drawSensorPixels(); // live sensor monitoring for the setup screens
+ pixelUpdateTime = millis();
+ }
+ lastFingering=fingeredNote;
+ //do menu stuff
+ menu();
+ }
+}
+
+//_______________________________________________________________________________________________ FUNCTIONS
+
+// non linear mapping function (http://playground.arduino.cc/Main/MultiMap)
+// note: the _in array should have increasing values
+unsigned int multiMap(unsigned int val, unsigned int* _in, unsigned int* _out, uint8_t size)
+{
+ // take care the value is within range
+ // val = constrain(val, _in[0], _in[size-1]);
+ if (val <= _in[0]) return _out[0];
+ if (val >= _in[size-1]) return _out[size-1];
+
+ // search right interval
+ uint8_t pos = 1; // _in[0] allready tested
+ while(val > _in[pos]) pos++;
+
+ // this will handle all exact "points" in the _in array
+ if (val == _in[pos]) return _out[pos];
+
+ // interpolate in the right segment for the rest
+ return (val - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1]) + _out[pos-1];
+}
+
+//**************************************************************
+
+// map breath values to selected curve
+unsigned int breathCurve(unsigned int inputVal){
+ // 0 to 16383, moving mid value up or down
+ switch (curve){
+ case 0:
+ // -4
+ return multiMap(inputVal,curveIn,curveM4,17);
+ break;
+ case 1:
+ // -3
+ return multiMap(inputVal,curveIn,curveM3,17);
+ break;
+ case 2:
+ // -2
+ return multiMap(inputVal,curveIn,curveM2,17);
+ break;
+ case 3:
+ // -1
+ return multiMap(inputVal,curveIn,curveM1,17);
+ break;
+ case 4:
+ // 0, linear
+ return inputVal;
+ break;
+ case 5:
+ // +1
+ return multiMap(inputVal,curveIn,curveP1,17);
+ break;
+ case 6:
+ // +2
+ return multiMap(inputVal,curveIn,curveP2,17);
+ break;
+ case 7:
+ // +3
+ return multiMap(inputVal,curveIn,curveP3,17);
+ break;
+ case 8:
+ // +4
+ return multiMap(inputVal,curveIn,curveP4,17);
+ break;
+ case 9:
+ // S1
+ return multiMap(inputVal,curveIn,curveS1,17);
+ break;
+ case 10:
+ // S2
+ return multiMap(inputVal,curveIn,curveS2,17);
+ break;
+ case 11:
+ // Z1
+ return multiMap(inputVal,curveIn,curveZ1,17);
+ break;
+ case 12:
+ // Z2
+ return multiMap(inputVal,curveIn,curveZ2,17);
+ break;
+ }
+}
+
+//**************************************************************
+/*
+int smooth(int data, float filterVal, float smoothedVal){
+
+
+ if (filterVal > 1){ // check to make sure param's are within range
+ filterVal = .99;
+ }
+ else if (filterVal <= 0){
+ filterVal = 0;
+ }
+
+ smoothedVal = (data * (1 - filterVal)) + (smoothedVal * filterVal);
+
+ return (int)smoothedVal;
+}
+
+*/
+//**************************************************************
+
+// MIDI note number to frequency calculation
+float numToFreq(int input) {
+ int number = input - 21; // set to midi note numbers = start with 21 at A0
+ number = number - 60; // A0 is 48 steps below A4 = 440hz
+ return 440*(pow (1.059463094359,number));
+}
+
+//**************************************************************
+
+// MIDI note value check with out of range octave repeat
+int noteValueCheck(int note){
+ if (note > 127){
+ note = 115+(note-127)%12;
+ } else if (note < 0) {
+ note = 12-abs(note)%12;
+ }
+ return note;
+}
+
+//**************************************************************
+
+void midiPanic(){ // all notes off
+ usbMIDI.sendControlChange(123, 0, activeMIDIchannel);
+ dinMIDIsendControlChange(123, 0, activeMIDIchannel - 1);
+}
+
+//**************************************************************
+
+void midiReset(){ // reset all controllers
+ usbMIDI.sendControlChange(121, 0, activeMIDIchannel);
+ dinMIDIsendControlChange(121, 0, activeMIDIchannel - 1);
+ usbMIDI.sendControlChange(7, 100, activeMIDIchannel);
+ dinMIDIsendControlChange(7, 100, activeMIDIchannel - 1);
+ usbMIDI.sendControlChange(11, 127, activeMIDIchannel);
+ dinMIDIsendControlChange(11, 127, activeMIDIchannel - 1);
+}
+
+//**************************************************************
+
+// Send a three byte din midi message
+void midiSend3B(byte midistatus, byte data1, byte data2) {
+ Serial3.write(midistatus);
+ Serial3.write(data1);
+ Serial3.write(data2);
+}
+
+//**************************************************************
+
+// Send a two byte din midi message
+void midiSend2B(byte midistatus, byte data) {
+ Serial3.write(midistatus);
+ Serial3.write(data);
+}
+
+//**************************************************************
+
+// Send din pitchbend
+void dinMIDIsendPitchBend(int pb, byte ch) {
+ int pitchLSB = pb & 0x007F;
+ int pitchMSB = (pb >>7) & 0x007F;
+ midiSend3B((0xE0 | ch), pitchLSB, pitchMSB);
+}
+
+//**************************************************************
+
+// Send din control change
+void dinMIDIsendControlChange(byte ccNumber, int cc, byte ch) {
+ midiSend3B((0xB0 | ch), ccNumber, cc);
+}
+
+//**************************************************************
+
+// Send din note on
+void dinMIDIsendNoteOn(byte note, int vel, byte ch) {
+ midiSend3B((0x90 | ch), note, vel);
+}
+
+//**************************************************************
+
+// Send din note off
+void dinMIDIsendNoteOff(byte note, int vel, byte ch) {
+ midiSend3B((0x80 | ch), note, vel);
+}
+
+//**************************************************************
+
+// Send din aftertouch
+void dinMIDIsendAfterTouch(byte value, byte ch) {
+ midiSend2B((0xD0 | ch), value);
+}
+
+//**************************************************************
+
+// Send din program change
+void dinMIDIsendProgramChange(byte value, byte ch) {
+ midiSend2B((0xC0 | ch), value);
+}
+
+//**************************************************************
+
+void internalFreqChange(){
+ if (midiToFreq[internalNote] > 20.0){
+ waveform1.frequency(midiToFreq[internalNote]+internalPitchbend);
+ }
+}
+
+//**************************************************************
+
+void internalBreath(){
+ int intBreath;
+ breathLevel = constrain(pressureSensor,breathThrVal,breathMaxVal);
+ intBreath = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,1000*(cutoff+1)));
+ if (0 == intPatch){
+ playVolume = constrain(internalVolume * intBreath/10000, 0, internalVolume);
+ //mixer2.gain(0, playVolume);
+ //mixer2.gain(1, 0);
+ } else {
+ //playVolume = constrain(internalVolume * intBreath/1000, 0.5, internalVolume);
+ //mixer2.gain(0, 0);
+ //mixer2.gain(1, playVolume);
+ filter1.frequency(intBreath);
+ }
+}
+
+//**************************************************************
+
+void updateSynth(){
+ if (vol > 9) vol = 9; //
+ internalVolume = 0.05 * vol;
+ if (0 == filter){ // internal
+ mixer2.gain(0, 0.00);
+ mixer2.gain(1, internalVolume);
+ } else { //external
+ mixer2.gain(0, internalVolume);
+ mixer2.gain(1, 0.00);
+ }
+ mixer2.gain(2, 0.00);
+ mixer2.gain(3, 0.00);
+ delay(100);
+ filter1.frequency(0);
+ filter1.resonance(0.7+0.1*reso);
+ switch (wave){
+ case 0:
+ waveform1.begin(WAVEFORM_SAWTOOTH);
+ waveform1.amplitude(0.3);
+ break;
+ case 1:
+ waveform1.begin(WAVEFORM_SQUARE);
+ waveform1.amplitude(0.3);
+ break;
+ case 2:
+ waveform1.begin(WAVEFORM_ARBITRARY);
+ waveform1.amplitude(0.6);
+ break;
+ }
+
+}
+
+//**************************************************************
+
+void statusLEDs() {
+ if (breathLevel > breathThrVal){ // breath indicator LED, labeled "B" on PCB
+ analogWrite(bLedPin, map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,500,breathLedBrightness));
+ } else {
+ analogWrite(bLedPin, 0);
+ }
+ if (biteSensor > portamThrVal){ // portamento indicator LED, labeled "P" on PCB
+ analogWrite(pLedPin, map(constrain(biteSensor,portamThrVal,portamMaxVal),portamThrVal,portamMaxVal,500,portamLedBrightness));
+ } else {
+ analogWrite(pLedPin, 0);
+ }
+}
+
+//**************************************************************
+
+void breath(){
+ int breathCCval,breathCCvalFine;
+ unsigned int breathCCvalHires;
+ breathLevel = constrain(pressureSensor,breathThrVal,breathMaxVal);
+ //breathLevel = breathLevel*0.6+pressureSensor*0.4; // smoothing of breathLevel value
+ ////////breathCCval = map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,127);
+ breathCCvalHires = breathCurve(map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,16383));
+ breathCCval = (breathCCvalHires >>7) & 0x007F;
+ breathCCvalFine = breathCCvalHires & 0x007F;
+
+ if (breathCCval != oldbreath){ // only send midi data if breath has changed from previous value
+ if (breathCC){
+ // send midi cc
+ usbMIDI.sendControlChange(ccList[breathCC], breathCCval, activeMIDIchannel);
+ dinMIDIsendControlChange(ccList[breathCC], breathCCval, activeMIDIchannel - 1);
+ }
+ if (breathAT){
+ // send aftertouch
+ usbMIDI.sendAfterTouch(breathCCval, activeMIDIchannel);
+ dinMIDIsendAfterTouch(breathCCval, activeMIDIchannel - 1);
+ }
+ oldbreath = breathCCval;
+ }
+
+ if (breathCCvalHires != oldbreathhires){
+ if (breathCC > 4){ // send high resolution midi
+ usbMIDI.sendControlChange(ccList[breathCC]+32, breathCCvalFine, activeMIDIchannel);
+ dinMIDIsendControlChange(ccList[breathCC]+32, breathCCvalFine, activeMIDIchannel - 1);
+ }
+ oldbreathhires = breathCCvalHires;
+ }
+}
+
+//**************************************************************
+
+void pitch_bend(){
+ // handle input from pitchbend touchpads and
+ // on-pcb variable capacitor for vibrato.
+ float nudge;
+ int calculatedPBdepth;
+ byte vibratoMoved = 0;
+ pbUp = touchRead(pbUpPin); // SENSOR PIN 23 - PCB PIN "Pu"
+ pbDn = touchRead(pbDnPin); // SENSOR PIN 22 - PCB PIN "Pd"
+ halfPitchBendKey = (pinkySetting == PBD) && (touchRead(halfPitchBendKeyPin) > touch_Thr); // SENSOR PIN 1 - PCB PIN "S1" - hold for 1/2 pitchbend value
+ int vibRead = touchRead(vibratoPin); // SENSOR PIN 15 - built in var cap
+ if (PBdepth){
+ calculatedPBdepth = pbDepthList[PBdepth];
+ if (halfPitchBendKey) calculatedPBdepth = calculatedPBdepth*0.5;
+ }
+ if (((vibRead < vibThr) || (vibRead > vibThrLo))&&(vibRead > oldvibRead)){
+ nudge = 0.01*constrain(abs(vibRead - oldvibRead),0,100);
+ if (!dirUp){
+ pitchBend=oldpb*(1-nudge)+nudge*(8192 + calculatedPBdepth*vibDepth[vibrato]);
+ //ipb=oldipb*(1-nudge)+nudge*(8192 + 8192*vibDepth[vibrato]);
+ vibratoMoved = 1;
+ } else {
+ pitchBend=oldpb*(1-nudge)+nudge*(8191 - calculatedPBdepth*vibDepth[vibrato]);
+ //ipb=oldipb*(1-nudge)+nudge*(8192 - 8192*vibDepth[vibrato]);
+ vibratoMoved = 1;
+ }
+ } else if (((vibRead < vibThr) || (vibRead > vibThrLo))&&(vibRead < oldvibRead)){
+ nudge = 0.01*constrain(abs(vibRead - oldvibRead),0,100);
+ if (!dirUp ){
+ pitchBend=oldpb*(1-nudge)+nudge*(8191 - calculatedPBdepth*vibDepth[vibrato]);
+ //ipb=oldipb*(1-nudge)+nudge*(8192 - 8192*vibDepth[vibrato]);
+ vibratoMoved = 1;
+ } else {
+ pitchBend=oldpb*(1-nudge)+nudge*(8192 + calculatedPBdepth*vibDepth[vibrato]);
+ //ipb=oldipb*(1-nudge)+nudge*(8192 + 8192*vibDepth[vibrato]);
+ vibratoMoved = 1;
+ }
+ } else {
+ vibratoMoved = 0;
+ }
+
+ oldvibRead = vibRead;
+
+ if ((pbUp > pitchbThrVal) && PBdepth){
+ pitchBend=pitchBend*0.6+0.4*map(constrain(pbUp,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,(8193 + calculatedPBdepth));
+ //ipb=ipb*0.6+0.4*map(constrain(pbUp,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,16383);
+ } else if ((pbDn > pitchbThrVal) && PBdepth){
+ pitchBend=pitchBend*0.6+0.4*map(constrain(pbDn,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,(8192 - calculatedPBdepth));
+ //ipb=ipb*0.6+0.4*map(constrain(pbDn,pitchbThrVal,pitchbMaxVal),pitchbThrVal,pitchbMaxVal,8192,0);
+ } else if (oldvibRead > vibThr){
+ pitchBend = pitchBend*0.6+8192*0.4; // released, so smooth your way back to zero
+ if ((pitchBend > 8187) && (pitchBend < 8197)) {
+ pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
+ //ipb = 8192;
+ }
+ } else if (!vibratoMoved){
+ pitchBend = oldpb*0.8+8192*0.2; // released, so smooth your way back to zero
+ if ((pitchBend > 8187) && (pitchBend < 8197)) {
+ pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
+ //ipb = 8192;
+ }
+ }
+ pitchBend=constrain(pitchBend, 0, 16383);
+ //ipb=constrain(ipb, 0, 16383);
+
+ if (pitchBend != oldpb){// only send midi data if pitch bend has changed from previous value
+ usbMIDI.sendPitchBend(pitchBend-8192, activeMIDIchannel); // newer teensyduino "pitchBend-8192" older just "pitchBend"... strange thing to change
+ dinMIDIsendPitchBend(pitchBend, activeMIDIchannel - 1);
+ cents = (pitchBend - 8192)/40;
+ internalPitchbend = (midiToFreq[internalNote]*pow(cent,cents)) - midiToFreq[internalNote];
+ internalFreqChange();
+
+ oldpb=pitchBend;
+ }
+ /*if (ipb != oldipb){ // only alter signal data if pitch bend has changed from previous value
+ cents = (ipb - 8192)/40;
+ internalPitchbend = (midiToFreq[internalNote]*pow(cent,cents)) - midiToFreq[internalNote];
+ internalFreqChange();
+ oldipb=ipb;
+ }*/
+}
+
+//***********************************************************
+
+void extraController(){
+ // Extra Controller is the lip touch sensor (proportional) in front of the mouthpiece
+ exSensor=exSensor*0.6+0.4*touchRead(extraPin); // get sensor data, do some smoothing - SENSOR PIN 16 - PCB PIN "EC" (marked K4 on some prototype boards)
+ if (extraCT && (exSensor >= extracThrVal)) { // if we are enabled and over the threshold, send data
+ if (!extracIsOn) {
+ extracIsOn=1;
+ if (extraCT == 4){ //Sustain ON
+ usbMIDI.sendControlChange(64,127, activeMIDIchannel);
+ dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
+ }
+ }
+ if (extraCT == 1){ //Send modulation
+ int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
+ if (extracCC != oldextrac){
+ usbMIDI.sendControlChange(1,extracCC, activeMIDIchannel);
+ dinMIDIsendControlChange(1,extracCC, activeMIDIchannel - 1);
+ }
+ oldextrac = extracCC;
+ }
+ if (extraCT == 2){ //Send foot pedal (CC#4)
+ int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
+ if (extracCC != oldextrac){
+ usbMIDI.sendControlChange(4,extracCC, activeMIDIchannel);
+ dinMIDIsendControlChange(4,extracCC, activeMIDIchannel - 1);
+ }
+ oldextrac = extracCC;
+ }
+ if (extraCT == 3){ //Send filter cutoff (CC#74)
+ int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
+ if (extracCC != oldextrac){
+ usbMIDI.sendControlChange(74,extracCC, activeMIDIchannel);
+ dinMIDIsendControlChange(74,extracCC, activeMIDIchannel - 1);
+ }
+ oldextrac = extracCC;
+ }
+ } else if (extracIsOn) { // we have just gone below threshold, so send zero value
+ extracIsOn=0;
+ if (extraCT == 1){ //MW
+ //send modulation 0
+ usbMIDI.sendControlChange(1,0, activeMIDIchannel);
+ dinMIDIsendControlChange(1,0, activeMIDIchannel - 1);
+ oldextrac = 0;
+ } else if (extraCT == 2){ //FP
+ //send foot pedal 0
+ usbMIDI.sendControlChange(4,0, activeMIDIchannel);
+ dinMIDIsendControlChange(4,0, activeMIDIchannel - 1);
+ oldextrac = 0;
+ } else if (extraCT == 3){ //FC
+ //send foot pedal 0
+ usbMIDI.sendControlChange(74,0, activeMIDIchannel);
+ dinMIDIsendControlChange(74,0, activeMIDIchannel - 1);
+ oldextrac = 0;
+ } else if (extraCT == 4){ //SP
+ //send sustain off
+ usbMIDI.sendControlChange(64,0, activeMIDIchannel);
+ dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
+ }
+ }
+}
+
+//***********************************************************
+
+void portamento_(){
+ // Portamento is controlled with the bite sensor (variable capacitor) in the mouthpiece
+ biteSensor=biteSensor*0.6+0.4*touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
+ if (portamento && (biteSensor >= portamThrVal)) { // if we are enabled and over the threshold, send portamento
+ if (!portIsOn) {
+ portOn();
+ }
+ port();
+ } else if (portIsOn) { // we have just gone below threshold, so send zero value
+ portOff();
+ }
+}
+
+//***********************************************************
+
+void portOn(){
+ if (portamento == 2){ // if portamento midi switching is enabled
+ usbMIDI.sendControlChange(CCN_PortOnOff, 127, activeMIDIchannel);
+ dinMIDIsendControlChange(CCN_PortOnOff, 127, activeMIDIchannel - 1);
+ }
+ portIsOn=1;
+}
+
+//***********************************************************
+
+void port(){
+ int portCC;
+ portCC = map(constrain(biteSensor,portamThrVal,portamMaxVal),portamThrVal,portamMaxVal,0,127);
+ if (portCC!=oldport){
+ usbMIDI.sendControlChange(CCN_Port, portCC, activeMIDIchannel);
+ dinMIDIsendControlChange(CCN_Port, portCC, activeMIDIchannel - 1);
+ }
+ oldport = portCC;
+}
+
+//***********************************************************
+
+void portOff(){
+ usbMIDI.sendControlChange(CCN_Port, 0, activeMIDIchannel);
+ dinMIDIsendControlChange(CCN_Port, 0, activeMIDIchannel - 1);
+ if (portamento == 2){ // if portamento midi switching is enabled
+ usbMIDI.sendControlChange(CCN_PortOnOff, 0, activeMIDIchannel);
+ dinMIDIsendControlChange(CCN_PortOnOff, 0, activeMIDIchannel - 1);
+ }
+ portIsOn=0;
+ oldport = 0;
+}
+
+//***********************************************************
+
+void readSwitches(){
+ int qTransp;
+ // Read touch pads (MPR121) and put value in variables
+ int touchValue[12];
+ for (byte i=0; i<12; i++){
+ touchValue[i]=touchSensor.filteredData(i);
+ }
+
+ // Octave rollers
+ octaveR = 0;
+ if ((touchValue[R5Pin] < ctouchThrVal) && (touchValue[R3Pin] < ctouchThrVal)) octaveR = 6; //R6 = R5 && R3
+ else if (touchValue[R5Pin] < ctouchThrVal) octaveR = 5; //R5
+ else if (touchValue[R4Pin] < ctouchThrVal) octaveR = 4; //R4
+ else if (touchValue[R3Pin] < ctouchThrVal) octaveR = 3; //R3
+ else if (touchValue[R2Pin] < ctouchThrVal) octaveR = 2; //R2
+ else if (touchValue[R1Pin] < ctouchThrVal) octaveR = 1; //R1
+
+ // Valves and trill keys
+ K4=(touchValue[K4Pin] < ctouchThrVal);
+ K1=(touchValue[K1Pin] < ctouchThrVal);
+ K2=(touchValue[K2Pin] < ctouchThrVal);
+ K3=(touchValue[K3Pin] < ctouchThrVal);
+ K5=(touchValue[K5Pin] < ctouchThrVal);
+ K6=(touchValue[K6Pin] < ctouchThrVal);
+ K7=(touchValue[K7Pin] < ctouchThrVal);
+
+ pinkyKey = (touchRead(halfPitchBendKeyPin) > touch_Thr); // SENSOR PIN 1 - PCB PIN "S1"
+
+ if ((pinkySetting < 12) && pinkyKey){
+ qTransp = pinkySetting - 12;
+ } else if ((pinkySetting > 12) && pinkyKey){
+ qTransp = pinkySetting - 12;
+ } else {
+ qTransp = 0;
+ }
+
+
+ // Calculate midi note number from pressed keys
+ fingeredNote=startNote-2*K1-K2-3*K3-5*K4+2*K5+K6+4*K7+octaveR*12+(octave-3)*12+transpose-12+qTransp;
+}
+
+//***********************************************************
+
+int readTrills(){
+ readSwitches();
+ return K5+2*K6+4*K7;
+}
+
+//***********************************************************
+
+void setFPS(int trills){
+ fastPatch[trills-1] = patch;
+ writeSetting(FP1_ADDR+2*(trills-1),patch);
+ FPD = 2;
+}
+
+//***********************************************************
+
+void clearFPS(int trills){
+ fastPatch[trills-1] = 0;
+ writeSetting(FP1_ADDR+2*(trills-1),0);
+ FPD = 3;
+}
+
+
+// MENU STUFF FROM THIS POINT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+
+
+
+
+
+
+
+
+
+
+void menu() {
+
+ // read the state of the switches
+ deumButtons = !digitalRead(dPin)+2*!digitalRead(ePin)+4*!digitalRead(uPin)+8*!digitalRead(mPin);
+
+ // check to see if you just pressed the button
+ // (i.e. the input went from LOW to HIGH), and you've waited long enough
+ // since the last press to ignore any noise:
+
+ // If the switch changed, due to noise or pressing:
+ if (deumButtons != lastDeumButtons) {
+ // reset the debouncing timer
+ lastDebounceTime = millis();
+ }
+
+ if ((millis() - lastDebounceTime) > debounceDelay) {
+ // whatever the reading is at, it's been there for longer than the debounce
+ // delay, so take it as the actual current state:
+
+ // if the button state has changed:
+ if (deumButtons != deumButtonState) {
+ deumButtonState = deumButtons;
+ menuTime = millis();
+ Serial.println(deumButtonState);
+ buttonPressedAndNotUsed = 1;
+ buttonPressedTime = millis();
+ }
+
+ if (((deumButtons == 1) || (deumButtons == 4)) && (millis() - buttonPressedTime > buttonRepeatDelay) && (millis() - buttonRepeatTime > buttonRepeatInterval)){
+ buttonPressedAndNotUsed = 1;
+ buttonRepeatTime = millis();
+ }
+
+ }
+
+
+ // save the reading. Next time through the loop, it'll be the lastButtonState:
+ lastDeumButtons = deumButtons;
+
+ if (state && ((millis() - menuTime) > menuTimeUp)) { // shut off menu system if not used for a while (changes not stored by exiting a setting manually will not be stored in EEPROM)
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ subTranspose = 0;
+ subMIDI = 0;
+ subBreathCC = 0;
+ subBreathAT = 0;
+ subVelocity = 0;
+ subPort = 0;
+ subPB = 0;
+ subExtra = 0;
+ subVibrato = 0;
+ subDeglitch = 0;
+ subPinky = 0;
+ subVelSmpDl = 0;
+ subVelBias = 0;
+ subParallel = 0;
+ subRotator = 0;
+ subPriority = 0;
+ subWave = 0;
+ subCutoff = 0;
+ subReso = 0;
+ subFilter = 0;
+ subVolume = 0;
+ }
+
+
+
+ if (state == DISPLAYOFF_IDL){
+ if (stateFirstRun) {
+ display.ssd1306_command(SSD1306_DISPLAYOFF);
+ stateFirstRun = 0;
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ int trills = readTrills();
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ } else if (!trills) buttonPressedAndNotUsed = 1;
+ display.ssd1306_command(SSD1306_DISPLAYON);
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ break;
+ case 2:
+ // enter
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ }
+ display.ssd1306_command(SSD1306_DISPLAYON);
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ break;
+ case 4:
+ // up
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ } else if (!trills) buttonPressedAndNotUsed = 1;
+ display.ssd1306_command(SSD1306_DISPLAYON);
+ state = PATCH_VIEW;
+ buttonPressedAndNotUsed = 1;
+ stateFirstRun = 1;
+ break;
+ case 8:
+ // menu
+ display.ssd1306_command(SSD1306_DISPLAYON);
+ if (pinkyKey){
+ state = ROTATOR_MENU;
+ } else if (specialKey){
+ state = SYNTH_MENU;
+ } else {
+ state = MAIN_MENU;
+ }
+ stateFirstRun = 1;
+ break;
+ case 15:
+ //all keys depressed, reboot to programming mode
+ _reboot_Teensyduino_();
+ }
+ }
+ } else if (state == PATCH_VIEW){
+ if (stateFirstRun) {
+ drawPatchView();
+ patchViewTime = millis();
+ stateFirstRun = 0;
+ }
+ if ((millis() - patchViewTime) > patchViewTimeUp) {
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ doPatchUpdate = 1;
+ FPD = 0;
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ int trills = readTrills();
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ } else if (!trills){
+ if (patch > 1){
+ patch--;
+ } else patch = 128;
+ FPD = 0;
+ }
+ drawPatchView();
+ patchViewTime = millis();
+ break;
+ case 2:
+ // enter
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ drawPatchView();
+ }
+ patchViewTime = millis();
+ break;
+ case 4:
+ // up
+ if (trills && (fastPatch[trills-1] > 0)){
+ patch = fastPatch[trills-1];
+ activePatch = 0;
+ doPatchUpdate = 1;
+ FPD = 1;
+ } else if (!trills){
+ if (patch < 128){
+ patch++;
+ } else patch = 1;
+ FPD = 0;
+ }
+ drawPatchView();
+ patchViewTime = millis();
+ break;
+ case 8:
+ // menu
+ if (FPD < 2){
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ doPatchUpdate = 1;
+ }
+ FPD = 0;
+ break;
+ case 10:
+ // enter + menu
+ midiPanic();
+ midiReset();
+ display.clearDisplay();
+ display.setTextColor(WHITE);
+ display.setTextSize(2);
+ display.setCursor(35,15);
+ display.println("DON'T");
+ display.setCursor(35,30);
+ display.println("PANIC");
+ display.display();
+ patchViewTime = millis();
+ break;
+ case 15:
+ //all keys depressed, reboot to programming mode
+ _reboot_Teensyduino_();
+ }
+ }
+ } else if (state == MAIN_MENU){ // MAIN MENU HERE <<<<<<<<<<<<<<<
+ if (stateFirstRun) {
+ drawMenuScreen();
+ stateFirstRun = 0;
+ }
+ if (subTranspose){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotTranspose(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (transpose > 0){
+ plotTranspose(BLACK);
+ transpose--;
+ plotTranspose(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotTranspose(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subTranspose = 0;
+ if (readSetting(TRANSP_ADDR) != transpose) writeSetting(TRANSP_ADDR,transpose);
+ break;
+ case 4:
+ // up
+ if (transpose < 24){
+ plotTranspose(BLACK);
+ transpose++;
+ plotTranspose(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotTranspose(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subTranspose = 0;
+ if (readSetting(TRANSP_ADDR) != transpose) writeSetting(TRANSP_ADDR,transpose);
+ break;
+ }
+ }
+ } else if (subOctave){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotOctave(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (octave > 0){
+ plotOctave(BLACK);
+ octave--;
+ plotOctave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotOctave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subOctave = 0;
+ if (readSetting(OCTAVE_ADDR) != octave) writeSetting(OCTAVE_ADDR,octave);
+ break;
+ case 4:
+ // up
+ if (octave < 6){
+ plotOctave(BLACK);
+ octave++;
+ plotOctave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotOctave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subOctave = 0;
+ if (readSetting(OCTAVE_ADDR) != octave) writeSetting(OCTAVE_ADDR,octave);
+ break;
+ }
+ }
+ } else if (subMIDI) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotMIDI(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (MIDIchannel > 1){
+ plotMIDI(BLACK);
+ MIDIchannel--;
+ plotMIDI(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotMIDI(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subMIDI = 0;
+ if (readSetting(MIDI_ADDR) != MIDIchannel) writeSetting(MIDI_ADDR,MIDIchannel);
+ break;
+ case 4:
+ // up
+ if (MIDIchannel < 16){
+ plotMIDI(BLACK);
+ MIDIchannel++;
+ plotMIDI(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotMIDI(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subMIDI = 0;
+ if (readSetting(MIDI_ADDR) != MIDIchannel) writeSetting(MIDI_ADDR,MIDIchannel);
+ break;
+ }
+ }
+ } else {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawMenuCursor(mainMenuCursor, cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ int trills = readTrills();
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (mainMenuCursor < 6){
+ drawMenuCursor(mainMenuCursor, BLACK);
+ mainMenuCursor++;
+ drawMenuCursor(mainMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 2:
+ // enter
+ selectMainMenu();
+ break;
+ case 4:
+ // up
+ if (mainMenuCursor > 1){
+ drawMenuCursor(mainMenuCursor, BLACK);
+ mainMenuCursor--;
+ drawMenuCursor(mainMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 8:
+ // menu
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ break;
+ case 9:
+ //menu+down
+
+ break;
+ case 10:
+ //menu+enter
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ setFPS(trills);
+ }
+ break;
+ case 12:
+ //menu+up
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ clearFPS(trills);
+
+ }
+ break;
+ }
+ }
+ }
+ } else if (state == ROTATOR_MENU){ // ROTATOR MENU HERE <<<<<<<<<<<<<<<
+ if (stateFirstRun) {
+ drawRotatorMenuScreen();
+ stateFirstRun = 0;
+ }
+ if (subParallel){
+ if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ if (forceRedraw){
+ forceRedraw = 0;
+ cursorNow = WHITE;
+ }
+ plotRotator(cursorNow,parallel);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (parallel > -24){
+ plotRotator(BLACK,parallel);
+ parallel--;
+ plotRotator(WHITE,parallel);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotRotator(WHITE,parallel);
+ cursorNow = BLACK;
+ display.display();
+ subParallel = 0;
+ if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
+ break;
+ case 4:
+ // up
+ if (parallel < 24){
+ plotRotator(BLACK,parallel);
+ parallel++;
+ plotRotator(WHITE,parallel);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotRotator(WHITE,parallel);
+ cursorNow = BLACK;
+ display.display();
+ subParallel = 0;
+ if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
+ break;
+ }
+ }
+ } else if (subRotator){
+ if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ if (forceRedraw){
+ forceRedraw = 0;
+ cursorNow = WHITE;
+ }
+ plotRotator(cursorNow,rotations[subRotator-1]);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (rotations[subRotator-1] > -24){
+ plotRotator(BLACK,rotations[subRotator-1]);
+ rotations[subRotator-1]--;
+ plotRotator(WHITE,rotations[subRotator-1]);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotRotator(WHITE,rotations[subRotator-1]);
+ cursorNow = BLACK;
+ display.display();
+ if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != rotations[subRotator-1]) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
+ subRotator = 0;
+ break;
+ case 4:
+ // up
+ if (rotations[subRotator-1] < 24){
+ plotRotator(BLACK,rotations[subRotator-1]);
+ rotations[subRotator-1]++;
+ plotRotator(WHITE,rotations[subRotator-1]);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotRotator(WHITE,rotations[subRotator-1]);
+ cursorNow = BLACK;
+ display.display();
+ if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != (rotations[subRotator-1]+24)) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
+ subRotator = 0;
+ break;
+ }
+ }
+ } else if (subPriority){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotPriority(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotPriority(BLACK);
+ priority = !priority;
+ plotPriority(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotPriority(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPriority = 0;
+ if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ case 4:
+ // up
+ plotPriority(BLACK);
+ priority = !priority;
+ plotPriority(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotPriority(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPriority = 0;
+ if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ }
+ }
+ } else {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawMenuCursor(rotatorMenuCursor, cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ int trills = readTrills();
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (rotatorMenuCursor < 6){
+ drawMenuCursor(rotatorMenuCursor, BLACK);
+ rotatorMenuCursor++;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 2:
+ // enter
+ selectRotatorMenu();
+ break;
+ case 4:
+ // up
+ if (rotatorMenuCursor > 1){
+ drawMenuCursor(rotatorMenuCursor, BLACK);
+ rotatorMenuCursor--;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 8:
+ // menu
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ break;
+ case 9:
+ //menu+down
+
+ break;
+ case 10:
+ //menu+enter
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ setFPS(trills);
+ }
+ break;
+ case 12:
+ //menu+up
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ clearFPS(trills);
+
+ }
+ break;
+ }
+ }
+ }
+ // end rotator menu
+ } else if (state == SYNTH_MENU){ // SYNTH MENU HERE <<<<<<<<<<<<<<<
+ if (stateFirstRun) {
+ drawSynthMenuScreen();
+ stateFirstRun = 0;
+ }
+ if (subWave){
+ if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ if (forceRedraw){
+ forceRedraw = 0;
+ cursorNow = WHITE;
+ }
+ plotWave(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (wave > 0){
+ plotWave(BLACK);
+ wave--;
+ plotWave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotWave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subWave = 0;
+ // if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
+ break;
+ case 4:
+ // up
+ if (wave < 2){
+ plotWave(BLACK);
+ wave++;
+ plotWave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotWave(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subWave = 0;
+ //if (readSetting(PARAL_ADDR) != (parallel + 24)) writeSetting(PARAL_ADDR,(parallel + 24));
+ break;
+ }
+ updateSynth();
+ }
+ } else if (subCutoff){
+ if (((millis() - cursorBlinkTime) > cursorBlinkInterval) || forceRedraw) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ if (forceRedraw){
+ forceRedraw = 0;
+ cursorNow = WHITE;
+ }
+ plotCutoff(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (cutoff > 0){
+ plotCutoff(BLACK);
+ cutoff--;
+ plotCutoff(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotCutoff(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ //if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != rotations[subRotator-1]) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
+ subCutoff = 0;
+ break;
+ case 4:
+ // up
+ if (cutoff < 9){
+ plotCutoff(BLACK);
+ cutoff++;
+ plotCutoff(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotCutoff(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ //if (readSetting(ROTN1_ADDR+2*(subRotator-1)) != (rotations[subRotator-1]+24)) writeSetting(ROTN1_ADDR+2*(subRotator-1),(rotations[subRotator-1]+24));
+ subCutoff = 0;
+ break;
+ }
+ updateSynth();
+ }
+ } else if (subReso){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotReso(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (reso > 0){
+ plotReso(BLACK);
+ reso--;
+ plotReso(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotReso(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subReso = 0;
+ // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ case 4:
+ // up
+ if (reso < 9){
+ plotReso(BLACK);
+ reso++;
+ plotReso(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotReso(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subReso = 0;
+ // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ }
+ updateSynth();
+ }
+ } else if (subVolume){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotVol(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (vol > 0){
+ plotVol(BLACK);
+ vol--;
+ plotVol(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotVol(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVolume = 0;
+ // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ case 4:
+ // up
+ if (vol < 9){
+ plotVol(BLACK);
+ vol++;
+ plotVol(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotVol(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVolume = 0;
+ // if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ }
+ updateSynth();
+ }
+ } else if (subFilter){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotFilter(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotFilter(BLACK);
+ filter = !filter;
+ plotFilter(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotFilter(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subFilter = 0;
+ //if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ case 4:
+ // up
+ plotFilter(BLACK);
+ filter = !filter;
+ plotFilter(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotFilter(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subFilter = 0;
+ //if (readSetting(PRIO_ADDR) != priority) writeSetting(PRIO_ADDR,priority);
+ break;
+ }
+ updateSynth();
+ }
+ } else {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawMenuCursor(synthMenuCursor, cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ int trills = readTrills();
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (synthMenuCursor < 5){
+ drawMenuCursor(synthMenuCursor, BLACK);
+ synthMenuCursor++;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 2:
+ // enter
+ selectSynthMenu();
+ break;
+ case 4:
+ // up
+ if (synthMenuCursor > 1){
+ drawMenuCursor(synthMenuCursor, BLACK);
+ synthMenuCursor--;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 8:
+ // menu
+ state = DISPLAYOFF_IDL;
+ stateFirstRun = 1;
+ break;
+ case 9:
+ //menu+down
+
+ break;
+ case 10:
+ //menu+enter
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ setFPS(trills);
+ }
+ break;
+ case 12:
+ //menu+up
+ if (trills){
+ state = PATCH_VIEW;
+ stateFirstRun = 1;
+ clearFPS(trills);
+
+ }
+ break;
+ }
+ }
+ }
+ // end synth menu
+ } else if (state == BREATH_ADJ_IDL){
+ if (stateFirstRun) {
+ drawBreathScreen();
+ forcePix = 1;
+ stateFirstRun = 0;
+ }
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawAdjCursor(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ state = PORTAM_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
+ if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
+ break;
+ case 2:
+ // enter
+ state = BREATH_ADJ_THR;
+ break;
+ case 4:
+ // up
+ state = CTOUCH_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
+ if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ if (readSetting(BREATH_THR_ADDR) != breathThrVal) writeSetting(BREATH_THR_ADDR,breathThrVal);
+ if (readSetting(BREATH_MAX_ADDR) != breathMaxVal) writeSetting(BREATH_MAX_ADDR,breathMaxVal);
+ break;
+ }
+ }
+ } else if (state == BREATH_ADJ_THR){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos1,20,pos1,26,cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (breathThrVal - breathStep > breathLoLimit){
+ breathThrVal -= breathStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = BREATH_ADJ_MAX;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (breathThrVal + breathStep < breathHiLimit){
+ breathThrVal += breathStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = BREATH_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == BREATH_ADJ_MAX){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos2,50,pos2,57,cursorNow);;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if ((breathMaxVal - breathStep) > (breathThrVal + minOffset)){
+ breathMaxVal -= breathStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = BREATH_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (breathMaxVal + breathStep < breathHiLimit){
+ breathMaxVal += breathStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = BREATH_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == PORTAM_ADJ_IDL){
+ if (stateFirstRun) {
+ drawPortamScreen();
+ forcePix = 1;
+ stateFirstRun = 0;
+ }
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawAdjCursor(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ state = PITCHB_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
+ if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
+ break;
+ case 2:
+ // enter
+ state = PORTAM_ADJ_THR;
+ break;
+ case 4:
+ // up
+ state = BREATH_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
+ if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ if (readSetting(PORTAM_THR_ADDR) != portamThrVal) writeSetting(PORTAM_THR_ADDR,portamThrVal);
+ if (readSetting(PORTAM_MAX_ADDR) != portamMaxVal) writeSetting(PORTAM_MAX_ADDR,portamMaxVal);
+ break;
+ }
+ }
+ } else if (state == PORTAM_ADJ_THR){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos1,20,pos1,26,cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (portamThrVal - portamStep > portamLoLimit){
+ portamThrVal -= portamStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = PORTAM_ADJ_MAX;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (portamThrVal + portamStep < portamHiLimit){
+ portamThrVal += portamStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = PORTAM_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == PORTAM_ADJ_MAX){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos2,50,pos2,57,cursorNow);;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if ((portamMaxVal - portamStep) > (portamThrVal + minOffset)){
+ portamMaxVal -= portamStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = PORTAM_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (portamMaxVal + portamStep < portamHiLimit){
+ portamMaxVal += portamStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = PORTAM_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == PITCHB_ADJ_IDL){
+ if (stateFirstRun) {
+ drawPitchbScreen();
+ forcePix = 1;
+ stateFirstRun = 0;
+ }
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawAdjCursor(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ state = EXTRAC_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
+ if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
+ break;
+ case 2:
+ // enter
+ state = PITCHB_ADJ_THR;
+ break;
+ case 4:
+ // up
+ state = PORTAM_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
+ if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ if (readSetting(PITCHB_THR_ADDR) != pitchbThrVal) writeSetting(PITCHB_THR_ADDR,pitchbThrVal);
+ if (readSetting(PITCHB_MAX_ADDR) != pitchbMaxVal) writeSetting(PITCHB_MAX_ADDR,pitchbMaxVal);
+ break;
+ }
+ }
+ } else if (state == PITCHB_ADJ_THR){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos1,20,pos1,26,cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (pitchbThrVal - pitchbStep > pitchbLoLimit){
+ pitchbThrVal -= pitchbStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = PITCHB_ADJ_MAX;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (pitchbThrVal + pitchbStep < pitchbHiLimit){
+ pitchbThrVal += pitchbStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = PITCHB_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == PITCHB_ADJ_MAX){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos2,50,pos2,57,cursorNow);;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if ((pitchbMaxVal - pitchbStep) > (pitchbThrVal + minOffset)){
+ pitchbMaxVal -= pitchbStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = PITCHB_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (pitchbMaxVal + pitchbStep < pitchbHiLimit){
+ pitchbMaxVal += pitchbStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = PITCHB_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ }
+ }
+
+ } else if (state == EXTRAC_ADJ_IDL){
+ if (stateFirstRun) {
+ drawExtracScreen();
+ forcePix = 1;
+ stateFirstRun = 0;
+ }
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawAdjCursor(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ state = CTOUCH_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
+ if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
+ break;
+ case 2:
+ // enter
+ state = EXTRAC_ADJ_THR;
+ break;
+ case 4:
+ // up
+ state = PITCHB_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
+ if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ if (readSetting(EXTRAC_THR_ADDR) != extracThrVal) writeSetting(EXTRAC_THR_ADDR,extracThrVal);
+ if (readSetting(EXTRAC_MAX_ADDR) != extracMaxVal) writeSetting(EXTRAC_MAX_ADDR,extracMaxVal);
+ break;
+ }
+ }
+ } else if (state == EXTRAC_ADJ_THR){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos1,20,pos1,26,cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (extracThrVal - extracStep > extracLoLimit){
+ extracThrVal -= extracStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = EXTRAC_ADJ_MAX;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (extracThrVal + extracStep < extracHiLimit){
+ extracThrVal += extracStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = EXTRAC_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ }
+ }
+ } else if (state == EXTRAC_ADJ_MAX){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos2,50,pos2,57,cursorNow);;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if ((extracMaxVal - extracStep) > (extracThrVal + minOffset)){
+ extracMaxVal -= extracStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = EXTRAC_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (extracMaxVal + extracStep < extracHiLimit){
+ extracMaxVal += extracStep;
+ display.drawLine(pos2,50,pos2,57,BLACK);
+ pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = EXTRAC_ADJ_IDL;
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ display.display();
+ break;
+ }
+ }
+
+ } else if (state == CTOUCH_ADJ_IDL){
+ if (stateFirstRun) {
+ drawCtouchScreen();
+ forcePix = 1;
+ stateFirstRun = 0;
+ }
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawAdjCursor(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ state = BREATH_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
+ break;
+ case 2:
+ // enter
+ state = CTOUCH_ADJ_THR;
+ break;
+ case 4:
+ // up
+ state = EXTRAC_ADJ_IDL;
+ stateFirstRun = 1;
+ if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ if (readSetting(CTOUCH_THR_ADDR) != ctouchThrVal) writeSetting(CTOUCH_THR_ADDR,ctouchThrVal);
+ break;
+ }
+ }
+ } else if (state == CTOUCH_ADJ_THR){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ display.drawLine(pos1,20,pos1,26,cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (ctouchThrVal - ctouchStep > ctouchLoLimit){
+ ctouchThrVal -= ctouchStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 2:
+ // enter
+ state = CTOUCH_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ case 4:
+ // up
+ if (ctouchThrVal + ctouchStep < ctouchHiLimit){
+ ctouchThrVal += ctouchStep;
+ display.drawLine(pos1,20,pos1,26,BLACK);
+ pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ cursorNow = BLACK;
+ }
+ break;
+ case 8:
+ // menu
+ state = CTOUCH_ADJ_IDL;
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ display.display();
+ break;
+ }
+ }
+
+
+ } else if (state == SETUP_BR_MENU) { // SETUP BREATH MENU HERE <<<<<<<<<<<<<<
+ if (stateFirstRun) {
+ drawSetupBrMenuScreen();
+ stateFirstRun = 0;
+ }
+ if (subBreathCC){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotBreathCC(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (breathCC > 0){
+ plotBreathCC(BLACK);
+ breathCC--;
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ } else {
+ plotBreathCC(BLACK);
+ breathCC = 8;
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subBreathCC = 0;
+ if (readSetting(BREATH_CC_ADDR) != breathCC) {
+ writeSetting(BREATH_CC_ADDR,breathCC);
+ midiReset();
+ }
+ break;
+ case 4:
+ // up
+ if (breathCC < 8){
+ plotBreathCC(BLACK);
+ breathCC++;
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ } else {
+ plotBreathCC(BLACK);
+ breathCC = 0;
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotBreathCC(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subBreathCC = 0;
+ if (readSetting(BREATH_CC_ADDR) != breathCC) {
+ writeSetting(BREATH_CC_ADDR,breathCC);
+ midiReset();
+ }
+ break;
+ }
+ }
+ } else if (subBreathAT) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotBreathAT(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotBreathAT(BLACK);
+ breathAT=!breathAT;
+ plotBreathAT(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotBreathAT(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subBreathAT = 0;
+ if (readSetting(BREATH_AT_ADDR) != breathAT){
+ writeSetting(BREATH_AT_ADDR,breathAT);
+ midiReset();
+ }
+ break;
+ case 4:
+ // up
+ plotBreathAT(BLACK);
+ breathAT=!breathAT;
+ plotBreathAT(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotBreathAT(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subBreathAT = 0;
+ if (readSetting(BREATH_AT_ADDR) != breathAT){
+ writeSetting(BREATH_AT_ADDR,breathAT);
+ midiReset();
+ }
+ break;
+ }
+ }
+ } else if (subVelocity) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotVelocity(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotVelocity(BLACK);
+ if (velocity > 0){
+ velocity--;
+ } else velocity = 127;
+ plotVelocity(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotVelocity(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelocity = 0;
+ if (readSetting(VELOCITY_ADDR) != velocity) writeSetting(VELOCITY_ADDR,velocity);
+ break;
+ case 4:
+ // up
+ plotVelocity(BLACK);
+ if (velocity < 127){
+ velocity++;
+ } else velocity = 0;
+ plotVelocity(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotVelocity(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelocity = 0;
+ if (readSetting(VELOCITY_ADDR) != velocity) writeSetting(VELOCITY_ADDR,velocity);
+ break;
+ }
+ }
+
+
+ } else if (subCurve) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotCurve(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotCurve(BLACK);
+ if (curve > 0){
+ curve--;
+ } else curve = 12;
+ plotCurve(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotCurve(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subCurve = 0;
+ if (readSetting(BREATHCURVE_ADDR) != curve) writeSetting(BREATHCURVE_ADDR,curve);
+ break;
+ case 4:
+ // up
+ plotCurve(BLACK);
+ if (curve < 12){
+ curve++;
+ } else curve = 0;
+ plotCurve(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotCurve(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subCurve = 0;
+ if (readSetting(BREATHCURVE_ADDR) != curve) writeSetting(BREATHCURVE_ADDR,curve);
+ break;
+ }
+ }
+
+ } else if (subVelSmpDl) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotVelSmpDl(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotVelSmpDl(BLACK);
+ if (velSmpDl > 0){
+ velSmpDl-=5;
+ } else velSmpDl = 30;
+ plotVelSmpDl(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotVelSmpDl(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelSmpDl = 0;
+ if (readSetting(VEL_SMP_DL_ADDR) != velSmpDl) writeSetting(VEL_SMP_DL_ADDR,velSmpDl);
+ break;
+ case 4:
+ // up
+ plotVelSmpDl(BLACK);
+ if (velSmpDl < 30){
+ velSmpDl+=5;
+ } else velSmpDl = 0;
+ plotVelSmpDl(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotVelSmpDl(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelSmpDl = 0;
+ if (readSetting(VEL_SMP_DL_ADDR) != velSmpDl) writeSetting(VEL_SMP_DL_ADDR,velSmpDl);
+ break;
+ }
+ }
+
+ } else if (subVelBias) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotVelBias(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotVelBias(BLACK);
+ if (velBias > 0){
+ velBias--;
+ } else velBias = 9;
+ plotVelBias(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotVelBias(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelBias = 0;
+ if (readSetting(VEL_BIAS_ADDR) != velBias) writeSetting(VEL_BIAS_ADDR,velBias);
+ break;
+ case 4:
+ // up
+ plotVelBias(BLACK);
+ if (velBias < 9){
+ velBias++;
+ } else velBias = 0;
+ plotVelBias(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotVelBias(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVelBias = 0;
+ if (readSetting(VEL_BIAS_ADDR) != velBias) writeSetting(VEL_BIAS_ADDR,velBias);
+ break;
+ }
+ }
+
+ } else {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawMenuCursor(setupBrMenuCursor, cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (setupBrMenuCursor < 6){
+ drawMenuCursor(setupBrMenuCursor, BLACK);
+ setupBrMenuCursor++;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 2:
+ // enter
+ selectSetupBrMenu();
+ break;
+ case 4:
+ // up
+ if (setupBrMenuCursor > 1){
+ drawMenuCursor(setupBrMenuCursor, BLACK);
+ setupBrMenuCursor--;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ break;
+ }
+ }
+ }
+
+
+ } else if (state == SETUP_CT_MENU) { // SETUP CONTROLLERS MENU HERE <<<<<<<<<<<<<
+ if (stateFirstRun) {
+ drawSetupCtMenuScreen();
+ stateFirstRun = 0;
+ }
+ if (subPort){
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotPort(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotPort(BLACK);
+ if (portamento > 0){
+ portamento--;
+ } else portamento = 2;
+ plotPort(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotPort(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPort = 0;
+ if (readSetting(PORTAM_ADDR) != portamento) writeSetting(PORTAM_ADDR,portamento);
+ break;
+ case 4:
+ // up
+ plotPort(BLACK);
+ if (portamento < 2){
+ portamento++;
+ } else portamento = 0;
+ plotPort(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotPort(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPort = 0;
+ if (readSetting(PORTAM_ADDR) != portamento) writeSetting(PORTAM_ADDR,portamento);
+ break;
+ }
+ }
+ } else if (subPB) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotPB(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (PBdepth > 0){
+ plotPB(BLACK);
+ PBdepth--;
+ plotPB(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotPB(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPB = 0;
+ if (readSetting(PB_ADDR) != PBdepth) writeSetting(PB_ADDR,PBdepth);
+ break;
+ case 4:
+ // up
+ if (PBdepth < 12){
+ plotPB(BLACK);
+ PBdepth++;
+ plotPB(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotPB(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPB = 0;
+ if (readSetting(PB_ADDR) != PBdepth) writeSetting(PB_ADDR,PBdepth);
+ break;
+ }
+ }
+ } else if (subExtra) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotExtra(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ plotExtra(BLACK);
+ if (extraCT > 0){
+ extraCT--;
+ } else extraCT = 4;
+ plotExtra(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 2:
+ // enter
+ plotExtra(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subExtra = 0;
+ if (readSetting(EXTRA_ADDR) != extraCT) writeSetting(EXTRA_ADDR,extraCT);
+ break;
+ case 4:
+ // up
+ plotExtra(BLACK);
+ if (extraCT < 4){
+ extraCT++;
+ } else extraCT = 0;
+ plotExtra(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ break;
+ case 8:
+ // menu
+ plotExtra(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subExtra = 0;
+ if (readSetting(EXTRA_ADDR) != extraCT) writeSetting(EXTRA_ADDR,extraCT);
+ break;
+ }
+ }
+ } else if (subVibrato) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotVibrato(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (vibrato > 0){
+ plotVibrato(BLACK);
+ vibrato--;
+ plotVibrato(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotVibrato(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVibrato = 0;
+ if (readSetting(VIBRATO_ADDR) != vibrato) writeSetting(VIBRATO_ADDR,vibrato);
+ break;
+ case 4:
+ // up
+ if (vibrato < 9){
+ plotVibrato(BLACK);
+ vibrato++;
+ plotVibrato(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotVibrato(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subVibrato = 0;
+ if (readSetting(VIBRATO_ADDR) != vibrato) writeSetting(VIBRATO_ADDR,vibrato);
+ break;
+ }
+ }
+ } else if (subDeglitch) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotDeglitch(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (deglitch > 0){
+ plotDeglitch(BLACK);
+ deglitch-=5;
+ plotDeglitch(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotDeglitch(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subDeglitch = 0;
+ if (readSetting(DEGLITCH_ADDR) != deglitch) writeSetting(DEGLITCH_ADDR,deglitch);
+ break;
+ case 4:
+ // up
+ if (deglitch < 70){
+ plotDeglitch(BLACK);
+ deglitch+=5;
+ plotDeglitch(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotDeglitch(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subDeglitch = 0;
+ if (readSetting(DEGLITCH_ADDR) != deglitch) writeSetting(DEGLITCH_ADDR,deglitch);
+ break;
+ }
+ }
+ } else if (subPinky) {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ plotPinkyKey(cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (pinkySetting > 0){
+ plotPinkyKey(BLACK);
+ pinkySetting-=1;
+ plotPinkyKey(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 2:
+ // enter
+ plotPinkyKey(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPinky = 0;
+ if (readSetting(PINKY_KEY_ADDR) != pinkySetting) writeSetting(PINKY_KEY_ADDR,pinkySetting);
+ break;
+ case 4:
+ // up
+ if (pinkySetting < 24){
+ plotPinkyKey(BLACK);
+ pinkySetting+=1;
+ plotPinkyKey(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ break;
+ case 8:
+ // menu
+ plotPinkyKey(WHITE);
+ cursorNow = BLACK;
+ display.display();
+ subPinky = 0;
+ if (readSetting(PINKY_KEY_ADDR) != pinkySetting) writeSetting(PINKY_KEY_ADDR,pinkySetting);
+ break;
+ }
+ }
+ } else {
+ if ((millis() - cursorBlinkTime) > cursorBlinkInterval) {
+ if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
+ drawMenuCursor(setupCtMenuCursor, cursorNow);
+ display.display();
+ cursorBlinkTime = millis();
+ }
+ if (buttonPressedAndNotUsed){
+ buttonPressedAndNotUsed = 0;
+ switch (deumButtonState){
+ case 1:
+ // down
+ if (setupCtMenuCursor < 6){
+ drawMenuCursor(setupCtMenuCursor, BLACK);
+ setupCtMenuCursor++;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 2:
+ // enter
+ selectSetupCtMenu();
+ break;
+ case 4:
+ // up
+ if (setupCtMenuCursor > 1){
+ drawMenuCursor(setupCtMenuCursor, BLACK);
+ setupCtMenuCursor--;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ cursorNow = BLACK;
+ clearSub();
+ display.display();
+ }
+ break;
+ case 8:
+ // menu
+ state = MAIN_MENU;
+ stateFirstRun = 1;
+ break;
+ }
+ }
+ }
+ }
+
+}
+
+void selectMainMenu(){
+ switch (mainMenuCursor){
+ case 1:
+ subTranspose = 1;
+ drawMenuCursor(mainMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubTranspose();
+ break;
+ case 2:
+ subOctave = 1;
+ drawMenuCursor(mainMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubOctave();
+ break;
+ case 3:
+ subMIDI = 1;
+ drawMenuCursor(mainMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubMIDI();
+ break;
+ case 4:
+ state = BREATH_ADJ_IDL;
+ stateFirstRun = 1;
+ break;
+ case 5:
+ state = SETUP_BR_MENU;
+ stateFirstRun = 1;
+ break;
+ case 6:
+ state = SETUP_CT_MENU;
+ stateFirstRun = 1;
+ break;
+ }
+}
+
+void selectRotatorMenu(){
+ switch (rotatorMenuCursor){
+ case 1:
+ subParallel = 1;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubRotator();
+ break;
+ case 2:
+ subRotator = 1;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubRotator();
+ break;
+ case 3:
+ subRotator = 2;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubRotator();
+ break;
+ case 4:
+ subRotator = 3;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubRotator();
+ break;
+ case 5:
+ subRotator = 4;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubRotator();
+ break;
+ case 6:
+ subPriority = 1;
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubPriority();
+ break;
+ }
+}
+
+void selectSynthMenu(){
+ switch (synthMenuCursor){
+ case 1:
+ subWave = 1;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubWave();
+ break;
+ case 2:
+ subCutoff = 1;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubCutoff();
+ break;
+ case 3:
+ subReso = 1;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubReso();
+ break;
+ case 4:
+ subVolume = 1;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubVol();
+ break;
+ case 5:
+ subFilter = 1;
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubFilter();
+ break;
+ }
+}
+
+void selectSetupBrMenu(){
+ switch (setupBrMenuCursor){
+ case 1:
+ subBreathCC = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubBreathCC();
+ break;
+ case 2:
+ subBreathAT = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubBreathAT();
+ break;
+ case 3:
+ subVelocity = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubVelocity();
+ break;
+ case 4:
+ subCurve = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubCurve();
+ break;
+ case 5:
+ subVelSmpDl = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubVelSmpDl();
+ break;
+ case 6:
+ subVelBias = 1;
+ drawMenuCursor(setupBrMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubVelBias();
+ break;
+ }
+}
+
+void selectSetupCtMenu(){
+ switch (setupCtMenuCursor){
+ case 1:
+ subPort = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubPort();
+ break;
+ case 2:
+ subPB = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubPB();
+ break;
+ case 3:
+ subExtra = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubExtra();
+ break;
+ case 4:
+ subVibrato = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubVibrato();
+ break;
+ case 5:
+ subDeglitch = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubDeglitch();
+ break;
+ case 6:
+ subPinky = 1;
+ drawMenuCursor(setupCtMenuCursor, WHITE);
+ display.display();
+ cursorBlinkTime = millis();
+ drawSubPinkyKey();
+ }
+}
+void drawBreathScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(25,2);
+ display.println("BREATH");
+ //display.drawLine(0,10,127,10,WHITE);
+ display.setCursor(0,20);
+ display.println("THR");
+ display.drawLine(25,17,120,17,WHITE);
+ display.drawLine(25,18,25,19,WHITE);
+ display.drawLine(120,18,120,19,WHITE);
+ display.drawLine(25,29,120,29,WHITE);
+ display.drawLine(25,27,25,28,WHITE);
+ display.drawLine(120,27,120,28,WHITE);
+ display.setCursor(0,35);
+ display.println("SNS");
+ //display.drawLine(25,38,120,38,WHITE);
+ display.drawLine(25,36,25,40,WHITE);
+ display.drawLine(120,36,120,40,WHITE);
+ display.setCursor(0,50);
+ display.println("MAX");
+ display.drawLine(25,47,120,47,WHITE);
+ display.drawLine(25,48,25,49,WHITE);
+ display.drawLine(120,48,120,49,WHITE);
+ display.drawLine(25,60,120,60,WHITE);
+ display.drawLine(25,58,25,59,WHITE);
+ display.drawLine(120,58,120,59,WHITE);
+
+ //display.drawLine(38,20,38,26,WHITE); // indikation thr
+ pos1 = map(breathThrVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ cursorNow = WHITE;
+ //display.drawLine(115,50,115,57,WHITE); // indikation max
+ pos2 = map(breathMaxVal, breathLoLimit, breathHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ //display.drawPixel(34, 38, WHITE);
+ drawAdjCursor(WHITE);
+ display.display();
+}
+
+void drawPortamScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(25,2);
+ display.println("PORTAMENTO");
+ //display.drawLine(0,10,127,10,WHITE);
+ display.setCursor(0,20);
+ display.println("THR");
+ display.drawLine(25,17,120,17,WHITE);
+ display.drawLine(25,18,25,19,WHITE);
+ display.drawLine(120,18,120,19,WHITE);
+ display.drawLine(25,29,120,29,WHITE);
+ display.drawLine(25,27,25,28,WHITE);
+ display.drawLine(120,27,120,28,WHITE);
+ display.setCursor(0,35);
+ display.println("SNS");
+ //display.drawLine(25,38,120,38,WHITE);
+ display.drawLine(25,36,25,40,WHITE);
+ display.drawLine(120,36,120,40,WHITE);
+ display.setCursor(0,50);
+ display.println("MAX");
+ display.drawLine(25,47,120,47,WHITE);
+ display.drawLine(25,48,25,49,WHITE);
+ display.drawLine(120,48,120,49,WHITE);
+ display.drawLine(25,60,120,60,WHITE);
+ display.drawLine(25,58,25,59,WHITE);
+ display.drawLine(120,58,120,59,WHITE);
+
+ //display.drawLine(38,20,38,26,WHITE); // indikation thr
+ pos1 = map(portamThrVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ cursorNow = WHITE;
+ //display.drawLine(115,50,115,57,WHITE); // indikation max
+ pos2 = map(portamMaxVal, portamLoLimit, portamHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ //display.drawPixel(34, 38, WHITE);
+ drawAdjCursor(WHITE);
+ display.display();
+}
+
+void drawPitchbScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(25,2);
+ display.println("PITCH BEND");
+ //display.drawLine(0,10,127,10,WHITE);
+ display.setCursor(0,20);
+ display.println("THR");
+ display.drawLine(25,17,120,17,WHITE);
+ display.drawLine(25,18,25,19,WHITE);
+ display.drawLine(120,18,120,19,WHITE);
+ display.drawLine(25,29,120,29,WHITE);
+ display.drawLine(25,27,25,28,WHITE);
+ display.drawLine(120,27,120,28,WHITE);
+ display.setCursor(0,35);
+ display.println("SNS");
+ //display.drawLine(25,38,120,38,WHITE);
+ display.drawLine(25,36,25,40,WHITE);
+ display.drawLine(120,36,120,40,WHITE);
+ display.setCursor(0,50);
+ display.println("MAX");
+ display.drawLine(25,47,120,47,WHITE);
+ display.drawLine(25,48,25,49,WHITE);
+ display.drawLine(120,48,120,49,WHITE);
+ display.drawLine(25,60,120,60,WHITE);
+ display.drawLine(25,58,25,59,WHITE);
+ display.drawLine(120,58,120,59,WHITE);
+
+ //display.drawLine(38,20,38,26,WHITE); // indikation thr
+ pos1 = map(pitchbThrVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ cursorNow = WHITE;
+ //display.drawLine(115,50,115,57,WHITE); // indikation max
+ pos2 = map(pitchbMaxVal, pitchbLoLimit, pitchbHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ //display.drawPixel(34, 38, WHITE);
+ drawAdjCursor(WHITE);
+ display.display();
+}
+
+void drawExtracScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(25,2);
+ display.println("EXTRA CONTROLLER");
+ //display.drawLine(0,10,127,10,WHITE);
+ display.setCursor(0,20);
+ display.println("THR");
+ display.drawLine(25,17,120,17,WHITE);
+ display.drawLine(25,18,25,19,WHITE);
+ display.drawLine(120,18,120,19,WHITE);
+ display.drawLine(25,29,120,29,WHITE);
+ display.drawLine(25,27,25,28,WHITE);
+ display.drawLine(120,27,120,28,WHITE);
+ display.setCursor(0,35);
+ display.println("SNS");
+ //display.drawLine(25,38,120,38,WHITE);
+ display.drawLine(25,36,25,40,WHITE);
+ display.drawLine(120,36,120,40,WHITE);
+ display.setCursor(0,50);
+ display.println("MAX");
+ display.drawLine(25,47,120,47,WHITE);
+ display.drawLine(25,48,25,49,WHITE);
+ display.drawLine(120,48,120,49,WHITE);
+ display.drawLine(25,60,120,60,WHITE);
+ display.drawLine(25,58,25,59,WHITE);
+ display.drawLine(120,58,120,59,WHITE);
+
+ //display.drawLine(38,20,38,26,WHITE); // indikation thr
+ pos1 = map(extracThrVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ cursorNow = WHITE;
+ //display.drawLine(115,50,115,57,WHITE); // indikation max
+ pos2 = map(extracMaxVal, extracLoLimit, extracHiLimit, 27, 119);
+ display.drawLine(pos2,50,pos2,57,WHITE);
+ //display.drawPixel(34, 38, WHITE);
+ drawAdjCursor(WHITE);
+ display.display();
+}
+
+
+void drawCtouchScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(25,2);
+ display.println("TOUCH SENSE");
+ //display.drawLine(0,10,127,10,WHITE);
+ display.setCursor(0,20);
+ display.println("THR");
+ display.drawLine(25,17,120,17,WHITE);
+ display.drawLine(25,18,25,19,WHITE);
+ display.drawLine(120,18,120,19,WHITE);
+ display.drawLine(25,29,120,29,WHITE);
+ display.drawLine(25,27,25,28,WHITE);
+ display.drawLine(120,27,120,28,WHITE);
+ display.setCursor(0,35);
+ display.println("SNS");
+ //display.drawLine(25,38,120,38,WHITE);
+ display.drawLine(25,36,25,40,WHITE);
+ display.drawLine(120,36,120,40,WHITE);
+
+ //display.drawLine(38,20,38,26,WHITE); // indikation thr
+ pos1 = map(ctouchThrVal, ctouchLoLimit, ctouchHiLimit, 27, 119);
+ display.drawLine(pos1,20,pos1,26,WHITE);
+ cursorNow = WHITE;
+
+ //display.drawPixel(34, 38, WHITE);
+ drawAdjCursor(WHITE);
+ display.display();
+}
+
+void drawMenuCursor(byte itemNo, byte color){
+ byte xmid = 6 + 9 * itemNo;
+ display.drawTriangle(57,xmid,61,xmid+2,61,xmid-2,color);
+}
+
+void drawAdjCursor(byte color){
+ display.drawTriangle(16,4,20,4,18,1,color);
+ display.drawTriangle(16,6,20,6,18,9,color);
+}
+
+void drawMenuScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(0,0);
+ display.print("MENU ");
+ int vMeterReading = analogRead(vMeterPin);
+ if (vMeterReading > 3000) display.print("USB "); else display.print("BAT ");
+ if (vMeterReading < 2294) display.print("LOW"); else {
+ display.print(map(vMeterReading,0,3030,0,50)*0.1,1);
+ display.print("V");
+ }
+ display.drawLine(0,9,127,9,WHITE);
+ display.setCursor(0,12);
+ display.println("TRANSPOSE");
+ display.setCursor(0,21);
+ display.println("OCTAVE");
+ display.setCursor(0,30);
+ display.println("MIDI CH");
+ display.setCursor(0,39);
+ display.println("ADJUST");
+ display.setCursor(0,48);
+ display.println("SETUP BR");
+ display.setCursor(0,57);
+ display.println("SETUP CTL");
+ drawMenuCursor(mainMenuCursor, WHITE);
+ display.display();
+}
+
+void drawRotatorMenuScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(0,0);
+ display.print("ROTATOR SETUP");
+ display.drawLine(0,9,127,9,WHITE);
+ display.setCursor(0,12);
+ display.println("INTERVAL");
+ display.setCursor(0,21);
+ display.println("ROTATE 1");
+ display.setCursor(0,30);
+ display.println("ROTATE 2");
+ display.setCursor(0,39);
+ display.println("ROTATE 3");
+ display.setCursor(0,48);
+ display.println("ROTATE 4");
+ display.setCursor(0,57);
+ display.println("PRIORITY");
+ drawMenuCursor(rotatorMenuCursor, WHITE);
+ display.display();
+}
+
+void drawSynthMenuScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(0,0);
+ display.print("SYNTH SETUP");
+ display.drawLine(0,9,127,9,WHITE);
+ display.setCursor(0,12);
+ display.println("WAVE");
+ display.setCursor(0,21);
+ display.println("CUTOFF");
+ display.setCursor(0,30);
+ display.println("RESO");
+ display.setCursor(0,39);
+ display.println("VOLUME");
+ display.setCursor(0,48);
+ display.println("FILTER");
+ display.setCursor(0,57);
+ display.println("");
+ drawMenuCursor(synthMenuCursor, WHITE);
+ display.display();
+}
+
+void drawPatchView(){
+ display.clearDisplay();
+ if (FPD){
+ drawTrills();
+ }
+ if (FPD < 2){
+ display.setTextColor(WHITE);
+ display.setTextSize(6);
+ if (patch < 10){
+ // 1-9
+ display.setCursor(48,10);
+ } else if (patch < 100){
+ // 10-99
+ display.setCursor(31,10);
+ } else {
+ // 99-128
+ display.setCursor(10,10);
+ }
+ display.println(patch);
+ } else if (FPD == 2){
+ display.setTextColor(WHITE);
+ display.setTextSize(6);
+ display.setCursor(10,10);
+ display.println("SET");
+ } else {
+ display.setTextColor(WHITE);
+ display.setTextSize(6);
+ display.setCursor(10,10);
+ display.println("CLR");
+ }
+ display.display();
+}
+
+void drawTrills(){
+ if (K5) display.fillRect(0,0,5,5,WHITE); else display.drawRect(0,0,5,5,WHITE);
+ if (K6) display.fillRect(10,0,5,5,WHITE); else display.drawRect(10,0,5,5,WHITE);
+ if (K7) display.fillRect(20,0,5,5,WHITE); else display.drawRect(20,0,5,5,WHITE);
+}
+
+void clearSub(){
+ display.fillRect(63,11,64,52,BLACK);
+}
+
+void drawSubTranspose(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("TRANSPOSE");
+ plotTranspose(WHITE);
+ display.display();
+}
+
+void plotTranspose(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(80,33);
+ if ((transpose-12) > -1){
+ display.println("+");
+ display.setCursor(93,33);
+ display.println(transpose-12);
+ } else {
+ display.println("-");
+ display.setCursor(93,33);
+ display.println(abs(transpose-12));
+ }
+}
+void drawSubRotator(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("SEMITONES");
+ //plotRotator(WHITE,value);
+ forceRedraw = 1;
+ display.display();
+}
+
+void plotRotator(int color,int value){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(80,33);
+ if ((value) > -1){
+ display.println("+");
+ display.setCursor(93,33);
+ display.println(value);
+ } else {
+ display.println("-");
+ display.setCursor(93,33);
+ display.println(abs(value));
+ }
+}
+
+void drawSubPriority(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("MONO PRIO");
+ plotPriority(WHITE);
+ display.display();
+}
+
+void plotPriority(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+
+ if (priority){
+ display.setCursor(83,33);
+ //display.setCursor(79,33);
+ display.println("LO");
+ } else {
+ display.setCursor(83,33);
+ //display.setCursor(79,33);
+ display.println("HI");
+ }
+}
+
+
+void drawSubOctave(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(77,15);
+ display.println("OCTAVE");
+ plotOctave(WHITE);
+ display.display();
+}
+
+void plotOctave(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(80,33);
+ if ((octave-3) > -1){
+ display.println("+");
+ display.setCursor(93,33);
+ display.println(octave-3);
+ } else {
+ display.println("-");
+ display.setCursor(93,33);
+ display.println(abs(octave-3));
+ }
+}
+
+void drawSubMIDI(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("MIDI CHNL");
+ plotMIDI(WHITE);
+ display.display();
+}
+
+void plotMIDI(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(90,33);
+ display.println(MIDIchannel);
+}
+
+void drawSubBreathCC(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("BREATH CC");
+ plotBreathCC(WHITE);
+ display.display();
+}
+
+void plotBreathCC(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ if (breathCC){
+ switch (breathCC){
+ case 1:
+ display.setCursor(83,33);
+ display.println("MW");
+ break;
+ case 2:
+ display.setCursor(83,33);
+ display.println("BR");
+ break;
+ case 3:
+ display.setCursor(83,33);
+ display.println("VL");
+ break;
+ case 4:
+ display.setCursor(83,33);
+ display.println("EX");
+ break;
+ case 5:
+ display.setCursor(79,33);
+ display.println("MW+");
+ break;
+ case 6:
+ display.setCursor(79,33);
+ display.println("BR+");
+ break;
+ case 7:
+ display.setCursor(79,33);
+ display.println("VL+");
+ break;
+ case 8:
+ display.setCursor(79,33);
+ display.println("EX+");
+ break;
+ }
+ } else {
+ display.setCursor(79,33);
+ display.println("OFF");
+ }
+}
+
+void drawSubBreathAT(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("BREATH AT");
+ plotBreathAT(WHITE);
+ display.display();
+}
+
+void plotBreathAT(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (breathAT){
+ display.println("ON");
+ } else {
+ display.println("OFF");
+ }
+}
+
+void drawSubVelocity(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(71,15);
+ display.println("VELOCITY");
+ plotVelocity(WHITE);
+ display.display();
+}
+
+void plotVelocity(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (velocity){
+ display.println(velocity);
+ } else {
+ display.println("DYN");
+ }
+}
+
+void drawSubWave(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(80,15);
+ display.println("SHAPE");
+ plotWave(WHITE);
+ display.display();
+}
+
+void plotWave(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ switch (wave){
+ case 0:
+ display.setCursor(79,33);
+ display.println("SAW");
+ break;
+ case 1:
+ display.setCursor(79,33);
+ display.println("SQR");
+ break;
+ case 2:
+ display.setCursor(79,33);
+ display.println("TRI");
+ break;
+ }
+}
+
+void drawSubCutoff(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(80,15);
+ display.println("LEVEL");
+ plotCutoff(WHITE);
+ display.display();
+}
+
+void plotCutoff(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(90,33);
+ display.println(cutoff);
+}
+
+void drawSubReso(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(80,15);
+ display.println("LEVEL");
+ plotReso(WHITE);
+ display.display();
+}
+
+void plotReso(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(90,33);
+ display.println(reso);
+}
+
+void drawSubVol(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(80,15);
+ display.println("LEVEL");
+ plotVol(WHITE);
+ display.display();
+}
+
+void plotVol(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ if (vol){
+ display.setCursor(90,33);
+ display.println(vol);
+ } else {
+ display.setCursor(79,33);
+ display.println("OFF");
+ }
+}
+
+void drawSubFilter(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(75,15);
+ display.println("SELECT");
+ plotFilter(WHITE);
+ display.display();
+}
+
+void plotFilter(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ if (!filter){
+ display.setCursor(79,33);
+ display.println("INT");
+ } else {
+ display.setCursor(79,33);
+ display.println("EXT");
+ }
+}
+
+void drawSubCurve(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(80,15);
+ display.println("CURVE");
+ plotCurve(WHITE);
+ display.display();
+}
+
+void plotCurve(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ switch (curve){
+ case 0:
+ display.setCursor(83,33);
+ display.println("-4");
+ break;
+ case 1:
+ display.setCursor(83,33);
+ display.println("-3");
+ break;
+ case 2:
+ display.setCursor(83,33);
+ display.println("-2");
+ break;
+ case 3:
+ display.setCursor(83,33);
+ display.println("-1");
+ break;
+ case 4:
+ display.setCursor(79,33);
+ display.println("LIN");
+ break;
+ case 5:
+ display.setCursor(83,33);
+ display.println("+1");
+ break;
+ case 6:
+ display.setCursor(83,33);
+ display.println("+2");
+ break;
+ case 7:
+ display.setCursor(83,33);
+ display.println("+3");
+ break;
+ case 8:
+ display.setCursor(83,33);
+ display.println("+4");
+ break;
+ case 9:
+ display.setCursor(83,33);
+ display.println("S1");
+ break;
+ case 10:
+ display.setCursor(83,33);
+ display.println("S2");
+ break;
+ case 11:
+ display.setCursor(83,33);
+ display.println("Z1");
+ break;
+ case 12:
+ display.setCursor(83,33);
+ display.println("Z2");
+ break;
+ }
+}
+
+
+void drawSubPort(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(71,15);
+ display.println("PORT/GLD");
+ plotPort(WHITE);
+ display.display();
+}
+
+void plotPort(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (portamento == 1){
+ display.println("ON");
+ } else if (portamento == 2){
+ display.println("SW");
+ } else {
+ display.println("OFF");
+ }
+}
+
+void drawSubPB(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("PITCHBEND");
+ plotPB(WHITE);
+ display.display();
+}
+
+void plotPB(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(76,33);
+ if (PBdepth){
+ display.println("1/");
+ display.setCursor(101,33);
+ display.println(PBdepth);
+ } else {
+ display.println("OFF");
+ }
+}
+
+void drawSubExtra(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("EXTRA CTR");
+ plotExtra(WHITE);
+ display.display();
+}
+
+void plotExtra(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ switch (extraCT){
+ case 0:
+ display.setCursor(79,33);
+ display.println("OFF");
+ break;
+ case 1:
+ display.setCursor(83,33);
+ display.println("MW");
+ break;
+ case 2:
+ display.setCursor(83,33);
+ display.println("FP");
+ break;
+ case 3:
+ display.setCursor(83,33);
+ display.println("FC");
+ break;
+ case 4:
+ display.setCursor(83,33);
+ display.println("SP");
+ break;
+ }
+}
+
+void drawSubVibrato(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(74,15);
+ display.println("VIBRATO");
+ plotVibrato(WHITE);
+ display.display();
+}
+
+void plotVibrato(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ if (vibrato){
+ display.setCursor(90,33);
+ display.println(vibrato);
+ } else {
+ display.setCursor(79,33);
+ display.println("OFF");
+ }
+}
+
+void drawSubDeglitch(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(71,15);
+ display.println("DEGLITCH");
+ plotDeglitch(WHITE);
+ display.display();
+}
+
+void plotDeglitch(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (deglitch){
+ display.println(deglitch);
+ display.setCursor(105,40);
+ display.setTextSize(1);
+ display.println("ms");
+ } else {
+ display.println("OFF");
+ }
+}
+void drawSubPinkyKey(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(68,15);
+ display.println("PINKY KEY");
+ plotPinkyKey(WHITE);
+ display.display();
+}
+
+void plotPinkyKey(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (pinkySetting < 12){
+ display.println(pinkySetting - 12);
+ } else if (pinkySetting == PBD) {
+ display.println("PBD");
+ } else {
+ display.print("+");
+ display.println(pinkySetting - 12);
+ }
+}
+void drawSubVelSmpDl(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(69,15);
+ display.println("VEL DELAY");
+ plotVelSmpDl(WHITE);
+ display.display();
+}
+
+void plotVelSmpDl(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ display.setCursor(79,33);
+ if (velSmpDl){
+ display.println(velSmpDl);
+ display.setCursor(105,40);
+ display.setTextSize(1);
+ display.println("ms");
+ } else {
+ display.println("OFF");
+ }
+}
+
+void drawSubVelBias(){
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(72,15);
+ display.println("VEL BIAS");
+ plotVelBias(WHITE);
+ display.display();
+}
+
+void plotVelBias(int color){
+ display.setTextColor(color);
+ display.setTextSize(2);
+ if (velBias){
+ display.setCursor(90,33);
+ display.println(velBias);
+ } else {
+ display.setCursor(79,33);
+ display.println("OFF");
+ }
+}
+
+void drawSetupBrMenuScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(0,0);
+ display.println("SETUP BREATH");
+ display.drawLine(0,9,127,9,WHITE);
+ display.setCursor(0,12);
+ display.println("BREATH CC");
+ display.setCursor(0,21);
+ display.println("BREATH AT");
+ display.setCursor(0,30);
+ display.println("VELOCITY");
+ display.setCursor(0,39);
+ display.println("CURVE");
+ display.setCursor(0,48);
+ display.println("VEL DELAY");
+ display.setCursor(0,57);
+ display.println("VEL BIAS");
+
+ display.display();
+}
+
+void drawSetupCtMenuScreen(){
+ // Clear the buffer.
+ display.clearDisplay();
+
+ display.setTextSize(1);
+ display.setTextColor(WHITE);
+ display.setCursor(0,0);
+ display.println("SETUP CTRLS");
+ display.drawLine(0,9,127,9,WHITE);
+ display.setCursor(0,12);
+ display.println("PORT/GLD");
+ display.setCursor(0,21);
+ display.println("PITCHBEND");
+ display.setCursor(0,30);
+ display.println("EXTRA CTR");
+ display.setCursor(0,39);
+ display.println("VIBRATO");
+ display.setCursor(0,48);
+ display.println("DEGLITCH");
+ display.setCursor(0,57);
+ display.println("PINKY KEY");
+
+ display.display();
+}
+
+void drawSensorPixels(){
+ int pos,oldpos;
+ int redraw=0;
+ if ((state == BREATH_ADJ_IDL) || (state == BREATH_ADJ_THR) || (state == BREATH_ADJ_MAX)){
+ pos = map(constrain(pressureSensor, breathLoLimit, breathHiLimit), breathLoLimit, breathHiLimit, 28, 118);
+ oldpos = map(constrain(lastPressure, breathLoLimit, breathHiLimit), breathLoLimit, breathHiLimit, 28, 118);
+ if (pos!=oldpos){
+ display.drawPixel(oldpos, 38, BLACK);
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ } else if (forcePix) {
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ }
+ lastPressure=pressureSensor;
+ }
+ if ((state == PORTAM_ADJ_IDL) || (state == PORTAM_ADJ_THR) || (state == PORTAM_ADJ_MAX)){
+ pos = map(constrain(biteSensor,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
+ oldpos = map(constrain(lastBite,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
+ if (pos!=oldpos){
+ display.drawPixel(oldpos, 38, BLACK);
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ } else if (forcePix) {
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ }
+ lastBite=biteSensor;
+ }
+ if ((state == PITCHB_ADJ_IDL) || (state == PITCHB_ADJ_THR) || (state == PITCHB_ADJ_MAX)){
+ pos = map(constrain(pbUp, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
+ oldpos = map(constrain(lastPbUp, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
+ if (pos!=oldpos){
+ display.drawPixel(oldpos, 38, BLACK);
+ display.drawPixel(pos, 38, WHITE);
+ redraw=1;
+ } else if (forcePix) {
+ display.drawPixel(pos, 38, WHITE);
+ redraw=1;
+ }
+ pos = map(constrain(pbDn, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
+ oldpos = map(constrain(lastPbDn, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
+ if (pos!=oldpos){
+ display.drawPixel(oldpos, 38, BLACK);
+ display.drawPixel(pos, 38, WHITE);
+ redraw=1;
+ } else if (forcePix) {
+ display.drawPixel(pos, 38, WHITE);
+ redraw=1;
+ }
+ if (redraw){
+ display.display();
+ redraw=0;
+ }
+ lastPbUp=pbUp;
+ lastPbDn=pbDn;
+ }
+ if ((state == EXTRAC_ADJ_IDL) || (state == EXTRAC_ADJ_THR) || (state == EXTRAC_ADJ_MAX)){
+ pos = map(constrain(exSensor, extracLoLimit, extracHiLimit), extracLoLimit, extracHiLimit, 28, 118);
+ oldpos = map(constrain(lastEx, extracLoLimit, extracHiLimit), extracLoLimit, extracHiLimit, 28, 118);
+ if (pos!=oldpos){
+ display.drawPixel(oldpos, 38, BLACK);
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ } else if (forcePix) {
+ display.drawPixel(pos, 38, WHITE);
+ display.display();
+ }
+ lastEx=exSensor;
+ }
+ if ((state == CTOUCH_ADJ_IDL) || (state == CTOUCH_ADJ_THR)){
+ display.drawLine(28,38,118,38,BLACK);
+ for (byte i=0; i<12; i++){
+ pos = map(constrain(touchSensor.filteredData(i), ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
+ display.drawPixel(pos, 38, WHITE);
+ }
+ display.display();
+ }
+ forcePix = 0;
+}
+
+void writeSetting(byte address, unsigned short value){
+ union {
+ byte v[2];
+ unsigned short val;
+ } data;
+ data.val = value;
+ EEPROM.write(address, data.v[0]);
+ EEPROM.write(address+1, data.v[1]);
+}
+
+unsigned short readSetting(byte address){
+ union {
+ byte v[2];
+ unsigned short val;
+ } data;
+ data.v[0] = EEPROM.read(address);
+ data.v[1] = EEPROM.read(address+1);
+ return data.val;
+}
+
+
diff --git a/NuEVI/.gitignore b/NuEVI/.gitignore
new file mode 100644
index 0000000..89cc49c
--- /dev/null
+++ b/NuEVI/.gitignore
@@ -0,0 +1,5 @@
+.pio
+.vscode/.browse.c_cpp.db*
+.vscode/c_cpp_properties.json
+.vscode/launch.json
+.vscode/ipch
diff --git a/NuEVI/.vscode/extensions.json b/NuEVI/.vscode/extensions.json
new file mode 100644
index 0000000..080e70d
--- /dev/null
+++ b/NuEVI/.vscode/extensions.json
@@ -0,0 +1,10 @@
+{
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "platformio.platformio-ide"
+ ],
+ "unwantedRecommendations": [
+ "ms-vscode.cpptools-extension-pack"
+ ]
+}
diff --git a/NuEVI/.vscode/settings.json b/NuEVI/.vscode/settings.json
new file mode 100644
index 0000000..d069759
--- /dev/null
+++ b/NuEVI/.vscode/settings.json
@@ -0,0 +1,9 @@
+{
+ "files.associations": {
+ "type_traits": "cpp",
+ "*.tcc": "cpp",
+ "ostream": "cpp",
+ "streambuf": "cpp",
+ "array": "cpp"
+ }
+}
\ No newline at end of file
diff --git a/NuEVI/NuEVI.ino b/NuEVI/NuEVI.ino
deleted file mode 100644
index 19b0f25..0000000
--- a/NuEVI/NuEVI.ino
+++ /dev/null
@@ -1,2356 +0,0 @@
-#include
-#include
-#include
-#include
-
-#include "FilterOnePole.h" // for the breath signal low-pass filtering, from https://github.com/JonHub/Filters
-#include "globals.h"
-#include "hardware.h"
-#include "midi.h"
-#include "menu.h"
-#include "config.h"
-#include "settings.h"
-#include "led.h"
-
-/*
-NAME: NuEVI
-WRITTEN BY: JOHAN BERGLUND
-DATE: 2018-04-19
-FILE SAVED AS: NuEVI.ino
-FOR: PJRC Teensy 3.2 and a MPR121 capactive touch sensor board.
- Uses an SSD1306 controlled OLED display communicating over I2C.
-PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath sensor
- and capacitive touch keys. Output to both USB MIDI and DIN MIDI.
-
-*/
-
-/*
-but hey, it's also...
-
-NAME: NuRAD
-WRITTEN BY: JOHAN BERGLUND
-DATE: 2019-08-09
-FILE SAVED AS: n/a
-FOR: PJRC Teensy 3.2 and three MPR121 capactive touch sensor boards.
- Uses an SSD1306 controlled OLED display communicating over I2C.
-PROGRAMME FUNCTION: EWI Wind Controller using the Freescale MP3V5004GP breath sensor
- and capacitive touch keys. Output to both USB MIDI and DIN MIDI.
-
-...if you just uncomment the #define NURAD in hardware.h
-*/
-
-
-//Make sure compiler is set to the appropriate platform
-#ifndef __MK20DX256__
- #error "Wrong target platform. Please set to Teensy 3.1/3.2 (MK20DX256)."
-#endif
-
-#if !defined(USB_MIDI) && !defined(USB_MIDI_SERIAL)
- #error "USB MIDI not enabled. Please set USB type to 'MIDI' or 'Serial + MIDI'."
-#endif
-
-
-
-//_______________________________________________________________________________________________ DECLARATIONS
-
-//variables setup
-
-unsigned short breathThrVal;// = 350;
-unsigned short breathMaxVal;// = 1000;
-unsigned short portamThrVal;// = 1730;
-unsigned short portamMaxVal;// = 3300;
-unsigned short pitchbThrVal;// = 1200;
-unsigned short pitchbMaxVal;// = 2400;
-unsigned short extracThrVal;// = 1200;
-unsigned short extracMaxVal;// = 2400;
-unsigned short ctouchThrVal;// = 120;
-unsigned short leverThrVal;
-unsigned short leverMaxVal;
-unsigned short transpose;
-unsigned short MIDIchannel;
-unsigned short breathCC; // OFF:MW:BR:VL:EX:MW+:BR+:VL+:EX+:CF
-unsigned short breathCC2; // OFF:1-127
-unsigned short breathCC2Rise; // 1X:2X:3X:4X:5X
-unsigned short breathAT;
-unsigned short velocity;
-unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
-unsigned short portLimit; // 1-127
-unsigned short PBdepth; // OFF:1-12 divider
-unsigned short extraCT; // OFF:MW:FP:CF:SP
-unsigned short vibrato; // OFF:1-9
-unsigned short deglitch; // 0-70 ms in steps of 5
-unsigned short patch; // 1-128
-unsigned short octave;
-unsigned short curve;
-unsigned short velSmpDl; // 0-30 ms
-unsigned short velBias; // 0-9
-unsigned short pinkySetting; // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 24 (QuickTranspose +1 to +12), 25 (EC2), 26 (ECSW), 27 (LVL), 28 (LVLP)
-unsigned short dipSwBits; // virtual dip switch settings for special modes (work in progress)
-unsigned short priority; // mono priority for rotator chords
-
-unsigned short extraCT2; // OFF:1-127
-unsigned short levelCC; // 0-127
-unsigned short levelVal; // 0-127
-unsigned short fingering; // 0-4 EWI,EWX,SAX,EVI,EVR
-unsigned short rollerMode; //0-2
-unsigned short lpinky3; // 0-25 (OFF, -12 - MOD - +12)
-unsigned short batteryType; // 0-2 ALK,NIM,LIP
-unsigned short harmSetting; // 0-7
-unsigned short harmSelect; // 0-5
-unsigned short brHarmSetting; // 0-7
-unsigned short brHarmSelect; // 0-3
-PolySelect polySelect; // OFF, MGR, MGD, MND, MNH, FWC, RTA, RTB or RTC
-unsigned short fwcType; // 6, m6, 7, m7
-unsigned short fwcLockH; // OFF:ON
-unsigned short fwcDrop2; // OFF:ON
-unsigned short hmzKey; // 0-11 (0 is C)
-unsigned short hmzLimit; // 2-5
-unsigned short otfKey; //OFF:ON
-unsigned short breathInterval = 6; // 3-15
-
-unsigned short vibSens = 2; // vibrato sensitivity
-unsigned short vibRetn = 2; // vibrato return speed
-unsigned short vibSquelch = 12; //vibrato signal squelch
-unsigned short vibDirection = DNWD; //direction of first vibrato wave UPWD or DNWD
-unsigned short vibSensBite = 2; // vibrato sensitivity (bite)
-unsigned short vibSquelchBite = 12; //vibrato signal squelch (bite)
-unsigned short vibControl = 0;
-unsigned short biteControl = 0; // OFF, VIB, GLD, CC
-unsigned short leverControl = 0; // OFF, VIB, GLD, CC
-unsigned short biteCC = 0; // 0 - 127
-unsigned short leverCC = 0; // 0 -127
-
-unsigned short cvTune; // 1 - 199 representing -99 to +99 in menu (offset of 100 to keep postitive)
-unsigned short cvScale; // 1 - 199 representing -99 to +99 in menu (offset of 100 to keep postitive)
-unsigned short cvVibRate; // OFF, 1 - 8 CV extra controller LFO vibrato rate 4.5Hz to 8Hz
-
-unsigned short fastPatch[7] = {0,0,0,0,0,0,0};
-
-uint16_t bcasMode; //Legacy CASSIDY compile flag
-uint16_t trill3_interval;
-uint16_t fastBoot;
-uint16_t dacMode;
-
-byte rotatorOn = 0;
-byte currentRotation = 3;
-
-Rotator rotations_a;
-Rotator rotations_b;
-Rotator rotations_c;
-
-byte gateOpen = 0; // setting for gate always open, note on sent for every time fingering changes, no matter the breath status
-uint16_t gateOpenEnable = 0;
-
-uint16_t specialKeyEnable = 0;
-
-int touch_Thr = 1300;
-
-byte ccList[11] = {0,1,2,7,11,1,2,7,11,74,20}; // OFF, Modulation, Breath, Volume, Expression (then same sent in hires), CC74 (cutoff/brightness), CC20 (UNO Cutoff)
-
-int pbDepthList[13] = {8192,8192,4096,2731,2048,1638,1365,1170,1024,910,819,744,683};
-
-#if defined(NURAD)
-#if defined(SEAMUS)
-int calOffsetRollers[6] = {-70,20,20,20,20,120};
-int calOffsetRH[12] = {0,0,0,0,0,-50,121,0,0,50,0,120};
-int calOffsetLH[12] = {120,0,120,0,50,115,118,0,50,0,0,0};
-#else
-int calOffsetRollers[6] = {16,10,8,21,24,41};
-int calOffsetRH[12] = {-88,-68,-31,13,4,120,121,-68,-85,-34,23,87};
-int calOffsetLH[12] = {90,-13,-33,-93,-82,115,118,2,4,-40,-75,-94};
-#endif
-#endif
-
-int battMeasured[50];
-int battAvg = 0;
-byte battCheckPos = 0;
-
-// the following variables are unsigned longs because the time, measured in
-// milliseconds, will quickly become a bigger number than can be stored in an int.
-
-static unsigned long pixelUpdateTime = 0;
-static const unsigned long pixelUpdateInterval = 80;
-
-unsigned long lastDeglitchTime = 0; // The last time the fingering was changed
-unsigned long ccSendTime = 0L; // The last time we sent CC values
-unsigned long ccSendTime2 = 0L; // The last time we sent CC values 2 (slower)
-unsigned long ccSendTime3 = 0L; // The last time we sent CC values 3 (and slower)
-unsigned long lvlTime = 0L;
-unsigned long ccBreathSendTime = 0L; // The last time we sent breath CC values
-unsigned long breath_on_time = 0L; // Time when breath sensor value went over the ON threshold
-unsigned long currentTime;
-
-int lastFingering = 0; // Keep the last fingering value for debouncing
-
-int mainState; // The state of the main state machine
-
-int initial_breath_value; // The breath value at the time we observed the transition
-
-byte activeMIDIchannel; // MIDI channel
-byte activePatch=0;
-byte doPatchUpdate=0;
-
-byte cvPortaTuneCount = 0;
-
-uint16_t legacy = 0;
-uint16_t legacyBrAct = 0;
-byte halfTime = 0;
-boolean programonce = false;
-boolean oneroll;
-byte widiOn = 0;
-
-int breathLevel=0; // breath level (smoothed) not mapped to CC value
-int oldbreath=0;
-int oldbreathcc2=0;
-unsigned int oldbreathhires=0;
-float filterFreq = 30.0;
-
-float filterVal = 0.15;
-float smoothedVal;
-int pressureSensor; // pressure data from breath sensor, for midi breath cc and breath threshold checks
-int lastPressure;
-byte velocitySend; // remapped midi velocity from breath sensor (or set to static value if selected)
-int breathCalZero;
-
-int leverPortZero;
-#if defined(NURAD)
-int leverPortThr = 70;
-#else
-int leverPortThr = 70;
-#endif
-int leverPortRead;
-
-
-int biteSensor=0; // capacitance data from bite sensor, for midi cc and threshold checks
-byte portIsOn=0; // keep track and make sure we send CC with 0 value when off threshold
-byte biteIsOn=0; // keep track and make sure we send CC with 0 value when off threshold
-byte leverIsOn=0; // keep track and make sure we send CC with 0 value when off threshold
-int oldport=0;
-int lastBite=0;
-byte biteJumper=0;
-byte widiJumper=0;
-int oldbitecc=0;
-int oldlevercc=0;
-
-int cvPitch;
-int targetPitch;
-
-int exSensor=0;
-int exSensorIndicator=0;
-byte extracIsOn=0;
-int oldextrac=0;
-int oldextrac2=0;
-
-int harmonics = 0;
-int brHarmonics = 0;
-
-int pitchBend=8192;
-int pbSend=8192;
-int oldpb=8192;
-int vibSignal=0;
-int pbUp=0;
-int pbDn=0;
-byte vibLedOff = 0;
-byte oldpkey = 0;
-
-byte lap = 0;
-byte rSum = 0;
-
-static const float vibDepth[10] = {0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45}; // max pitch bend values (+/-) for the vibrato settings
-static const short vibMaxBiteList[17] = {1600,1400,1200,1000,900,800,700,600,500,400,300,250,200,150,100,50,25};
-static const short vibMaxList[12] = {300,275,250,225,200,175,150,125,100,75,50,25};
-static const int timeDividerList[9] = {0, 222, 200, 181, 167, 152, 143, 130, 125}; // For CV vibrato - 222 is 4.5Hz, 200 is 5Hz, 181 is 5.5Hz 167 is 6Hz, 152 is 6.5Hz, 143 is 7Hz, 130 is 7.5Hz, 125 is 8Hz
-
-static const unsigned short curveM4[] = {0,4300,7000,8700,9900,10950,11900,12600,13300,13900,14500,15000,15450,15700,16000,16250,16383};
-static const unsigned short curveM3[] = {0,2900,5100,6650,8200,9500,10550,11500,12300,13100,13800,14450,14950,15350,15750,16150,16383};
-static const unsigned short curveM2[] = {0,2000,3600,5000,6450,7850,9000,10100,11100,12100,12900,13700,14400,14950,15500,16000,16383};
-static const unsigned short curveM1[] = {0,1400,2850,4100,5300,6450,7600,8700,9800,10750,11650,12600,13350,14150,14950,15650,16383};
-const unsigned short curveIn[] = {0,1023,2047,3071,4095,5119,6143,7167,8191,9215,10239,11263,12287,13311,14335,15359,16383};
-static const unsigned short curveP1[] = {0,600,1350,2150,2900,3800,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-static const unsigned short curveP2[] = {0,400,800,1300,2000,2650,3500,4300,5300,6250,7400,8500,9600,11050,12400,14100,16383};
-static const unsigned short curveP3[] = {0,200,500,900,1300,1800,2350,3100,3800,4600,5550,6550,8000,9500,11250,13400,16383};
-static const unsigned short curveP4[] = {0,100,200,400,700,1050,1500,1950,2550,3200,4000,4900,6050,7500,9300,12100,16383};
-static const unsigned short curveS1[] = {0,600,1350,2150,2900,3800,4700,6000,8700,11000,12400,13400,14300,14950,15500,16000,16383};
-static const unsigned short curveS2[] = {0,600,1350,2150,2900,4000,6100,9000,11000,12100,12900,13700,14400,14950,15500,16000,16383};
-//static const unsigned short curveS3[] = {0,600,1350,2300,3800,6200,8700,10200,11100,12100,12900,13700,14400,14950,15500,16000,16383};
-//static const unsigned short curveS4[] = {0,600,1700,4000,6600,8550,9700,10550,11400,12200,12900,13700,14400,14950,15500,16000,16383};
-
-static const unsigned short curveZ1[] = {0,1400,2100,2900,3200,3900,4700,5600,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-static const unsigned short curveZ2[] = {0,2000,3200,3800,4096,4800,5100,5900,6650,7700,8800,9900,11100,12300,13500,14850,16383};
-
-const unsigned short* const curves[] = {
- curveM4, curveM3, curveM2, curveM1, curveIn, curveP1, curveP2,
- curveP3, curveP4 , curveS1, curveS2, curveZ1, curveZ2
-};
-
-// NuRAD Sax fingering
-// LH1, LHb, LH2, LH3, LHp1, -LHp2-, -RHs-, RH1, RH2, RH3, RHp1, -RHp2-, RHp3 -excluded- LHp2 always -1, RHs always +1, RHp2 disabled
-// 0 = not touched, 1 = touched, 2 = whatever
-
-const byte saxFingerMatch[16][10] =
-{
- {1, 2, 1, 1, 0, 1, 1, 1, 2, 1}, // C (-13 semis)
- {1, 2, 1, 1, 1, 1, 1, 1, 2, 1}, // C# (-12 semis)
- {1, 2, 1, 1, 2, 1, 1, 1, 0, 0}, // D (-11 semis)
- {1, 2, 1, 1, 2, 1, 1, 1, 1, 0}, // D# (-10 semis)
- {1, 2, 1, 1, 2, 1, 1, 0, 2, 2}, // E (-9 semis)
- {1, 2, 1, 1, 2, 1, 0, 2, 2, 2}, // F (-8 semis)
- {1, 2, 1, 1, 2, 0, 1, 2, 2, 2}, // F# (-7 semis)
- {1, 2, 1, 1, 0, 0, 0, 2, 2, 2}, // G (-6 semis)
- {1, 2, 1, 1, 1, 0, 0, 2, 2, 2}, // G# (-5 semis)
- {1, 2, 1, 0, 2, 2, 2, 2, 2, 2}, // A (-4 semis)
- {1, 2, 0, 2, 2, 1, 2, 2, 2, 2}, // A# (-3 semis) RH1 for Bb
- {1, 2, 0, 2, 2, 2, 1, 2, 2, 2}, // A# (-3 semis) RH2 for Bb
- {1, 1, 0, 2, 2, 2, 2, 2, 2, 2}, // A# (-3 semis) bis for Bb
- {1, 0, 0, 2, 2, 0, 2, 2, 2, 2}, // B (-2 semis)
- {0, 2, 1, 2, 2, 2, 2, 2, 2, 2}, // C (-1 semis)
- {0, 2, 0, 2, 2, 2, 2, 2, 2, 2}, // C# (-0 semis)
-};
-
-static int waveformsTable[maxSamplesNum] = {
- // Sine wave
- 0x7ff, 0x86a, 0x8d5, 0x93f, 0x9a9, 0xa11, 0xa78, 0xadd, 0xb40, 0xba1,
- 0xbff, 0xc5a, 0xcb2, 0xd08, 0xd59, 0xda7, 0xdf1, 0xe36, 0xe77, 0xeb4,
- 0xeec, 0xf1f, 0xf4d, 0xf77, 0xf9a, 0xfb9, 0xfd2, 0xfe5, 0xff3, 0xffc,
- 0xfff, 0xffc, 0xff3, 0xfe5, 0xfd2, 0xfb9, 0xf9a, 0xf77, 0xf4d, 0xf1f,
- 0xeec, 0xeb4, 0xe77, 0xe36, 0xdf1, 0xda7, 0xd59, 0xd08, 0xcb2, 0xc5a,
- 0xbff, 0xba1, 0xb40, 0xadd, 0xa78, 0xa11, 0x9a9, 0x93f, 0x8d5, 0x86a,
- 0x7ff, 0x794, 0x729, 0x6bf, 0x655, 0x5ed, 0x586, 0x521, 0x4be, 0x45d,
- 0x3ff, 0x3a4, 0x34c, 0x2f6, 0x2a5, 0x257, 0x20d, 0x1c8, 0x187, 0x14a,
- 0x112, 0xdf, 0xb1, 0x87, 0x64, 0x45, 0x2c, 0x19, 0xb, 0x2,
- 0x0, 0x2, 0xb, 0x19, 0x2c, 0x45, 0x64, 0x87, 0xb1, 0xdf,
- 0x112, 0x14a, 0x187, 0x1c8, 0x20d, 0x257, 0x2a5, 0x2f6, 0x34c, 0x3a4,
- 0x3ff, 0x45d, 0x4be, 0x521, 0x586, 0x5ed, 0x655, 0x6bf, 0x729, 0x794
-};
-
-int saxFingerResult[16] =
-{-13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -3, -3, -2, -1, 0};
-
-byte saxFinger[10];
-
-byte bottom = 1;
-
-// Four Way Close variants (FWC), http://www.thejazzpianosite.com/jazz-piano-lessons/jazz-chord-voicings/four-way-close/
-// 6
-const int blockFWC[4][12][3] = {{{ -3, -5, -8 }, // C or key base
- { -3, -5, -8 }, // C# or base +1
- { -3, -6, -9 }, // D or base +2
- { -3, -5, -9 }, // D# or base +3
- { -4, -5, -9 }, // E or base +4
- { -3, -6, -9 }, // F or base +5
- { -3, -5, -8 }, // F# or base +6
- { -3, -5, -8 }, // G or base +7
- { -3, -6, -9 }, // G# or base +8
- { -4, -5, -9 }, // A or base +9
- { -3, -5, -9 }, // Bb or base +10
- { -3, -6, -9 }}, // B or base +11
-// m6
- {{ -3, -5, -9 }, // C or key base
- { -3, -5, -9 }, // C# or base +1
- { -3, -6, -9 }, // D or base +2
- { -3, -6, -8 }, // D# or base +3
- { -3, -6, -9 }, // E or base +4
- { -3, -6, -9 }, // F or base +5
- { -3, -6, -8 }, // F# or base +6
- { -3, -6, -8 }, // G or base +7
- { -3, -6, -9 }, // G# or base +8
- { -4, -5, -9 }, // A or base +9
- { -3, -6, -9 }, // Bb or base +10
- { -3, -6, -9 }}, // B or base +11
-// 7
- {{ -2, -5, -8 }, // C or key base
- { -2, -5, -8 }, // C# or base +1
- { -3, -6, -9 }, // D or base +2
- { -4, -6, -9 }, // D# or base +3
- { -4, -6, -9 }, // E or base +4
- { -3, -6, -9 }, // F or base +5
- { -3, -7, -9 }, // F# or base +6
- { -3, -7, -9 }, // G or base +7
- { -3, -6, -9 }, // G# or base +8
- { -3, -6, -9 }, // A or base +9
- { -3, -6, -10 }, // Bb or base +10
- { -3, -6, -9 }}, // B or base +11
-// m7
- {{ -2, -5, -9 }, // C or key base
- { -2, -5, -9 }, // C# or base +1
- { -3, -6, -9 }, // D or base +2
- { -3, -5, -8 }, // D# or base +3
- { -3, -5, -8 }, // E or base +4 3 6 9
- { -3, -6, -9 }, // F or base +5
- { -4, -7, -9 }, // F# or base +6
- { -4, -7, -9 }, // G or base +7
- { -3, -6, -9 }, // G# or base +8
- { -3, -6, -9 }, // A or base +9
- { -3, -7, -10 }, // Bb or base +10
- { -3, -6, -9 }}}; // B or base +11
-
-// Major Gospel Root (MGR), Bert Lochs
-const int majGosRootHmz[12][3] = {{ -5, -8, -12 }, // C or key base
- { -6, -9, -12 }, // C# or base +1
- { -3, -7, -12 }, // D or base +2
- { -6, -9, -12 }, // D# or base +3
- { -4, -9, -12 }, // E or base +4
- { -5, -8, -12 }, // F or base +5
- { -3, -6, -12 }, // F# or base +6
- { -3, -7, -12 }, // G or base +7
- { -3, -8, -12 }, // G# or base +8
- { -4, -9, -12 }, // A or base +9
- { -5, -8, -12 }, // Bb or base +10
- { -4, -9, -12 }}; // B or base +11
-
-// Major Gospel Dominant (MGD), Bert Lochs
-const int majGosDomHmz[12][3] = {{ -5, -8, -12 }, // C or key base
- { -6, -9, -12 }, // C# or base +1
- { -3, -7, -12 }, // D or base +2
- { -6, -9, -12 }, // D# or base +3
- { -4, -9, -12 }, // E or base +4
- { -5, -8, -12 }, // F or base +5
- { -3, -6, -12 }, // F# or base +6
- { -5, -8, -12 }, // G or base +7
- { -3, -8, -12 }, // G# or base +8
- { -4, -9, -12 }, // A or base +9
- { -5, -8, -12 }, // Bb or base +10
- { -4, -9, -12 }}; // B or base +11
-
-// Major add9 (MA9), Bert Lochs
-const int majAdd9Hmz[12][3] = {{ -5, -8, -10 }, // C or key base
- { -6, -8, -10 }, // C# or base +1
- { -3, -5, -7 }, // D or base +2
- { -3, -7, -9 }, // D# or base +3
- { -2, -4, -9 }, // E or base +4
- { -5, -8, -10 }, // F or base +5
- { -4, -6, -10 }, // F# or base +6
- { -3, -5, -7 }, // G or base +7
- { -4, -6, -10 }, // G# or base +8
- { -2, -4, -9 }, // A or base +9
- { -5, -8, -10 }, // Bb or base +10
- { -2, -4, -9 }}; // B or base +11
-
-// Minor Dorian (MND), Bert Lochs
-const int minDorHmz[12][3] = {{ -5, -9, -12 }, // C or key base
- { -5, -9, -12 }, // C# or base +1
- { -5, -9, -12 }, // D or base +2
- { -3, -8, -12 }, // D# or base +3
- { -3, -8, -12 }, // E or base +4
- { -3, -8, -12 }, // F or base +5
- { -5, -9, -12 }, // F# or base +6
- { -5, -9, -12 }, // G or base +7
- { -5, -8, -12 }, // G# or base +8
- { -4, -7, -12 }, // A or base +9
- { -3, -8, -12 }, // Bb or base +10
- { -4, -9, -12 }}; // B or base +11
-
-// Minor Aeolian (MNA), Bert Lochs
-const int minAeoHmz[12][3] = {{ -5, -9, -12 }, // C or key base
- { -5, -9, -12 }, // C# or base +1
- { -3, -9, -12 }, // D or base +2
- { -3, -8, -12 }, // D# or base +3
- { -6, -9, -12 }, // E or base +4
- { -5, -9, -12 }, // F or base +5
- { -5, -9, -12 }, // F# or base +6
- { -5, -9, -12 }, // G or base +7
- { -3, -8, -12 }, // G# or base +8
- { -3, -8, -12 }, // A or base +9
- { -3, -8, -12 }, // Bb or base +10
- { -6, -8, -12 }}; // B or base +11
-
-// Minor 4-voice Hip (MNH), Bert Lochs
-const int minHipHmz[12][3] = {{ -5, -9, -10 }, // C or key base
- { -5, -9, -10 }, // C# or base +1
- { -5, -9, -10 }, // D or base +2
- { -3, -4, -8 }, // D# or base +3
- { -3, -4, -8 }, // E or base +4
- { -3, -4, -8 }, // F or base +5
- { -5, -9, -10 }, // F# or base +6
- { -5, -9, -10 }, // G or base +7
- { -5, -6, -8 }, // G# or base +8
- { -4, -7, -8 }, // A or base +9
- { -3, -4, -8 }, // Bb or base +10
- { -4, -6, -9 }}; // B or base +11
-
-
-const int harmonicResult[8][7] = {{ 0, 7, 12, 16, 19, 24, 28 }, //HM1
- { 0, 7, 12, 16, 19, 22, 24 }, //HM2 (7th harmonic not excluded)
- { 0, 7, 12, 19, 24, 31, 36 }, //5TH
- { 0, 12, 24, 36, 48, 60, 72 }, //OCT
- { 0, 7, 12, 16, 19, 24, 28 }, //HM1
- { 0, 7, 12, 16, 19, 22, 24 }, //HM2 (7th harmonic not excluded)
- { 0, 7, 12, 19, 24, 31, 36 }, //5TH
- { 0, 12, 24, 36, 48, 60, 72 }}; //OCT
-
- /*
- { 28, 24, 19, 16, 12, 7, 0 }, //H1R
- { 24, 22, 19, 16, 12, 7, 0 }, //H2R (7th harmonic not excluded)
- { 36, 31, 24, 19, 12, 7, 0 }, //5TR
- { 72, 60, 48, 36, 24, 12, 0 }}; //OCR
- */
-
-
-const int brHarmonicResult[4][7] = {{ 0, 7, 12, 16, 19, 24, 28 }, //HM1
- { 0, 7, 12, 16, 19, 22, 24 }, //HM2 (7th harmonic not excluded)
- { 0, 7, 12, 19, 24, 31, 36 }, //5TH
- { 0, 12, 24, 36, 48, 60, 72 }}; //OCT
-
-const int rollerHarmonic[2][7] = {{ 0, 7, 12, 16, 19, 24, 26 }, //F horn 2,3,4,5,6,8,9 hrm
- { 7, 12, 16, 19, 24, 26, 31 }}; //Bb horn 3,4,5,6,8,9,12 hrm
-
-const int trumpetHarmonic[2][7] = {{ 0, 7, 12, 16, 19, 26, 31 }, //!K4: hrm 8->9, 10->12
- { 0, 7, 12, 16, 19, 24, 28 }}; //trumpet 2,3,4,5,6,8,10 hrm
-
-
-int vibThr; // this gets auto calibrated in setup
-int vibThrLo;
-int vibZero;
-int vibZeroBite;
-int vibThrBite;
-int vibThrBiteLo;
-
-
-int fingeredNote; // note calculated from fingering (switches), transpose and octave settings
-int fingeredNoteUntransposed; // note calculated from fingering (switches), for on the fly settings
-byte activeNote; // note playing
-byte startNote=36; // set startNote to C (change this value in steps of 12 to start in other octaves)
-int slurBase; // first note in slur sustain chord
-
-int slurInterval[9] = {-5,0,0,0,0,0,0,0,0};
-byte addedIntervals = 1;
-
-#if defined(NURAD)
- // Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
-byte LHs;
-byte LH1; // Left Hand key 1 (pitch change -2)
-byte LHb; // Left Hand bis key (pitch change -1 unless both LH1 and LH2 are pressed)
-byte LH2; // Left Hand key 2 (with LH1 also pressed pitch change is -2, otherwise -1)
-byte LH3; // Left Hand key 3 (pitch change -2)
-byte LHp1; // Left Hand pinky key 1 (pitch change +1)
-byte LHp2; // Left Hand pinky key 2 (pitch change -1)
-byte LHp3;
-byte RHs; // Right Hand side key (pitch change -2 unless LHp1 is pressed)
-byte RH1; // Right Hand key 1 (with LH3 also pressed pitch change is -2, otherwise -1)
-byte RH2; // Right Hand key 2 (pitch change -1)
-byte RH3; // Right Hand key 3 (pitch change -2)
-byte RHp1; // Right Hand pinky key 1 (pitch change +1)
-byte RHp2; // Right Hand pinky key 2 (pitch change -1)
-byte RHp3; // Right Hand pinky key 3 (pitch change -2)
-byte Tr1; // Trill key 1 (pitch change +2) (EVI fingering)
-byte Tr2; // Trill key 2 (pitch change +1)
-byte Tr3; // Trill key 3 (pitch change +4)
-byte K1; // Valve 1 (pitch change -2)
-byte K2; // Valve 2 (pitch change -1)
-byte K3; // Valve 3 (pitch change -3)
-byte K4; // Left Hand index finger (pitch change -5)
-byte K5; // Trill key 1 (pitch change +2)
-byte K6; // Trill key 2 (pitch change +1)
-byte K7; // Trill key 3 (pitch change +4)
-#else
-// Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
-byte K1; // Valve 1 (pitch change -2)
-byte K2; // Valve 2 (pitch change -1)
-byte K3; // Valve 3 (pitch change -3)
-byte K4; // Left Hand index finger (pitch change -5)
-byte K5; // Trill key 1 (pitch change +2)
-byte K6; // Trill key 2 (pitch change +1)
-byte K7; // Trill key 3 (pitch change +4)
-#endif
-byte R1;
-byte R2;
-byte R3;
-byte R4;
-byte R5;
-byte R6;
-
-byte octaveR = 0;
-byte lastOctaveR = 0;
-
-byte halfPitchBendKey;
-byte quarterToneTrigger;
-byte specialKey;
-byte patchKey = 0;
-byte pinkyKey = 0;
-byte lastSpecialKey = 0;
-byte lastPinkyKey = 0;
-int pitchlatch;
-int reverb;
-
-byte pcCombo1 = 0;
-byte pcCombo2 = 0;
-byte lastpcc1 = 0;
-byte lastpcc2 = 0;
-
-byte slurSustain = 0;
-byte parallelChord = 0;
-byte subOctaveDouble = 0;
-byte slurSostenuto = 0;
-
-#if defined(NURAD)
-Adafruit_MPR121 touchSensorRollers = Adafruit_MPR121();
-Adafruit_MPR121 touchSensorRH = Adafruit_MPR121();
-Adafruit_MPR121 touchSensorLH = Adafruit_MPR121();
-#else
-Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
-#endif
-FilterOnePole breathFilter;
-IntervalTimer cvTimer;
-
-bool configManagementMode = false;
-bool i2cScan = false;
-
-
-//_______________________________________________________________________________________________ SETUP
-
-//Update CV output pin, run from timer.
-void cvUpdate(){
- int cvPressure = analogRead(breathSensorPin);
- #if defined(NURAD)
- analogWrite(pwmDacPin,map(constrain(cvPressure,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,4095));
- if(dacMode == DAC_MODE_BREATH){
- analogWrite(dacPin,map(constrain(cvPressure,breathThrVal,4095),breathThrVal,4095,0,4095));
- }
- #else
- if(dacMode == DAC_MODE_PITCH){
- analogWrite(pwmDacPin,cvPressure);
- } else { //DAC_MODE_BREATH
- analogWrite(dacPin,map(constrain(cvPressure,breathThrVal,4095),breathThrVal,4095,0,4095));
- }
- #endif
-}
-
-
-
-void setup() {
-
- analogReadResolution(12); // set resolution of ADCs to 12 bit
- analogWriteResolution(12);
- analogWriteFrequency(pwmDacPin,11718.75);
- Wire.setClock(1000000);
-
- pinMode(dPin, INPUT_PULLUP);
- pinMode(ePin, INPUT_PULLUP);
- pinMode(uPin, INPUT_PULLUP);
- pinMode(mPin, INPUT_PULLUP);
-
- pinMode(bLedPin, OUTPUT); // breath indicator LED
- pinMode(pLedPin, OUTPUT); // portam indicator LED
- pinMode(statusLedPin,OUTPUT); // Teensy onboard LED
- pinMode(dacPin, OUTPUT); //DAC output for analog signal
- pinMode(pwmDacPin, OUTPUT); //PWMed DAC output for analog signal
-
- #if defined(NURAD)
- pinMode(eLedPin, OUTPUT); // breath indicator LED
- pinMode(sLedPin, OUTPUT); // portam indicator LED
- #else
- pinMode(biteJumperPin, INPUT_PULLUP); //PBITE
- pinMode(biteJumperGndPin, OUTPUT); //PBITE
- digitalWrite(biteJumperGndPin, LOW); //PBITE
- #endif
-
- pinMode(widiPowerPin, OUTPUT); //WIDI
- pinMode(widiJumperPin, INPUT_PULLUP); //WIDI
- pinMode(widiJumperGndPin, OUTPUT); //WIDI
- digitalWrite(widiJumperGndPin, LOW); //WIDI
-
- widiJumper = !digitalRead(widiJumperPin); //WIDI
-
- Serial2.setRX (26); //WIDI
- Serial2.setTX (31); //WIDI
-
- bool factoryReset = !digitalRead(ePin) && !digitalRead(mPin);
- configManagementMode = !factoryReset && !digitalRead(uPin) && !digitalRead(dPin);
- i2cScan = !factoryReset && !digitalRead(mPin);
-
- initDisplay(); //Start up display and show logo
-
- //If going into config management mode, stop here before we even touch the EEPROM.
- if(configManagementMode) {
- configModeSetup();
- return;
- }
-
- #if defined(I2CSCANNER)
- if(i2cScan){
- delay(2000);
- i2cScanDisplay();
- }
- #endif
-
-
- //Read eeprom data into global vars
- readEEPROM(factoryReset);
-
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
-
- activePatch = patch;
-
- #if defined(NURAD)
- digitalWrite(statusLedPin,HIGH);
- delay(100);
- analogWrite(bLedPin, BREATH_LED_BRIGHTNESS);
- if (!touchSensorRollers.begin(0x5D)) { //should be D
- while (1){ // Touch sensor initialization failed - stop doing stuff
- if (!digitalRead(dPin) && !digitalRead(ePin) && !digitalRead(uPin) && !digitalRead(mPin)) _reboot_Teensyduino_(); // reboot to program mode if all buttons pressed
- }
- }
- delay(100);
- analogWrite(bLedPin, 0);
- analogWrite(pLedPin, PORTAM_LED_BRIGHTNESS);
- if (!touchSensorLH.begin(0x5C)) {
- while (1){ // Touch sensor initialization failed - stop doing stuff
- if (!digitalRead(dPin) && !digitalRead(ePin) && !digitalRead(uPin) && !digitalRead(mPin)) _reboot_Teensyduino_(); // reboot to program mode if all buttons pressed
- }
- }
- delay(100);
- analogWrite(pLedPin, 0);
- analogWrite(eLedPin, PORTAM_LED_BRIGHTNESS);
- if (!touchSensorRH.begin(0x5B)) {
- while (1){ // Touch sensor initialization failed - stop doing stuff
- if (!digitalRead(dPin) && !digitalRead(ePin) && !digitalRead(uPin) && !digitalRead(mPin)) _reboot_Teensyduino_(); // reboot to program mode if all buttons pressed
- }
- }
- delay(100);
- analogWrite(eLedPin, 0);
- analogWrite(sLedPin, PORTAM_LED_BRIGHTNESS);
- delay(100);
- analogWrite(sLedPin, 0);
- delay(100);
- digitalWrite(statusLedPin,LOW);
- #else
- if (!touchSensor.begin(0x5A)) {
- while (1){ // Touch sensor initialization failed - stop doing stuff
- if (!digitalRead(dPin) && !digitalRead(ePin) && !digitalRead(uPin) && !digitalRead(mPin)) _reboot_Teensyduino_(); // reboot to program mode if all buttons pressed
- }
- }
- #endif
-
- breathFilter.setFilter(LOWPASS, filterFreq, 0.0); // create a one pole (RC) lowpass filter
-
- #if defined(NURAD)
- biteJumper = true;
- #else
- biteJumper = !digitalRead(biteJumperPin);
- if (biteJumper){
- pinMode(bitePin, INPUT);
- }
- #endif
-
- //auto-calibrate the vibrato threshold while showing splash screen
- vibZero = vibZeroBite = breathCalZero = 0;
- const int sampleCount = 4;
- for(int i = 1 ; i <= sampleCount; ++i) {
- vibZero += touchRead(vibratoPin);
- breathCalZero += analogRead(breathSensorPin);
- if (biteJumper) vibZeroBite += analogRead(bitePressurePin); else vibZeroBite += touchRead(bitePin);
- statusLed(i&1);
- delay(fastBoot?75:220); //Shorter delay for fastboot
- }
-
- vibZero /= sampleCount;
- breathCalZero /= sampleCount;
- vibZeroBite /= sampleCount;
- leverPortZero = vibZero;
- vibThr = vibZero - vibSquelch;
- vibThrLo = vibZero + vibSquelch;
- vibThrBite = vibZeroBite - vibSquelchBite;
- vibThrBiteLo = vibZeroBite + vibSquelchBite;
-
- if (factoryReset) autoCal();
-
- if(!fastBoot) {
- statusLedFlash(500);
- statusLedOff();
-
- showVersion();
-
- delay(1400);
- }
-
- mainState = NOTE_OFF; // initialize main state machine
-
- if (!digitalRead(ePin)) {
- activePatch=0;
- doPatchUpdate=1;
- }
-
- if ((pinkySetting == LVLP) && levelCC){
- midiSendControlChange(levelCC, levelVal);
- }
-
- for (int i=0; i<50; i++){
- battMeasured[i] = analogRead(vMeterPin);
- delay(1);
- }
-
- if (widiJumper && widiOn) digitalWrite(widiPowerPin, HIGH); else digitalWrite(widiPowerPin, LOW);
-
- activeMIDIchannel = MIDIchannel;
- midiInitialize(MIDIchannel);
-
- //Serial.begin(9600); // debug
-
- statusLedOn(); // Switch on the onboard LED to indicate power on/ready
-
- cvTimer.begin(cvUpdate,500); // Update breath CV output every 500 microseconds
-
-}
-
-//_______________________________________________________________________________________________ MAIN LOOP
-
-void loop() {
-
- //If in config mgmt loop, do that and nothing else
- if(configManagementMode) {
- configModeLoop();
- return;
- }
-
- breathFilter.input(analogRead(breathSensorPin));
- pressureSensor = constrain((int) breathFilter.output(), 0, 4095); // Get the filtered pressure sensor reading from analog pin A0, input from sensor MP3V5004GP
- readSwitches();
- if (mainState == NOTE_OFF) {
- if (activeMIDIchannel != MIDIchannel) {
- activeMIDIchannel = MIDIchannel; // only switch channel if no active note
- midiSetChannel(activeMIDIchannel);
- }
- if ((activePatch != patch) && doPatchUpdate) {
- activePatch = patch;
- midiSendProgramChange(activePatch);
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- doPatchUpdate = 0;
- }
- if ((pressureSensor > breathThrVal) || gateOpen) {
- // Value has risen above threshold. Move to the RISE_WAIT
- // state. Record time and initial breath value.
- breath_on_time = millis();
- initial_breath_value = pressureSensor;
- mainState = RISE_WAIT; // Go to next state
- }
- if (legacy || legacyBrAct) {
-
- bool bothPB = (pbUp > ((pitchbMaxVal + pitchbThrVal) / 2)) && (pbDn > ((pitchbMaxVal + pitchbThrVal) / 2));
- bool justPbDn = !(pbUp > ((pitchbMaxVal + pitchbThrVal) / 2)) && (pbDn > ((pitchbMaxVal + pitchbThrVal) / 2));
- bool justPbUp = (pbUp > ((pitchbMaxVal + pitchbThrVal) / 2)) && !(pbDn > ((pitchbMaxVal + pitchbThrVal) / 2));
- bool noPb = !(pbUp > ((pitchbMaxVal + pitchbThrVal) / 2)) && !(pbDn > ((pitchbMaxVal + pitchbThrVal) / 2));
- bool brSuck = analogRead(breathSensorPin) < (breathCalZero - 850);
- int pitchlatchForPatch = patchLimit(pitchlatch + 1);
- if (pcCombo1 && (pcCombo1 != lastpcc1)){ // latched note number to patch number, send with K1/K5 combo
- if (patch != pitchlatchForPatch) {
- patch = pitchlatchForPatch;
- doPatchUpdate = 1;
- }
- } else if (pcCombo2 && (pcCombo2 != lastpcc2)) { // hi and lo patch numbers, send with K2/K6 combo
- if (pitchlatch > 75) {
- if (patch != patchLimit(pitchlatchForPatch + 24)) {
- patch = patchLimit(pitchlatchForPatch + 24); // add 24 to get high numbers 108 to 127
- doPatchUpdate = 1;
- }
- } else {
- if (patch != patchLimit(pitchlatchForPatch - 36)) {
- patch = patchLimit(pitchlatchForPatch - 36); // subtract 36 to get low numbers 0 to 36
- doPatchUpdate = 1;
- }
- }
- }
- lastpcc1=pcCombo1;
- lastpcc2=pcCombo2;
- if (
- patchKey ||
- (bothPB && legacy) ||
- (brSuck && legacyBrAct && justPbUp) ||
- (brSuck && legacyBrAct && bcasMode && noPb)
- ) { // both pb pads touched or br suck
-
-
- int fingeredNoteUntransposedForPatch = patchLimit(fingeredNoteUntransposed + 1);
- if (exSensor >= ((extracThrVal + extracMaxVal) / 2)) { // instant midi setting
- if ((fingeredNoteUntransposedForPatch >= 73) && (fingeredNoteUntransposedForPatch <= 88)) {
- MIDIchannel = fingeredNoteUntransposedForPatch - 72; // Mid C and up
- }
- } else {
- if (!pinkyKey) { // note number to patch number
- if (patch != fingeredNoteUntransposedForPatch) {
- patch = fingeredNoteUntransposedForPatch;
- doPatchUpdate = 1;
- }
- } else { // hi and lo patch numbers
- if (fingeredNoteUntransposedForPatch > 75) {
- if (patch != patchLimit(fingeredNoteUntransposedForPatch + 24)) {
- patch = patchLimit(fingeredNoteUntransposedForPatch + 24); // add 24 to get high numbers 108 to 127
- doPatchUpdate = 1;
- }
- } else {
- if (patch != patchLimit(fingeredNoteUntransposedForPatch - 36)) {
- patch = patchLimit(fingeredNoteUntransposedForPatch - 36); // subtract 36 to get low numbers 0 to 36
- doPatchUpdate = 1;
- }
- }
- }
- }
- } else {
- if (justPbDn && legacyBrAct && brSuck && programonce == false) { // down bend for suck programming button
- programonce = true;
-
- if (octaveR == 0) { //lowest octave position
-
- if (K1 && K2 && !K3 && K4) { // e28 send patch change -10
- patch = patch - 10;
- doPatchUpdate = 1;
- } else if (K1 && !K2 && !K3 && K4) { //f29 decrement and send patch change
- patch--;
- doPatchUpdate = 1;
- } else if (!K1 && K2 && !K3 && K4) { //f#30 send patch change +10
- patch = patch + 10;
- doPatchUpdate = 1;
- } else if (!K1 && !K2 && !K3 && K4) { //g31 increment and send patch change
- patch++;
- doPatchUpdate = 1;
- }
-
- if (!K1 && !K2 && K3 && !K4) { //send reverb pitchlatch value
- reverb = ((pitchlatch - 36) * 2);
- reverb = constrain(reverb, 0, 127);
-
- midiSendControlChange(91, reverb);
- }
- }
-
- if (octaveR == 3) { //middle octave position to set breath parameters
- // breathCC value is from cclist[] which assigns controller number
- if (K1) { //turn on midi volume
- breathCC = 3;
- midiSendControlChange(7, 0); //midi vol to 0
- midiSendControlChange(11, 127); //midi expression to 127
- }
- if (K3) { //turn on midi breath controller
- breathCC = 2;
- midiSendControlChange(7, 127); //midi vol to 127
- midiSendControlChange(11, 127); //midi expression to 127
- }
- if (K4) { //sb turn on midi expression
- breathCC = 4;
- midiSendControlChange(7, 127); //midi vol to 127
- midiSendControlChange(11, 0); //midi expression to 0
- }
- if (K2) { //2v turn on aftertouch
- breathAT = 1;
- midiSendControlChange(7, 127); //midi vol to 127
- midiSendControlChange(11, 127); //midi expression to 0
- } else {
- breathAT = 0;
- }
- if (K5) { //1tr turn on velocity
- velocity = 0;
- midiSendControlChange(7, 127); //midi vol to 127
- midiSendControlChange(11, 127); //midi expression to 0
- } else {
- velocity = 127;
- }
- if (!K1 && !K3 && !K4) {
- breathCC = 0;
- midiSendControlChange(7, 127); //midi vol to 127
- midiSendControlChange(11, 127); //midi expression to 127
- }
- }
- }
- }
- }
-
- if (analogRead(breathSensorPin) > (breathCalZero - 850)) programonce = false;
- #if defined(NURAD)
- #else
- specialKey = (touchRead(specialKeyPin) > touch_Thr); //S2 on pcb
- #endif
- if (polySelect != EHarmonizerOff) {
- if (lastSpecialKey != specialKey) {
- if (specialKey) {
- // special key just pressed, check other keys
- if (K4) {
- if (!slurSustain) {
- slurSustain = 1;
- slurSostenuto = 0;
- parallelChord = 0;
- rotatorOn = 0;
- } else slurSustain = 0;
- }
- if (K5) {
- if (!parallelChord) {
- parallelChord = 1;
- slurSustain = 0;
- rotatorOn = 0;
- } else parallelChord = 0;
- }
- if (K1) {
- if (!subOctaveDouble) {
- subOctaveDouble = 1;
- rotatorOn = 0;
- } else subOctaveDouble = 0;
- }
- if (K2) {
- if (!slurSostenuto) {
- slurSostenuto = 1;
- slurSustain = 0;
- //rotatorOn = 0;
- } else slurSostenuto = 0;
- }
- if (!K1 && !K4 && !K5 && !K2 && !pinkyKey) {
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- rotatorOn = 0;
- slurSostenuto = 0;
- }
- if (pinkyKey) {
- if (!rotatorOn) {
- rotatorOn = 1;
- currentRotation = 3;
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- } else rotatorOn = 0;
- }
- }
- }
- lastSpecialKey = specialKey;
- } else {
- rotatorOn = 0;
- slurSustain = 0;
- parallelChord = 0;
- subOctaveDouble = 0;
- slurSostenuto = 0;
- }
- if ((pinkySetting == LVL) || (pinkySetting == LVLP)){
- if (pinkyKey && K7){
- ledMeter(levelVal);
- if (K6 && (levelVal < 127)){
- if (currentTime - lvlTime > (LVL_TIMER_INTERVAL)){
- levelVal++;
- if (levelCC) midiSendControlChange(levelCC, levelVal);
- else midiSendAfterTouch(levelVal);
- lvlTime = currentTime;
- }
- } else if (K5 && (levelVal > 0)){
- if (currentTime - lvlTime > (LVL_TIMER_INTERVAL)){
- levelVal--;
- if (levelCC) midiSendControlChange(levelCC, levelVal);
- else midiSendAfterTouch(levelVal);
- lvlTime = currentTime;
- }
- }
- } else if (!pinkyKey && lastPinkyKey){
- writeSetting(LEVEL_VAL_ADDR,levelVal);
- }
- lastPinkyKey = pinkyKey;
- } else if (pinkySetting == GLD){
- /*if (pinkyKey && K7){
- ledMeter(portLimit);
- if (K6 && (portLimit < 127)){
- if (currentTime - lvlTime > (LVL_TIMER_INTERVAL)){
- portLimit++;
- if (portamento && (portamento != 5)) midiSendControlChange(CCN_Port, portLimit);
- lvlTime = currentTime;
- }
- } else if (K5 && (portLimit > 1)){
- if (currentTime - lvlTime > (LVL_TIMER_INTERVAL)){
- portLimit--;
- if (portamento && (portamento != 5)) midiSendControlChange(CCN_Port, portLimit);
- lvlTime = currentTime;
- }
- }
- } else if (!pinkyKey && lastPinkyKey){
- writeSetting(PORTLIMIT_ADDR,portLimit);
- }*/
- lastPinkyKey = pinkyKey;
- }
- } else if (mainState == RISE_WAIT) {
- if ((pressureSensor > breathThrVal) || gateOpen) {
- // Has enough time passed for us to collect our second
- // sample?
- if ((millis() - breath_on_time > velSmpDl) || (0 == velSmpDl) || velocity) {
- // Yes, so calculate MIDI note and velocity, then send a note on event
- // We should be at tonguing peak, so set velocity based on current pressureSensor value unless fixed velocity is set
- breathLevel = constrain(max(pressureSensor, initial_breath_value), breathThrVal, breathMaxVal);
- if (!velocity) {
- unsigned int breathValHires = breathCurve(map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, 0, 16383));
- velocitySend = (breathValHires >> 7) & 0x007F;
- velocitySend = constrain(velocitySend + velocitySend * .1 * velBias, 1, 127);
- //velocitySend = map(constrain(max(pressureSensor,initial_breath_value),breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,1,127);
- } else velocitySend = velocity;
- breath(); // send breath data
- fingeredNote = noteValueCheck(fingeredNote);
- if (priority) { // mono prio to last chord note
- midiSendNoteOn(fingeredNote, velocitySend); // send Note On message for new note
- }
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOn(noteValueCheck(fingeredNote + slurInterval[i]), velocitySend); // send Note On message for new note
- }
- }
- if (slurSustain) {
- midiSendControlChange(64, 127);
- slurBase = fingeredNote;
- addedIntervals = 0;
- }
- if (subOctaveDouble) {
- midiSendNoteOn(noteValueCheck(fingeredNote - 12), velocitySend);
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOn(noteValueCheck(fingeredNote + slurInterval[i] - 12), velocitySend); // send Note On message for new note
- }
- }
- }
- if (rotatorOn) {
- startHarmonizerNotes(fingeredNote);
- }
- if (!priority) { // mono prio to base note
- midiSendNoteOn(fingeredNote, velocitySend); // send Note On message for new note
- }
- if (slurSostenuto) {
- midiSendControlChange(66, 127);
- }
- activeNote = fingeredNote;
- mainState = NOTE_ON;
- }
- } else {
- // Value fell below threshold before velocity sample delay time passed. Return to
- // NOTE_OFF state (e.g. we're ignoring a short blip of breath)
- mainState = NOTE_OFF;
- }
- } else if (mainState == NOTE_ON) {
- if ((pressureSensor < breathThrVal) && !gateOpen) {
- // Value has fallen below threshold - turn the note off
- activeNote = noteValueCheck(activeNote);
- if (priority) {
- midiSendNoteOff(activeNote); // send Note Off message
- }
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOff(noteValueCheck(activeNote + slurInterval[i])); // send Note On message for new note
- }
- }
- if (subOctaveDouble) {
- midiSendNoteOff(noteValueCheck(activeNote - 12));
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOff(noteValueCheck(activeNote + slurInterval[i] - 12)); // send Note On message for new note
- }
- }
- }
- if (rotatorOn) {
- stopHarmonizerNotes(activeNote);
- }
- if (!priority) {
- midiSendNoteOff(activeNote); // send Note Off message
- }
- if (slurSustain) {
- midiSendControlChange(64, 0);
- }
- if (slurSostenuto) {
- midiSendControlChange(66, 0);
- }
- breathLevel = 0;
- mainState = NOTE_OFF;
- } else {
- if (noteValueCheck(fingeredNote) != activeNote) {
- // Player has moved to a new fingering while still blowing.
- // Send a note off for the current note and a note on for
- // the new note.
- if (!velocity) {
- unsigned int breathValHires = breathCurve(map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, 0, 16383));
- velocitySend = (breathValHires >> 7) & 0x007F;
- velocitySend = constrain(velocitySend + velocitySend * .1 * velBias, 1, 127);
- //velocitySend = map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,7,127); // set new velocity value based on current pressure sensor level
- }
- activeNote = noteValueCheck(activeNote);
- if ((parallelChord || subOctaveDouble || rotatorOn) && priority) { // poly playing, send old note off before new note on
- midiSendNoteOff(activeNote); // send Note Off message for old note
- }
-
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOff(noteValueCheck(activeNote + slurInterval[i])); // send Note Off message for old note
- }
- }
- if (subOctaveDouble) {
- midiSendNoteOff(noteValueCheck(activeNote - 12)); // send Note Off message for old note
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOff(noteValueCheck(activeNote + slurInterval[i] - 12)); // send Note Off message for old note
- }
- }
- }
- if (rotatorOn) {
- stopHarmonizerNotes(activeNote);
- }
-
- if ((parallelChord || subOctaveDouble || rotatorOn) && !priority) { // poly playing, send old note off before new note on
- midiSendNoteOff(activeNote); // send Note Off message for old note
- }
-
- fingeredNote = noteValueCheck(fingeredNote);
- if (priority) {
- midiSendNoteOn(fingeredNote, velocitySend); // send Note On message for new note
- }
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOn(noteValueCheck(fingeredNote + slurInterval[i]), velocitySend); // send Note On message for new note
- }
- }
- if (subOctaveDouble) {
- midiSendNoteOn(noteValueCheck(fingeredNote - 12), velocitySend); // send Note On message for new note
- if (parallelChord) {
- for (int i = 0; i < addedIntervals; i++) {
- midiSendNoteOn(noteValueCheck(fingeredNote + slurInterval[i] - 12), velocitySend); // send Note On message for new note
- }
- }
- }
- if (rotatorOn) {
- startHarmonizerNotes(fingeredNote);
- }
-
- if (!priority) {
- midiSendNoteOn(fingeredNote, velocitySend); // send Note On message for new note
- }
-
- if (!parallelChord && !subOctaveDouble && !rotatorOn) { // mono playing, send old note off after new note on
- delayMicroseconds(2000); //delay for midi recording fix
- midiSendNoteOff(activeNote); // send Note Off message
- }
-
- if (slurSustain) {
- if (addedIntervals < 9) {
- addedIntervals++;
- slurInterval[addedIntervals - 1] = fingeredNote - slurBase;
- }
- }
- activeNote = fingeredNote;
- }
- }
- if (pressureSensor > breathThrVal) cursorBlinkTime = millis(); // keep display from updating with cursor blinking if breath is over thr
- }
- // Is it time to send more CC data?
- currentTime = millis();
- if ((currentTime - ccBreathSendTime) > (breathInterval-1u)){
- breath();
- ccBreathSendTime = currentTime;
- }
- if (currentTime - ccSendTime > CC_INTERVAL) {
- // deal with Pitch Bend, Modulation, etc.
- pitch_bend();
- extraController();
- biteCC_();
- leverCC_();
- ccSendTime = currentTime;
- }
- if (currentTime - ccSendTime2 > CC_INTERVAL2) {
- portamento_();
- ccSendTime2 = currentTime;
- }
- if (currentTime - ccSendTime3 > CC_INTERVAL3) {
- if (gateOpenEnable || gateOpen) doorKnobCheck();
- battCheck();
- if (((pinkySetting == LVL) || (pinkySetting == LVLP) || (pinkySetting == GLD)) && pinkyKey && K7 && (mainState == NOTE_OFF)){
- // show LVL indication
- } else updateSensorLEDs();
- ccSendTime3 = currentTime;
- }
- if (currentTime - pixelUpdateTime > pixelUpdateInterval) {
- // even if we just alter a pixel, the whole display is redrawn (35ms of MPU lockup) and we can't do that all the time
- // this is one of the big reasons the display is for setup use only
- drawSensorPixels(); // live sensor monitoring for the setup screens
- if (rotatorOn || slurSustain || parallelChord || subOctaveDouble || slurSostenuto || gateOpen) {
- statusLedFlip();
- } else {
- statusLedOn();
- }
- pixelUpdateTime = currentTime;
- }
-
- if(dacMode == DAC_MODE_PITCH) { // pitch CV from DAC and breath CV from PWM on pin 6, for filtering and scaling on separate board
- targetPitch = (fingeredNote-24)*42;
- targetPitch += map(pitchBend,0,16383,-84,84);
- targetPitch -=quarterToneTrigger*21;
- if (portIsOn){
- if (targetPitch > cvPitch){
- if (!cvPortaTuneCount) {
- cvPitch += 1+(127-oldport)/4;
- }
- else {
- cvPortaTuneCount++;
- if (cvPortaTuneCount > CVPORTATUNE) cvPortaTuneCount=0;
- }
- if (cvPitch > targetPitch) cvPitch = targetPitch;
- } else if (targetPitch < cvPitch){
- if (!cvPortaTuneCount) {
- cvPitch -= 1+(127-oldport)/4;
- }
- else {
- cvPortaTuneCount++;
- if (cvPortaTuneCount > CVPORTATUNE) cvPortaTuneCount=0;
- }
- if (cvPitch < targetPitch) cvPitch = targetPitch;
- } else {
- cvPitch = targetPitch;
- }
- } else {
- cvPitch = targetPitch;
- }
-
- if (cvVibRate){
- int timeDivider = timeDividerList[cvVibRate];
- int cvVib = map(((waveformsTable[map(currentTime%timeDivider, 0, timeDivider, 0, maxSamplesNum-1)] - 2047) * exSensorIndicator), -259968,259969,-11,11);
- cvPitch += cvVib;
- }
- int cvPitchTuned = 2*(cvTune-100)+map(cvPitch,0,4032,0,4032+2*(cvScale-100));
- analogWrite(dacPin,constrain(cvPitchTuned,0,4095));
- } else if(dacMode == DAC_MODE_BREATH) { // else breath CV on DAC pin, directly to unused pin of MIDI DIN jack
- //analogWrite(dacPin,breathCurve(map(constrain(pressureSensor,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,4095)));
- }
-
- midiDiscardInput();
-
- //do menu stuff
- menu();
-}
-
-//_______________________________________________________________________________________________ FUNCTIONS
-
-static void sendHarmonizerData( uint8_t note, const int harmony[][3], bool sendOn )
-{
- const int* offs = harmony[(note-hmzKey)%12];
- if(sendOn) {
- midiSendNoteOn(noteValueCheck(note+offs[0]), velocitySend);
- if (hmzLimit>2) midiSendNoteOn(noteValueCheck(note+offs[1]), velocitySend);
- if (hmzLimit>3) midiSendNoteOn(noteValueCheck(note+offs[2]), velocitySend);
- } else {
- midiSendNoteOff(noteValueCheck(note+offs[0]));
- if (hmzLimit>2) midiSendNoteOff(noteValueCheck(note+offs[1]));
- if (hmzLimit>3) midiSendNoteOff(noteValueCheck(note+offs[2]));
- }
-}
-
-//**************************************************************
-
-static void updateRotator(byte note, const Rotator *rotator) {
- auto parallel = rotator->parallel;
- auto rotations = rotator->rotations;
-
- if (parallel-24) {
- midiSendNoteOn(noteValueCheck(note + parallel-24), velocitySend); // send Note On message for new note
- }
-
- currentRotation = (currentRotation +1) % 4;
-
- int allCheck=4;
- while ((0 == rotations[currentRotation]-24) && allCheck){
- if (currentRotation < 3) currentRotation++;
- else currentRotation = 0;
- allCheck--;
- }
- if (rotations[currentRotation]-24) midiSendNoteOn(noteValueCheck(note + rotations[currentRotation]-24), velocitySend); // send Note On message for new note
-}
-
-//**************************************************************
-
-static void stopRotatorNotes(byte note, const Rotator *rotator) {
- if (rotator->parallel - 24) midiSendNoteOff(noteValueCheck(note + rotator->parallel-24 )); // send Note Off message for old note
- if (rotator->rotations[currentRotation]-24) midiSendNoteOff(noteValueCheck(note + rotator->rotations[currentRotation]-24)); // send Note Off message for old note
-}
-
-static void stopHarmonizerNotes(byte note)
-{
- switch(polySelect) {
- case ETriadMajorGospelRoot: sendHarmonizerData(note, majGosRootHmz, false); break;
- case ETriadMajorGospelDominant: sendHarmonizerData(note, majGosDomHmz, false); break;
- case EMajorAddNine: sendHarmonizerData(note, majAdd9Hmz, false); break;
- case EMinorDorian: sendHarmonizerData(note, minDorHmz, false); break;
- case EMinorAeolian: sendHarmonizerData(note, minAeoHmz, false); break;
- case EMinorFourVoiceHip: sendHarmonizerData(note, minHipHmz, false); break;
- case EFourWayCloseHarmonizer:
- {
- if (!fwcDrop2 || (hmzLimit>(3+fwcLockH))) midiSendNoteOff(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][0]-12*fwcDrop2));
- if ((hmzLimit+fwcDrop2)>2) midiSendNoteOff(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][1]));
- if ((hmzLimit+fwcDrop2)>3) midiSendNoteOff(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][2]));
- if (((hmzLimit+fwcDrop2)>4) && (1 == fwcLockH)) midiSendNoteOff(noteValueCheck(note-12));
- }
- break;
-
- case ERotatorA: stopRotatorNotes(note, &rotations_a); break;
- case ERotatorB: stopRotatorNotes(note, &rotations_b); break;
- case ERotatorC: stopRotatorNotes(note, &rotations_c); break;
-
- default: break;
- }
-}
-
-static void startHarmonizerNotes(byte note)
-{
- switch(polySelect) {
- case ETriadMajorGospelRoot: sendHarmonizerData(note, majGosRootHmz, true); break;
- case ETriadMajorGospelDominant: sendHarmonizerData(note, majGosDomHmz, true); break;
- case EMajorAddNine: sendHarmonizerData(note, majAdd9Hmz, true); break;
- case EMinorDorian: sendHarmonizerData(note, minDorHmz, true); break;
- case EMinorAeolian: sendHarmonizerData(note, minAeoHmz, true); break;
- case EMinorFourVoiceHip: sendHarmonizerData(note, minHipHmz, true); break;
- case EFourWayCloseHarmonizer:
- {
- int limit = (hmzLimit+fwcDrop2);
- if (!fwcDrop2 || (hmzLimit>(3+fwcLockH))) midiSendNoteOn(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][0]-12*fwcDrop2), velocitySend);
- if (limit>2) midiSendNoteOn(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][1]), velocitySend);
- if (limit>3) midiSendNoteOn(noteValueCheck(note+blockFWC[fwcType][(note-hmzKey)%12][2]), velocitySend);
- if ((limit>4) && (1 == fwcLockH)) midiSendNoteOn(noteValueCheck(note-12), velocitySend);
- }
- break;
-
- case ERotatorA: updateRotator(note, &rotations_a); break;
- case ERotatorB: updateRotator(note, &rotations_b); break;
- case ERotatorC: updateRotator(note, &rotations_c); break;
-
- default: break;
- }
-}
-
-
-//**************************************************************
-// non linear mapping function (http://playground.arduino.cc/Main/MultiMap)
-// note: the _in array should have increasing values
-unsigned int multiMap(unsigned short val, const unsigned short * _in, const unsigned short * _out, uint8_t size) {
- // take care the value is within range
- // val = constrain(val, _in[0], _in[size-1]);
- if (val <= _in[0]) return _out[0];
- if (val >= _in[size - 1]) return _out[size - 1];
-
- // search right interval
- uint8_t pos = 1; // _in[0] allready tested
- while (val > _in[pos]) pos++;
-
- // this will handle all exact "points" in the _in array
- if (val == _in[pos]) return _out[pos];
-
- // interpolate in the right segment for the rest
- return (val - _in[pos - 1]) * (_out[pos] - _out[pos - 1]) / (_in[pos] - _in[pos - 1]) + _out[pos - 1];
-}
-
-//**************************************************************
-
-// map breath values to selected curve
-unsigned int breathCurve(unsigned int inputVal) {
- if(curve >= ARR_LEN(curves)) return inputVal;
- return multiMap(inputVal, curveIn, curves[curve], 17);
-}
-
-// MIDI note value check with out of range octave repeat
-inline int noteValueCheck(int note) {
- if (note > 127) {
- note = 115 + (note - 127) % 12;
- } else if (note < 0) {
- note = 12 - abs(note) % 12;
- }
- return note;
-}
-
-//**************************************************************
-
-int patchLimit(int value) {
- return constrain(value, 1, 128);
-}
-
-//**************************************************************
-
-void breath() {
- int breathCCval, breathCCvalFine,breathCC2val;
- unsigned int breathCCvalHires;
- breathLevel = constrain(pressureSensor, breathThrVal, breathMaxVal);
- //breathLevel = breathLevel*0.6+pressureSensor*0.4; // smoothing of breathLevel value
- ////////breathCCval = map(constrain(breathLevel,breathThrVal,breathMaxVal),breathThrVal,breathMaxVal,0,127);
- breathCCvalHires = breathCurve(map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, 0, 16383));
- breathCCval = (breathCCvalHires >> 7) & 0x007F;
- breathCCvalFine = breathCCvalHires & 0x007F;
- breathCC2val = constrain(breathCCval*breathCC2Rise,0,127);
- if (brHarmSetting) brHarmonics = map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, 0, brHarmSetting); else brHarmonics = 0;
- if (breathCCval != oldbreath) { // only send midi data if breath has changed from previous value
- if (breathCC) {
- // send midi cc
- midiSendControlChange(ccList[breathCC], breathCCval);
- }
- if (breathAT) {
- // send aftertouch
- midiSendAfterTouch(breathCCval);
- }
- oldbreath = breathCCval;
- }
-
- if (breathCCvalHires != oldbreathhires) {
- if ((breathCC > 4) && (breathCC < 9)) { // send high resolution midi
- midiSendControlChange(ccList[breathCC] + 32, breathCCvalFine);
- }
- oldbreathhires = breathCCvalHires;
- }
- if (breathCC2val != oldbreathcc2){
- if (breathCC2 && (breathCC2 != ccList[breathCC])){
- midiSendControlChange(breathCC2, breathCC2val);
- }
- oldbreathcc2 = breathCC2val;
- }
-}
-
-//**************************************************************
-
-void pitch_bend() {
- // handle input from pitchbend touchpads and
- // on-pcb variable capacitor for vibrato.
- int vibMax;
- int vibMaxBite;
- int calculatedPBdepth;
- byte pbTouched = 0;
- int vibRead = 0;
- int vibReadBite = 0;
- pbUp = touchRead(pbUpPin); // PCB PIN "Pu"
- pbDn = touchRead(pbDnPin); // PCB PIN "Pd"
- halfPitchBendKey = (pinkySetting == PBD) && pinkyKey; // hold pinky key for 1/2 pitchbend value
- quarterToneTrigger = (pinkySetting == QTN) && pinkyKey; // pinky key for a quarter tone down using pitch bend (assuming PB range on synth is set to 2 semitones)
-
- calculatedPBdepth = pbDepthList[PBdepth];
- if (halfPitchBendKey) calculatedPBdepth = calculatedPBdepth * 0.5;
-
-
- vibMax = vibMaxList[vibSens - 1];
- vibMaxBite = vibMaxBiteList[vibSensBite - 1];
-
- if (1 == biteControl){ //bite vibrato
- if (biteJumper){ //PBITE (if pulled low with jumper, or NuRAD compile, use pressure sensor instead of capacitive bite sensor)
- vibReadBite = analogRead(bitePressurePin); // alternative kind bite sensor (air pressure tube and sensor) PBITE
- } else {
- vibReadBite = touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
- }
- if (vibReadBite < vibThrBite) {
- if (UPWD == vibDirection) {
- vibSignal = (vibSignal + map(constrain(vibReadBite, (vibZeroBite - vibMaxBite), vibThrBite), vibThrBite, (vibZeroBite - vibMaxBite), 0, calculatedPBdepth * vibDepth[vibrato]))/2;
- } else {
- vibSignal = (vibSignal + map(constrain(vibReadBite, (vibZeroBite - vibMaxBite), vibThrBite), vibThrBite, (vibZeroBite - vibMaxBite), 0, (0 - calculatedPBdepth * vibDepth[vibrato])))/2;
- }
- } else if (vibReadBite > vibThrBiteLo) {
- if (UPWD == vibDirection) {
- vibSignal = (vibSignal + map(constrain(vibReadBite, vibThrBiteLo, (vibZeroBite + vibMaxBite)), vibThrBiteLo, (vibZeroBite + vibMaxBite), 0, (0 - calculatedPBdepth * vibDepth[vibrato])))/2;
- } else {
- vibSignal = (vibSignal + map(constrain(vibReadBite, vibThrBiteLo, (vibZeroBite + vibMaxBite)), vibThrBiteLo, (vibZeroBite + vibMaxBite), 0, calculatedPBdepth * vibDepth[vibrato]))/2;
- }
- } else {
- vibSignal = vibSignal / 2;
- }
- }
- if (1 == leverControl) { //lever vibrato
- vibRead = touchRead(vibratoPin); // SENSOR PIN 15 - built in var cap
- if (vibRead < vibThr) {
- if (UPWD == vibDirection) {
- vibSignal = (vibSignal + map(constrain(vibRead, (vibZero - vibMax), vibThr), vibThr, (vibZero - vibMax), 0, calculatedPBdepth * vibDepth[vibrato]))/2;
- } else {
- vibSignal = (vibSignal + map(constrain(vibRead, (vibZero - vibMax), vibThr), vibThr, (vibZero - vibMax), 0, (0 - calculatedPBdepth * vibDepth[vibrato])))/2;
- }
- } else if (vibRead > vibThrLo) {
- if (UPWD == vibDirection) {
- vibSignal = (vibSignal + map(constrain(vibRead, vibThrLo, (vibZero + vibMax)), vibThrLo, (vibZero + vibMax), 0, (0 - calculatedPBdepth * vibDepth[vibrato])))/2;
- } else {
- vibSignal = (vibSignal + map(constrain(vibRead, vibThrLo, (vibZero + vibMax)), vibThrLo, (vibZero + vibMax), 0, calculatedPBdepth * vibDepth[vibrato]))/2;
- }
- } else {
- vibSignal = vibSignal / 2;
- }
- }
-
-
-
- switch (vibRetn) { // moving baseline
- case 0:
- //keep vibZero value
- break;
- case 1:
- vibZero = vibZero * 0.95 + vibRead * 0.05;
- vibZeroBite = vibZeroBite * 0.95 + vibReadBite * 0.05;
- break;
- case 2:
- vibZero = vibZero * 0.9 + vibRead * 0.1;
- vibZeroBite = vibZeroBite * 0.9 + vibReadBite * 0.1;
- break;
- case 3:
- vibZero = vibZero * 0.8 + vibRead * 0.2;
- vibZeroBite = vibZeroBite * 0.8 + vibReadBite * 0.2;
- break;
- case 4:
- vibZero = vibZero * 0.6 + vibRead * 0.4;
- vibZeroBite = vibZeroBite * 0.6 + vibReadBite * 0.4;
- }
- vibThr = vibZero - vibSquelch;
- vibThrLo = vibZero + vibSquelch;
- vibThrBite = vibZeroBite - vibSquelchBite;
- vibThrBiteLo = vibZeroBite + vibSquelchBite;
- int pbPos = map(constrain(pbUp, pitchbThrVal, pitchbMaxVal), pitchbThrVal, pitchbMaxVal, 0, calculatedPBdepth);
- int pbNeg = map(constrain(pbDn, pitchbThrVal, pitchbMaxVal), pitchbThrVal, pitchbMaxVal, 0, calculatedPBdepth);
- int pbSum = 8193 + pbPos - pbNeg;
- int pbDif = abs(pbPos - pbNeg);
-
- if (((pbUp > pitchbThrVal) && PBdepth) || ((pbDn > pitchbThrVal) && PBdepth)) {
- if (pbDif < 10) {
- pitchBend = 8192;
- } else {
- pitchBend = pitchBend * 0.6 + 0.4 * pbSum;
- }
- pbTouched = 1;
- }
- if (!pbTouched) {
- pitchBend = pitchBend * 0.6 + 8192 * 0.4; // released, so smooth your way back to zero
- if ((pitchBend > 8187) && (pitchBend < 8197)) pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
- }
-
- pitchBend = pitchBend + vibSignal;
-
- pitchBend = constrain(pitchBend, 0, 16383);
-
- pbSend = pitchBend - quarterToneTrigger*calculatedPBdepth*0.25;
-
- pbSend = constrain(pbSend, 0, 16383);
-
- if (subVibSquelch && (8192 != pitchBend)) {
- statusLedOff();
- vibLedOff = 1;
- } else if (vibLedOff) {
- statusLedOn();
- vibLedOff = 0;
- }
-
- //Serial.print(pitchBend);
- //Serial.print(" - ");
- //Serial.println(oldpb);
-
- if (pbSend != oldpb) { // only send midi data if pitch bend has changed from previous value
- midiSendPitchBend(pbSend);
- oldpb = pbSend;
- }
-}
-
-//***********************************************************
-
-void doorKnobCheck() {
-
- if (gateOpenEnable){
- #if defined(NURAD)
- if (R2 && R3 && R4 && R5) { // fold thumb in to cover R2 through R5
- if (!gateOpen && (pbUp > ((pitchbMaxVal + pitchbThrVal) / 2))) {
- gateOpen = 1;
- statusLedFlash(100);
- } else if (gateOpen && (pbDn > ((pitchbMaxVal + pitchbThrVal) / 2))) {
- gateOpen = 0;
- midiPanic();
- statusLedFlash(100);
- statusLedFlash(100);
- statusLedFlash(100);
- delay(600);
- }
- }
- #else
- if (K4 && R1 && R2 && R3) { // doorknob grip on canister
- if (!gateOpen && (pbUp > ((pitchbMaxVal + pitchbThrVal) / 2))) {
- gateOpen = 1;
- statusLedFlash(100);
- } else if (gateOpen && (pbDn > ((pitchbMaxVal + pitchbThrVal) / 2))) {
- gateOpen = 0;
- midiPanic();
- statusLedFlash(100);
- statusLedFlash(100);
- statusLedFlash(100);
- delay(600);
- }
- }
- #endif
- } else if (gateOpen) {
- gateOpen = 0;
- midiPanic();
- }
-}
-
-//***********************************************************
-
-void battCheck(){
- battMeasured[battCheckPos] = analogRead(vMeterPin);
- battAvg = 0;
- for (int i=0; i<50; i++){
- battAvg += battMeasured[i];
- }
- battAvg /= 50;
- battCheckPos++;
- if (battCheckPos == 50) battCheckPos = 0;
-}
-
-void extraController() {
- bool CC2sw = false;
- bool CC1sw = false;
- int extracCC;
- // Extra Controller is the lip touch sensor (proportional) in front of the mouthpiece
- exSensor = exSensor * 0.6 + 0.4 * touchRead(extraPin); // get sensor data, do some smoothing - SENSOR PIN 16 - PCB PIN "EC" (marked K4 on some prototype boards)
- exSensorIndicator = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 0, 127);
- if (pinkySetting == EC2){
- CC1sw = true;
- //send 0 or 127 on extra controller CC2 depending on pinky key touch
- if (pinkyKey && extraCT2) {
- if (lastPinkyKey != pinkyKey){
- midiSendControlChange(extraCT2, 127);
- lastPinkyKey = pinkyKey;
- }
- } else {
- if (lastPinkyKey != pinkyKey){
- midiSendControlChange(extraCT2, 0);
- lastPinkyKey = pinkyKey;
- }
- }
- } else if (pinkySetting == ECSW){
- if (pinkyKey){
- //send extra controller CC2 only
- CC2sw = true;
- CC1sw = false;
- } else {
- //send extra controller primary CC only
- CC2sw = false;
- CC1sw = true;
- }
- } else if (pinkySetting == ECH){
- if (pinkyKey){
- //extra controller harmonics only
- CC2sw = false;
- CC1sw = false;
- } else {
- //send extra controller primary CC only
- CC2sw = false;
- CC1sw = true;
- }
- } else {
- //send both primary CC and CC2
- CC2sw = true;
- CC1sw = true;
- }
-
- if ((harmSetting && (pinkySetting != ECH)) || ((pinkySetting == ECH) && pinkyKey)){
- if (harmSelect < 4){
- harmonics = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 0, harmSetting);
- } else {
- harmonics = map(constrain(exSensor, extracThrVal, extracMaxVal), extracMaxVal, extracThrVal, 0, harmSetting);
- }
- } else if ((pinkySetting == ECH) && !pinkyKey) {
- harmonics = 0;
- }
-
- if ((extraCT || extraCT2) && (exSensor >= extracThrVal)) { // if we are enabled and over the threshold, send data
- if (!extracIsOn) {
- extracIsOn = 1;
- if ((extraCT == 4) && CC1sw) { //Sustain ON
- midiSendControlChange(64, 127);
- }
- }
- if ((extraCT == 1) && CC1sw) { //Send modulation
- extracCC = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 1, 127);
- if (extracCC != oldextrac) {
- midiSendControlChange(1, extracCC);
- }
- oldextrac = extracCC;
- }
- if ((extraCT == 2) && CC1sw) { //Send foot pedal (CC#4)
- extracCC = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 1, 127);
- if (extracCC != oldextrac) {
- midiSendControlChange(4, extracCC);
- }
- oldextrac = extracCC;
- }
- if ((extraCT == 3) && (breathCC != 9) && CC1sw) { //Send filter cutoff (CC#74)
- extracCC = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 1, 127);
- if (extracCC != oldextrac) {
- midiSendControlChange(74, extracCC);
- }
- oldextrac = extracCC;
- }
- if ((extraCT2 ) && CC2sw){ //Send extra controller CC2
- extracCC = map(constrain(exSensor, extracThrVal, extracMaxVal), extracThrVal, extracMaxVal, 1, 127);
- if (extracCC != oldextrac2) {
- midiSendControlChange(extraCT2, extracCC);
- }
- oldextrac2 = extracCC;
- }
- } else if (extracIsOn) { // we have just gone below threshold, so send zero value
- extracIsOn = 0;
- if ((extraCT == 1) && CC1sw) { //MW
- if (oldextrac != 0) {
- //send modulation 0
- midiSendControlChange(1, 0);
- oldextrac = 0;
- }
- } else if ((extraCT == 2) && CC1sw) { //FP
- if (oldextrac != 0) {
- //send foot pedal 0
- midiSendControlChange(4, 0);
- oldextrac = 0;
- }
- } else if ((extraCT == 3) && (breathCC != 9) && CC1sw) { //CF
- if (oldextrac != 0) {
- //send filter cutoff 0
- midiSendControlChange(74, 0);
- oldextrac = 0;
- }
- } else if ((extraCT == 4) && CC1sw) { //SP
- //send sustain off
- midiSendControlChange(64, 0);
- }
- if ((extraCT2 ) && CC2sw){ //CC2
- //send 0 for extra ctr CC2
- midiSendControlChange(extraCT2, 0);
- oldextrac2 = 0;
- }
- }
-}
-
-//***********************************************************
-
-void portamento_() {
- int portSumCC = 0;
- if (pinkySetting == GLD){
- if (portamento && pinkyKey){
- portSumCC += portLimit;
- }
- }
- if (2 == biteControl) {
- // Portamento is controlled with the bite sensor in the mouthpiece
- if (biteJumper) { //PBITE (if pulled low with jumper or if on a NuRAD, use pressure sensor instead of capacitive bite sensor)
- biteSensor=analogRead(bitePressurePin); // alternative kind bite sensor (air pressure tube and sensor) PBITE
- } else {
- biteSensor = touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
- }
- if (portamento && (biteSensor >= portamThrVal)) { // if we are enabled and over the threshold, send portamento
- portSumCC += map(constrain(biteSensor, portamThrVal, portamMaxVal), portamThrVal, portamMaxVal, 0, portLimit);
- }
- }
- if (2 == leverControl) {
- // Portamento is controlled with thumb lever
- leverPortRead = touchRead(vibratoPin);
-#if defined(SEAMUS)
- if (portamento && ((leverPortRead) >= leverThrVal)) { // if we are enabled and over the threshold, send portamento
- portSumCC += map(constrain((leverPortRead), leverThrVal, leverMaxVal), leverThrVal, leverMaxVal, 0, portLimit);
- }
-#else
- if (portamento && ((3000-leverPortRead) >= leverThrVal)) { // if we are enabled and over the threshold, send portamento
- portSumCC += map(constrain((3000-leverPortRead), leverThrVal, leverMaxVal), leverThrVal, leverMaxVal, 0, portLimit);
- }
-#endif
- }
- portSumCC = constrain(portSumCC, 0, portLimit); // Total output glide rate limited to glide max setting
- if (portSumCC) { // there is a portamento level, so go for it
- if (!portIsOn) {
- portOn();
- }
- port(portSumCC);
- }else if (portIsOn) {
- portOff();
- }
-}
-
-//***********************************************************
-
-void portOn() {
- if ((portamento == 2) || (portamento == 5)) { // if portamento midi switching is enabled
- midiSendControlChange(CCN_PortOnOff, 127);
- } else if (portamento == 3) { // if portamento midi switching is enabled - SE02 OFF/LIN
- midiSendControlChange(CCN_PortSE02, 64);
- } else if (portamento == 4) { // if portamento midi switching is enabled - SE02 OFF/EXP
- midiSendControlChange(CCN_PortSE02, 127);
- }
- portIsOn = 1;
-}
-
-//***********************************************************
-
-void port(int portCC) {
- if ((portamento != 5) && (portCC != oldport)) { // portamento setting 5 is switch only, do not transmit glide rate
- midiSendControlChange(CCN_Port, portCC);
- }
- oldport = portCC;
-}
-
-//***********************************************************
-
-void portOff() {
- if ((portamento != 5) && (oldport != 0)) { //did a zero get sent? if not, then send one (unless portamento is switch only)
- midiSendControlChange(CCN_Port, 0);
- }
- if ((portamento == 2) || (portamento == 5)) { // if portamento midi switching is enabled
- midiSendControlChange(CCN_PortOnOff, 0);
- } else if (portamento == 3) { // if portamento midi switching is enabled - SE02 OFF/LIN
- midiSendControlChange(CCN_PortSE02, 0);
- } else if (portamento == 4) { // if portamento midi switching is enabled - SE02 OFF/EXP
- midiSendControlChange(CCN_PortSE02, 0);
- }
- portIsOn = 0;
- oldport = 0;
-}
-
-//***********************************************************
-
-void biteCC_() {
- int biteCClevel = 0;
- if (3 == biteControl){
- if (biteJumper) { //PBITE (if pulled low with jumper or if on a NuRAD, use pressure sensor instead of capacitive bite sensor)
- biteSensor=analogRead(bitePressurePin); // alternative kind bite sensor (air pressure tube and sensor) PBITE
- } else {
- biteSensor = touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
- }
- if (biteSensor >= portamThrVal) { // we are over the threshold, calculate CC value
- biteCClevel = map(constrain(biteSensor, portamThrVal, portamMaxVal), portamThrVal, portamMaxVal, 0, 127);
- }
- if (biteCClevel) { // there is a bite CC level, so go for it
- if (!biteIsOn) {
- biteIsOn = 1;
- }
- if (biteCClevel != oldbitecc) {
- midiSendControlChange(biteCC, biteCClevel);
- }
- oldbitecc = biteCClevel;
- } else if (biteIsOn) {
- midiSendControlChange(biteCC, 0);
- biteIsOn = 0;
- oldbitecc = 0;
- }
- }
-}
-
-void leverCC_() {
- int leverCClevel = 0;
- if (3 == leverControl){
- leverPortRead = touchRead(vibratoPin);
- if (((3000-leverPortRead) >= leverThrVal)) { // we are over the threshold, calculate CC value
- leverCClevel = map(constrain((3000-leverPortRead), leverThrVal, leverMaxVal), leverThrVal, leverMaxVal, 0, 127);
- }
- if (leverCClevel) { // there is a lever CC level, so go for it
- if (!leverIsOn) {
- leverIsOn = 1;
- }
- if (leverCClevel != oldlevercc) {
- midiSendControlChange(leverCC, leverCClevel);
- }
- oldlevercc = leverCClevel;
- } else if (leverIsOn) {
- midiSendControlChange(leverCC, 0);
- leverIsOn = 0;
- oldlevercc = 0;
- }
- }
-}
-
-void autoCal() {
- int calRead;
- int calReadNext;
-// NuRAD/NuEVI sensor calibration
- // Extra Controller
- calRead = touchRead(extraPin);
- extracThrVal = constrain(calRead+200, extracLoLimit, extracHiLimit);
- extracMaxVal = constrain(extracThrVal+600, extracLoLimit, extracHiLimit);
- writeSetting(EXTRAC_THR_ADDR, extracThrVal);
- writeSetting(EXTRAC_MAX_ADDR, extracMaxVal);
- // Breath sensor
- calRead = analogRead(breathSensorPin);
- breathThrVal = constrain(calRead+200, breathLoLimit, breathHiLimit);
- breathMaxVal = constrain(breathThrVal+1500, breathLoLimit, breathHiLimit);
- writeSetting(BREATH_THR_ADDR, breathThrVal);
- writeSetting(BREATH_MAX_ADDR, breathMaxVal);
- // Pitch Bend
- calRead = touchRead(pbUpPin);
- calReadNext = touchRead(pbDnPin);
- if (calReadNext > calRead) calRead = calReadNext; //use highest value
- pitchbThrVal = constrain(calRead+200, pitchbLoLimit, pitchbHiLimit);
- pitchbMaxVal = constrain(pitchbThrVal+800, pitchbLoLimit, pitchbHiLimit);
- writeSetting(PITCHB_THR_ADDR, pitchbThrVal);
- writeSetting(PITCHB_MAX_ADDR, pitchbMaxVal);
- // Lever
- calRead = 3000-touchRead(vibratoPin);
- leverThrVal = constrain(calRead+60, leverLoLimit, leverHiLimit);
- leverMaxVal = constrain(calRead+120, leverLoLimit, leverHiLimit);
- writeSetting(LEVER_THR_ADDR, leverThrVal);
- writeSetting(LEVER_MAX_ADDR, leverMaxVal);
-#if defined(NURAD) // NuRAD sensor calibration
- // Bite Pressure sensor
- calRead = analogRead(bitePressurePin);
- portamThrVal = constrain(calRead+300, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- // Touch sensors
- calRead = ctouchHiLimit;
- for (byte i = 0; i < 6; i++) {
- calReadNext = touchSensorRollers.filteredData(i) * (300-calOffsetRollers[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensorRH.filteredData(i) * (300-calOffsetRH[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensorLH.filteredData(i) * (300-calOffsetLH[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- ctouchThrVal = constrain(calRead-20, ctouchLoLimit, ctouchHiLimit);
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
- writeSetting(CTOUCH_THR_ADDR, ctouchThrVal);
-#else // NuEVI sensor calibration
- // Bite sensor
- if (digitalRead(biteJumperPin)){ //PBITE (if pulled low with jumper, pressure sensor is used instead of capacitive bite sensing)
- // Capacitive sensor
- calRead = touchRead(bitePin);
- portamThrVal = constrain(calRead+200, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- } else {
- // Pressure sensor
- calRead = analogRead(bitePressurePin);
- portamThrVal = constrain(calRead+300, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- }
- // Touch sensors
- calRead = ctouchHiLimit;
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensor.filteredData(i);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- calReadNext=map(touchRead(halfPitchBendKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- calReadNext=map(touchRead(specialKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- ctouchThrVal = constrain(calRead-20, ctouchLoLimit, ctouchHiLimit);
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
- writeSetting(CTOUCH_THR_ADDR, ctouchThrVal);
-#endif
-}
-
-
-//***********************************************************
-
-void readSwitches() {
-
-#if defined(NURAD)
-
- switch (lap){
- case 0:
- // Octave rollers
- int touchValueRollers[12];
- for (byte i=0; i<6; i++){
- //touchValueRollers[i]=touchSensorRollers.filteredData(i) - calOffsetRollers[i];
- touchValueRollers[i]=touchSensorRollers.filteredData(i) * (300-calOffsetRollers[i])/300;
- }
- #if defined(SEAMUS)
- /*
- // 5-pin version
- octaveR = 0;
- if ((R5=(touchValueRollers[rPin5] < ctouchThrVal)) && ((touchValueRollers[rPin1] < ctouchThrVal))) octaveR = 6; //R6 = R5 && R1
- else if (R5=(touchValueRollers[rPin5] < ctouchThrVal)) octaveR = 5; //R5
- else if (R4=(touchValueRollers[rPin4] < ctouchThrVal)) octaveR = 4; //R4
- else if ((R3=(touchValueRollers[rPin3] < ctouchThrVal)) && lastOctaveR) octaveR = 3; //R3
- else if (R2=(touchValueRollers[rPin2] < ctouchThrVal)) octaveR = 2; //R2
- else if (touchValueRollers[rPin1] < ctouchThrVal) octaveR = 1; //R1
- else if (lastOctaveR > 1) {
- octaveR = lastOctaveR;
- if (otfKey && polySelect && (polySelect 1) {
- if (rollerMode) octaveR = lastOctaveR; //if rollers are released and we are not coming down from roller 1, stay at the higher octave
- if (otfKey && !rSum && polySelect && (polySelect 1) {
- if (rollerMode) octaveR = lastOctaveR; //if rollers are released and we are not coming down from roller 1, stay at the higher octave
- if (otfKey && !rSum && polySelect && (polySelect 1) {
- if (rollerMode) octaveR = lastOctaveR; //if rollers are released and we are not coming down from roller 1, stay at the higher octave (CV filter leak prevention when putting NuEVI aside)
- if (otfKey && !rSum && polySelect && (polySelect touch_Thr); // SENSOR PIN 1 - PCB PIN "S1"
-
-
- int qTransp = (pinkyKey && (pinkySetting < 25)) ? pinkySetting-12 : 0;
-
- // Calculate midi note number from pressed keys
- if (0 == fingering){ //EVI fingering
- fingeredNoteUntransposed = startNote
- - 2*K1 - K2 - 3*K3 //"Trumpet valves"
- - 5*K4 //Fifth key
- + 2*K5 + K6 + trill3_interval*K7 //Trill keys. 3rd trill key interval controlled by setting
- + octaveR*12; //Octave rollers
- } else if (1 == fingering){ //EVR fingering
- byte revOct = 6 - octaveR;
- fingeredNoteUntransposed = startNote
- - 2*K1 - K2 - 3*K3 //"Trumpet valves"
- - 5*K4 //Fifth key
- + 2*K5 + K6 + trill3_interval*K7 //Trill keys. 3rd trill key interval controlled by setting
- + revOct*12; //Octave rollers
- } else if (2 == fingering){ //TPT fingering
- fingeredNoteUntransposed = startNote
- - 2*K1 - K2 - 3*K3 //"Trumpet valves"
- - 2 //Trumpet in B flat
- + 2*K5 + K6 + trill3_interval*K7 //Trill keys. 3rd trill key interval controlled by setting
- + 24 + trumpetHarmonic[K4][octaveR]; // roller harmonics
- } else if (3 == fingering){ //HRN fingering
- fingeredNoteUntransposed = startNote
- - 2*K1 - K2 - 3*K3 //"Trumpet valves"
- + 5*K4 //Switch to Bb horn
- + 5 //Horn in F
- + 2*K5 + K6 + trill3_interval*K7 //Trill keys. 3rd trill key interval controlled by setting
- + 12 + rollerHarmonic[K4][octaveR]; // roller harmonics
- }
-
-
-
- if (K3 && K7){
- if (4 == trill3_interval) fingeredNoteUntransposed+=2; else fingeredNoteUntransposed+=4;
- }
-
- int fingeredNoteRead = fingeredNoteUntransposed + (octave - 3) * 12 + transpose - 12 + qTransp + harmonicResult[harmSelect][harmonics] + brHarmonicResult[brHarmSelect][brHarmonics]; //lip sensor harmonics
-
- pcCombo1 = (K1 && K5 && !K2 && !K3);
- pcCombo2 = (K2 && K6 && !K1 && !K3);
-
- if (pinkyKey) pitchlatch = fingeredNoteUntransposed; //use pitchlatch to make settings based on note fingered
-
-#endif
-
- if (fingeredNoteRead != lastFingering) { //
- // reset the debouncing timer
- lastDeglitchTime = millis();
- }
- if ((millis() - lastDeglitchTime) > deglitch) {
- // whatever the reading is at, it's been there for longer
- // than the debounce delay, so take it as the actual current state
- fingeredNote = fingeredNoteRead;
- }
- lastFingering = fingeredNoteRead;
-}
diff --git a/NuEVI/adjustmenu.cpp b/NuEVI/adjustmenu.cpp
deleted file mode 100644
index 9415900..0000000
--- a/NuEVI/adjustmenu.cpp
+++ /dev/null
@@ -1,593 +0,0 @@
-#include
-#include
-#include
-
-#include "menu.h"
-#include "numenu.h"
-#include "globals.h"
-#include "config.h"
-#include "hardware.h"
-#include "settings.h"
-
-//***********************************************************
-
-extern Adafruit_SSD1306 display;
-#if defined(NURAD)
-extern Adafruit_MPR121 touchSensorRH;
-extern Adafruit_MPR121 touchSensorLH;
-extern Adafruit_MPR121 touchSensorRollers;
-#else
-extern Adafruit_MPR121 touchSensor;
-#endif
-extern byte cursorNow;
-#if defined(NURAD)
-extern int calOffsetRollers[6];
-extern int calOffsetRH[12];
-extern int calOffsetLH[12];
-#endif
-
-//***********************************************************
-// Variables used for the adjust menu
-static byte forcePix;
-
-static uint16_t pos1;
-static uint16_t pos2;
-
-static int16_t adjustOption;
-static int16_t adjustCurrent;
-
-static int16_t sensorPixelPos1 = -1;
-static int16_t sensorPixelPos2 = -1;
-
-static bool refreshScreen;
-
-//***********************************************************
-
-static void breathSave(const AdjustMenuEntry& e) {
- writeSetting(BREATH_THR_ADDR, *e.entries[0].value);
- writeSetting(BREATH_MAX_ADDR, *e.entries[1].value);
-}
-
-const AdjustMenuEntry breathAdjustMenu = {
- "BREATH",
- {
- { &breathThrVal, breathLoLimit, breathHiLimit },
- { &breathMaxVal, breathLoLimit, breathHiLimit }
- },
- breathSave
-};
-
-static void portamentoSave(const AdjustMenuEntry& e) {
- writeSetting(PORTAM_THR_ADDR, *e.entries[0].value);
- writeSetting(PORTAM_MAX_ADDR, *e.entries[1].value);
-}
-
-const AdjustMenuEntry portamentoAdjustMenu = {
- "BITE",
- {
- { &portamThrVal, portamLoLimit, portamHiLimit },
- { &portamMaxVal, portamLoLimit, portamHiLimit }
- },
- portamentoSave
-};
-
-static void pbSave(const AdjustMenuEntry& e) {
- writeSetting(PITCHB_THR_ADDR, *e.entries[0].value);
- writeSetting(PITCHB_MAX_ADDR, *e.entries[1].value);
-}
-
-const AdjustMenuEntry pitchBendAdjustMenu = {
- "BEND",
- {
- { &pitchbThrVal, pitchbLoLimit, pitchbHiLimit },
- { &pitchbMaxVal, pitchbLoLimit, pitchbHiLimit }
- },
- pbSave
-};
-
-static void extracSave(const AdjustMenuEntry& e) {
- writeSetting(EXTRAC_THR_ADDR, *e.entries[0].value);
- writeSetting(EXTRAC_MAX_ADDR, *e.entries[1].value);
-}
-
-const AdjustMenuEntry extraSensorAdjustMenu = {
- "LIP/EC",
- {
- { &extracThrVal, extracLoLimit, extracHiLimit },
- { &extracMaxVal, extracLoLimit, extracHiLimit }
- },
- extracSave
-};
-
-
-static void ctouchThrSave(const AdjustMenuEntry& e) {
- writeSetting(CTOUCH_THR_ADDR, *e.entries[0].value);
-}
-
-const AdjustMenuEntry ctouchAdjustMenu = {
- "TOUCH",
- {
- { &ctouchThrVal, ctouchLoLimit, ctouchHiLimit },
- { nullptr, 0, 0 }
- },
- ctouchThrSave
-};
-
-
-static void leverSave(const AdjustMenuEntry& e) {
- writeSetting(LEVER_THR_ADDR, *e.entries[0].value);
- writeSetting(LEVER_MAX_ADDR, *e.entries[1].value);
-}
-
-const AdjustMenuEntry leverAdjustMenu = {
- "LEVER",
- {
- { &leverThrVal, leverLoLimit, leverHiLimit },
- { &leverMaxVal, leverLoLimit, leverHiLimit }
- },
- leverSave
-};
-
-
-const AdjustMenuEntry* adjustMenuEntries[] = {
- &breathAdjustMenu,
- &portamentoAdjustMenu,
- &pitchBendAdjustMenu,
- &extraSensorAdjustMenu,
- &ctouchAdjustMenu,
- &leverAdjustMenu,
-};
-
-static const int numAdjustEntries = ARR_LEN(adjustMenuEntries);
-
-//***********************************************************
-
-
-
-void autoCalSelected() {
- int calRead;
- int calReadNext;
-// NuRAD/NuEVI sensor calibration
- // Extra Controller
- if(adjustOption == 3) {
- calRead = touchRead(extraPin);
- extracThrVal = constrain(calRead+200, extracLoLimit, extracHiLimit);
- extracMaxVal = constrain(extracThrVal+600, extracLoLimit, extracHiLimit);
- writeSetting(EXTRAC_THR_ADDR, extracThrVal);
- writeSetting(EXTRAC_MAX_ADDR, extracMaxVal);
- }
- // Breath sensor
- if(adjustOption == 0) {
- calRead = analogRead(breathSensorPin);
- breathThrVal = constrain(calRead+200, breathLoLimit, breathHiLimit);
- breathMaxVal = constrain(breathThrVal+1500, breathLoLimit, breathHiLimit);
- writeSetting(BREATH_THR_ADDR, breathThrVal);
- writeSetting(BREATH_MAX_ADDR, breathMaxVal);
- }
- // Pitch Bend
- if(adjustOption == 2) {
- calRead = touchRead(pbUpPin);
- calReadNext = touchRead(pbDnPin);
- if (calReadNext > calRead) calRead = calReadNext; //use highest value
- pitchbThrVal = constrain(calRead+200, pitchbLoLimit, pitchbHiLimit);
- pitchbMaxVal = constrain(pitchbThrVal+800, pitchbLoLimit, pitchbHiLimit);
- writeSetting(PITCHB_THR_ADDR, pitchbThrVal);
- writeSetting(PITCHB_MAX_ADDR, pitchbMaxVal);
- }
- // Lever
- if(adjustOption == 5) {
-#if defined(SEAMUS)
- calRead = touchRead(vibratoPin);
-#else
- calRead = 3000-touchRead(vibratoPin);
-#endif
- leverThrVal = constrain(calRead+60, leverLoLimit, leverHiLimit);
- leverMaxVal = constrain(calRead+120, leverLoLimit, leverHiLimit);
- writeSetting(LEVER_THR_ADDR, leverThrVal);
- writeSetting(LEVER_MAX_ADDR, leverMaxVal);
- }
-#if defined(NURAD) // NuRAD sensor calibration
- // Bite Pressure sensor
- if(adjustOption == 1) {
- calRead = analogRead(bitePressurePin);
- portamThrVal = constrain(calRead+300, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- }
- // Touch sensors
- if(adjustOption == 4) {
- calRead = ctouchHiLimit;
- for (byte i = 0; i < 6; i++) {
- calReadNext = touchSensorRollers.filteredData(i) * (300-calOffsetRollers[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensorRH.filteredData(i) * (300-calOffsetRH[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensorLH.filteredData(i) * (300-calOffsetLH[i])/300;
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- ctouchThrVal = constrain(calRead-20, ctouchLoLimit, ctouchHiLimit);
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
- writeSetting(CTOUCH_THR_ADDR, ctouchThrVal);
- }
-#else // NuEVI sensor calibration
- // Bite sensor
- if(adjustOption == 1) {
- if (digitalRead(biteJumperPin)){ //PBITE (if pulled low with jumper, pressure sensor is used instead of capacitive bite sensing)
- // Capacitive sensor
- calRead = touchRead(bitePin);
- portamThrVal = constrain(calRead+200, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- } else {
- // Pressure sensor
- calRead = analogRead(bitePressurePin);
- portamThrVal = constrain(calRead+300, portamLoLimit, portamHiLimit);
- portamMaxVal = constrain(portamThrVal+600, portamLoLimit, portamHiLimit);
- writeSetting(PORTAM_THR_ADDR, portamThrVal);
- writeSetting(PORTAM_MAX_ADDR, portamMaxVal);
- }
- }
- // Touch sensors
- if(adjustOption == 4) {
- calRead = ctouchHiLimit;
- for (byte i = 0; i < 12; i++) {
- calReadNext = touchSensor.filteredData(i);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- }
- calReadNext=map(touchRead(halfPitchBendKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- calReadNext=map(touchRead(specialKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- if (calReadNext < calRead) calRead = calReadNext; //use lowest value
- ctouchThrVal = constrain(calRead-20, ctouchLoLimit, ctouchHiLimit);
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
- writeSetting(CTOUCH_THR_ADDR, ctouchThrVal);
- }
-#endif
-}
-
-
-//***********************************************************
-
-static void drawAdjCursor(byte color) {
- display.drawTriangle(16,4,20,4,18,1,color);
- display.drawTriangle(16,6,20,6,18,9,color);
-}
-
-static void drawAdjustFrame(int line) {
- display.drawLine(25,line,120,line,WHITE); // Top line
- display.drawLine(25,line+12,120,line+12,WHITE); // Bottom line
-
- display.drawLine(25,line+1,25,line+2,WHITE);
- display.drawLine(120,line+1,120,line+2,WHITE);
-
- display.drawLine(120,line+10,120,line+11,WHITE);
- display.drawLine(25,line+10,25,line+11,WHITE);
-}
-
-static void drawAdjustBase(const char* title, bool all) {
- display.clearDisplay();
-
- drawAdjustFrame(17);
-
- // sensor marker lines.
- display.drawLine(25,36,25,40,WHITE);
- display.drawLine(120,36,120,40,WHITE);
-
- display.setTextSize(1);
- display.setCursor(25,2);
- display.println(title);
-
- display.setCursor(0,20);
- display.println("THR");
- display.setCursor(0,35);
- display.println("SNS");
-
-
- if(all) {
- drawAdjustFrame(47);
- display.setCursor(0,50);
- display.println("MAX");
- }
- cursorNow = WHITE;
- drawAdjCursor(WHITE);
-}
-
-static void drawLineCursor(uint16_t hPos, uint16_t vPos, int color) {
- display.drawLine(hPos, vPos,hPos, vPos+6, color);
-}
-
-static bool updateAdjustLineCursor(uint32_t timeNow, uint16_t hPos, uint16_t vPos ) {
- if ((timeNow - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawLineCursor(hPos, vPos, cursorNow);
- cursorBlinkTime = timeNow;
- return true;
- }
- return false;
-}
-
-static void drawAdjustMenu(const AdjustMenuEntry *menu) {
-
- bool haveSecondValue = menu->entries[1].value != nullptr;
- drawAdjustBase( menu->title, haveSecondValue );
-
- pos1 = map( *menu->entries[0].value, menu->entries[0].limitLow, menu->entries[0].limitHigh, 27, 119);
- display.drawLine( pos1, 20, pos1, 26, WHITE );
-
- if(haveSecondValue) {
- pos2 = map( *menu->entries[1].value, menu->entries[1].limitLow, menu->entries[1].limitHigh, 27, 119);
- display.drawLine( pos2, 50, pos2, 56, WHITE );
- }
- display.fillRect(64,0,64,9,BLACK);
- display.setTextSize(1);
- if(haveSecondValue) {
- display.setCursor(68,2);
- display.print(*menu->entries[0].value);
- display.print("|");
- display.print(*menu->entries[1].value);
- } else {
- display.setCursor(104,2);
- display.print(*menu->entries[0].value);
- }
-}
-
-//***********************************************************
-
-static bool updateSensorPixel(int pos, int pos2) {
- bool update = pos != sensorPixelPos1 || pos2 != sensorPixelPos2;
- if(update) {
- display.drawFastHLine(28, 38, 119-28, BLACK); // Clear old line
- display.drawPixel(pos, 38, WHITE);
- if( pos2 >= 0) display.drawPixel(pos2, 38, WHITE);
-
- sensorPixelPos1 = pos;
- sensorPixelPos2 = pos2;
- }
- return update;
-}
-
-void plotSensorPixels(){
- int redraw = 0;
-
- if(forcePix)
- sensorPixelPos1 = -1;
-
- // This is hacky. It depends on the order of items in the adjust menu list.
- if(adjustOption == 0) {
- int pos = map(constrain(pressureSensor, breathLoLimit, breathHiLimit), breathLoLimit, breathHiLimit, 28, 118);
- redraw = updateSensorPixel(pos, -1);
- }
- else if(adjustOption == 1) {
- if (biteJumper) { //PBITE (if pulled low with jumper or if on a NuRAD, use pressure sensor instead of capacitive bite sensor)
- biteSensor=analogRead(bitePressurePin); // alternative kind bite sensor (air pressure tube and sensor) PBITE
- } else {
- biteSensor = touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
- }
- int pos = map(constrain(biteSensor,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
- redraw = updateSensorPixel(pos, -1);
- }
- else if(adjustOption == 2) {
- int pos = map(constrain(pbUp, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- int pos2 = map(constrain(pbDn, pitchbLoLimit, pitchbHiLimit), pitchbLoLimit, pitchbHiLimit, 28, 118);
- redraw = updateSensorPixel(pos, pos2);
- }
- else if(adjustOption == 3) {
- int pos = map(constrain(exSensor, extracLoLimit, extracHiLimit), extracLoLimit, extracHiLimit, 28, 118);
- redraw = updateSensorPixel(pos, -1);
- }
- #if defined(NURAD)
- else if(adjustOption == 4) {
- display.drawLine(28,37,118,37,BLACK);
- for (byte i=0; i<12; i++){
- //int pos = map(constrain(touchSensorRH.filteredData(i) - calOffsetRH[i], ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- int pos = map(constrain(touchSensorRH.filteredData(i) * (300-calOffsetRH[i])/300, ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- display.drawPixel(pos, 37, WHITE);
- }
- display.drawLine(28,38,118,38,BLACK);
- for (byte i=0; i<12; i++){
- //int pos = map(constrain(touchSensorLH.filteredData(i) - calOffsetLH[i], ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- int pos = map(constrain(touchSensorLH.filteredData(i) * (300-calOffsetLH[i])/300, ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- display.drawPixel(pos, 38, WHITE);
- }
- display.drawLine(28,39,118,39,BLACK);
- for (byte i=0; i<6; i++){
- //int pos = map(constrain(touchSensorRollers.filteredData(i) - calOffsetRollers[i], ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- int pos = map(constrain(touchSensorRollers.filteredData(i) * (300-calOffsetRollers[i])/300, ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- display.drawPixel(pos, 39, WHITE);
- }
- redraw = 1;
- }
- #else //NuEVI
- else if(adjustOption == 4) {
- display.drawLine(28,39,118,39,BLACK);
- for (byte i=0; i<12; i++){
- int pos = map(constrain(touchSensor.filteredData(i), ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
- display.drawPixel(pos, 39, WHITE);
- }
-
- int posRead = map(touchRead(halfPitchBendKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- int pos = map(constrain(posRead, ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
-
- posRead = map(touchRead(specialKeyPin),ttouchLoLimit,ttouchHiLimit,ctouchHiLimit,ctouchLoLimit);
- int pos2 = map(constrain(posRead, ctouchLoLimit, ctouchHiLimit), ctouchLoLimit, ctouchHiLimit, 28, 118);
-
- updateSensorPixel(pos, pos2);
-
- redraw = 1;
- }
- #endif
- else if(adjustOption == 5) {
- #if defined(SEAMUS)
- int pos = map(constrain(touchRead(vibratoPin), leverLoLimit, leverHiLimit), leverLoLimit, leverHiLimit, 28, 118);
- #else
- int pos = map(constrain(3000-touchRead(vibratoPin), leverLoLimit, leverHiLimit), leverLoLimit, leverHiLimit, 28, 118);
- #endif
- redraw = updateSensorPixel(pos, -1);
- }
-
-
- if (redraw){
- display.display();
- }
- forcePix = 0;
-}
-
-//***********************************************************
-
-static bool drawAdjustBar(uint16_t buttons, int row, const AdjustValue* entry, uint16_t *pos) {
- bool updated = false;
- uint16_t step = (entry->limitHigh-entry->limitLow)/92;
- int val = *entry->value;
- switch(buttons) {
- case BTN_UP:
- val += step;
- updated = true;
- break;
-
- case BTN_DOWN:
- val -= step;
- updated = true;
- break;
-
- }
- if(updated) {
- *entry->value = constrain(val, entry->limitLow, entry->limitHigh);
- auto p = *pos;
- display.drawLine(p, row, p, row+6, BLACK);
- *pos = p = map(*entry->value, entry->limitLow, entry->limitHigh, 27, 119);
- display.drawLine(p, row, p, row+6, WHITE);
- cursorNow = BLACK;
- }
- return updated;
-}
-
-static bool updateAdjustCursor(uint32_t timeNow) {
- if ((timeNow - cursorBlinkTime) > cursorBlinkInterval) {
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawAdjCursor(cursorNow);
- cursorBlinkTime = timeNow;
- return true;
- }
- return false;
-}
-
-static bool handleInput(const AdjustMenuEntry *currentMenu, uint32_t timeNow, uint8_t buttons, uint16_t *xpos, int ypos, int index) {
- bool haveSecondValue = currentMenu->entries[1].value != nullptr;
- if (buttons) {
- if (buttons == BTN_DOWN+BTN_UP){
- display.fillRect(26,35,90,7,BLACK);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(53,35);
- display.println("AUTOCAL");
- display.display();
- delay(2000);
- autoCalSelected();
- display.fillRect(26,35,90,7,BLACK);
- display.display();
- drawAdjustMenu(currentMenu);
- forcePix = 1;
- plotSensorPixels();
- } else
- drawAdjustBar( buttons, ypos, ¤tMenu->entries[index], xpos );
-
- display.fillRect(64,0,64,9,BLACK);
- display.setTextSize(1);
- if(haveSecondValue) {
- display.setCursor(68,2);
- display.print(*currentMenu->entries[0].value);
- display.print("|");
- display.print(*currentMenu->entries[1].value);
- } else {
- display.setCursor(104,2);
- display.print(*currentMenu->entries[0].value);
- }
-
- int last = adjustCurrent;
- if(buttons == BTN_ENTER) adjustCurrent += 1;
- else if( buttons == BTN_MENU) adjustCurrent = 0;
-
- if(last != adjustCurrent) drawLineCursor(*xpos, ypos, WHITE);
-
- return true;
- } else {
- return updateAdjustLineCursor(timeNow, *xpos, ypos);
- }
-}
-
-int updateAdjustMenu(uint32_t timeNow, KeyState &input, bool firstRun, bool drawSensor) {
- bool redraw = false;
- int result = 0;
-
- const AdjustMenuEntry *currentMenu = adjustMenuEntries[adjustOption];
-
- uint8_t buttons = input.changed ? input.current : 0;
-
- if(firstRun || refreshScreen) {
- adjustCurrent = 0;
- refreshScreen = false;
- drawAdjustMenu(currentMenu);
- // the sensor pixel stuff should be refactored (to work again)
- forcePix = 1;
- sensorPixelPos1 = -1; // Force draw of sensor pixels
- }
-
- if(adjustCurrent == 0) {
- // Currently selecting what option to modify
- redraw |= updateAdjustCursor(timeNow);
-
- bool save = false;
- if( buttons == BTN_DOWN ) {
- adjustOption += 1;
- refreshScreen = 1;
- save = true;
- }
- else if ( buttons == BTN_UP ) {
- adjustOption -= 1;
- refreshScreen = 1;
- save = true;
- }
- else if ( buttons == BTN_ENTER ) {
- adjustCurrent = 1;
- }
- else if (buttons == BTN_MENU ) {
- adjustCurrent = 0;
- result = -1;
- save = true;
- }
-
- if(save && currentMenu->saveFunc)
- currentMenu->saveFunc(*currentMenu);
-
- } else if( adjustCurrent == 1) {
- redraw |= handleInput(currentMenu, timeNow, buttons, &pos1, 20, 0);
- } else {
- redraw |= handleInput(currentMenu, timeNow, buttons, &pos2, 50, 1);
- }
-
- // Keep adjustCurrent in range
- if( (adjustCurrent > 2) || ((adjustCurrent == 2) && (currentMenu->entries[1].value == nullptr)))
- adjustCurrent = 0;
-
- // Keep adjust option in range.
- if(adjustOption < 0)
- adjustOption = numAdjustEntries-1;
- else if (adjustOption >= numAdjustEntries)
- adjustOption = 0;
-
-
- if(drawSensor) {
- plotSensorPixels();
- }
-
- if(result >= 0)
- result = redraw;
-
- return result;
-}
diff --git a/NuEVI/config.h b/NuEVI/config.h
deleted file mode 100644
index acdd7e6..0000000
--- a/NuEVI/config.h
+++ /dev/null
@@ -1,57 +0,0 @@
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-
-// Compile options, comment/uncomment to change
-
-#define FIRMWARE_VERSION "1.6.0" // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
-
-#define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak)
-#define CCN_Port 5 // Controller number for portamento level
-#define CCN_PortOnOff 65// Controller number for portamento on/off
-#define CCN_PortSE02 9 // Controller number for portamento type on Roland SE-02
-
-// Send breath CC data no more than every CC_BREATH_INTERVAL
-// milliseconds
-#define CC_BREATH_INTERVAL 5
-#define SLOW_MIDI_ADD 7
-#define CC_INTERVAL 9
-#define CC_INTERVAL2 13
-#define CC_INTERVAL3 37
-#define LVL_TIMER_INTERVAL 15
-#define CVPORTATUNE 2
-
-#define maxSamplesNum 120
-
-#define breathLoLimit 0
-#define breathHiLimit 4095
-#define portamLoLimit 700
-#define portamHiLimit 4700
-#define pitchbLoLimit 500
-#define pitchbHiLimit 4000
-#define extracLoLimit 500
-#define extracHiLimit 4000
-#define ctouchLoLimit 50
-#define ctouchHiLimit 350
-#define ttouchLoLimit 50
-#define ttouchHiLimit 1900
-#define leverLoLimit 1400
-#define leverHiLimit 2000
-
-
-#define MIN_LED_BRIGHTNESS 5 // lowest PWM value that still is visible
-#define BREATH_LED_BRIGHTNESS 600 // up to 4095, PWM
-#define PORTAM_LED_BRIGHTNESS 300 // up to 4095, PWM
-#define EXTCON_LED_BRIGHTNESS 300 // up to 4095, PWM
-#define SPCKEY_LED_BRIGHTNESS 700 // up to 4095, PWM
-
-#define ALK_BAT_FULL 2800 // about 4.6V
-#define NMH_BAT_FULL 2380 // about 3.9V
-#define LIP_BAT_FULL 2540 // about 4.2V
-#define ALK_BAT_LOW 2300 // about 3.8V
-#define NMH_BAT_LOW 2200 // about 3.6V
-#define LIP_BAT_LOW 2250 // about 3.7V
-
-
-#endif
diff --git a/NuEVI/globals.h b/NuEVI/globals.h
deleted file mode 100644
index 706ea97..0000000
--- a/NuEVI/globals.h
+++ /dev/null
@@ -1,234 +0,0 @@
-#ifndef __GLOBALS_H
-#define __GLOBALS_H
-
-#include "wiring.h"
-
-
-// The three states of our main state machine
-
-// No note is sounding
-#define NOTE_OFF 1
-
-// We've observed a transition from below to above the
-// threshold value. We wait a while to see how fast the
-// breath velocity is increasing
-#define RISE_WAIT 2
-
-// A note is sounding
-#define NOTE_ON 3
-
-
-//Magic values
-#define PBD 12
-#define EC2 25
-#define ECSW 26
-#define LVL 27
-#define LVLP 28
-#define GLD 29
-#define ECH 30
-#define QTN 31
-
-#define MOD 13
-
-//Vibrato direction
-#define UPWD 1
-#define DNWD 0
-
-
-enum PolySelect : unsigned short {
- EHarmonizerOff = 0,
- ETriadMajorGospelRoot = 1, // MGR
- ETriadMajorGospelDominant = 2, // MGD
- EMajorAddNine = 3,
- EMinorDorian = 4,
- EMinorAeolian = 5,
- EMinorFourVoiceHip = 6,
- EFourWayCloseHarmonizer = 7,
- ERotatorA = 8,
- ERotatorB = 9,
- ERotatorC = 10,
-};
-
-struct Rotator
-{
- uint16_t parallel; // Semitones
- uint16_t rotations[4];
-};
-
-
-extern const unsigned short* const curves[];
-extern const unsigned short curveIn[];
-
-#if defined(NURAD)
-extern int calOffsetRollers[6];
-extern int calOffsetRH[12];
-extern int calOffsetLH[12];
-#endif
-
-extern unsigned short breathThrVal;
-extern unsigned short breathMaxVal;
-extern unsigned short portamThrVal;
-extern unsigned short portamMaxVal;
-extern unsigned short pitchbThrVal;
-extern unsigned short pitchbMaxVal;
-extern unsigned short extracThrVal;
-extern unsigned short extracMaxVal;
-extern unsigned short ctouchThrVal;
-extern unsigned short leverThrVal;
-extern unsigned short leverMaxVal;
-extern unsigned short transpose;
-extern unsigned short MIDIchannel;
-extern unsigned short breathCC; // OFF:MW:BR:VL:EX:MW+:BR+:VL+:EX+:CF:UNO
-extern unsigned short breathCC2; // OFF:1-127
-extern unsigned short breathCC2Rise; // 1X:2X:3X:4X:5X
-extern unsigned short breathAT;
-extern unsigned short velocity;
-extern unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
-extern unsigned short portLimit; // 1-127
-extern unsigned short PBdepth; // OFF:1-12 divider
-extern unsigned short extraCT; // OFF:MW:FP:CF:SP
-extern unsigned short vibrato; // OFF:1-9
-extern unsigned short deglitch; // 0-70 ms in steps of 5
-extern unsigned short patch; // 1-128
-extern unsigned short octave;
-extern unsigned short curve;
-extern unsigned short velSmpDl; // 0-30 ms
-extern unsigned short velBias; // 0-9
-extern unsigned short pinkySetting; // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 24 (QuickTranspose +1 to +12), 25 (EC2), 26 (ECSW), 27 (LVL), 28 (LVLP)
-extern unsigned short dipSwBits; // virtual dip switch settings for special modes (work in progress)
-extern unsigned short priority; // mono priority for rotator chords
-extern unsigned short vibSens; // vibrato sensitivity
-extern unsigned short vibRetn; // vibrato return speed
-extern unsigned short vibSquelch; //vibrato signal squelch
-extern unsigned short vibDirection; //direction of first vibrato wave UPWD or DNWD
-extern unsigned short vibSensBite; // vibrato sensitivity (bite)
-extern unsigned short vibSquelchBite; //vibrato signal squelch (bite)
-extern unsigned short vibControl;
-extern unsigned short fastPatch[7];
-extern unsigned short extraCT2; // OFF:1-127
-extern unsigned short levelCC; // 0-127
-extern unsigned short levelVal; // 0-127
-extern unsigned short fingering; // 0-4 EWI,EWX,SAX,EVI,EVR
-extern unsigned short rollerMode; //0-2
-extern unsigned short lpinky3; // 0-25 (OFF, -12 - MOD - +12)
-extern unsigned short batteryType; // 0-2 ALK,NIM,LIP
-extern unsigned short harmSetting; // 0-7
-extern unsigned short harmSelect; // 0-5
-extern unsigned short brHarmSetting; // 0-7
-extern unsigned short brHarmSelect; // 0-3
-extern PolySelect polySelect; // OFF, MGR, MGD, MND, MNH, FWC, RTA, RTB or RTC
-extern unsigned short fwcType; // 6, m6, 7, m7
-extern unsigned short fwcLockH; // OFF:ON
-extern unsigned short fwcDrop2; // OFF:ON
-extern unsigned short hmzKey; // 0-11 (0 is C)
-extern unsigned short hmzLimit; // 2-5
-extern unsigned short otfKey; //OFF:ON
-extern unsigned short breathInterval; // 3-15
-extern unsigned short biteControl; // OFF, VIB, GLD, CC
-extern unsigned short leverControl; // OFF, VIB, GLD, CC
-extern unsigned short biteCC; // 0 - 127
-extern unsigned short leverCC; // 0 -127
-extern unsigned short cvTune; // 1 - 199 representing -99 to +99 in menu (offset of 100 to keep postitive)
-extern unsigned short cvScale; // 1 - 199 representing -99 to +99 in menu (offset of 100 to keep postitive)
-extern unsigned short cvVibRate; // OFF, 1 - 8 CV extra controller LFO vibrato rate 4.5Hz to 8Hz
-extern uint16_t gateOpenEnable;
-extern uint16_t specialKeyEnable;
-extern byte rotatorOn;
-extern byte currentRotation;
-
-extern Rotator rotations_a;
-extern Rotator rotations_b;
-extern Rotator rotations_c;
-
-extern uint16_t bcasMode; //Legacy CASSIDY compile flag
-extern uint16_t trill3_interval;
-extern uint16_t fastBoot;
-extern uint16_t dacMode;
-
-
-extern int touch_Thr;
-
-extern int leverPortZero;
-
-extern unsigned long cursorBlinkTime; // the last time the cursor was toggled
-
-extern byte activePatch;
-extern byte doPatchUpdate;
-
-extern uint16_t legacy;
-extern uint16_t legacyBrAct;
-
-extern byte widiOn;
-
-extern int pressureSensor; // pressure data from breath sensor, for midi breath cc and breath threshold checks
-extern int lastPressure;
-
-extern int biteSensor; // capacitance data from bite sensor, for midi cc and threshold checks
-extern int lastBite;
-extern byte biteJumper;
-extern byte widiJumper;
-extern int exSensor;
-extern int exSensorIndicator;
-
-extern int pitchBend;
-extern int pbSend;
-
-extern int pbUp;
-extern int pbDn;
-
-extern byte vibLedOff;
-extern byte oldpkey;
-
-extern int vibThr; // this gets auto calibrated in setup
-extern int vibThrLo;
-extern int vibZero;
-extern int vibZeroBite;
-extern int vibThrBite;
-extern int vibThrBiteLo;
-
-extern int battAvg;
-
-extern int breathLevel;
-extern byte portIsOn;
-extern int oldport;
-
-#if defined(NURAD)
- // Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
-extern byte LHs;
-extern byte LH1; // Left Hand key 1 (pitch change -2)
-extern byte LHb; // Left Hand bis key (pitch change -1 unless both LH1 and LH2 are pressed)
-extern byte LH2; // Left Hand key 2 (with LH1 also pressed pitch change is -2, otherwise -1)
-extern byte LH3; // Left Hand key 3 (pitch change -2)
-extern byte LHp1; // Left Hand pinky key 1 (pitch change +1)
-extern byte LHp2; // Left Hand pinky key 2 (pitch change -1)
-extern byte LHp3;
-extern byte RHs; // Right Hand side key (pitch change -2 unless LHp1 is pressed)
-extern byte RH1; // Right Hand key 1 (with LH3 also pressed pitch change is -2, otherwise -1)
-extern byte RH2; // Right Hand key 2 (pitch change -1)
-extern byte RH3; // Right Hand key 3 (pitch change -2)
-extern byte RHp1; // Right Hand pinky key 1 (pitch change +1)
-extern byte RHp2; // Right Hand pinky key 2 (pitch change -1)
-extern byte RHp3; // Right Hand pinky key 3 (pitch change -2)
-extern byte Tr1; // Trill key 1 (pitch change +2) (EVI fingering)
-extern byte Tr2; // Trill key 2 (pitch change +1)
-extern byte Tr3; // Trill key 3 (pitch change +4)
-#endif
-
-// Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
-extern byte K1; // Valve 1 (pitch change -2)
-extern byte K2; // Valve 2 (pitch change -1)
-extern byte K3; // Valve 3 (pitch change -3)
-extern byte K4; // Left Hand index finger (pitch change -5)
-extern byte K5; // Trill key 1 (pitch change +2)
-extern byte K6; // Trill key 2 (pitch change +1)
-extern byte K7; // Trill key 3 (pitch change +4)
-
-extern byte halfPitchBendKey;
-extern byte quarterToneTrigger;
-extern byte specialKey;
-extern byte pinkyKey;
-extern byte patchKey;
-
-extern unsigned int multiMap(unsigned short val, const unsigned short * _in, const unsigned short * _out, uint8_t size);
-
-#endif
diff --git a/NuEVI/hardware.h b/NuEVI/hardware.h
deleted file mode 100644
index b0ed1c6..0000000
--- a/NuEVI/hardware.h
+++ /dev/null
@@ -1,199 +0,0 @@
-#ifndef __HARDWARE_H
-#define __HARDWARE_H
-
-#define REVB
-//#define NURAD
-//#define SEAMUS
-
-//#define I2CSCANNER
-
-#if defined(NURAD) //NuRAD <<<<<<<<<<<<<<<<<<<<<<<
-
-// Pin definitions
-
-// Teensy pins
-
-//Capacitive sensor pins (on-board teensy)
-#define bitePin 17
-#define extraPin 16
-#define pbUpPin 1
-#define pbDnPin 0
-#define vibratoPin 15
-
-//Analog pressure sensors. Breath and optional bite
-#define breathSensorPin A0
-#define bitePressurePin A7
-
-//Digital pins for menu buttons
-#define dPin 3
-#define ePin 4
-#define uPin 5
-#define mPin 6
-
-//Output pins for LEDs (breath, power, status)
-#define bLedPin 10
-#define pLedPin 9
-#define eLedPin 22
-#define sLedPin 23
-#define statusLedPin 13
-
-//Pins for WIDI board management
-#define widiJumperPin 28
-#define widiJumperGndPin 27
-#define widiPowerPin 33
-
-//Analog input for measuring voltage
-#define vMeterPin A11
-
-//DAC outputs for analog and pwm
-#define dacPin A14
-#define pwmDacPin A6
-
-//Which serial port to use for MIDI
-#define MIDI_SERIAL Serial3
-#define WIDI_SERIAL Serial2
-
-// MPR121 Rollers 0x5D
-
-#define rPin1 0
-#define rPin2 1
-#define rPin3 2
-#define rPin4 3
-#define rPin5 4
-#define rPin6 5
-
-// MPR121 RH 0x5C
-
-#define RHsPin 3
-#define RH1Pin 4
-#define RH2Pin 2
-#define RH3Pin 1
-#define RHp1Pin 0
-#define RHp2Pin 8
-#define RHp3Pin 7
-#define spec1Pin 10
-#define spec2Pin 9
-#define patchPin 5
-
-// MPR121 LH 0x5B
-
-#define LHsPin 8
-#define LH1Pin 7
-#define LHbPin 1
-#define LH2Pin 9
-#define LH3Pin 10
-#define LHp1Pin 11
-#define LHp2Pin 3
-#define LHp3Pin 4
-
-#else //NuEVI <<<<<<<<<<<<<<<<<<<<<<<
-
-// Pin definitions
-
-// Teensy pins
-
-#define specialKeyPin 0 // SK or S2
-#define halfPitchBendKeyPin 1 // PD or S1
-
-
-//Capacitive sensor pins (on-board teensy)
-#define bitePin 17
-#define extraPin 16
-#define pbUpPin 23
-#define pbDnPin 22
-#define vibratoPin 15
-
-//Pins jumpered to enable bite pressure sensor
-#define biteJumperPin 11
-#define biteJumperGndPin 12
-
-//Pins for WIDI board management
-#define widiJumperPin 28
-#define widiJumperGndPin 27
-#define widiPowerPin 33
-
-//Analog pressure sensors. Breath and optional bite
-#define breathSensorPin A0
-#define bitePressurePin A7
-
-//Digital pins for menu buttons
-#define dPin 3
-#define ePin 4
-#define uPin 5
-#define mPin 6
-
-//Output pins for LEDs (breath, power, status)
-#define bLedPin 10
-#define pLedPin 9
-#define statusLedPin 13
-
-//Analog input for measuring voltage
-#define vMeterPin A11
-
-//DAC outputs for analog and pwm
-#define dacPin A14
-#define pwmDacPin 20
-
-//Which serial port to use for MIDI
-#define MIDI_SERIAL Serial3
-#define WIDI_SERIAL Serial2
-
-#if defined(REVB)
-
-// MPR121 pins Rev B (angled pins at top edge for main keys and rollers)
-
-#define R1Pin 0
-#define R2Pin 2
-#define R3Pin 4
-#define R4Pin 6
-#define R5Pin 8
-
-#define K4Pin 10
-#define K1Pin 1
-#define K2Pin 3
-#define K3Pin 5
-#define K5Pin 7
-#define K6Pin 9
-#define K7Pin 11
-
-/*
- * PINOUT ON PCB vs PINS ON MPR121 - Rev. B
- *
- * (R1) (R2) (R3/6) (R4) (R5) (K4) <-> (00) (02) (04) (06) (08) (10)
- *
- * (K1) (K2) (K3) (K5) (K6) (K7) <-> (01) (03) (05) (07) (09) (11)
- *
- */
-
-# else //REV A
-
-// MPR121 pins Rev A (upright pins below MPR121 for main keys and rollers)
-
-#define R1Pin 10
-#define R2Pin 11
-#define R3Pin 8
-#define R4Pin 9
-#define R5Pin 6
-
-#define K4Pin 7
-#define K1Pin 4
-#define K2Pin 5
-#define K3Pin 2
-#define K5Pin 3
-#define K6Pin 0
-#define K7Pin 1
-
-/*
- * PINOUT ON PCB vs PINS ON MPR121 - Rev. A
- *
- * (R2) (R4) (K4) (K2) (K5) (K7) <-> (11) (09) (07) (05) (03) (01)
- *
- * (R1) (R3/6) (R5) (K1) (K3) (K6) <-> (10) (08) (06) (04) (02) (00)
- *
- */
-
-#endif //REVB
-#endif //NURAD
-
-
-#endif
diff --git a/NuEVI/led.cpp b/NuEVI/led.cpp
deleted file mode 100644
index 0d778d6..0000000
--- a/NuEVI/led.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#include
-#include "hardware.h"
-#include "globals.h"
-#include "config.h"
-
-// Do things with status LED.
-void statusLedOn() {
- digitalWrite(statusLedPin, HIGH);
-#if defined(SEAMUS)
- analogWrite(sLedPin, SPCKEY_LED_BRIGHTNESS);
-#endif
-}
-
-void statusLedOff() {
- digitalWrite(statusLedPin, LOW);
-#if defined(SEAMUS)
- analogWrite(sLedPin, 0);
-#endif
-}
-
-void statusLed(bool state) {
- digitalWrite(statusLedPin, state);
-#if defined(SEAMUS)
- analogWrite(sLedPin, state*SPCKEY_LED_BRIGHTNESS);
-#endif
-}
-
-void statusLedFlip() {
- digitalWrite(statusLedPin, !digitalRead(statusLedPin));
-#if defined(SEAMUS)
- if (digitalRead(statusLedPin)) analogWrite(sLedPin, SPCKEY_LED_BRIGHTNESS); else analogWrite(sLedPin, 0);
-#endif
-}
-
-void statusLedFlash(uint16_t delayTime) {
- statusLedOff();
- delay(delayTime/2);
- statusLedOn();
- delay(delayTime/2);
-}
-
-void statusLedBlink() {
- statusLedFlash(300);
- statusLedFlash(300);
-}
-
-void updateSensorLEDs() {
- if (breathLevel > breathThrVal) { // breath indicator LED, labeled "B" on PCB
- //analogWrite(bLedPin, map(breathLevel,0,4096,5,breathLedBrightness));
- analogWrite(bLedPin, map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, MIN_LED_BRIGHTNESS, BREATH_LED_BRIGHTNESS));
- } else {
- analogWrite(bLedPin, 0);
- }
- if (portIsOn) { // portamento indicator LED, labeled "P" on PCB
- //analogWrite(pLedPin, map(biteSensor,0,4096,5,portamLedBrightness));
- analogWrite(pLedPin, map(constrain(oldport, 0, 127), 0, 127, MIN_LED_BRIGHTNESS, PORTAM_LED_BRIGHTNESS));
- } else {
- analogWrite(pLedPin, 0);
- }
- #if defined(NURAD)
- if (exSensorIndicator){
- analogWrite(eLedPin, map(constrain(exSensorIndicator, 0, 127), 0, 127, MIN_LED_BRIGHTNESS, EXTCON_LED_BRIGHTNESS));
- } else {
- analogWrite(eLedPin, 0);
- }
- #endif
-}
-
-void ledMeter(byte indicatedValue){
- analogWrite(bLedPin, map(constrain(indicatedValue, 0, 127), 0, 127, 0, BREATH_LED_BRIGHTNESS)); // full glow at maximum value
- analogWrite(pLedPin, map(constrain(indicatedValue, 0, 127), 127, 0, 0, PORTAM_LED_BRIGHTNESS)); // full glow at minimum value
-}
diff --git a/NuEVI/menu.cpp b/NuEVI/menu.cpp
deleted file mode 100644
index cf9b82d..0000000
--- a/NuEVI/menu.cpp
+++ /dev/null
@@ -1,2453 +0,0 @@
-#include
-#include
-#include
-#include
-
-#include "menu.h"
-#include "settings.h"
-#include "hardware.h"
-#include "config.h"
-#include "globals.h"
-#include "midi.h"
-#include "numenu.h"
-#include "led.h"
-
-enum CursorIdx {
- EMain,
- EBreath,
- EControl,
- ERotator,
- EVibrato,
- EExtras,
- ERotSubA,
- ERotSubB,
- ERotSubC,
- // NEVER ADD ANYTHING AFTER THIS, ONLY ABOVE
- NUM_CURSORS
-};
-
-// Allocate some space for cursors
-static byte cursors[CursorIdx::NUM_CURSORS];
-static byte offsets[CursorIdx::NUM_CURSORS];
-static byte activeSub[CursorIdx::NUM_CURSORS];
-
-byte cursorNow;
-static byte FPD = 0;
-
-
-// constants
-const unsigned long debounceDelay = 30; // the debounce time; increase if the output flickers
-const unsigned long buttonRepeatInterval = 50;
-const unsigned long buttonRepeatDelay = 400;
-const unsigned long cursorBlinkInterval = 300; // the cursor blink toggle interval time
-const unsigned long patchViewTimeUp = 2000; // ms until patch view shuts off
-const unsigned long menuTimeUp = 60000; // menu shuts off after one minute of button inactivity
-
-
-static unsigned long menuTime = 0;
-static unsigned long patchViewTime = 0;
-unsigned long cursorBlinkTime = 0; // the last time the cursor was toggled
-
-//Display state
-static byte menuState= DISPLAYOFF_IDL;
-static byte stateFirstRun = 1;
-
-// The external function of subSquelch has been broken,
-// need to come up with a smart way to make it work again.
-// The status led was update when the Squelch menu was open.
-byte subVibSquelch = 0; //extern
-
- // 'NuEVI' or 'NuRAD' logo
-#define LOGO16_GLCD_WIDTH 128
-#define LOGO16_GLCD_HEIGHT 64
-#if defined(NURAD)
-static const unsigned char PROGMEM nurad_logo_bmp[] = {
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf9, 0xff, 0xff, 0xfc, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x80, 0x00, 0x07, 0xf9, 0xff, 0xff, 0xfe, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xc0, 0x00, 0x0e, 0x19, 0x80, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xfc, 0xc0, 0x00, 0x1d, 0xd9, 0xbf, 0xff, 0xf3, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xfe, 0xc0, 0x00, 0x3b, 0xd9, 0xbf, 0xff, 0xfb, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x06, 0xc0, 0x00, 0x77, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x06, 0xc0, 0x00, 0xee, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x06, 0xc0, 0x01, 0xdc, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x6c, 0x00, 0x06, 0xc0, 0x03, 0xb8, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0x00, 0x18, 0x00, 0x00, 0x6f, 0xff, 0xfe, 0xc0, 0x07, 0x7f, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0x00, 0x18, 0x00, 0x00, 0x6f, 0xff, 0xfc, 0xc0, 0x0e, 0xff, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0xc0, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xc0, 0x1c, 0x00, 0x19, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0xc0, 0x38, 0x00, 0x00, 0x6f, 0xfb, 0xff, 0x80, 0x3b, 0xff, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x00, 0xc0, 0x30, 0x00, 0x00, 0x6f, 0xfd, 0xff, 0x00, 0x77, 0xff, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x01, 0xe0, 0x30, 0x00, 0x00, 0x6c, 0x0e, 0xe0, 0x00, 0xee, 0x00, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x01, 0xe0, 0x30, 0x00, 0x00, 0x6c, 0x07, 0x70, 0x01, 0xdc, 0x00, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x01, 0xb0, 0x30, 0x00, 0x00, 0x6c, 0x03, 0xb8, 0x03, 0xb8, 0x00, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x01, 0xb0, 0x30, 0x00, 0x00, 0x6c, 0x01, 0xdc, 0x07, 0x70, 0x00, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x01, 0x98, 0x20, 0xc0, 0x40, 0x6c, 0x00, 0xee, 0x0e, 0xe0, 0x00, 0xd9, 0xb0, 0x00, 0x1b, 0x00,
- 0x03, 0x0c, 0x20, 0xc0, 0xc0, 0x6c, 0x00, 0x77, 0x1d, 0xc0, 0x00, 0xd9, 0xbf, 0xff, 0xfb, 0x00,
- 0x03, 0x0c, 0x20, 0xc0, 0xc0, 0x6c, 0x00, 0x3b, 0xbb, 0x80, 0x00, 0xd9, 0xbf, 0xff, 0xf3, 0x00,
- 0x03, 0x06, 0x20, 0xc1, 0xc0, 0x6c, 0x00, 0x1d, 0xf7, 0x00, 0x00, 0xd9, 0x80, 0x00, 0x07, 0x00,
- 0x03, 0x03, 0x20, 0x83, 0x80, 0x6c, 0x00, 0x0e, 0xee, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xfe, 0x00,
- 0x03, 0x03, 0xb1, 0x83, 0x80, 0x6c, 0x00, 0x07, 0x5c, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xfc, 0x00,
- 0x03, 0x01, 0xf1, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0xf1, 0x8d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x71, 0xb9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x31, 0xf1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x00, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-#else
-static const unsigned char PROGMEM nuevi_logo_bmp[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x07, 0x73, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x0e, 0xe3, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x00, 0x1d, 0xc3, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x3b, 0x83, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x77, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xee, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x01, 0xdc, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x03, 0xb8, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x07, 0x70, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x0e, 0xe0, 0x03, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x1d, 0xc0, 0x03, 0x60, 0x00,
- 0x00, 0x03, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x3b, 0x80, 0x03, 0x60, 0x00,
- 0x00, 0x03, 0x00, 0xe0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x77, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x03, 0x00, 0xc0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0xee, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x03, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x61, 0xdc, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x07, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x63, 0xb8, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x07, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x67, 0x70, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x06, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x6e, 0xe0, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x06, 0x60, 0xc1, 0x01, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x7d, 0xc0, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x06, 0x30, 0xc3, 0x03, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x7b, 0x80, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x0c, 0x30, 0xc3, 0x07, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x77, 0x00, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x0c, 0x1c, 0xc3, 0x06, 0x01, 0x80, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x0c, 0x0c, 0xc2, 0x0e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x0c, 0x0e, 0xc6, 0x1e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xf8, 0x00, 0x00, 0x03, 0x60, 0x00,
- 0x00, 0x0c, 0x07, 0xc6, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x03, 0xc6, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x01, 0xc7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x00, 0xc7, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-#endif
-
-extern void readSwitches(void);
-extern Adafruit_MPR121 touchSensor;
-
-extern const MenuPage mainMenuPage; // Forward declaration.
-
-
-#define OLED_RESET 4
-Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET,1000000,1000000);
-
-int drawBatt(int x,int y){
- display.drawRect(x+1,y,3,3,WHITE);
- display.drawRect(x,y+2,5,12,WHITE);
- int bar=0;
- int vMeterReading = battAvg;
- switch (batteryType){
- case 0:
- bar = constrain((10 *(vMeterReading - ALK_BAT_LOW)) / (ALK_BAT_FULL - ALK_BAT_LOW),0,10);
- break;
- case 1:
- bar = constrain((10 * (vMeterReading - NMH_BAT_LOW)) / (NMH_BAT_FULL - NMH_BAT_LOW),0,10);
- break;
- case 2:
- bar = constrain((10 *(vMeterReading - LIP_BAT_LOW)) / (LIP_BAT_FULL - LIP_BAT_LOW),0,10);
- }
- display.fillRect(x+1,y+13-bar,3,constrain(bar,0,10),WHITE);
- return bar;
-}
-
-void drawFlash(int x, int y){
- display.drawLine(x+5,y,x,y+6,WHITE);
- display.drawLine(x,y+6,x+5,y+6,WHITE);
- display.drawLine(x,y+12,x+5,y+6,WHITE);
-}
-
-void initDisplay() {
-
- // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
-
- // Show image buffer on the display hardware.
- // Since the buffer is intialized with an Adafruit splashscreen
- // internally, this will display the splashscreen.
-
- display.clearDisplay();
- #if defined(NURAD)
- display.drawBitmap(0,0,nurad_logo_bmp,LOGO16_GLCD_WIDTH,LOGO16_GLCD_HEIGHT,1);
- #else
- display.drawBitmap(0,0,nuevi_logo_bmp,LOGO16_GLCD_WIDTH,LOGO16_GLCD_HEIGHT,1);
- #endif
- display.display();
-
- memset(cursors, 0, sizeof(cursors));
- memset(offsets, 0, sizeof(offsets));
- memset(activeSub, 0, sizeof(activeSub));
-}
-
-void showVersion() {
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(85,52);
- display.print("v.");
- display.println(FIRMWARE_VERSION);
- display.display();
-}
-
-void i2cScanDisplay(){
- uint8_t target; // slave addr
- byte error;
- while(1){
- display.clearDisplay();
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(0,0);
- display.println("MPR121 board scan");
- display.display();
- for(target = 0x5A; target <= 0x5D; target++) // sweep addr
- {
- Wire.beginTransmission(target); // slave addr
- error = Wire.endTransmission();
- delay(500);
- display.print("Addr 0x");
- display.print(target,HEX);
- if (error)
- display.print(" N\n");
- else
- display.print(" Y\n");
- display.display();
- }
- delay(1000);
- display.println();
- display.println("MENU to rescan");
- display.println("Power off to exit");
- display.display();
- while (digitalRead(mPin)){
- delay(100);
- }
- }
-}
-
-// Assumes dest points to a buffer of atleast 7 bytes.
-static const char* numToString(int16_t value, char* dest, bool plusSign = false) {
- char* ptr = dest;
- uint16_t absVal = abs(value);
- int c = 1;
-
- if(value < 0) {
- *ptr++ = '-';
- } else if(plusSign && value) {
- *ptr++ = '+';
- }
- while((c*10) < absVal+1) c *= 10;
- while(c > 0) {
- int tmp = absVal / c;
- *ptr++ = tmp + '0';
- absVal %= c;
- c /= 10;
- }
- *ptr = 0;
- return dest;
-}
-
-static void plotSubOption(const char* label, const char* unit = nullptr) {
- int text_x, unit_x;
- int label_pixel_width = strlen(label)*12;
-
- if(unit == nullptr) {
- text_x = 96 - (label_pixel_width/2);
- } else {
- int unit_pixel_width = strlen(unit)*6;
- int halfSum = (label_pixel_width + unit_pixel_width)/2;
- text_x = 96 - halfSum;
- unit_x = 96 + halfSum - unit_pixel_width;
- display.setCursor(unit_x,40);
- display.setTextSize(1);
- display.println(unit);
- }
-
- display.setTextSize(2);
- display.setCursor(text_x,33);
- display.println(label);
-}
-
-static bool drawSubMenu(const MenuPage *page) {
- int index = cursors[page->cursor];
- // TODO: Null check subMenuFunc
- const MenuEntry* subEntry = page->entries[index];
- switch(subEntry->type) {
- case MenuType::ESub:
- {
- char buffer[12];
- const char* labelPtr = nullptr;
- const MenuEntrySub* sub = (const MenuEntrySub*)subEntry;
- sub->getSubTextFunc(*sub, buffer, &labelPtr);
-
- // If EMenuEntryCustom flag is set, we assume that the getSubTextFunc
- // rendered by it self.
- if( !(sub->flags & EMenuEntryCustom)) {
- plotSubOption(buffer, labelPtr);
- }
- }
- break;
-
- default:
- break;
- }
- return true;
-}
-
-static void clearSub(){
- display.fillRect(63,11,64,52,BLACK);
-}
-
-static void clearSubValue() {
- display.fillRect(65, 24, 60, 37, BLACK);
-}
-
-static bool updateSubMenuCursor(const MenuPage *page, uint32_t timeNow)
-{
- if ((timeNow - cursorBlinkTime) > cursorBlinkInterval) {
- cursorBlinkTime = timeNow;
- if (cursorNow == WHITE) {
- cursorNow = BLACK;
- clearSubValue();
- return true;
- } else {
- cursorNow = WHITE;
- return drawSubMenu(page);
- }
- }
- return false;
-}
-
-static void plotMenuEntries(const MenuPage *page, bool clear = false) {
- int row = 0;
- if(clear) {
- display.fillRect( 0, MENU_HEADER_OFFSET, 63, 64-MENU_HEADER_OFFSET, BLACK);
- }
- display.setTextSize(1);
- int offset = offsets[page->cursor];
- for(int item = offset; (item < page->numEntries) && (row < MENU_NUM_ROWS); item++, row++) {
- int rowPixel = (row)*MENU_ROW_HEIGHT + MENU_HEADER_OFFSET;
- const char* lineText = page->entries[item]->title;
- display.setCursor(0,rowPixel);
- display.println(lineText);
- }
-
- if(offset)
- display.drawTriangle(58, MENU_HEADER_OFFSET, 57, MENU_HEADER_OFFSET+3, 59, MENU_HEADER_OFFSET+3, WHITE);
-
- if((offset+MENU_NUM_ROWS) < page->numEntries)
- display.drawTriangle(58, 63, 57, 60, 59, 60, WHITE);
-}
-
-typedef void (*MenuTitleGetFunc)(char*out);
-
-static void drawMenu(const MenuPage *page) {
- //Initialize display and draw menu header + line
- display.clearDisplay();
- display.setTextSize(1);
- display.setCursor(0,0);
-
- if(page->flags & EMenuCustomTitle) {
- // This is a bit hacky, but we are reusing the title pointer as a function pointer
- MenuTitleGetFunc func = (MenuTitleGetFunc)page->title;
- char buffer[23];
- func(buffer);
- display.println(buffer);
- } else
- display.println(page->title);
- display.drawLine(0, MENU_ROW_HEIGHT, 127, MENU_ROW_HEIGHT, WHITE);
-
- plotMenuEntries(page);
-}
-
-static void mainTitleGetStr(char* out) {
- //Construct the title including voltage reading.
- //Involves intricate splicing of the title string with battery voltage
- char menuTitle[] = "MENU XXX Y.YV"; //Allocate string buffer of appropriate size with some placeholders
- char* splice1 = menuTitle + 13;
- char* splice2 = menuTitle + 17;
-
- int vMeterReading = battAvg;
- memcpy(splice1, (vMeterReading > 3020) ? "USB" : "BAT", 3);
- int vLowLimit = NMH_BAT_LOW;
- switch (batteryType){
- case 0:
- vLowLimit = ALK_BAT_LOW;
- break;
- case 1:
- vLowLimit = NMH_BAT_LOW;
- break;
- case 2:
- vLowLimit = LIP_BAT_LOW;
- }
- if (vMeterReading <= vLowLimit) { //2300 alkaline, 2250 lipo, 2200 nimh
- memcpy(splice2, "LOW ", 4);
- } else {
- int voltage = map(vMeterReading,2200,3060,36,50);
- splice2[0] = (voltage/10)+'0';
- splice2[2] = (voltage%10)+'0';
- }
- strncpy(out, menuTitle, 22);
-}
-
-#if defined(NURAD)
-static void drawTrills(){
- if (LH1) display.fillRect(0,0,5,5,WHITE); else display.drawRect(0,0,5,5,WHITE);
- if (LH2) display.fillRect(10,0,5,5,WHITE); else display.drawRect(10,0,5,5,WHITE);
- if (LH3) display.fillRect(20,0,5,5,WHITE); else display.drawRect(20,0,5,5,WHITE);
-}
-#else
-static void drawTrills(){
- if (K5) display.fillRect(0,0,5,5,WHITE); else display.drawRect(0,0,5,5,WHITE);
- if (K6) display.fillRect(10,0,5,5,WHITE); else display.drawRect(10,0,5,5,WHITE);
- if (K7) display.fillRect(20,0,5,5,WHITE); else display.drawRect(20,0,5,5,WHITE);
-}
-#endif
-
-static void drawPatchView(){
- display.clearDisplay();
- if (FPD){
- drawTrills();
- }
- display.setTextSize(6);
- if (FPD < 2){
- int align;
- if (patch < 10) { // 1-9
- align = 48;
- } else if (patch < 100) { // 10-99
- align = 31;
- } else { // 100-128 use default
- align = 10;
- }
- display.setCursor(align,10);
- display.println(patch);
- } else if (FPD == 2){
- display.setCursor(10,10);
- display.println("SET");
- } else {
- display.setCursor(10,10);
- display.println("CLR");
- }
-}
-
-static void drawSubBox(const char* label)
-{
- display.fillRect(63,11,64,52,BLACK);
- display.drawRect(63,11,64,52,WHITE);
- display.setTextSize(1);
- int len = strlen(label);
-
- display.setCursor(95-len*3,15);
- display.println(label);
-}
-
-void drawMenuCursor(byte itemNo, byte color){
- byte ymid = 15 + 9 * itemNo;
- display.drawTriangle(57, ymid,61, ymid+2,61, ymid-2, color);
-}
-
-//***********************************************************
-
-#if defined(NURAD)
-static int readTrills() {
- readSwitches();
- return LH1+2*LH2+4*LH3;
-}
-#else
-static int readTrills() {
- readSwitches();
- return K5+2*K6+4*K7;
-}
-#endif
-//***********************************************************
-
-static void setFPS(int trills, uint16_t patchNum) {
- fastPatch[trills-1] = patchNum;
- writeSetting(FP1_ADDR+2*(trills-1), patchNum);
- FPD = 2;
-}
-
-//***********************************************************
-
-static void clearFPS(int trills) {
- fastPatch[trills-1] = 0;
- writeSetting(FP1_ADDR+2*(trills-1),0);
- FPD = 3;
-}
-
-
-//***********************************************************
-// Poly Play menu
-
-const MenuEntryStateCh rotSubAMenu = { MenuType::EStateChange, "ROTATOR A", ROTA_MENU };
-const MenuEntryStateCh rotSubBMenu = { MenuType::EStateChange, "ROTATOR B", ROTB_MENU };
-const MenuEntryStateCh rotSubCMenu = { MenuType::EStateChange, "ROTATOR C", ROTC_MENU };
-
-static void saveRotatorSetting(const Rotator * rotator, uint16_t settingAddr)
-{
- int16_t stored;
- for(int i = 0; i < 4; ++i) {
- stored = readSetting(settingAddr+2*i);
- if(stored != rotator->rotations[i])
- writeSetting(settingAddr+2*i,(rotator->rotations[i]));
- }
-}
-
-static void rotatorSave(const MenuEntrySub& __unused sub) {
- saveRotatorSetting(&rotations_a, ROTN1_ADDR);
-}
-
-static void rotatorBSave(const MenuEntrySub& __unused sub) {
- saveRotatorSetting(&rotations_b, ROTB1_ADDR);
-}
-
-static void rotatorCSave(const MenuEntrySub& __unused sub) {
- saveRotatorSetting(&rotations_c, ROTC1_ADDR);
-}
-
-
-static void rotatorOptionGet(SubMenuRef sub, char *out, const char** __unused unit) {
- numToString((*sub.valuePtr) - 24, out, true);
-}
-
-static void parallelOptionGet(SubMenuRef __unused, char *out, const char** __unused unit) {
- numToString(rotations_a.parallel-24, out, true);
-}
-
-static void parallelBOptionGet(SubMenuRef __unused, char *out, const char** __unused unit) {
- numToString(rotations_b.parallel-24, out, true);
-}
-
-static void parallelCOptionGet(SubMenuRef __unused, char *out, const char** __unused unit) {
- numToString(rotations_c.parallel-24, out, true);
-}
-
-static void parallelSave(SubMenuRef __unused) {
- writeSetting(PARAL_ADDR, rotations_a.parallel);
-}
-
-static void parallelBSave(SubMenuRef __unused) {
- writeSetting(PARAB_ADDR, rotations_b.parallel);
-}
-
-static void parallelCSave(SubMenuRef __unused) {
- writeSetting(PARAC_ADDR, rotations_c.parallel);
-}
-
-const MenuEntrySub rotatorParaMenu = {
- MenuType::ESub, "RTA PARAL", "SEMITONES", &rotations_a.parallel, 0, 48, MenuEntryFlags::ENone,
- parallelOptionGet, parallelSave, nullptr
-};
-
-const MenuEntrySub rotator1Menu = {
- MenuType::ESub, "RTA ROT 1", "SEMITONES", &rotations_a.rotations[0], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorSave, nullptr
-};
-
-const MenuEntrySub rotator2Menu = {
- MenuType::ESub, "RTA ROT 2", "SEMITONES", &rotations_a.rotations[1], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorSave, nullptr
-};
-
-const MenuEntrySub rotator3Menu = {
- MenuType::ESub, "RTA ROT 3", "SEMITONES", &rotations_a.rotations[2], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorSave, nullptr
-};
-
-const MenuEntrySub rotator4Menu = {
- MenuType::ESub, "RTA ROT 4", "SEMITONES", &rotations_a.rotations[3], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorSave, nullptr
-};
-
-const MenuEntrySub rotatorParaBMenu = {
- MenuType::ESub, "RTB PARAL", "SEMITONES", &rotations_b.parallel, 0, 48, MenuEntryFlags::ENone,
- parallelBOptionGet, parallelBSave, nullptr
-};
-
-const MenuEntrySub rotatorB1Menu = {
- MenuType::ESub, "RTB ROT 1", "SEMITONES", &rotations_b.rotations[0], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorBSave, nullptr
-};
-
-const MenuEntrySub rotatorB2Menu = {
- MenuType::ESub, "RTB ROT 2", "SEMITONES", &rotations_b.rotations[1], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorBSave, nullptr
-};
-
-const MenuEntrySub rotatorB3Menu = {
- MenuType::ESub, "RTB ROT 3", "SEMITONES", &rotations_b.rotations[2], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorBSave, nullptr
-};
-
-const MenuEntrySub rotatorB4Menu = {
- MenuType::ESub, "RTB ROT 4", "SEMITONES", &rotations_b.rotations[3], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorBSave, nullptr
-};
-const MenuEntrySub rotatorParaCMenu = {
- MenuType::ESub, "RTC PARAL", "SEMITONES", &rotations_c.parallel, 0, 48, MenuEntryFlags::ENone,
- parallelCOptionGet, parallelCSave, nullptr
-};
-
-const MenuEntrySub rotatorC1Menu = {
- MenuType::ESub, "RTC ROT 1", "SEMITONES", &rotations_c.rotations[0], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorCSave, nullptr
-};
-
-const MenuEntrySub rotatorC2Menu = {
- MenuType::ESub, "RTC ROT 2", "SEMITONES", &rotations_c.rotations[1], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorCSave, nullptr
-};
-
-const MenuEntrySub rotatorC3Menu = {
- MenuType::ESub, "RTC ROT 3", "SEMITONES", &rotations_c.rotations[2], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorCSave, nullptr
-};
-
-const MenuEntrySub rotatorC4Menu = {
- MenuType::ESub, "RTC ROT 4", "SEMITONES", &rotations_c.rotations[3], 0, 48, MenuEntryFlags::ENone,
- rotatorOptionGet, rotatorCSave, nullptr
-};
-
-
-static void rotatorPrioOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- if (priority) strncpy(out, "LO", 4);
- else strncpy(out, "HI", 4);
-}
-
-static void rotatorPrioSave(SubMenuRef __unused) {
- writeSetting(PRIO_ADDR,priority);
-}
-
-const MenuEntrySub rotatorPrioMenu = {
- MenuType::ESub, "PRIORITY", "MONO PRIO", &priority, 0,1, MenuEntryFlags::EMenuEntryWrap,
- rotatorPrioOptionGet, rotatorPrioSave, nullptr,
-};
-
-
-static void fwcTypeOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- switch (fwcType){
- case 0:
- strncpy(out, "6", 4);
- break;
- case 1:
- strncpy(out, "m6", 4);
- break;
- case 2:
- strncpy(out, "7", 4);
- break;
- case 3:
- strncpy(out, "m7", 4);
- }
-}
-
-static void fwcTypeSave(SubMenuRef __unused) {
- writeSetting(FWCTYPE_ADDR,fwcType);
-}
-
-const MenuEntrySub fwcTypeMenu = {
- MenuType::ESub, "FWC TYPE", "CHORD", &fwcType, 0,3, MenuEntryFlags::EMenuEntryWrap,
- fwcTypeOptionGet, fwcTypeSave, nullptr,
-};
-
-static void fwcLockHOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- if (fwcLockH) strncpy(out, "ON", 4);
- else strncpy(out, "OFF", 4);
-}
-
-static void fwcLockHSave(SubMenuRef __unused) {
- writeSetting(FWCLCH_ADDR,fwcLockH);
-}
-
-const MenuEntrySub fwcLockHMenu = {
- MenuType::ESub, "FWC LOCKH", "LH MELODY", &fwcLockH, 0,1, MenuEntryFlags::EMenuEntryWrap,
- fwcLockHOptionGet, fwcLockHSave, nullptr,
-};
-
-static void fwcDrop2OptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- if (fwcDrop2) strncpy(out, "ON", 4);
- else strncpy(out, "OFF", 4);
-}
-
-static void fwcDrop2Save(SubMenuRef __unused) {
- writeSetting(FWCDP2_ADDR,fwcDrop2);
-}
-
-const MenuEntrySub fwcDrop2Menu = {
- MenuType::ESub, "FWC DROP2", "DROP 2", &fwcDrop2, 0,1, MenuEntryFlags::EMenuEntryWrap,
- fwcDrop2OptionGet, fwcDrop2Save, nullptr,
-};
-
-static void hmzKeyOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- switch (hmzKey){
- case 0:
- strncpy(out, "C", 4);
- break;
- case 1:
- strncpy(out, "C#", 4);
- break;
- case 2:
- strncpy(out, "D", 4);
- break;
- case 3:
- strncpy(out, "D#", 4);
- break;
- case 4:
- strncpy(out, "E", 4);
- break;
- case 5:
- strncpy(out, "F", 4);
- break;
- case 6:
- strncpy(out, "F#", 4);
- break;
- case 7:
- strncpy(out, "G", 4);
- break;
- case 8:
- strncpy(out, "G#", 4);
- break;
- case 9:
- strncpy(out, "A", 4);
- break;
- case 10:
- strncpy(out, "Bb", 4);
- break;
- case 11:
- strncpy(out, "B", 4);
- break;
- }
-}
-
-static void hmzKeySave(SubMenuRef __unused) {
- writeSetting(HMZKEY_ADDR,hmzKey);
-}
-
-const MenuEntrySub hmzKeyMenu = {
- MenuType::ESub, "HMZ KEY", "KEY PLAYED", &hmzKey, 0,11, MenuEntryFlags::EMenuEntryWrap,
- hmzKeyOptionGet, hmzKeySave, nullptr,
-};
-
-
-static void polySelectOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- switch (polySelect){
- case 0:
- strncpy(out, "OFF", 4);
- break;
- case 1:
- strncpy(out, "MGR", 4);
- break;
- case 2:
- strncpy(out, "MGD", 4);
- break;
- case 3:
- strncpy(out, "MA9", 4);
- break;
- case 4:
- strncpy(out, "MND", 4);
- break;
- case 5:
- strncpy(out, "MNA", 4);
- break;
- case 6:
- strncpy(out, "MNH", 4);
- break;
- case 7:
- strncpy(out, "FWC", 4);
- break;
- case 8:
- strncpy(out, "RTA", 4);
- break;
- case 9:
- strncpy(out, "RTB", 4);
- break;
- case 10:
- strncpy(out, "RTC", 4);
- break;
- }
-}
-
-static void polySelectSave(SubMenuRef __unused) {
- writeSetting(POLYSEL_ADDR,polySelect);
-}
-
-const MenuEntrySub polySelectMenu = {
- MenuType::ESub, "POLY MODE", "SELECT", (uint16_t*)&polySelect, 0,10, MenuEntryFlags::EMenuEntryWrap,
- polySelectOptionGet, polySelectSave, nullptr,
-};
-
-static void hmzLimitOptionGet(SubMenuRef sub, char *out, const char** __unused unit) {
- numToString((*sub.valuePtr), out, false);
-}
-
-static void hmzLimitSave(SubMenuRef __unused) {
- writeSetting(HMZLIMIT_ADDR,hmzLimit);
-}
-
-const MenuEntrySub hmzLimitMenu = {
- MenuType::ESub, "HMZ LIMIT", "VOICES", &hmzLimit, 2,5, MenuEntryFlags::EMenuEntryWrap,
- hmzLimitOptionGet, hmzLimitSave, nullptr,
-};
-
-static void otfKeyOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- if (otfKey) strncpy(out, "ON", 4);
- else strncpy(out, "OFF", 4);
-}
-
-static void otfKeySave(SubMenuRef __unused) {
- writeSetting(OTFKEY_ADDR,otfKey);
-}
-
-const MenuEntrySub otfKeyMenu = {
- MenuType::ESub, "OTF KEY", "OTF KEYSW", &otfKey, 0,1, MenuEntryFlags::EMenuEntryWrap,
- otfKeyOptionGet, otfKeySave, nullptr,
-};
-
-
-const MenuEntry* rotSubAMenuEntries[] = {
- (MenuEntry*)&rotatorParaMenu,
- (MenuEntry*)&rotator1Menu,
- (MenuEntry*)&rotator2Menu,
- (MenuEntry*)&rotator3Menu,
- (MenuEntry*)&rotator4Menu
-};
-
-const MenuPage rotSubAMenuPage = {
- "ROTATOR A", 0, CursorIdx::ERotSubA, ROTATOR_MENU, ARR_LEN(rotSubAMenuEntries), rotSubAMenuEntries
-};
-
-const MenuEntry* rotSubBMenuEntries[] = {
- (MenuEntry*)&rotatorParaBMenu,
- (MenuEntry*)&rotatorB1Menu,
- (MenuEntry*)&rotatorB2Menu,
- (MenuEntry*)&rotatorB3Menu,
- (MenuEntry*)&rotatorB4Menu
-};
-
-const MenuPage rotSubBMenuPage = {
- "ROTATOR B", 0, CursorIdx::ERotSubB, ROTATOR_MENU, ARR_LEN(rotSubBMenuEntries), rotSubBMenuEntries
-};
-
-const MenuEntry* rotSubCMenuEntries[] = {
- (MenuEntry*)&rotatorParaCMenu,
- (MenuEntry*)&rotatorC1Menu,
- (MenuEntry*)&rotatorC2Menu,
- (MenuEntry*)&rotatorC3Menu,
- (MenuEntry*)&rotatorC4Menu
-};
-
-const MenuPage rotSubCMenuPage = {
- "ROTATOR C", 0, CursorIdx::ERotSubC, ROTATOR_MENU, ARR_LEN(rotSubCMenuEntries), rotSubCMenuEntries
-};
-
-
-
-const MenuEntry* rotatorMenuEntries[] = {
- (MenuEntry*)&polySelectMenu,
- (MenuEntry*)&hmzKeyMenu,
- (MenuEntry*)&otfKeyMenu,
- (MenuEntry*)&hmzLimitMenu,
- (MenuEntry*)&fwcTypeMenu,
- (MenuEntry*)&fwcLockHMenu,
- (MenuEntry*)&fwcDrop2Menu,
- (MenuEntry*)&rotatorPrioMenu,
-/*(MenuEntry*)&rotatorParaMenu,
- (MenuEntry*)&rotator1Menu,
- (MenuEntry*)&rotator2Menu,
- (MenuEntry*)&rotator3Menu,
- (MenuEntry*)&rotator4Menu,
- (MenuEntry*)&rotatorParaBMenu,
- (MenuEntry*)&rotatorB1Menu,
- (MenuEntry*)&rotatorB2Menu,
- (MenuEntry*)&rotatorB3Menu,
- (MenuEntry*)&rotatorB4Menu,
- (MenuEntry*)&rotatorParaCMenu,
- (MenuEntry*)&rotatorC1Menu,
- (MenuEntry*)&rotatorC2Menu,
- (MenuEntry*)&rotatorC3Menu,
- (MenuEntry*)&rotatorC4Menu */
- (MenuEntry*)&rotSubAMenu,
- (MenuEntry*)&rotSubBMenu,
- (MenuEntry*)&rotSubCMenu
-};
-/*
-const MenuPage rotatorMenuPage = {
- "ROTATOR SETUP",
- EMenuPageRoot,
- CursorIdx::ERotator,
- DISPLAYOFF_IDL,
- ARR_LEN(rotatorMenuEntries), rotatorMenuEntries
-};
-*/
-const MenuPage rotatorMenuPage = {
- "POLY PLAY SETUP",
- 0,
- CursorIdx::ERotator,
- MAIN_MENU,
- ARR_LEN(rotatorMenuEntries), rotatorMenuEntries
-};
-
-//***********************************************************
-
-// Main menu
-/*
-const MenuEntrySub transposeMenu = {
- MenuType::ESub, "TRANSPOSE", "TRANSPOSE", &transpose, 0, 24, MenuEntryFlags::ENone,
- [](SubMenuRef __unused, char* out, const char** __unused unit) {
- numToString(transpose - 12, out, true);
- },
- [](const MenuEntrySub &sub) { writeSetting(TRANSP_ADDR,*sub.valuePtr); }
- , nullptr
-};
-*/
-static void transposeOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
- switch (transpose){
- case 0:
- strncpy(out, "C>", 4);
- break;
- case 1:
- strncpy(out, "C#>", 4);
- break;
- case 2:
- strncpy(out, "D>", 4);
- break;
- case 3:
- strncpy(out, "D#>", 4);
- break;
- case 4:
- strncpy(out, "E>", 4);
- break;
- case 5:
- strncpy(out, "F>", 4);
- break;
- case 6:
- strncpy(out, "F#>", 4);
- break;
- case 7:
- strncpy(out, "G>", 4);
- break;
- case 8:
- strncpy(out, "G#>", 4);
- break;
- case 9:
- strncpy(out, "A>", 4);
- break;
- case 10:
- strncpy(out, "Bb>", 4);
- break;
- case 11:
- strncpy(out, "B>", 4);
- break;
- case 12:
- strncpy(out, ">C<", 4);
- break;
- case 13:
- strncpy(out, " bool {
- static uint32_t timer = 0;
- if(stateFirstRun) {
- display.clearDisplay();
- timer = timeNow + 3500;
- stateFirstRun = 0;
- display.setCursor(49,0);
- display.setTextColor(WHITE);
- display.setTextSize(0);
- #if defined(NURAD)
- display.println("NuRAD");
- #else
- display.println("NuEVI");
- #endif
- display.setCursor(16,12);
- display.print("firmware v.");
- display.println(FIRMWARE_VERSION);
- int vMeterReading = battAvg;
- int voltage = map(vMeterReading,2200,3060,36,50);
- display.setCursor(16,32);
- if (vMeterReading > 3020){
- drawFlash(4,34);
- display.print("USB power");
- display.setCursor(16,42);
- display.print(voltage/10);
- display.print(".");
- display.print(voltage%10);
- display.print("v");
- } else {
- int bar = drawBatt(4,34);
- if (0 == batteryType) {
- display.println("Alkaline battery");
- display.setCursor(16,42);
- display.print(bar);
- display.print("0 % at ");
- display.print(voltage/10);
- display.print(".");
- display.print(voltage%10);
- display.print("v");
- } else if (1 == batteryType) {
- display.println("NiMH battery");
- display.setCursor(16,42);
- display.print(bar);
- display.print("0 % at ");
- display.print(voltage/10);
- display.print(".");
- display.print(voltage%10);
- display.print("v");
- } else if (2 == batteryType) {
- display.println("LiPo battery");
- display.setCursor(16,42);
- display.print(bar);
- display.print("0 % at ");
- display.print(voltage/10);
- display.print(".");
- display.print(voltage%10);
- display.print("v");
- }
- }
-
-
- return true;
- } else {
- if(timeNow >= timer) {
- menuState = MAIN_MENU;
- stateFirstRun = 1;
- }
- return false;
- }
- }
-};
-
-
-//***********************************************************
-
-static bool selectMenuOption(const MenuPage *page) {
- int cursorPosition = cursors[page->cursor];
- const MenuEntry* menuEntry = page->entries[cursorPosition];
- cursorBlinkTime = millis();
-
- switch(menuEntry->type) {
- case MenuType::ESub:
- activeSub[page->cursor] = cursorPosition+1;
- drawMenuCursor(cursorPosition-offsets[page->cursor], WHITE);
- drawSubBox( ((const MenuEntrySub*)menuEntry)->subTitle);
- drawSubMenu(page);
- return true;
-
- case MenuType::EStateChange:
- menuState= ((const MenuEntryStateCh*)menuEntry)->state;
- stateFirstRun = 1;
- break;
- }
-
- return false;
-}
-
-//***********************************************************
-
-static bool updateSubMenu(const MenuPage *page, KeyState &input, uint32_t timeNow) {
-
- bool redraw = false;
- bool redrawSubValue = false;
- if (input.changed) {
- int current_sub = activeSub[page->cursor] -1;
-
- if( current_sub < 0)
- return false;
-
- auto sub = (const MenuEntrySub*)page->entries[current_sub];
- uint16_t currentVal = *sub->valuePtr;
-
- switch (input.current){
- case BTN_DOWN:
- if(currentVal > sub->min) {
- currentVal -= 1;
- } else if(sub->flags & MenuEntryFlags::EMenuEntryWrap) {
- currentVal = sub->max;
- }
- break;
-
- case BTN_UP:
- if(currentVal < sub->max) {
- currentVal += 1;
- } else if(sub->flags & MenuEntryFlags::EMenuEntryWrap) {
- currentVal = sub->min;
- }
- break;
-
- case BTN_ENTER:
- if(sub->flags & EMenuEntryEnterHandler) {
- bool result = sub->onEnterFunc();
- if(result) {
- activeSub[page->cursor] = 0;
- }
- } else {
- activeSub[page->cursor] = 0;
- sub->applyFunc(*sub);
- }
- break;
-
- case BTN_MENU:
- activeSub[page->cursor] = 0;
- sub->applyFunc(*sub);
- break;
- }
- *sub->valuePtr = currentVal;
- redrawSubValue = true;
- } else {
- redraw = updateSubMenuCursor( page, timeNow );
- }
-
- if(redrawSubValue) {
- clearSubValue();
- redraw |= drawSubMenu(page);
- cursorNow = BLACK;
- cursorBlinkTime = timeNow;
- }
-
- return redraw;
-}
-
-static bool updateMenuPage(const MenuPage *page, KeyState &input, uint32_t timeNow) {
- byte cursorPos = cursors[page->cursor];
- byte newPos = cursorPos;
- bool redraw = false;
-
- if (input.changed) {
- int lastEntry = page->numEntries-1;
- switch (input.current) {
- case BTN_DOWN:
- if (cursorPos < lastEntry)
- newPos = cursorPos+1;
- break;
-
- case BTN_ENTER:
- redraw |= selectMenuOption(page);
- break;
-
- case BTN_UP:
- if (cursorPos > 0)
- newPos = cursorPos-1;
- break;
-
- case BTN_MENU:
- menuState= page->parentPage;
- stateFirstRun = 1;
- break;
- }
-
- if(newPos != cursorPos) {
-
- int offset = offsets[page->cursor];
- drawMenuCursor(cursorPos-offset, BLACK); // Clear old cursor
-
- if(page->numEntries >= MENU_NUM_ROWS) {
- // Handle scrolling..
- if((newPos - offset) > (MENU_NUM_ROWS-2) ) {
- offset = newPos - (MENU_NUM_ROWS-2);
- } else if( (newPos - offset) < 1) {
- offset = newPos - 1;
- }
-
- offset = constrain(offset, 0, page->numEntries - MENU_NUM_ROWS);
-
- if( offset != offsets[page->cursor]) {
- offsets[page->cursor] = offset;
- plotMenuEntries(page, true);
- }
- }
-
- drawMenuCursor(newPos-offset, WHITE);
- cursorNow = BLACK;
- clearSub();
- redraw = true;
- }
- cursors[page->cursor] = newPos;
- } else if ((timeNow - cursorBlinkTime) > cursorBlinkInterval) {
- // Only need to update cursor blink if no buttons were pressed
- if (cursorNow == WHITE) cursorNow = BLACK; else cursorNow = WHITE;
- drawMenuCursor(cursorPos-offsets[page->cursor], cursorNow);
- redraw = true;
- cursorBlinkTime = timeNow;
- }
-
- return redraw;
-}
-
-static bool updatePage(const MenuPage *page, KeyState &input, uint32_t timeNow) {
-
- display.setTextColor(WHITE);
-
- if(page->flags & EMenuPageCustom) {
- const MenuPageCustom* custom = (const MenuPageCustom*)page;
- return custom->menuUpdateFunc(input, timeNow);
- }
-
- bool redraw = stateFirstRun;
-
- if (stateFirstRun) {
- drawMenu(page);
- stateFirstRun = 0;
- }
- if (activeSub[page->cursor]) {
- redraw = updateSubMenu(page, input, timeNow);
- } else {
- redraw = updateMenuPage(page, input, timeNow);
-
- if((page->flags & EMenuPageRoot) && input.changed) {
- int trills = readTrills();
- switch (input.current) {
- case BTN_MENU+BTN_ENTER:
- if (trills) {
- menuState = PATCH_VIEW;
- stateFirstRun = 1;
- setFPS(trills, patch);
- }
- break;
-
- case BTN_MENU+BTN_UP:
- if (trills) {
- menuState = PATCH_VIEW;
- stateFirstRun = 1;
- clearFPS(trills);
- }
- break;
- default: break;
- }
- }
- }
-
- return redraw;
-}
-
-
-//***********************************************************
-
-
-static bool updateSensorPixelsFlag = false;
-void drawSensorPixels() {
- updateSensorPixelsFlag = true;
-}
-
-//***********************************************************
-
-
-bool adjustPageUpdate(KeyState &input, uint32_t timeNow) {
- // This is a hack to update touch_Thr is it was changed..
- int old_thr = ctouchThrVal;
- int result = updateAdjustMenu(timeNow, input, stateFirstRun, updateSensorPixelsFlag);
- bool redraw = false;
-
- updateSensorPixelsFlag = false;
- stateFirstRun = 0;
-
- if(result < 0) {
- // Go back to main menu
- menuState= MAIN_MENU;
- stateFirstRun = true;
- } else {
- redraw = result;
- }
-
- if( old_thr != ctouchThrVal) {
- touch_Thr = map(ctouchThrVal,ctouchHiLimit,ctouchLoLimit,ttouchLoLimit,ttouchHiLimit);
- }
- return redraw;
-}
-
-
-static bool patchPageUpdate(KeyState& input, uint32_t timeNow) {
- bool redraw = stateFirstRun;
-
- if (stateFirstRun) {
- display.ssd1306_command(SSD1306_DISPLAYON);
- drawPatchView();
- patchViewTime = timeNow;
- stateFirstRun = 0;
- }
- if ((timeNow - patchViewTime) > patchViewTimeUp) {
- menuState= DISPLAYOFF_IDL;
- stateFirstRun = 1;
- doPatchUpdate = 1;
- FPD = 0;
- writeSetting(PATCH_ADDR,patch);
- }
- if (input.changed) {
- patchViewTime = timeNow;
- int trills = readTrills();
- switch (input.current){
- case BTN_DOWN:
- // fallthrough
- case BTN_UP:
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- writeSetting(PATCH_ADDR,patch);
- } else if (!trills){
- patch = (((patch-1u) + ((input.current == BTN_UP)?1u:-1u))&127u) + 1u;
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 0;
- }
- drawPatchView();
- redraw = true;
- break;
-
- case BTN_ENTER:
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- drawPatchView();
- redraw = true;
- }
- break;
-
-
- case BTN_MENU:
- if (FPD < 2){
- menuState= DISPLAYOFF_IDL;
- stateFirstRun = 1;
- doPatchUpdate = 1;
- }
- writeSetting(PATCH_ADDR,patch);
- FPD = 0;
- break;
-
- case BTN_MENU+BTN_ENTER:
- display.clearDisplay();
- display.setTextSize(2);
- display.setCursor(35,15);
- display.println("DON'T");
- display.setCursor(35,30);
- display.println("PANIC");
- display.display(); // call display explicitly _before_ we call midiPanic
- midiPanic();
- break;
-
- case BTN_MENU+BTN_ENTER+BTN_UP+BTN_DOWN:
- //all keys depressed, reboot to programming mode
- _reboot_Teensyduino_();
- }
- }
-
- return redraw;
-}
-
-
-static bool idlePageUpdate(KeyState& __unused input, uint32_t __unused timeNow) {
- bool redraw = false;
- if (stateFirstRun) {
- display.ssd1306_command(SSD1306_DISPLAYOFF);
- display.clearDisplay();
- redraw = true;
- stateFirstRun = 0;
- }
- if (input.changed) {
- int trills = readTrills();
- switch (input.current){
- case BTN_UP:
- // fallthrough
- case BTN_DOWN:
- if (!trills) {
- patch = (((patch-1u) + ((input.current == BTN_UP)?1u:-1u))&127u) + 1u;
- }
- // fallthrough
- case BTN_ENTER:
- if (trills && (fastPatch[trills-1] > 0)){
- patch = fastPatch[trills-1];
- activePatch = 0;
- doPatchUpdate = 1;
- FPD = 1;
- }
- menuState= PATCH_VIEW;
- stateFirstRun = 1;
- break;
-
- case BTN_MENU:
- /* REMOVE ALL MODIFIER ENTRIES
- if (pinkyKey && (exSensor >= ((extracThrVal+extracMaxVal)/2)) && !specialKey) { // switch breath activated legacy settings on/off
- legacyBrAct = !legacyBrAct;
- dipSwBits = dipSwBits ^ (1<<2);
- writeSetting(DIPSW_BITS_ADDR,dipSwBits);
- statusLedBlink();
- } else if ((exSensor >= ((extracThrVal+extracMaxVal)/2)) && !specialKey) { // switch pb pad activated legacy settings control on/off
- legacy = !legacy;
- dipSwBits = dipSwBits ^ (1<<1);
- writeSetting(DIPSW_BITS_ADDR,dipSwBits);
- statusLedBlink();
- } else if (pinkyKey && !specialKey){ //hold pinky key for rotator menu, and if too high touch sensing blocks regular menu, touching special key helps
- display.ssd1306_command(SSD1306_DISPLAYON);
- menuState= ROTATOR_MENU;
- stateFirstRun = 1;
- } else {
- display.ssd1306_command(SSD1306_DISPLAYON);
- menuState = MAIN_MENU;
- stateFirstRun = 1;
- }*/
- display.ssd1306_command(SSD1306_DISPLAYON);
- menuState = MAIN_MENU;
- stateFirstRun = 1;
- break;
-
- case BTN_UP | BTN_DOWN | BTN_ENTER | BTN_MENU:
- //all keys depressed, reboot to programming mode
- _reboot_Teensyduino_();
- }
- }
- return redraw;
-}
-
-
-//***********************************************************
-
-static KeyState readInput(uint32_t timeNow) {
-
- static uint32_t lastDebounceTime = 0; // the last time the output pin was toggled
- static uint32_t buttonRepeatTime = 0;
- static uint32_t buttonPressedTime = 0;
- static uint8_t lastDeumButtons = 0;
- static uint8_t deumButtonState = 0;
-
- KeyState keys = { deumButtonState, 0 };
-
- // read the state of the switches (note that they are active low, so we invert the values)
- uint8_t deumButtons = 0x0f ^(digitalRead(dPin) | (digitalRead(ePin) << 1) | (digitalRead(uPin) << 2) | (digitalRead(mPin)<<3));
-
- // check to see if you just pressed the button
- // (i.e. the input went from LOW to HIGH), and you've waited long enough
- // since the last press to ignore any noise:
-
- // If the switch changed, due to noise or pressing:
- if (deumButtons != lastDeumButtons) {
- // reset the debouncing timer
- lastDebounceTime = timeNow;
- }
-
-
- if ((timeNow - lastDebounceTime) > debounceDelay) {
- // whatever the reading is at, it's been there for longer than the debounce
- // delay, so take it as the actual current state:
-
- // if the button state has changed:
- if (deumButtons != deumButtonState) {
- keys.current = deumButtons;
- keys.changed = deumButtonState ^ deumButtons;
-
- deumButtonState = deumButtons;
- menuTime = timeNow;
- buttonPressedTime = timeNow;
- }
-
- if (((deumButtons == BTN_DOWN) || (deumButtons == BTN_UP)) && (timeNow - buttonPressedTime > buttonRepeatDelay) && (timeNow - buttonRepeatTime > buttonRepeatInterval)){
- buttonRepeatTime = timeNow;
- keys.changed = deumButtons; // Key repeat
- }
- }
-
- // save the reading. Next time through the loop, it'll be the lastButtonState:
- lastDeumButtons = deumButtons;
-
- return keys;
-}
-
-
-
-void menu() {
- unsigned long timeNow = millis();
-
- bool redraw = stateFirstRun;
-
- KeyState input = readInput(timeNow);
-
- // shut off menu system if not used for a while (changes not stored by exiting a setting manually will not be stored in EEPROM)
- if (menuState&& ((timeNow - menuTime) > menuTimeUp)) {
- menuState= DISPLAYOFF_IDL;
- stateFirstRun = 1;
- subVibSquelch = 0;
- memset(activeSub, 0, sizeof(activeSub));
- }
-
- if (menuState== DISPLAYOFF_IDL) {
- redraw |= updatePage((const MenuPage*)&idleMenuPage, input, timeNow);
- } else if (menuState== PATCH_VIEW) {
- redraw |= updatePage((const MenuPage*)&patchMenuPage, input, timeNow);
- } else if (menuState== MAIN_MENU) {
- redraw |= updatePage(&mainMenuPage, input, timeNow);
- } else if (menuState== ROTATOR_MENU) {
- redraw |= updatePage(&rotatorMenuPage, input, timeNow);
- } else if (menuState== ADJUST_MENU) {
- redraw |= updatePage((const MenuPage*)&adjustMenuPage, input, timeNow);
- } else if (menuState== SETUP_BR_MENU) {
- redraw |= updatePage(&breathMenuPage, input, timeNow);
- } else if (menuState== SETUP_CT_MENU) {
- redraw |= updatePage(&controlMenuPage, input, timeNow);
- } else if (menuState== VIBRATO_MENU) {
- redraw |= updatePage(&vibratoMenuPage, input, timeNow);
- } else if (menuState == ABOUT_MENU) {
- redraw |= updatePage((const MenuPage*)&aboutMenuPage, input, timeNow);
- } else if (menuState == EXTRAS_MENU) {
- redraw |= updatePage((const MenuPage*)&extrasMenuPage, input, timeNow);
- } else if (menuState == ROTA_MENU) {
- redraw |= updatePage((const MenuPage*)&rotSubAMenuPage, input, timeNow);
- } else if (menuState == ROTB_MENU) {
- redraw |= updatePage((const MenuPage*)&rotSubBMenuPage, input, timeNow);
- } else if (menuState == ROTC_MENU) {
- redraw |= updatePage((const MenuPage*)&rotSubCMenuPage, input, timeNow);
- }
-
- if(redraw) {
- display.display();
- }
-}
diff --git a/NuEVI/menu.h b/NuEVI/menu.h
deleted file mode 100644
index 17034f9..0000000
--- a/NuEVI/menu.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef __MENU_H
-#define __MENU_H
-
-#include "wiring.h"
-#include "numenu.h"
-
-#define MENU_ROW_HEIGHT 9
-#define MENU_HEADER_OFFSET 12
-#define MENU_NUM_ROWS 6
-
-//display states
-#define DISPLAYOFF_IDL 0
-#define MAIN_MENU 1
-#define PATCH_VIEW 2
-#define ADJUST_MENU 3
-#define SETUP_BR_MENU 4
-#define SETUP_CT_MENU 5
-#define ROTATOR_MENU 6
-#define VIBRATO_MENU 7
-#define ABOUT_MENU 8
-#define EXTRAS_MENU 9
-#define ROTA_MENU 10
-#define ROTB_MENU 11
-#define ROTC_MENU 12
-
-#define ARR_LEN(a) (sizeof (a) / sizeof (a[0]))
-
-#define BTN_DOWN 1
-#define BTN_ENTER 2
-#define BTN_UP 4
-#define BTN_MENU 8
-
-
-extern const unsigned long debounceDelay; // the debounce time; increase if the output flickers
-extern const unsigned long buttonRepeatInterval;
-extern const unsigned long buttonRepeatDelay;
-extern const unsigned long cursorBlinkInterval; // the cursor blink toggle interval time
-extern const unsigned long patchViewTimeUp; // ms until patch view shuts off
-extern const unsigned long menuTimeUp; // menu shuts off after one minute of button inactivity
-
-extern byte subVibSquelch; // TODO: This is broken <- subVibSquelch is never set, we need another way to expose what menu is open.
-
-void initDisplay();
-void showVersion();
-void menu();
-void drawSensorPixels();
-void i2cScanDisplay();
-
-int updateAdjustMenu(uint32_t timeNow, KeyState &input, bool firstRun, bool drawSensor);
-bool adjustPageUpdate(KeyState &input, uint32_t timeNow);
-
-#endif
diff --git a/NuEVI/numenu.cpp b/NuEVI/numenu.cpp
deleted file mode 100755
index 0abb174..0000000
--- a/NuEVI/numenu.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Notes on the original menu implementation
-
-# Menus
-
-## Main Menu
-
-### Transpose
-Sub menu with values -12 to 12.
-
-### Octave
-Sub menu with values -3 to +3
-
-### MIDI CH
-
-Sub menu with values 0 to 16. Should be 1 to 16, but there might be a bug
-either in my simulation code, my changes to the menu or a bug in the original
-menu.
-
-### Adjust
-
-This is a special option where the Adjust menu mode is entered. It take over
-the display and draw horizontal indicators for threshold and such. More on
-this in a later section.
-
-### SETUP BR
-
-Breath setup. Opens a new menu with breath specific stuff.
-
-
-### SETUP CTL
-
-Controls setup. Opens a new menu.
-
-
-
- */
diff --git a/NuEVI/numenu.h b/NuEVI/numenu.h
deleted file mode 100755
index 525d2cc..0000000
--- a/NuEVI/numenu.h
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef __NUMENU_H
-#define __NUMENU_H
-
-#include
-
-//***********************************************************
-
-struct KeyState {
- uint8_t current;
- uint8_t changed;
-};
-
-//***********************************************************
-
-enum MenuType {
- ESub,
- EStateChange,
-};
-
-enum MenuEntryFlags {
- ENone = 0,
- EMenuEntryWrap = (1u<<0),
- EMenuEntryCustom = (1u<<1),
- EMenuEntryEnterHandler = (1u<<2),
-};
-
-enum MenuPageFlags {
- EMenuPageCustom = (1u<<0),
- EMenuPageRoot = (1u<<1),
- EMenuCustomTitle = (1u << 2),
-};
-
-
-struct MenuEntry {
- enum MenuType type;
- const char* title;
-};
-
-struct MenuEntrySub;
-typedef const MenuEntrySub& SubMenuRef;
-
-struct MenuEntrySub {
- enum MenuType type;
- const char* title;
- const char* subTitle;
- uint16_t* valuePtr;
- uint16_t min;
- uint16_t max;
- uint16_t flags;
- void (*getSubTextFunc)(SubMenuRef, char*textBuffer, const char**label);
- void (*applyFunc)(SubMenuRef);
- bool (*onEnterFunc)(void);
-};
-
-struct MenuEntryStateCh {
- enum MenuType type;
- const char* title;
- uint8_t state;
-};
-
-struct MenuPage {
- const char* title;
- uint16_t flags;
- uint8_t cursor;
- uint8_t parentPage;
- uint8_t numEntries;
- const MenuEntry** entries;
-};
-
-struct MenuPageCustom {
- const char* title;
- uint16_t flags;
- bool (*menuUpdateFunc)(KeyState &input, uint32_t timeNow);
-};
-
-//***********************************************************
-
-struct AdjustValue {
- uint16_t *value;
- uint16_t limitLow;
- uint16_t limitHigh;
-};
-
-struct AdjustMenuEntry {
- const char* title;
- AdjustValue entries[2];
- void (*saveFunc)(const AdjustMenuEntry&);
-};
-
-#endif
diff --git a/NuEVI/platformio.ini b/NuEVI/platformio.ini
index 0dca60a..7b806db 100644
--- a/NuEVI/platformio.ini
+++ b/NuEVI/platformio.ini
@@ -1,16 +1,23 @@
-; PlatformIO Project Configuration File
-;
-; Build options: build flags, source filter
-; Upload options: custom upload port, speed and extra flags
-; Library options: dependencies, extra library storages
-; Advanced options: extra scripting
-;
-; Please visit documentation for the other options and examples
-; https://docs.platformio.org/page/projectconf.html
-
-[env:teensy31]
-platform = teensy
-board = teensy31
-framework = arduino
-build_flags = -D USB_MIDI -D TEENSY_OPT_FASTER
-board_build.f_cpu = 96000000L
\ No newline at end of file
+; PlatformIO Project Configuration File
+;
+; Build options: build flags, source filter
+; Upload options: custom upload port, speed and extra flags
+; Library options: dependencies, extra library storages
+; Advanced options: extra scripting
+;
+; Please visit documentation for the other options and examples
+; https://docs.platformio.org/page/projectconf.html
+
+[env:teensy40]
+platform = teensy
+board = teensy40
+framework = arduino
+build_flags = -D USB_MIDI_SERIAL -D TEENSY_OPT_FASTER
+board_build.f_cpu = 528000000L
+lib_deps =
+ adafruit/Adafruit MPR121@^1.1.1
+ adafruit/Adafruit MPRLS Library@^1.2.0
+ adafruit/Adafruit SSD1306@^2.5.7
+ mkalkbrenner/WS2812Serial@^0.1.0
+ adafruit/Adafruit ICM20X@^2.0.5
+ paulstoffregen/Encoder@^1.4.2
diff --git a/NuEVI/settings.cpp b/NuEVI/settings.cpp
deleted file mode 100644
index e14c85a..0000000
--- a/NuEVI/settings.cpp
+++ /dev/null
@@ -1,618 +0,0 @@
-#include
-#include
-#include
-
-
-#include "settings.h"
-#include "globals.h"
-#include "menu.h"
-#include "hardware.h"
-#include "config.h"
-#include "midi.h"
-#include "led.h"
-
-//Read settings from eeprom. Returns wether or not anything was written (due to factory reset or upgrade)
-void readEEPROM(const bool factoryReset) {
-
- // if stored settings are not for current version, or Enter+Menu are pressed at startup, they are replaced by factory settings
- uint16_t settingsVersion = readSetting(VERSION_ADDR);
-
- // blank eeprom will be 0xFFFF. For a full reset, call it "version 0" so everything gets overwritten.
- if (factoryReset || settingsVersion == 0xffffu) {
- settingsVersion = 0;
- }
-
-
- if(settingsVersion != EEPROM_VERSION) {
-
- if(settingsVersion < 24) { //Oldest version from which any settings are recognized
- writeSetting(BREATH_THR_ADDR, BREATH_THR_FACTORY);
- writeSetting(BREATH_MAX_ADDR, BREATH_MAX_FACTORY);
- #if defined(NURAD)
- writeSetting(PORTAM_THR_ADDR, PORTPR_THR_FACTORY);
- writeSetting(PORTAM_MAX_ADDR, PORTPR_MAX_FACTORY);
- #else
- if (digitalRead(biteJumperPin)){ //PBITE (if pulled low with jumper, pressure sensor is used instead of capacitive bite sensing)
- writeSetting(PORTAM_THR_ADDR, PORTAM_THR_FACTORY);
- writeSetting(PORTAM_MAX_ADDR, PORTAM_MAX_FACTORY);
- } else {
- writeSetting(PORTAM_THR_ADDR, PORTPR_THR_FACTORY);
- writeSetting(PORTAM_MAX_ADDR, PORTPR_MAX_FACTORY);
- }
- #endif
- writeSetting(PITCHB_THR_ADDR, PITCHB_THR_FACTORY);
- writeSetting(PITCHB_MAX_ADDR, PITCHB_MAX_FACTORY);
- writeSetting(EXTRAC_THR_ADDR, EXTRAC_THR_FACTORY);
- writeSetting(EXTRAC_MAX_ADDR, EXTRAC_MAX_FACTORY);
- writeSetting(CTOUCH_THR_ADDR, CTOUCH_THR_FACTORY);
-
- writeSetting(TRANSP_ADDR, TRANSP_FACTORY);
- writeSetting(MIDI_ADDR, MIDI_FACTORY);
- writeSetting(BREATH_CC_ADDR, BREATH_CC_FACTORY);
- writeSetting(BREATH_AT_ADDR, BREATH_AT_FACTORY);
- writeSetting(VELOCITY_ADDR, VELOCITY_FACTORY);
- writeSetting(PORTAM_ADDR, PORTAM_FACTORY);
- writeSetting(PB_ADDR, PB_FACTORY);
- writeSetting(EXTRA_ADDR, EXTRA_FACTORY);
- writeSetting(VIBRATO_ADDR, VIBRATO_FACTORY);
- writeSetting(DEGLITCH_ADDR, DEGLITCH_FACTORY);
- writeSetting(PATCH_ADDR, PATCH_FACTORY);
- writeSetting(OCTAVE_ADDR, OCTAVE_FACTORY);
- writeSetting(BREATHCURVE_ADDR, BREATHCURVE_FACTORY);
- writeSetting(VEL_SMP_DL_ADDR, VEL_SMP_DL_FACTORY);
- writeSetting(VEL_BIAS_ADDR, VEL_BIAS_FACTORY);
- writeSetting(PINKY_KEY_ADDR, PINKY_KEY_FACTORY);
- }
-
- if(settingsVersion < 26) {
- writeSetting(FP1_ADDR, 0);
- writeSetting(FP2_ADDR, 0);
- writeSetting(FP3_ADDR, 0);
- writeSetting(FP4_ADDR, 0);
- writeSetting(FP5_ADDR, 0);
- writeSetting(FP6_ADDR, 0);
- writeSetting(FP7_ADDR, 0);
- writeSetting(DIPSW_BITS_ADDR, DIPSW_BITS_FACTORY);
- }
-
- if(settingsVersion < 28) {
- writeSetting(PARAL_ADDR, PARAL_FACTORY);
- writeSetting(ROTN1_ADDR, ROTN1_FACTORY);
- writeSetting(ROTN2_ADDR, ROTN2_FACTORY);
- writeSetting(ROTN3_ADDR, ROTN3_FACTORY);
- writeSetting(ROTN4_ADDR, ROTN4_FACTORY);
- writeSetting(PRIO_ADDR, PRIO_FACTORY);
- }
-
- if(settingsVersion < 29) {
- writeSetting(VIB_SENS_ADDR, VIB_SENS_FACTORY);
- writeSetting(VIB_RETN_ADDR, VIB_RETN_FACTORY);
- }
-
- if(settingsVersion < 31) {
- writeSetting(VIB_SQUELCH_ADDR, VIB_SQUELCH_FACTORY);
- writeSetting(VIB_DIRECTION_ADDR, VIB_DIRECTION_FACTORY);
- }
-
- if(settingsVersion < 32) {
- writeSetting(BREATH_CC2_ADDR, BREATH_CC2_FACTORY);
- writeSetting(BREATH_CC2_RISE_ADDR, BREATH_CC2_RISE_FACTORY);
- writeSetting(VIB_SENS_BITE_ADDR, VIB_SENS_BITE_FACTORY);
- writeSetting(VIB_SQUELCH_BITE_ADDR, VIB_SQUELCH_BITE_FACTORY);
- writeSetting(VIB_CONTROL_ADDR, VIB_CONTROL_FACTORY);
- writeSetting(TRILL3_INTERVAL_ADDR, TRILL3_INTERVAL_FACTORY);
- writeSetting(DAC_MODE_ADDR, DAC_MODE_FACTORY);
- }
-
- if(settingsVersion < 33) {
- writeSetting(EXTRA2_ADDR, EXTRA2_FACTORY);
- writeSetting(LEVEL_CC_ADDR, LEVEL_CC_FACTORY);
- writeSetting(LEVEL_VAL_ADDR, LEVEL_VAL_FACTORY);
- }
-
- if(settingsVersion < 34) {
- writeSetting(FINGER_ADDR, FINGER_FACTORY);
- writeSetting(LPINKY3_ADDR, LPINKY3_FACTORY);
- }
-
- if(settingsVersion < 35) {
- writeSetting(BATTYPE_ADDR, BATTYPE_FACTORY);
- writeSetting(HARMSET_ADDR, HARMSET_FACTORY);
- writeSetting(HARMSEL_ADDR, HARMSEL_FACTORY);
- }
-
- if(settingsVersion < 36) {
- writeSetting(PARAB_ADDR, PARAB_FACTORY);
- writeSetting(ROTB1_ADDR, ROTB1_FACTORY);
- writeSetting(ROTB2_ADDR, ROTB2_FACTORY);
- writeSetting(ROTB3_ADDR, ROTB3_FACTORY);
- writeSetting(ROTB4_ADDR, ROTB4_FACTORY);
- writeSetting(PARAC_ADDR, PARAC_FACTORY);
- writeSetting(ROTC1_ADDR, ROTC1_FACTORY);
- writeSetting(ROTC2_ADDR, ROTC2_FACTORY);
- writeSetting(ROTC3_ADDR, ROTC3_FACTORY);
- writeSetting(ROTC4_ADDR, ROTC4_FACTORY);
- writeSetting(POLYSEL_ADDR, POLYSEL_FACTORY);
- writeSetting(FWCTYPE_ADDR, FWCTYPE_FACTORY);
- writeSetting(HMZKEY_ADDR, HMZKEY_FACTORY);
- }
-
- if(settingsVersion < 37) {
- writeSetting(FWCLCH_ADDR, FWCLCH_FACTORY);
- writeSetting(FWCDP2_ADDR, FWCDP2_FACTORY);
- }
-
-
- if(settingsVersion < 38) {
- writeSetting(HMZLIMIT_ADDR, HMZLIMIT_FACTORY);
- }
-
- if(settingsVersion < 39) {
- writeSetting(BRINTERV_ADDR, BRINTERV_FACTORY);
- writeSetting(OTFKEY_ADDR, OTFKEY_FACTORY);
- }
-
- if(settingsVersion < 40) {
- writeSetting(PORTLIMIT_ADDR, PORTLIMIT_FACTORY);
- writeSetting(LEVER_THR_ADDR, LEVER_THR_FACTORY);
- writeSetting(LEVER_MAX_ADDR, LEVER_MAX_FACTORY);
- }
-
- if(settingsVersion < 41) {
- writeSetting(BRHARMSET_ADDR, BRHARMSET_FACTORY);
- writeSetting(BRHARMSEL_ADDR, BRHARMSEL_FACTORY);
- }
-
- if(settingsVersion < 42) {
- writeSetting(BITECTL_ADDR, BITECTL_FACTORY);
- writeSetting(BITECC_ADDR, BITECC_FACTORY);
- writeSetting(LEVERCTL_ADDR, LEVERCTL_FACTORY);
- writeSetting(LEVERCC_ADDR, LEVERCC_FACTORY);
- }
-
- if(settingsVersion < 43) {
- writeSetting(CVTUNE_ADDR, CVTUNE_FACTORY);
- writeSetting(CVSCALE_ADDR, CVSCALE_FACTORY);
- }
-
- if(settingsVersion < 44) {
- writeSetting(CVRATE_ADDR, CVRATE_FACTORY);
- }
-
- if(settingsVersion < 45) {
- writeSetting(ROLLER_ADDR, ROLLER_FACTORY);
- }
-
- writeSetting(VERSION_ADDR, EEPROM_VERSION);
- }
-
- // read all settings from EEPROM
- breathThrVal = readSettingBounded(BREATH_THR_ADDR, breathLoLimit, breathHiLimit, BREATH_THR_FACTORY);
- breathMaxVal = readSettingBounded(BREATH_MAX_ADDR, breathLoLimit, breathHiLimit, BREATH_MAX_FACTORY);
- portamThrVal = readSettingBounded(PORTAM_THR_ADDR, portamLoLimit, portamHiLimit, PORTAM_THR_FACTORY);
- portamMaxVal = readSettingBounded(PORTAM_MAX_ADDR, portamLoLimit, portamHiLimit, PORTAM_MAX_FACTORY);
- pitchbThrVal = readSettingBounded(PITCHB_THR_ADDR, pitchbLoLimit, pitchbHiLimit, PITCHB_THR_FACTORY);
- pitchbMaxVal = readSettingBounded(PITCHB_MAX_ADDR, pitchbLoLimit, pitchbHiLimit, PITCHB_MAX_FACTORY);
- transpose = readSettingBounded(TRANSP_ADDR, 0, 24, TRANSP_FACTORY);
- MIDIchannel = readSettingBounded(MIDI_ADDR, 1, 16, MIDI_FACTORY);
- breathCC = readSettingBounded(BREATH_CC_ADDR, 0, 10, BREATH_CC_FACTORY);
- breathAT = readSettingBounded(BREATH_AT_ADDR, 0, 1, BREATH_AT_FACTORY);
- velocity = readSettingBounded(VELOCITY_ADDR, 0, 127, VELOCITY_FACTORY);
- portamento = readSettingBounded(PORTAM_ADDR, 0, 5, PORTAM_FACTORY);
- PBdepth = readSettingBounded(PB_ADDR, 0, 12, PB_FACTORY);
- extraCT = readSettingBounded(EXTRA_ADDR, 0, 4, EXTRA_FACTORY);
- vibrato = readSettingBounded(VIBRATO_ADDR, 0, 9, VIBRATO_FACTORY);
- deglitch = readSettingBounded(DEGLITCH_ADDR, 0, 70, DEGLITCH_FACTORY);
- extracThrVal = readSettingBounded(EXTRAC_THR_ADDR, extracLoLimit, extracHiLimit, EXTRAC_THR_FACTORY);
- extracMaxVal = readSettingBounded(EXTRAC_MAX_ADDR, extracLoLimit, extracHiLimit, EXTRAC_MAX_FACTORY);
- patch = readSettingBounded(PATCH_ADDR, 0, 127, PATCH_FACTORY);
- octave = readSettingBounded(OCTAVE_ADDR, 0, 6, OCTAVE_FACTORY);
- ctouchThrVal = readSettingBounded(CTOUCH_THR_ADDR, ctouchLoLimit, ctouchHiLimit, CTOUCH_THR_FACTORY);
- curve = readSettingBounded(BREATHCURVE_ADDR, 0, 12, BREATHCURVE_FACTORY);
- velSmpDl = readSettingBounded(VEL_SMP_DL_ADDR, 0, 30, VEL_SMP_DL_FACTORY);
- velBias = readSettingBounded(VEL_BIAS_ADDR, 0, 9, VEL_BIAS_FACTORY);
- pinkySetting = readSettingBounded(PINKY_KEY_ADDR, 0, 31, PINKY_KEY_FACTORY);
- fastPatch[0] = readSettingBounded(FP1_ADDR, 0, 127, 0);
- fastPatch[1] = readSettingBounded(FP2_ADDR, 0, 127, 0);
- fastPatch[2] = readSettingBounded(FP3_ADDR, 0, 127, 0);
- fastPatch[3] = readSettingBounded(FP4_ADDR, 0, 127, 0);
- fastPatch[4] = readSettingBounded(FP5_ADDR, 0, 127, 0);
- fastPatch[5] = readSettingBounded(FP6_ADDR, 0, 127, 0);
- fastPatch[6] = readSettingBounded(FP7_ADDR, 0, 127, 0);
- dipSwBits = readSetting(DIPSW_BITS_ADDR);
- rotations_a.parallel = readSettingBounded(PARAL_ADDR, 0, 48, PARAL_FACTORY);
- rotations_a.rotations[0] = readSettingBounded(ROTN1_ADDR, 0, 48, ROTN1_FACTORY);
- rotations_a.rotations[1] = readSettingBounded(ROTN2_ADDR, 0, 48, ROTN2_FACTORY);
- rotations_a.rotations[2] = readSettingBounded(ROTN3_ADDR, 0, 48, ROTN3_FACTORY);
- rotations_a.rotations[3] = readSettingBounded(ROTN4_ADDR, 0, 48, ROTN4_FACTORY);
- priority = readSettingBounded(PRIO_ADDR, 0, 1, PRIO_FACTORY);
- vibSens = readSettingBounded(VIB_SENS_ADDR, 1, 12, VIB_SENS_FACTORY);
- vibRetn = readSettingBounded(VIB_RETN_ADDR, 0, 4, VIB_RETN_FACTORY);
- vibSquelch = readSettingBounded(VIB_SQUELCH_ADDR, 1, 30, VIB_SQUELCH_FACTORY);
- vibDirection = readSettingBounded(VIB_DIRECTION_ADDR, 0, 1, VIB_DIRECTION_FACTORY);
- breathCC2 = readSettingBounded(BREATH_CC2_ADDR, 0, 127, BREATH_CC2_FACTORY);
- breathCC2Rise = readSettingBounded(BREATH_CC2_RISE_ADDR, 1, 10, BREATH_CC2_RISE_FACTORY);
- vibSensBite = readSettingBounded(VIB_SENS_BITE_ADDR, 1, 17, VIB_SENS_BITE_FACTORY);
- vibSquelchBite = readSettingBounded(VIB_SQUELCH_BITE_ADDR, 1, 30, VIB_SQUELCH_BITE_FACTORY);
- vibControl = readSettingBounded(VIB_CONTROL_ADDR, 0, 2, VIB_CONTROL_FACTORY);
- dacMode = readSettingBounded(DAC_MODE_ADDR, DAC_MODE_BREATH, DAC_MODE_PITCH, DAC_MODE_FACTORY);
- trill3_interval = readSettingBounded(TRILL3_INTERVAL_ADDR, 3, 4, TRILL3_INTERVAL_FACTORY);
- extraCT2 = readSettingBounded(EXTRA2_ADDR, 0, 127, EXTRA2_FACTORY);
- levelCC = readSettingBounded(LEVEL_CC_ADDR, 0, 127, LEVEL_CC_FACTORY);
- levelVal = readSettingBounded(LEVEL_VAL_ADDR, 0, 127, LEVEL_VAL_FACTORY);
- #if defined(NURAD)
- fingering = readSettingBounded(FINGER_ADDR, 0, 4, FINGER_FACTORY);
- #else
- fingering = readSettingBounded(FINGER_ADDR, 0, 3, FINGER_FACTORY);
- #endif
- lpinky3 = readSettingBounded(LPINKY3_ADDR, 0, 25, LPINKY3_FACTORY);
- batteryType = readSettingBounded(BATTYPE_ADDR, 0, 2, BATTYPE_FACTORY);
- harmSetting = readSettingBounded(HARMSET_ADDR, 0, 6, HARMSET_FACTORY);
- harmSelect = readSettingBounded(HARMSEL_ADDR, 0, 7, HARMSEL_FACTORY);
- polySelect = (PolySelect)readSettingBounded(POLYSEL_ADDR, 0, 10, POLYSEL_FACTORY);
- fwcType = readSettingBounded(FWCTYPE_ADDR, 0, 4, FWCTYPE_FACTORY);
- fwcLockH = readSettingBounded(FWCLCH_ADDR, 0, 1, FWCLCH_FACTORY);
- fwcDrop2 = readSettingBounded(FWCDP2_ADDR, 0, 1, FWCDP2_FACTORY);
- hmzKey = readSettingBounded(HMZKEY_ADDR, 0, 11, HMZKEY_FACTORY);
- hmzLimit = readSettingBounded(HMZLIMIT_ADDR, 2, 5, HMZLIMIT_FACTORY);
- rotations_b.parallel = readSettingBounded(PARAB_ADDR, 0, 48, PARAB_FACTORY);
- rotations_b.rotations[0] = readSettingBounded(ROTB1_ADDR, 0, 48, ROTB1_FACTORY);
- rotations_b.rotations[1] = readSettingBounded(ROTB2_ADDR, 0, 48, ROTB2_FACTORY);
- rotations_b.rotations[2] = readSettingBounded(ROTB3_ADDR, 0, 48, ROTB3_FACTORY);
- rotations_b.rotations[3] = readSettingBounded(ROTB4_ADDR, 0, 48, ROTB4_FACTORY);
- rotations_c.parallel = readSettingBounded(PARAC_ADDR, 0, 48, PARAC_FACTORY);
- rotations_c.rotations[0] = readSettingBounded(ROTC1_ADDR, 0, 48, ROTC1_FACTORY);
- rotations_c.rotations[1] = readSettingBounded(ROTC2_ADDR, 0, 48, ROTC2_FACTORY);
- rotations_c.rotations[2] = readSettingBounded(ROTC3_ADDR, 0, 48, ROTC3_FACTORY);
- rotations_c.rotations[3] = readSettingBounded(ROTC4_ADDR, 0, 48, ROTC4_FACTORY);
- otfKey = readSettingBounded(OTFKEY_ADDR, 0, 1, OTFKEY_FACTORY);
- breathInterval = readSettingBounded(BRINTERV_ADDR, 3, 15, BRINTERV_FACTORY);
- portLimit = readSettingBounded(PORTLIMIT_ADDR, 1, 127, PORTLIMIT_FACTORY);
- leverThrVal = readSettingBounded(LEVER_THR_ADDR, leverLoLimit, leverHiLimit, LEVER_THR_FACTORY);
- leverMaxVal = readSettingBounded(LEVER_MAX_ADDR, leverLoLimit, leverHiLimit, LEVER_MAX_FACTORY);
- brHarmSetting = readSettingBounded(BRHARMSET_ADDR, 0, 6, BRHARMSET_FACTORY);
- brHarmSelect = readSettingBounded(BRHARMSEL_ADDR, 0, 3, BRHARMSEL_FACTORY);
- biteControl = readSettingBounded(BITECTL_ADDR, 0, 3, BITECTL_FACTORY);
- leverControl = readSettingBounded(LEVERCTL_ADDR, 0, 3, LEVERCTL_FACTORY);
- biteCC = readSettingBounded(BITECC_ADDR, 0, 127, BITECC_FACTORY);
- leverCC = readSettingBounded(LEVERCC_ADDR, 0, 127, LEVERCC_FACTORY);
- cvTune = readSettingBounded(CVTUNE_ADDR, 1, 199, CVTUNE_FACTORY);
- cvScale = readSettingBounded(CVSCALE_ADDR, 1, 199, CVSCALE_FACTORY);
- cvVibRate = readSettingBounded(CVRATE_ADDR, 0, 8, CVRATE_FACTORY);
- rollerMode = readSettingBounded(ROLLER_ADDR, 0, 3, ROLLER_FACTORY);
-
- //Flags stored in bit field
- fastBoot = (dipSwBits & (1< max) {
- val = defaultValue;
- writeSetting(address, val);
- }
- return val;
-}
-
-
-
-
-//Functions to send and receive config (and other things) via USB MIDI SysEx messages
-uint32_t crc32(const uint8_t *message, const size_t length) {
- size_t pos=0;
- uint32_t crc=0xFFFFFFFF;
-
- while (pos> 1) ^ (0xEDB88320 & -(crc & 1));
- }
- }
- return ~crc;
-}
-
-
-/*
-
-Send EEPROM config dump as sysex message. Message format is structured like this:
-
-+------------------------------------------------------------------------------------+
-| vendor(3) | "NuEVIc01" (8) | Payload size (2) | EEPROM data (variable) | crc32 (4) |
-+------------------------------------------------------------------------------------+
-
-Payload size is for the EEPROM data chunk (not including anything else before or after
-CRC32 covers the entire buffer up to and including the eeprom data (but not the checksum itself)
-
-This currently operates under the assumption that the whole EEPROM chunk only consists of unsigned 16 bit ints, only using the range 0-16383
-
-*/
-void sendSysexSettings() {
- const char *header = "NuEVIc01"; //NuEVI config dump 01
-
- //Build a send buffer of all the things
- size_t sysex_size = 3 + strlen(header) + 2 + EEPROM_SIZE + 4;
- uint8_t *sysex_data = (uint8_t*)malloc(sysex_size);
-
- //Positions (offsets) of parts in send buffer
- int header_pos = 3;
- int size_pos = header_pos + strlen(header);
- int payload_pos = size_pos + 2;
- int checksum_pos = payload_pos + EEPROM_SIZE;
-
- //SysEX manufacturer ID
- memcpy(sysex_data, sysex_id, 3);
-
- //Header with command code
- memcpy(sysex_data+header_pos, header, strlen(header));
-
- //Payload length
- *(uint16_t*)(sysex_data+size_pos) = convertToMidiValue(EEPROM_SIZE);
-
- //Config data
- uint16_t* config_buffer_start = (uint16_t*)(sysex_data+payload_pos);
-
- //Read one settings item at a time, change data format, and put in send buffer
- for(uint16_t idx=0; idxbreathHiLimit) continue;
- }
-
- if(addr == PORTAM_THR_ADDR || addr == PORTAM_MAX_ADDR) {
- if(valportamHiLimit) continue;
- }
-
- if(addr == PITCHB_THR_ADDR || addr == PITCHB_MAX_ADDR) {
- if(valpitchbHiLimit) continue;
- }
-
- if(addr == EXTRAC_THR_ADDR || addr == EXTRAC_MAX_ADDR) {
- if(valextracHiLimit) continue;
- }
-
- if(addr == CTOUCH_THR_ADDR) {
- if(valctouchHiLimit) continue;
- }
-
- writeSetting(addr, val);
- }
-
- //All went well
- return true;
-}
-
-//Send EEPROM and firmware versions
-void sendSysexVersion() {
- char sysexMessage[] = "vvvNuEVIc04eevvvvvvvv"; //Placeholders for vendor and code
- uint8_t fwStrLen = min(strlen(FIRMWARE_VERSION), 8); //Limit firmware version string to 8 bytes
-
- memcpy(sysexMessage, sysex_id, 3);
- memcpy(sysexMessage+13, FIRMWARE_VERSION, fwStrLen);
-
- *(uint16_t*)(sysexMessage+11) = convertToMidiValue(EEPROM_VERSION);
-
- uint8_t message_length = 13+fwStrLen;
-
- usbMIDI.sendSysEx(message_length, (const uint8_t *)sysexMessage);
-}
-
-extern Adafruit_SSD1306 display;
-
-void configShowMessage(const char* message) {
- display.fillRect(0,32,128,64,BLACK);
- display.setCursor(0,32);
- display.setTextColor(WHITE);
-
- display.print(message);
-
- display.display();
-}
-
-uint8_t* sysex_rcv_buffer = NULL;
-uint16_t sysex_buf_size = 0;
-
-
-void handleSysexChunk(const uint8_t *data, uint16_t length, bool last) {
- uint16_t pos;
-
- if(!sysex_rcv_buffer) {
- //Start out with an empty buffer
- pos = 0;
- sysex_buf_size = length;
- sysex_rcv_buffer = (uint8_t *)malloc(sysex_buf_size);
- } else {
- //Increase size of current buffer
- pos = sysex_buf_size;
- sysex_buf_size += length;
- sysex_rcv_buffer = (uint8_t *)realloc(sysex_rcv_buffer, sysex_buf_size);
- }
-
- //Append this chunk to buffer
- memcpy(sysex_rcv_buffer + pos, data, length);
-
- //If it's the last one, call the regular handler to process it
- if(last) {
- handleSysex(sysex_rcv_buffer, sysex_buf_size);
-
- //Discard the buffer
- free(sysex_rcv_buffer);
- sysex_rcv_buffer = NULL;
- sysex_buf_size = 0;
- }
-}
-
-
-void handleSysex(uint8_t *data, unsigned int length) {
- //Note: Sysex data as received here contains sysex start and end markers (0xF0 and 0xF7)
-
- //Too short to even contain a 3-byte vendor id is not for us.
- if(length<4) return;
-
- //Verify vendor
- if(strncmp((char*)(data+1), sysex_id, 3)) return; //Silently ignore different vendor id
-
- //Verify header. Min length is 3+5+3 bytes (vendor+header+message code)
- if(length<12 || strncmp((char*)(data+4), "NuEVI", 5)) {
- configShowMessage("Invalid message.");
- sendSysexMessage("e00");
- return;
- }
-
- //Get message code
- char messageCode[3];
- strncpy(messageCode, (char*)(data+9), 3);
-
- if(!strncmp(messageCode, "c00", 3)) { //Config dump request
- configShowMessage("Sending config...");
- sendSysexSettings();
- configShowMessage("Config sent.");
- } else if(!strncmp(messageCode, "c03", 3)) { //Version info request
- configShowMessage("Sending version.");
- sendSysexVersion();
- } else if(!strncmp(messageCode, "c02", 3)) { //New config incoming
- configShowMessage("Receiving config...");
-
- //Tell receiveSysexSettings about what's between sysex start and end markers
- if(receiveSysexSettings(data+1, length-2)) configShowMessage("New config saved.");
- } else {
- configShowMessage("Unknown message.");
- sendSysexMessage("e01"); //Unimplemented message code
- }
-}
-
-void configModeSetup() {
- statusLedFlash(500);
-
- display.clearDisplay();
- display.setCursor(0,0);
- display.setTextColor(WHITE);
- display.setTextSize(0);
-
- display.println("Config mgmt");
- display.println("Power off NuEVI");
- display.println("to exit");
- display.display();
-
- usbMIDI.setHandleSystemExclusive(handleSysexChunk);
-
- statusLedFlash(500);
-
- sendSysexVersion(); //Friendly hello
-
- configShowMessage("Ready.");
-}
-
-//"Main loop". Just sits and wait for midi messages and lets the sysex handler do all the work.
-void configModeLoop() {
- usbMIDI.read();
-}
diff --git a/NuEVI/settings.h b/NuEVI/settings.h
deleted file mode 100644
index c79aa99..0000000
--- a/NuEVI/settings.h
+++ /dev/null
@@ -1,226 +0,0 @@
-#ifndef __SETTINGS_H
-#define __SETTINGS_H
-
-#include
-
-// EEPROM addresses for settings
-#define VERSION_ADDR 0
-#define BREATH_THR_ADDR 2
-#define BREATH_MAX_ADDR 4
-#define PORTAM_THR_ADDR 6
-#define PORTAM_MAX_ADDR 8
-#define PITCHB_THR_ADDR 10
-#define PITCHB_MAX_ADDR 12
-#define TRANSP_ADDR 14
-#define MIDI_ADDR 16
-#define BREATH_CC_ADDR 18
-#define BREATH_AT_ADDR 20
-#define VELOCITY_ADDR 22
-#define PORTAM_ADDR 24
-#define PB_ADDR 26
-#define EXTRA_ADDR 28
-#define VIBRATO_ADDR 30
-#define DEGLITCH_ADDR 32
-#define EXTRAC_THR_ADDR 34
-#define EXTRAC_MAX_ADDR 36
-#define PATCH_ADDR 38
-#define OCTAVE_ADDR 40
-#define CTOUCH_THR_ADDR 42
-#define BREATHCURVE_ADDR 44
-#define VEL_SMP_DL_ADDR 46
-#define VEL_BIAS_ADDR 48
-#define PINKY_KEY_ADDR 50
-#define FP1_ADDR 52
-#define FP2_ADDR 54
-#define FP3_ADDR 56
-#define FP4_ADDR 58
-#define FP5_ADDR 60
-#define FP6_ADDR 62
-#define FP7_ADDR 64
-#define DIPSW_BITS_ADDR 66
-#define PARAL_ADDR 68
-#define ROTN1_ADDR 70
-#define ROTN2_ADDR 72
-#define ROTN3_ADDR 74
-#define ROTN4_ADDR 76
-#define PRIO_ADDR 78
-#define VIB_SENS_ADDR 80
-#define VIB_RETN_ADDR 82
-#define VIB_SQUELCH_ADDR 84
-#define VIB_DIRECTION_ADDR 86
-#define BREATH_CC2_ADDR 88
-#define BREATH_CC2_RISE_ADDR 90
-#define VIB_SENS_BITE_ADDR 92
-#define VIB_SQUELCH_BITE_ADDR 94
-#define VIB_CONTROL_ADDR 96
-#define TRILL3_INTERVAL_ADDR 98
-#define DAC_MODE_ADDR 100
-#define EXTRA2_ADDR 102
-#define LEVEL_CC_ADDR 104
-#define LEVEL_VAL_ADDR 106
-#define FINGER_ADDR 108
-#define LPINKY3_ADDR 110
-#define BATTYPE_ADDR 112
-#define HARMSET_ADDR 114
-#define HARMSEL_ADDR 116
-#define PARAB_ADDR 118
-#define ROTB1_ADDR 120
-#define ROTB2_ADDR 122
-#define ROTB3_ADDR 124
-#define ROTB4_ADDR 126
-#define PARAC_ADDR 128
-#define ROTC1_ADDR 130
-#define ROTC2_ADDR 132
-#define ROTC3_ADDR 134
-#define ROTC4_ADDR 136
-#define POLYSEL_ADDR 138
-#define FWCTYPE_ADDR 140
-#define HMZKEY_ADDR 150
-#define FWCLCH_ADDR 152
-#define FWCDP2_ADDR 154
-#define HMZLIMIT_ADDR 156
-#define BRINTERV_ADDR 158
-#define OTFKEY_ADDR 160
-#define PORTLIMIT_ADDR 162
-#define LEVER_THR_ADDR 164
-#define LEVER_MAX_ADDR 166
-#define BRHARMSET_ADDR 168
-#define BRHARMSEL_ADDR 170
-#define BITECTL_ADDR 172
-#define BITECC_ADDR 174
-#define LEVERCTL_ADDR 176
-#define LEVERCC_ADDR 178
-#define CVTUNE_ADDR 180
-#define CVSCALE_ADDR 182
-#define CVRATE_ADDR 184
-#define ROLLER_ADDR 186
-
-#define EEPROM_SIZE 188 //Last address +2
-
-
-//DAC output modes
-#define DAC_MODE_BREATH 0
-#define DAC_MODE_PITCH 1
-
-#define DIPSW_FASTBOOT 0
-#define DIPSW_LEGACY 1
-#define DIPSW_LEGACYBRACT 2
-#define DIPSW_WIDION 3
-#define DIPSW_GATEOPEN 4
-#define DIPSW_SPKEYENABLE 5
-#define DIPSW_BCASMODE 6
-
-
-//"factory" values for settings
-#define EEPROM_VERSION 45
-
-#define BREATH_THR_FACTORY 1400
-#define BREATH_MAX_FACTORY 4000
-#define PORTAM_THR_FACTORY 2600
-#define PORTAM_MAX_FACTORY 3300
-#define PORTPR_THR_FACTORY 1200
-#define PORTPR_MAX_FACTORY 2000
-#define PITCHB_THR_FACTORY 2000
-#define PITCHB_MAX_FACTORY 3000
-#define EXTRAC_THR_FACTORY 2800
-#define EXTRAC_MAX_FACTORY 3500
-#define LEVER_THR_FACTORY 1700
-#define LEVER_MAX_FACTORY 1800
-#define TRANSP_FACTORY 12 // 12 is 0 transpose
-#define MIDI_FACTORY 1 // 1-16
-#define BREATH_CC_FACTORY 2 //thats CC#2, see ccList
-#define BREATH_AT_FACTORY 0 //aftertouch default off
-#define VELOCITY_FACTORY 0 // 0 is dynamic/breath controlled velocity
-#define PORTAM_FACTORY 2 // 0 - OFF, 1 - ON, 2 - SW
-#define PB_FACTORY 1 // 0 - OFF, 1 - 12
-#define EXTRA_FACTORY 1 // 0 - OFF, 1 - Modulation wheel, 2 - Foot pedal, 3 - Filter Cutoff, 4 - Sustain pedal
-#define VIBRATO_FACTORY 4 // 0 - OFF, 1 - 9 depth
-#define DEGLITCH_FACTORY 20 // 0 - OFF, 5 to 70 ms in steps of 5
-#define PATCH_FACTORY 1 // MIDI program change 1-128
-#define OCTAVE_FACTORY 3 // 3 is 0 octave change
-#define CTOUCH_THR_FACTORY 125 // MPR121 touch threshold
-#define BREATHCURVE_FACTORY 4 // 0 to 12 (-4 to +4, S1 to S4)
-#define VEL_SMP_DL_FACTORY 20 // 0 to 30
-#define VEL_BIAS_FACTORY 0 // 0 to 9
-#define PINKY_KEY_FACTORY 12 // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 22 (QuickTranspose +1 to +12)
-#define DIPSW_BITS_FACTORY 0 // virtual dip switch settings for special modes (work in progress)
-#define PARAL_FACTORY 31 // 7 (+ 24) Rotator parallel
-#define ROTN1_FACTORY 19 // -5 (+24) Rotation 1
-#define ROTN2_FACTORY 14 // -10 (+24) Rotation 2
-#define ROTN3_FACTORY 17 // -7 (+24) Rotation 3
-#define ROTN4_FACTORY 10 // -14 (+24) Rotation 4
-#define PRIO_FACTORY 0 // Mono priority 0 - BAS(e note), 1 - ROT(ating note)
-#define VIB_SENS_FACTORY 6 // 1 least sensitive, higher more sensitive
-#define VIB_RETN_FACTORY 2 // 0, no return, 1 slow return, higher faster return
-#define VIB_SQUELCH_FACTORY 12 // 0 to 30, vib signal squelch
-#define VIB_DIRECTION_FACTORY 0
-#define BREATH_CC2_FACTORY 0 //OFF,1-127
-#define BREATH_CC2_RISE_FACTORY 1
-#define VIB_SENS_BITE_FACTORY 8
-#define VIB_SQUELCH_BITE_FACTORY 15
-#define VIB_CONTROL_FACTORY 0
-#define TRILL3_INTERVAL_FACTORY 4
-#define DAC_MODE_FACTORY DAC_MODE_PITCH
-#define EXTRA2_FACTORY 0
-#define LEVEL_CC_FACTORY 11
-#define LEVEL_VAL_FACTORY 127
-#define FINGER_FACTORY 0
-#define LPINKY3_FACTORY 0
-#define BATTYPE_FACTORY 0
-#define HARMSET_FACTORY 0
-#define HARMSEL_FACTORY 0
-#define PARAB_FACTORY 31 // 7 (+ 24) Rotator parallel
-#define ROTB1_FACTORY 19 // -5 (+24) Rotation 1
-#define ROTB2_FACTORY 14 // -10 (+24) Rotation 2
-#define ROTB3_FACTORY 17 // -7 (+24) Rotation 3
-#define ROTB4_FACTORY 10 // -14 (+24) Rotation 4
-#define PARAC_FACTORY 31 // 7 (+ 24) Rotator parallel
-#define ROTC1_FACTORY 19 // -5 (+24) Rotation 1
-#define ROTC2_FACTORY 14 // -10 (+24) Rotation 2
-#define ROTC3_FACTORY 17 // -7 (+24) Rotation 3
-#define ROTC4_FACTORY 10 // -14 (+24) Rotation 4
-#define POLYSEL_FACTORY 0
-#define FWCTYPE_FACTORY 0
-#define HMZKEY_FACTORY 0
-#define FWCLCH_FACTORY 0
-#define FWCDP2_FACTORY 0
-#define HMZLIMIT_FACTORY 5
-#define BRINTERV_FACTORY 6
-#define OTFKEY_FACTORY 0
-#define PORTLIMIT_FACTORY 127
-#define BRHARMSET_FACTORY 0
-#define BRHARMSEL_FACTORY 0
-#define BITECTL_FACTORY 2 // GLD
-#define LEVERCTL_FACTORY 1 // VIB
-#define BITECC_FACTORY 1 //Mod Wheel
-#define LEVERCC_FACTORY 11 //Expression
-#define CVTUNE_FACTORY 100 // 100 is zero tuning
-#define CVSCALE_FACTORY 100 // 100 is zero scaling
-#define CVRATE_FACTORY 3 // 3 is 5.5Hz
-#define ROLLER_FACTORY 1
-
-#define NO_CHECKSUM 0x7F007F00
-
-void readEEPROM(const bool factoryReset);
-void setBit(uint16_t &bitfield, const uint8_t pos, const uint16_t value);
-uint16_t readSetting(const uint16_t address);
-void writeSetting(const uint16_t address, const uint16_t value);
-uint16_t readSettingBounded(const uint16_t address, const uint16_t min, const uint16_t max, const uint16_t defaultValue);
-
-//Functions for config management mode
-void sendSysexSettings();
-void sendSysexMessage(const char* messageCode);
-void sendSysexVersion();
-
-void handleSysex(uint8_t *data, unsigned int length);
-void handleSysexChunk(const uint8_t *data, uint16_t length, bool last);
-
-uint32_t crc32(const uint8_t *message, const size_t length);
-
-void configInitScreen();
-void configShowMessage(const char* message);
-
-void configModeSetup();
-void configModeLoop();
-
-#endif
diff --git a/NuEVI/FilterOnePole.cpp b/NuEVI/src/FilterOnePole.cpp
old mode 100755
new mode 100644
similarity index 96%
rename from NuEVI/FilterOnePole.cpp
rename to NuEVI/src/FilterOnePole.cpp
index 478cd03..6e9f323
--- a/NuEVI/FilterOnePole.cpp
+++ b/NuEVI/src/FilterOnePole.cpp
@@ -1,240 +1,238 @@
-// Copyright 2014 Jonathan Driscoll
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FilterOnePole.h"
-
-#include
-
-FilterOnePole::FilterOnePole( FILTER_TYPE ft, float fc, float initialValue ) {
- setFilter( ft, fc, initialValue );
-}
-
-void FilterOnePole::setFilter( FILTER_TYPE ft, float fc, float initialValue ) {
- FT = ft;
- setFrequency( fc );
-
- Y = initialValue;
- Ylast = initialValue;
- X = initialValue;
-
- LastUS = micros();
-}
-
-float FilterOnePole::input( float inVal ) {
- long time = micros();
- ElapsedUS = float(time - LastUS); // cast to float here, for math
- LastUS = time; // update this now
-
- // shift the data values
- Ylast = Y;
- X = inVal; // this is now the most recent input value
-
- // filter value is controlled by a parameter called X
- // tau is set by the user in microseconds, but must be converted to samples here
- TauSamps = TauUS / ElapsedUS;
-
- float ampFactor;
-#ifdef ARM_FLOAT
- ampFactor = expf( -1.0 / TauSamps ); // this is 1 if called quickly
-#else
- ampFactor = exp( -1.0 / TauSamps ); // this is 1 if called quickly
-#endif
-
- Y = (1.0-ampFactor)*X + ampFactor*Ylast; // set the new value
-
- return output();
-}
-
-void FilterOnePole::setFrequency( float newFrequency ) {
- setTau( 1.0/(TWO_PI*newFrequency ) ); // τ=1/ω
-}
-
-void FilterOnePole::setTau( float newTau ) {
- TauUS = newTau * 1e6;
-}
-
-float FilterOnePole::output() {
- // figure out which button to read
- switch (FT) {
- case LOWPASS:
- // return the last value
- return Y;
- break;
- case INTEGRATOR:
- // using a lowpass, but normaize
- return Y * (TauUS/1.0e6);
- break;
- case HIGHPASS:
- // highpass is the _difference_
- return X-Y;
- break;
- case DIFFERENTIATOR:
- // like a highpass, but normalize
- return (X-Y)/(TauUS/1.0e6);
- break;
- default:
- // should never get to here, return 0 just in case
- return 0;
- }
-}
-
-void FilterOnePole::print() {
- Serial.println("");
- Serial.print(" Y: "); Serial.print( Y );
- Serial.print(" Ylast: "); Serial.print( Ylast );
- Serial.print(" X "); Serial.print( X );
- Serial.print(" ElapsedUS "); Serial.print( ElapsedUS );
- Serial.print(" TauSamps: "); Serial.print( TauSamps );
- //Serial.print(" ampFactor " ); Serial.print( ampFactor );
- Serial.print(" TauUS: "); Serial.print( TauUS );
- Serial.println("");
-}
-
-void FilterOnePole::test() {
- float tau = 10;
- float updateInterval = 1;
- float nextupdateTime = millis()*1e-3;
-
- float inputValue = 0;
- FilterOnePole hp( HIGHPASS, tau, inputValue );
- FilterOnePole lp( LOWPASS, tau, inputValue );
-
- while( true ) {
- float now = millis()*1e-3;
-
- // switch input values on a 20 second cycle
- if( round(now/20.0)-(now/20.0) < 0 )
- inputValue = 0;
- else
- inputValue = 100;
-
- hp.input(inputValue);
- lp.input(inputValue);
-
- if( now > nextupdateTime ) {
- nextupdateTime += updateInterval;
-
- Serial.print("inputValue: "); Serial.print( inputValue );
- Serial.print("\t high-passed: "); Serial.print( hp.output() );
- Serial.print("\t low-passed: "); Serial.print( lp.output() );
- Serial.println();
- }
- }
-}
-
-void FilterOnePole::setToNewValue( float newVal ) {
- Y = Ylast = X = newVal;
-}
-
-
-// stuff for filter2 (lowpass only)
-// should be able to set a separate fall time as well
-FilterOnePoleCascade::FilterOnePoleCascade( float riseTime, float initialValue ) {
- setRiseTime( riseTime );
- setToNewValue( initialValue );
-}
-
-void FilterOnePoleCascade::setRiseTime( float riseTime ) {
- float tauScale = 3.36; // found emperically, by running test();
-
- Pole1.setTau( riseTime / tauScale );
- Pole2.setTau( riseTime / tauScale );
-}
-
-float FilterOnePoleCascade::input( float inVal ) {
- Pole2.input( Pole1.input( inVal ));
- return output();
-}
-
-// clears out the values in the filter
-void FilterOnePoleCascade::setToNewValue( float newVal ) {
- Pole1.setToNewValue( newVal );
- Pole2.setToNewValue( newVal );
-}
-
-float FilterOnePoleCascade::output() {
- return Pole2.output();
-}
-
-void FilterOnePoleCascade::test() {
- // make a filter, how fast does it run:
-
- float rise = 1.0;
- FilterOnePoleCascade myFilter( rise );
-
- // first, test the filter speed ...
- long nLoops = 1000;
-
- Serial.print( "testing filter with a rise time of ");
- Serial.print( rise ); Serial.print( "s" );
-
- Serial.print( "\n running filter speed loop ... ");
-
- float startTime, stopTime;
-
- startTime = millis()*1e-3;
- for( long i=0; i 0.1 && !crossedTenPercent ) {
- // filter first crossed the 10% point
- startTime = millis()*1e-3;
- crossedTenPercent = true;
- }
- }
- stopTime = millis()*1e-3;
-
- Serial.print( "done, rise time: " ); Serial.print( stopTime-startTime );
-
- Serial.print( "testing attenuation at f = 1/risetime" );
-
- myFilter.setToNewValue( 0.0 );
-
- float maxVal = 0;
- float valWasOutputThisCycle = true;
-
- __unused float lastFilterVal = 0;
-
- while( true ) {
- float now = 1e-3*millis();
-
- float currentFilterVal = myFilter.input( sin( TWO_PI*now) );
-
- if( currentFilterVal < 0.0 ) {
- if( !valWasOutputThisCycle ) {
- // just crossed below zero, output the max
- Serial.print( maxVal*100 ); Serial.print( " %\n" );
- valWasOutputThisCycle = true;
- }
-
- }
-
- }
-
-}
+// Copyright 2014 Jonathan Driscoll
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "FilterOnePole.h"
+
+#include
+
+FilterOnePole::FilterOnePole( FILTER_TYPE ft, float fc, float initialValue ) {
+ setFilter( ft, fc, initialValue );
+}
+
+void FilterOnePole::setFilter( FILTER_TYPE ft, float fc, float initialValue ) {
+ FT = ft;
+ setFrequency( fc );
+
+ Y = initialValue;
+ Ylast = initialValue;
+ X = initialValue;
+
+ LastUS = micros();
+}
+
+float FilterOnePole::input( float inVal ) {
+ long time = micros();
+ ElapsedUS = float(time - LastUS); // cast to float here, for math
+ LastUS = time; // update this now
+
+ // shift the data values
+ Ylast = Y;
+ X = inVal; // this is now the most recent input value
+
+ // filter value is controlled by a parameter called X
+ // tau is set by the user in microseconds, but must be converted to samples here
+ TauSamps = TauUS / ElapsedUS;
+
+ float ampFactor;
+#ifdef ARM_FLOAT
+ ampFactor = expf( -1.0 / TauSamps ); // this is 1 if called quickly
+#else
+ ampFactor = exp( -1.0 / TauSamps ); // this is 1 if called quickly
+#endif
+
+ Y = (1.0-ampFactor)*X + ampFactor*Ylast; // set the new value
+
+ return output();
+}
+
+void FilterOnePole::setFrequency( float newFrequency ) {
+ setTau( 1.0/(TWO_PI*newFrequency ) ); // τ=1/ω
+}
+
+void FilterOnePole::setTau( float newTau ) {
+ TauUS = newTau * 1e6;
+}
+
+float FilterOnePole::output() {
+ // figure out which button to read
+ switch (FT) {
+ case LOWPASS:
+ // return the last value
+ return Y;
+ break;
+ case INTEGRATOR:
+ // using a lowpass, but normaize
+ return Y * (TauUS/1.0e6);
+ break;
+ case HIGHPASS:
+ // highpass is the _difference_
+ return X-Y;
+ break;
+ case DIFFERENTIATOR:
+ // like a highpass, but normalize
+ return (X-Y)/(TauUS/1.0e6);
+ break;
+ default:
+ // should never get to here, return 0 just in case
+ return 0;
+ }
+}
+
+void FilterOnePole::print() {
+ Serial.println("");
+ Serial.print(" Y: "); Serial.print( Y );
+ Serial.print(" Ylast: "); Serial.print( Ylast );
+ Serial.print(" X "); Serial.print( X );
+ Serial.print(" ElapsedUS "); Serial.print( ElapsedUS );
+ Serial.print(" TauSamps: "); Serial.print( TauSamps );
+ //Serial.print(" ampFactor " ); Serial.print( ampFactor );
+ Serial.print(" TauUS: "); Serial.print( TauUS );
+ Serial.println("");
+}
+
+void FilterOnePole::test() {
+ float tau = 10;
+ float updateInterval = 1;
+ float nextupdateTime = millis()*1e-3;
+
+ float inputValue = 0;
+ FilterOnePole hp( HIGHPASS, tau, inputValue );
+ FilterOnePole lp( LOWPASS, tau, inputValue );
+
+ while( true ) {
+ float now = millis()*1e-3;
+
+ // switch input values on a 20 second cycle
+ if( round(now/20.0)-(now/20.0) < 0 )
+ inputValue = 0;
+ else
+ inputValue = 100;
+
+ hp.input(inputValue);
+ lp.input(inputValue);
+
+ if( now > nextupdateTime ) {
+ nextupdateTime += updateInterval;
+
+ Serial.print("inputValue: "); Serial.print( inputValue );
+ Serial.print("\t high-passed: "); Serial.print( hp.output() );
+ Serial.print("\t low-passed: "); Serial.print( lp.output() );
+ Serial.println();
+ }
+ }
+}
+
+void FilterOnePole::setToNewValue( float newVal ) {
+ Y = Ylast = X = newVal;
+}
+
+
+// stuff for filter2 (lowpass only)
+// should be able to set a separate fall time as well
+FilterOnePoleCascade::FilterOnePoleCascade( float riseTime, float initialValue ) {
+ setRiseTime( riseTime );
+ setToNewValue( initialValue );
+}
+
+void FilterOnePoleCascade::setRiseTime( float riseTime ) {
+ float tauScale = 3.36; // found emperically, by running test();
+
+ Pole1.setTau( riseTime / tauScale );
+ Pole2.setTau( riseTime / tauScale );
+}
+
+float FilterOnePoleCascade::input( float inVal ) {
+ Pole2.input( Pole1.input( inVal ));
+ return output();
+}
+
+// clears out the values in the filter
+void FilterOnePoleCascade::setToNewValue( float newVal ) {
+ Pole1.setToNewValue( newVal );
+ Pole2.setToNewValue( newVal );
+}
+
+float FilterOnePoleCascade::output() {
+ return Pole2.output();
+}
+
+void FilterOnePoleCascade::test() {
+ // make a filter, how fast does it run:
+
+ float rise = 1.0;
+ FilterOnePoleCascade myFilter( rise );
+
+ // first, test the filter speed ...
+ long nLoops = 1000;
+
+ Serial.print( "testing filter with a rise time of ");
+ Serial.print( rise ); Serial.print( "s" );
+
+ Serial.print( "\n running filter speed loop ... ");
+
+ float startTime, stopTime;
+
+ startTime = millis()*1e-3;
+ for( long i=0; i 0.1 && !crossedTenPercent ) {
+ // filter first crossed the 10% point
+ startTime = millis()*1e-3;
+ crossedTenPercent = true;
+ }
+ }
+ stopTime = millis()*1e-3;
+
+ Serial.print( "done, rise time: " ); Serial.print( stopTime-startTime );
+
+ Serial.print( "testing attenuation at f = 1/risetime" );
+
+ myFilter.setToNewValue( 0.0 );
+
+ float maxVal = 0;
+ float valWasOutputThisCycle = true;
+
+ while( true ) {
+ float now = 1e-3*millis();
+
+ float currentFilterVal = myFilter.input( sin( TWO_PI*now) );
+
+ if( currentFilterVal < 0.0 ) {
+ if( !valWasOutputThisCycle ) {
+ // just crossed below zero, output the max
+ Serial.print( maxVal*100 ); Serial.print( " %\n" );
+ valWasOutputThisCycle = true;
+ }
+
+ }
+
+ }
+
+}
diff --git a/NuEVI/FilterOnePole.h b/NuEVI/src/FilterOnePole.h
old mode 100755
new mode 100644
similarity index 96%
rename from NuEVI/FilterOnePole.h
rename to NuEVI/src/FilterOnePole.h
index cf55b86..017fa82
--- a/NuEVI/FilterOnePole.h
+++ b/NuEVI/src/FilterOnePole.h
@@ -1,89 +1,89 @@
-// Copyright 2014 Jonathan Driscoll
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// FilterOnePole has been copied from https://github.com/JonHub/Filters
-
-
-#ifndef FilterOnePole_h
-#define FilterOnePole_h
-
-enum FILTER_TYPE {
- HIGHPASS,
- LOWPASS,
- INTEGRATOR,
- DIFFERENTIATOR
-};
-
-// the recursive filter class implements a recursive filter (low / pass / highpass
-// note that this must be updated in a loop, using the most recent acquired values and the time acquired
-// Y = a0*X + a1*Xm1
-// + b1*Ylast
-struct FilterOnePole {
- FILTER_TYPE FT;
- float TauUS; // decay constant of the filter, in US
- float TauSamps; // tau, measued in samples (this changes, depending on how long between input()s
-
- // filter values - these are public, but should not be set externally
- float Y; // most recent output value (gets computed on update)
- float Ylast; // prevous output value
-
- float X; // most recent input value
-
- // elapsed times are kept in long, and will wrap every
- // 35 mins, 47 seconds ... however, the wrap does not matter,
- // because the delta will still be correct (always positive and small)
- float ElapsedUS; // time since last update
- long LastUS; // last time measured
-
- FilterOnePole( FILTER_TYPE ft=LOWPASS, float fc=1.0, float initialValue=0 );
-
- // sets or resets the parameters and state of the filter
- void setFilter( FILTER_TYPE ft, float tauS, float initialValue );
-
- void setFrequency( float newFrequency );
-
- void setTau( float newTau );
-
- float input( float inVal );
-
- float output();
-
- void print();
-
- void test();
-
- void setToNewValue( float newVal ); // resets the filter to a new value
-};
-
-// two pole filter, these are very useful
-struct FilterOnePoleCascade {
-
- FilterOnePole Pole1;
- FilterOnePole Pole2;
-
- FilterOnePoleCascade( float riseTime=1.0, float initialValue=0 ); // rise time to step function, 10% to 90%
-
- // rise time is 10% to 90%, for a step input
- void setRiseTime( float riseTime );
-
- void setToNewValue( float newVal );
-
- float input( float inVal );
-
- float output();
-
- void test();
-};
-
-#endif
+// Copyright 2014 Jonathan Driscoll
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// FilterOnePole has been copied from https://github.com/JonHub/Filters
+
+
+#ifndef FilterOnePole_h
+#define FilterOnePole_h
+
+enum FILTER_TYPE {
+ HIGHPASS,
+ LOWPASS,
+ INTEGRATOR,
+ DIFFERENTIATOR
+};
+
+// the recursive filter class implements a recursive filter (low / pass / highpass
+// note that this must be updated in a loop, using the most recent acquired values and the time acquired
+// Y = a0*X + a1*Xm1
+// + b1*Ylast
+struct FilterOnePole {
+ FILTER_TYPE FT;
+ float TauUS; // decay constant of the filter, in US
+ float TauSamps; // tau, measued in samples (this changes, depending on how long between input()s
+
+ // filter values - these are public, but should not be set externally
+ float Y; // most recent output value (gets computed on update)
+ float Ylast; // prevous output value
+
+ float X; // most recent input value
+
+ // elapsed times are kept in long, and will wrap every
+ // 35 mins, 47 seconds ... however, the wrap does not matter,
+ // because the delta will still be correct (always positive and small)
+ float ElapsedUS; // time since last update
+ long LastUS; // last time measured
+
+ FilterOnePole( FILTER_TYPE ft=LOWPASS, float fc=1.0, float initialValue=0 );
+
+ // sets or resets the parameters and state of the filter
+ void setFilter( FILTER_TYPE ft, float tauS, float initialValue );
+
+ void setFrequency( float newFrequency );
+
+ void setTau( float newTau );
+
+ float input( float inVal );
+
+ float output();
+
+ void print();
+
+ void test();
+
+ void setToNewValue( float newVal ); // resets the filter to a new value
+};
+
+// two pole filter, these are very useful
+struct FilterOnePoleCascade {
+
+ FilterOnePole Pole1;
+ FilterOnePole Pole2;
+
+ FilterOnePoleCascade( float riseTime=1.0, float initialValue=0 ); // rise time to step function, 10% to 90%
+
+ // rise time is 10% to 90%, for a step input
+ void setRiseTime( float riseTime );
+
+ void setToNewValue( float newVal );
+
+ float input( float inVal );
+
+ float output();
+
+ void test();
+};
+
+#endif
diff --git a/NuEVI/src/TODO b/NuEVI/src/TODO
new file mode 100644
index 0000000..fc0b1b4
--- /dev/null
+++ b/NuEVI/src/TODO
@@ -0,0 +1,8 @@
+1. LED abstraction code
+2. Encoder code
+3. Menu refactor
+4. Refactor note play behavior into module
+5. Refactor CV behavior into module
+6. 9dof sensor code
+7. Alternate fingerings
+8. Encoder midi
\ No newline at end of file
diff --git a/NuEVI/src/adjustmenu.cpp b/NuEVI/src/adjustmenu.cpp
new file mode 100644
index 0000000..12fa1a8
--- /dev/null
+++ b/NuEVI/src/adjustmenu.cpp
@@ -0,0 +1,175 @@
+#include
+
+#include
+#include
+#include "menu.h"
+#include "globals.h"
+#include "config.h"
+#include "hardware.h"
+#include "settings.h"
+
+//***********************************************************
+
+extern Adafruit_SSD1306 display;
+extern Adafruit_MPR121 touchSensorUtil;
+extern Adafruit_MPR121 touchSensorKeys;
+extern Adafruit_MPRLS pressureSensorMain;
+extern Adafruit_MPRLS pressureSensorAlt;
+extern byte cursorNow;
+
+int16_t ctouchVal = 0;
+
+// Track pixels for faster redrawing
+struct AdjustDrawing {
+ int row;
+ int thrX;
+ int maxX;
+ int valX;
+};
+
+struct AdjustValue {
+ const char *title;
+ const int16_t &value;
+ int16_t &thrVal;
+ int16_t &maxVal;
+ const int16_t limitLow;
+ const int16_t limitHigh;
+
+ // If not null, thr and max are relative to zeroPoint
+ const int16_t *zeroPoint;
+};
+
+template
+class AdjustMenuScreen : public MenuScreen {
+ public:
+ AdjustMenuScreen(const char* title, std::array entries) : _title(title), _entries(entries) { }
+ void update(InputState input, bool redraw) {
+ bool redrawIndicators = false;
+ if (input.changed) {
+ if (input.knobMenu) {
+ _selectedEntry = _selectedEntry + input.knobMenu;
+ redraw = true;
+ }
+
+ AdjustValue value = _entries[_selectedEntry];
+ if (input.knobVal1) {
+ value.thrVal += input.knobVal1;
+ redrawIndicators = true;
+ }
+
+ if (input.knobVal2) {
+ value.maxVal += input.knobVal2;
+ redrawIndicators = true;
+ }
+ } else {
+ draw(redrawIndicators, redraw);
+ }
+ }
+ const char *title() {
+ return _title;
+ }
+ private:
+ void draw(bool redrawIndicators, bool redraw) {
+ for (size_t i = 0; i < N; i++) {
+ if (redraw) {
+ drawAdjustRow(_entries[i], _rowDrawings[i], i == _selectedEntry);
+ } else if (redrawIndicators && i == _selectedEntry) {
+ drawAdjustIndicators(_entries[i], _rowDrawings[i]);
+ } else {
+ drawAdjustValues(_entries[i], _rowDrawings[i]);
+ }
+ }
+ }
+
+ const char* _title;
+ size_t _selectedEntry = 0;
+ std::array _entries;
+ std::array _rowDrawings;
+};
+
+std::array adjustValues = {{
+ {"BREATH", state.breathSignal, calibration.breathThrValOffset, calibration.breathMaxValOffset,
+ BREATH_LO_LIMIT, BREATH_HI_LIMIT, &state.breathZero},
+ {"BR ALT", state.breathAltSignal, calibration.breathAltThrValOffset, calibration.breathAltMaxValOffset,
+ BREATH_LO_LIMIT, BREATH_HI_LIMIT, &state.breathAltZero},
+ {"BITE",state.biteSignal, calibration.biteThrVal, calibration.biteMaxVal, BITE_LO_LIMIT, BITE_HI_LIMIT, NULL},
+ {"PB DOWN",state.pbDnSignal, calibration.pbDnThrVal, calibration.pbDnMaxVal, PITCHB_LO_LIMIT, PITCHB_HI_LIMIT, NULL},
+ {"PB UP", state.pbUpSignal, calibration.pbUpThrVal, calibration.pbUpMaxVal, PITCHB_LO_LIMIT, PITCHB_HI_LIMIT, NULL},
+ {"EXTRA", state.extraSignal, calibration.extraThrVal, calibration.extraMaxVal, EXTRA_LO_LIMIT, EXTRA_HI_LIMIT, NULL},
+ {"LEVER", state.leverSignal, calibration.leverThrVal, calibration.leverMaxVal, LEVER_LO_LIMIT, LEVER_HI_LIMIT, NULL},
+ {"TOUCH", ctouchVal, calibration.ctouchThrVal, calibration.ctouchThrVal, CTOUCH_LO_LIMIT, CTOUCH_HI_LIMIT, NULL},
+}};
+
+const MenuScreen adjustMenu = AdjustMenuScreen<8>("ADJUST", adjustValues);
+
+void autoCalSelected() {
+}
+
+//***********************************************************
+
+
+static void drawIndicator(int x, int row, int color) {
+ display.fillTriangle(x-2, row+1, x+2, row+1, x, row+3, color);
+ display.fillTriangle(x-2, row+10, x+2, row+10, x, row+7, color);
+}
+
+static void drawAdjustIndicators(const AdjustValue &value, AdjustDrawing &drawing) {
+ const int thrX = mapConstrain(value.thrVal, value.limitLow, value.limitHigh, 1, 127);
+ const int maxX = mapConstrain(value.maxVal, value.limitLow, value.limitHigh, 1, 127);
+ if (drawing.maxX != maxX) {
+ drawIndicator(drawing.thrX, drawing.row, BLACK);
+ drawIndicator(thrX, drawing.row, WHITE);
+ drawing.maxX = maxX;
+ }
+
+ if (drawing.thrX != thrX) {
+ drawIndicator(drawing.thrX, drawing.row, BLACK);
+ drawIndicator(thrX, drawing.row, WHITE);
+ drawing.thrX = thrX;
+ }
+}
+
+static void drawAdjustTitle(const AdjustValue &value, AdjustDrawing &drawing, bool highlight) {
+ display.setTextSize(1);
+ if (highlight) {
+ display.setTextColor(BLACK, WHITE);
+ } else {
+ display.setTextColor(WHITE, BLACK);
+ }
+ display.setCursor(0, drawing.row);
+ display.println(value.title);
+}
+
+static void drawAdjustValues(const AdjustValue &value, AdjustDrawing &drawing) {
+ char buffer[13];
+ snprintf(buffer, 13, "%d>%d<%d", value.thrVal, value.value, value.maxVal);
+ display.setTextSize(1);
+ display.setCursor(128 - 6 * strlen(buffer), drawing.row);
+ display.println(buffer);
+
+ const int valX = mapConstrain(value.value, value.limitLow, value.limitHigh, 1, 127);
+ if (drawing.valX != valX) {
+ display.drawFastVLine(drawing.valX, drawing.row+4, 4, BLACK);
+ display.drawFastVLine(valX, drawing.row+4, 4, WHITE);
+ drawing.valX = valX;
+ }
+}
+
+static void drawAdjustFrame(int line) {
+ display.drawLine(25,line,120,line,WHITE); // Top line
+ display.drawLine(25,line+12,120,line+12,WHITE); // Bottom line
+
+ display.drawLine(25,line+1,25,line+2,WHITE);
+ display.drawLine(120,line+1,120,line+2,WHITE);
+
+ display.drawLine(120,line+10,120,line+11,WHITE);
+ display.drawLine(25,line+10,25,line+11,WHITE);
+}
+
+static void drawAdjustRow(const AdjustValue &value, AdjustDrawing &drawing, bool highlight) {
+ display.fillRect(0, drawing.row, 128, 21, BLACK);
+ drawAdjustFrame(drawing.row);
+ drawAdjustTitle(value, drawing, highlight);
+ drawAdjustValues(value, drawing);
+ drawAdjustIndicators(value, drawing);
+}
diff --git a/NuEVI/src/config.h b/NuEVI/src/config.h
new file mode 100644
index 0000000..b952052
--- /dev/null
+++ b/NuEVI/src/config.h
@@ -0,0 +1,57 @@
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+
+// Compile options, comment/uncomment to change
+
+#define FIRMWARE_VERSION "0.0.1" // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
+
+#define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak)
+#define CCN_Port 5 // Controller number for portamento level
+#define CCN_PortOnOff 65// Controller number for portamento on/off
+#define START_NOTE 24 // set startNote to C (change this value in steps of 12 to start in other octaves)
+#define FILTER_FREQ 30.0
+#define CAP_SENS_ABSOLUTE_MAX 1000 // For inverting capacitive sensors
+#define PRESSURE_SENS_MULTIPLIER 10 // Multiply pressure sens so it's not a float
+#define CALIBRATE_SAMPLE_COUNT 4
+
+
+// Statup buttons
+#define STARTUP_FACTORY_RESET 0x3
+#define STARTUP_CONFIG 0xC
+#define TEST_CONFIG 0xA
+#define DEBUG_CONFIG 0x1
+
+// Buttons
+#define BTN_MENU 0x1
+#define BTN_VAL1 0x2
+#define BTN_VAL2 0x4
+#define BTN_PRESET 0x8
+
+// Send breath CC data no more than every CC_BREATH_INTERVAL
+// milliseconds
+#define CC_BREATH_INTERVAL 5
+#define SLOW_MIDI_ADD 7
+#define CC_INTERVAL_PRIMARY 9
+#define CC_INTERVAL_PORT 13
+#define CC_INTERVAL_OTHER 37
+#define LVL_TIMER_INTERVAL 15
+#define CVPORTATUNE 2
+
+#define maxSamplesNum 120
+
+#define BREATH_LO_LIMIT 8000
+#define BREATH_HI_LIMIT 10000
+#define BITE_LO_LIMIT 0
+#define BITE_HI_LIMIT 1000
+#define PITCHB_LO_LIMIT 0
+#define PITCHB_HI_LIMIT 1000
+#define EXTRA_LO_LIMIT 0
+#define EXTRA_HI_LIMIT 1000
+#define CTOUCH_LO_LIMIT 0
+#define CTOUCH_HI_LIMIT 1000
+#define LEVER_LO_LIMIT 0
+#define LEVER_HI_LIMIT 1000
+
+#endif
diff --git a/NuEVI/src/globals.h b/NuEVI/src/globals.h
new file mode 100644
index 0000000..1b7d94f
--- /dev/null
+++ b/NuEVI/src/globals.h
@@ -0,0 +1,139 @@
+#ifndef __GLOBALS_H
+#define __GLOBALS_H
+
+#include "wiring.h"
+#include
+
+
+// The three states of our main state machine
+
+// No note is sounding
+#define NOTE_OFF 1
+
+// We've observed a transition from below to above the
+// threshold value. We wait a while to see how fast the
+// breath velocity is increasing
+#define RISE_WAIT 2
+
+// A note is sounding
+#define NOTE_ON 3
+
+enum PinkyMode : uint8_t {
+ PBD = 12,
+ GLD = 25,
+ MOD = 26,
+ QTN = 27,
+};
+
+enum FingeringMode : uint8_t {
+ EVI = 0,
+ EVR = 1,
+ TPT = 2,
+ HRN = 3,
+};
+
+enum RollerMode : uint8_t {
+ HIGHEST = 1,
+ HIGHEST_EXTEND = 2,
+ HIGHEST_PAIR = 3,
+ HIGHEST_PAIR_EXTEND = 4, // Releasing the roller from the highest/lowest moves
+ PARTIAL = 5,
+ PARTIAL_EXTEND = 6,
+};
+
+enum VibratoMode : uint8_t {
+ VSTART_DOWN = 0,
+ VSTART_UP = 1,
+};
+
+enum BreathMode : uint8_t {
+ BREATH_STD = 0,
+ BREATH_LSB = 1,
+ BREATH_AT = 2,
+ BREATH_LSB_AT = 3,
+};
+
+enum ExtraControl : uint8_t {
+ OFF = 0,
+ VIBRATO = 1,
+ GLIDE = 2,
+ CC = 3,
+};
+
+enum PolySelect : uint8_t {
+ EHarmonizerOff = 0,
+ EDuo = 1,
+ EChord = 2,
+};
+
+enum PortamentoMode : uint8_t {
+ POFF = 0,
+ PON = 1,
+ PSWITCH_ONLY = 2,
+ PGLIDE_ONLY = 3,
+};
+
+struct instrument_state_t {
+ int mainState; // The state of the main state machine
+ uint8_t patch; // 1-128
+ byte activeMIDIchannel = 1; // MIDI channel
+ byte activeNote = 0; // note playing
+ byte activePatch = 0;
+ byte doPatchUpdate = 0;
+ int8_t transpose = 0;
+ uint8_t octave = 0;
+ PolySelect polyMode = PolySelect::EHarmonizerOff;
+
+ // Raw sensor signals
+ int16_t breathSignal = 0; // breath level (smoothed) not mapped to CC value
+ int16_t breathAltSignal = 0;
+ int16_t biteSignal = 0; // capacitance data from bite sensor, for midi cc and threshold checks
+ int16_t leverSignal = 0;
+ int16_t pbUpSignal = 0;
+ int16_t pbDnSignal = 0;
+ int16_t extraSignal = 0;
+ int16_t vibSignal = 0;
+
+ // MIDI values
+ int breathCCVal = 0;
+ byte biteVal = 0; // keep track and make sure we send CC with 0 value when off threshold
+ byte portamentoVal = 0; // keep track and make sure we send CC with 0 value when off threshold
+ byte extraVal = 0; // keep track and make sure we send CC with 0 value when off threshold
+ byte leverVal = 0; // keep track and make sure we send CC with 0 value when off threshold
+ int pitchBend = 8192;
+ int pbSend = 8192; // Pitch bend actually sent, modified by vibrato, etc
+
+ // Key states
+ byte quarterToneTrigger;
+ byte pinkyKey = 0;
+
+ // CV values
+ int cvPitch;
+ int targetPitch;
+
+ // Calibration
+ int16_t breathZero; // this gets auto calibrated in setup
+ int16_t breathThrVal; // this gets auto calibrated in setup
+ int16_t breathMaxVal; // this gets auto calibrated in setup
+ int16_t breathAltZero; // this gets auto calibrated in setup
+ int16_t breathAltThrVal; // this gets auto calibrated in setup
+ int16_t breathAltMaxVal; // this gets auto calibrated in setup
+
+ int16_t vibThr; // this gets auto calibrated in setup
+ int16_t vibThrLo;
+ int16_t vibZero;
+ int16_t vibZeroBite;
+ int16_t vibThrBite;
+ int16_t vibThrBiteLo;
+};
+
+extern instrument_state_t state;
+
+extern const std::array curves;
+extern const unsigned short curveIn[];
+
+extern unsigned int multiMap(unsigned short val, const unsigned short * _in, const unsigned short * _out, uint8_t size);
+
+#define mapConstrain(val, in_lo, in_hi, out_lo, out_hi) map(constrain(val, in_lo, in_hi), in_lo, in_hi, out_lo, out_hi)
+
+#endif
diff --git a/NuEVI/src/hardware.cpp b/NuEVI/src/hardware.cpp
new file mode 100644
index 0000000..b727f52
--- /dev/null
+++ b/NuEVI/src/hardware.cpp
@@ -0,0 +1,131 @@
+#include
+#include "hardware.h"
+
+#define ENCODER_OPTIMIZE_INTERRUPTS
+#include
+#include "menu.h"
+#include "config.h"
+#include "FilterOnePole.h" // for the breath signal low-pass filtering, from https://github.com/JonHub/Filters
+FilterOnePole breathFilter;
+FilterOnePole breathAltFilter;
+
+Adafruit_MPR121 touchSensorKeys = Adafruit_MPR121();
+Adafruit_MPR121 touchSensorUtil = Adafruit_MPR121();
+Adafruit_MPRLS pressureSensorMain = Adafruit_MPRLS();
+Adafruit_MPRLS pressureSensorAlt = Adafruit_MPRLS();
+
+byte drawingMemory[numLeds*3]; // 3 bytes per LED
+DMAMEM byte displayMemory[numLeds*12]; // 12 bytes per LED
+WS2812Serial ledStrip(numLeds, displayMemory, drawingMemory, ledStripPin, WS2812_GRB);
+Adafruit_ICM20948 icmSensor;
+Adafruit_Sensor *accelSensor;
+Encoder knobs[] = {
+ Encoder(e1aPin, e1bPin),
+ Encoder(e2aPin, e2bPin),
+ Encoder(e3aPin, e3bPin),
+ Encoder(e4aPin, e4bPin),
+};
+
+void errorWait();
+
+
+void initHardware() {
+ MainI2CBus.setClock(1000000);
+ AuxI2CBus.setClock(1000000);
+ pinMode(statusLedPin,OUTPUT); // Teensy onboard LED
+
+ // Buttons
+ pinMode(b1Pin,INPUT_PULLUP);
+ pinMode(b2Pin,INPUT_PULLUP);
+ pinMode(b3Pin,INPUT_PULLUP);
+ pinMode(b4Pin,INPUT_PULLUP);
+
+ breathFilter.setFilter(LOWPASS, FILTER_FREQ, 0.0); // create a one pole (RC) lowpass filter
+ breathAltFilter.setFilter(LOWPASS, FILTER_FREQ, 0.0); // create a one pole (RC) lowpass filter
+
+ ledStrip.begin();
+
+ if (!touchSensorKeys.begin(KeysI2CAddr, &MainI2CBus)) {
+ displayError("Keys touch error");
+ errorWait();
+ }
+
+ if (!touchSensorUtil.begin(UtilI2CAddr, &MainI2CBus)) {
+ displayError("Roller/Util touch error");
+ errorWait();
+ }
+
+ if (!pressureSensorMain.begin(MPRLS_DEFAULT_ADDR, &MainI2CBus)) {
+ displayError("Main pressure sensor error");
+ errorWait();
+ }
+
+ if (!pressureSensorAlt.begin(MPRLS_DEFAULT_ADDR, &AuxI2CBus)) {
+ displayError("Alt pressure sensor error");
+ errorWait();
+ }
+
+ if (!icmSensor.begin_I2C(ICM20948_I2CADDR_DEFAULT, &MainI2CBus)) {
+ displayError("ICM sensor error");
+ errorWait();
+ }
+}
+
+/*
+ Return true if the given button bitmask is pressed
+*/
+bool checkButtonState(uint8_t mask) {
+ return buttonState() & mask;
+}
+
+/**
+ * Read the state of the switches (note that they are active low, so we invert the values)
+*/
+uint8_t buttonState() {
+ return 0x0f ^(digitalRead(b1Pin)
+ | (digitalRead(b2Pin) << 1)
+ | (digitalRead(b3Pin) << 2)
+ | (digitalRead(b4Pin) << 3));
+}
+
+
+void errorWait() {
+ while (1) {
+ if (!digitalRead(b1Pin)) {
+ _reboot_Teensyduino_(); // reboot to program mode if b1 pressed
+ }
+
+ if (!digitalRead(b4Pin)) {
+ break; // Continue if b4 pressed
+ }
+
+ delay(10);
+ }
+}
+
+int readKnob(uint8_t n) {
+ return knobs[n].readAndReset();
+}
+
+int readTouchKey(uint8_t n) {
+ return CAP_SENS_ABSOLUTE_MAX - touchSensorKeys.filteredData(n);
+}
+int readTouchUtil(uint8_t n) {
+ return CAP_SENS_ABSOLUTE_MAX - touchSensorUtil.filteredData(n);
+}
+
+uint16_t keysTouched() {
+ return touchSensorKeys.touched();
+}
+
+uint16_t utilTouched() {
+ return touchSensorKeys.touched();
+}
+
+int readPressure() {
+ return breathFilter.input(pressureSensorMain.readPressure()) * PRESSURE_SENS_MULTIPLIER;
+}
+
+int readAltPressure() {
+ return breathAltFilter.input(pressureSensorAlt.readPressure()) * PRESSURE_SENS_MULTIPLIER;
+}
\ No newline at end of file
diff --git a/NuEVI/src/hardware.h b/NuEVI/src/hardware.h
new file mode 100644
index 0000000..56ada0b
--- /dev/null
+++ b/NuEVI/src/hardware.h
@@ -0,0 +1,96 @@
+#ifndef __HARDWARE_H
+#define __HARDWARE_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Hardware sensor definitions
+// TODO: remove these
+
+extern WS2812Serial ledStrip;
+extern Adafruit_Sensor *accelSensor;
+extern Adafruit_ICM20948 icmSensor;
+
+void initHardware();
+bool checkButtonState(uint8_t mask); // return true if the given buttons are pressed
+uint8_t buttonState(); // return true if the given buttons are pressed
+int readKnob(uint8_t n);
+int readTouchKey(uint8_t n);
+int readTouchUtil(uint8_t n);
+uint16_t keysTouched();
+uint16_t utilTouched();
+int readPressure();
+int readAltPressure();
+
+// xEVI hardware setup
+
+// I2C
+#define MainI2CBus Wire1
+#define AuxI2CBus Wire
+#define KeysI2CAddr 0x5B
+#define UtilI2CAddr 0x5A
+
+// Digital pins for encoder buttons
+#define b1Pin 0
+#define b2Pin 2
+#define b3Pin 3
+#define b4Pin 4
+
+// Digital pins for encoder quadrature
+#define e1aPin 5
+#define e2aPin 6
+#define e3aPin 7
+#define e4aPin 8
+
+#define e1bPin 20
+#define e2bPin 21
+#define e3bPin 22
+#define e4bPin 23
+
+// CV pins
+#define cvGatePin 9
+#define cvPitchPin 10
+#define cvBreathPin 11
+#define cvBitePin 12
+
+//Output pins for LEDs
+#define statusLedPin 13
+#define ledStripPin 1
+#define numLeds 8
+
+// Key pins
+// RH keys
+#define K1Pin 0
+#define K2Pin 1
+#define K3Pin 2
+#define K4Pin 3
+#define K5Pin 4
+#define K6Pin 5
+#define K7Pin 6
+#define K8Pin 7
+
+// LH keys
+#define K9Pin 8
+#define K10Pin 9
+#define K11Pin 10
+#define K12Pin 11
+
+// Octave roller pins
+#define R1Pin 0
+#define R2Pin 1
+#define R3Pin 2
+#define R4Pin 3
+#define R5Pin 4
+#define R6Pin 5
+
+// Additional pins
+#define bitePin 6
+#define pbUpPin 7
+#define pbDnPin 8
+#define vibratoPin 9
+
+#endif
diff --git a/NuEVI/src/led.cpp b/NuEVI/src/led.cpp
new file mode 100644
index 0000000..e0daf37
--- /dev/null
+++ b/NuEVI/src/led.cpp
@@ -0,0 +1,49 @@
+#include
+#include "hardware.h"
+#include "globals.h"
+#include "config.h"
+
+void singleLED(int n, int color) {
+}
+
+void ledFullMeter(byte indicatedValue, int color){
+}
+
+void ledHalfMeter(int n, byte indicatedValue, int color){
+}
+
+void ledQuarterMeter(int n, byte indicatedValue, int color){
+}
+
+void statusLedOn() {
+ digitalWrite(statusLedPin, HIGH);
+}
+
+void statusLedOff() {
+ digitalWrite(statusLedPin, LOW);
+}
+
+void statusLed(bool state) {
+ digitalWrite(statusLedPin, state);
+}
+
+void statusLedFlip() {
+ digitalWrite(statusLedPin, !digitalRead(statusLedPin));
+}
+
+void statusLedFlash(uint16_t delayTime) {
+ statusLedOff();
+ delay(delayTime/2);
+ statusLedOn();
+ delay(delayTime/2);
+}
+
+void statusLedBlink() {
+ statusLedFlash(300);
+ statusLedFlash(300);
+}
+
+void updateSensorLEDs() {
+ ledHalfMeter(1, state.breathCCVal, 0x00FF00);
+ ledQuarterMeter(3, state.biteVal, 0x0000FF);
+}
diff --git a/NuEVI/led.h b/NuEVI/src/led.h
old mode 100755
new mode 100644
similarity index 95%
rename from NuEVI/led.h
rename to NuEVI/src/led.h
index a5ccaa8..6e235b2
--- a/NuEVI/led.h
+++ b/NuEVI/src/led.h
@@ -1,13 +1,13 @@
-#ifndef __LED_H
-#define __LED_H
-
-void statusLedOn();
-void statusLedOff();
-void statusLedFlip();
-void statusLed(bool state);
-void statusLedFlash(uint16_t delayTime);
-void statusLedBlink();
-void updateSensorLEDs();
-void ledMeter(byte indicatedValue);
-
-#endif
+#ifndef __LED_H
+#define __LED_H
+
+void statusLedOn();
+void statusLedOff();
+void statusLedFlip();
+void statusLed(bool state);
+void statusLedFlash(uint16_t delayTime);
+void statusLedBlink();
+void updateSensorLEDs();
+void ledMeter(byte indicatedValue);
+
+#endif
diff --git a/NuEVI/src/menu.cpp b/NuEVI/src/menu.cpp
new file mode 100644
index 0000000..deb80f6
--- /dev/null
+++ b/NuEVI/src/menu.cpp
@@ -0,0 +1,755 @@
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "menu.h"
+#include "hardware.h"
+#include "config.h"
+#include "settings.h"
+#include "globals.h"
+#include "midi.h"
+#include "led.h"
+
+// constants
+const unsigned long debounceDelay = 30; // the debounce time; increase if the output flickers
+const unsigned long buttonRepeatInterval = 50;
+const unsigned long buttonRepeatDelay = 400;
+const unsigned long cursorBlinkInterval = 300; // the cursor blink toggle interval time
+const unsigned long patchViewTimeUp = 2000; // ms until patch view shuts off
+const unsigned long menuTimeUp = 60000; // menu shuts off after one minute of button inactivity
+
+static unsigned long menuTime = 0;
+static unsigned long patchViewTime = 0;
+unsigned long cursorBlinkTime = 0; // the last time the cursor was toggled
+
+std::array CC_NAMES = {
+ "Bank Select", // 0
+ "Mod Wheel", // 1
+ "Breath", // 2
+ "Undefined", // 3
+ "Foot Pedal", // 4
+ "Port. Time", // 5
+ "Data Entry", // 6
+ "Volume", // 7
+ "Balance", // 8
+ "Undefined", // 9
+ "Pan", // 10
+ "Expression", // 11
+ "Effect 1", // 12
+ "Effect 2", // 13
+ "Undefined", // 14
+ "Undefined", // 15
+ "GP 1", // 16
+ "GP 2", // 17
+ "GP 3", // 18
+ "GP 3", // 19
+ "Undefined", // 20
+ "Undefined", // 21
+ "Undefined", // 22
+ "Undefined", // 23
+ "Undefined", // 24
+ "Undefined", // 25
+ "Undefined", // 26
+ "Undefined", // 27
+ "Undefined", // 28
+ "Undefined", // 29
+ "Undefined", // 30
+ "Undefined", // 31
+ "LSB 0", // 32
+ "LSB 1", // 33
+ "LSB 2", // 34
+ "LSB 3", // 35
+ "LSB 4", // 36
+ "LSB 5", // 37
+ "LSB 6", // 38
+ "LSB 7", // 39
+ "LSB 8", // 40
+ "LSB 9", // 41
+ "LSB 10", // 42
+ "LSB 11", // 43
+ "LSB 12", // 44
+ "LSB 13", // 45
+ "LSB 14", // 46
+ "LSB 15", // 47
+ "LSB 16", // 48
+ "LSB 17", // 49
+ "LSB 18", // 50
+ "LSB 19", // 51
+ "LSB 20", // 52
+ "LSB 21", // 53
+ "LSB 22", // 54
+ "LSB 23", // 55
+ "LSB 24", // 56
+ "LSB 25", // 57
+ "LSB 26", // 58
+ "LSB 27", // 59
+ "LSB 28", // 60
+ "LSB 29", // 61
+ "LSB 30", // 62
+ "LSB 31", // 63
+ "Sustain", // 64
+ "Portamento", // 65
+ "Sostenuto", // 66
+ "Soft Pedal", // 67
+ "Legato", // 68
+ "Hold 2", // 69
+ "Variation", // 70
+ "Resonance", // 71
+ "Release", // 72
+ "Attack", // 73
+ "Cutoff", // 74
+ "Sound 6", // 75
+ "Sound 7", // 76
+ "Sound 8", // 77
+ "Sound 9", // 78
+ "Sound 10", // 79
+ "Decay", // 80
+ "Hi Pass", // 81
+ "GP Button 3", // 82
+ "GP Button 4", // 83
+ "Port. Amount", // 84
+ "Undefined", // 85
+ "Undefined", // 86
+ "Undefined", // 87
+ "Undefined", // 88
+ "Undefined", // 89
+ "Undefined", // 90
+ "Reverb", // 91
+ "Tremolo", // 92
+ "Chorus", // 93
+ "Detune", // 94
+ "Phaser", // 95
+ "Data Inc", // 96
+ "Data Dec", // 97
+ "NRPN LSB", // 98
+ "NRPN MSB", // 99
+ "RP LSB", // 100
+ "RP MSB", // 101
+ "Undefined", // 102
+ "Undefined", // 103
+ "Undefined", // 104
+ "Undefined", // 105
+ "Undefined", // 106
+ "Undefined", // 107
+ "Undefined", // 108
+ "Undefined", // 109
+ "Undefined", // 110
+ "Undefined", // 111
+ "Undefined", // 112
+ "Undefined", // 113
+ "Undefined", // 114
+ "Undefined", // 115
+ "Undefined", // 116
+ "Undefined", // 117
+ "Undefined", // 118
+ "Undefined", // 119
+ "All Sound Off", // 120
+ "All CCC Off", // 121
+ "Keyboard On", // 122
+ "All Notes Off", // 123
+ "Omni Mode Off", // 124
+ "Omni Mode On", // 125
+ "Mono", // 126
+ "Poly Mode", // 127
+};
+
+ // 'NuEVI' or 'NuRAD' logo
+#define LOGO16_GLCD_WIDTH 128
+#define LOGO16_GLCD_HEIGHT 64
+static const unsigned char PROGMEM nuevi_logo_bmp[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x07, 0x73, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x0e, 0xe3, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x00, 0x1d, 0xc3, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x3b, 0x83, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x00, 0x77, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xee, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x01, 0xdc, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x03, 0xb8, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x60, 0x07, 0x70, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x0e, 0xe0, 0x03, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x1d, 0xc0, 0x03, 0x60, 0x00,
+ 0x00, 0x03, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x60, 0x3b, 0x80, 0x03, 0x60, 0x00,
+ 0x00, 0x03, 0x00, 0xe0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0x77, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x03, 0x00, 0xc0, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x60, 0xee, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x03, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x61, 0xdc, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x07, 0x80, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x63, 0xb8, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x07, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x67, 0x70, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x06, 0xc0, 0xc0, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x6e, 0xe0, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x06, 0x60, 0xc1, 0x01, 0x01, 0xb0, 0x00, 0x00, 0x03, 0x7d, 0xc0, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x06, 0x30, 0xc3, 0x03, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x7b, 0x80, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x0c, 0x30, 0xc3, 0x07, 0x01, 0xbf, 0xff, 0xff, 0xe3, 0x77, 0x00, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x0c, 0x1c, 0xc3, 0x06, 0x01, 0x80, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x0c, 0x0c, 0xc2, 0x0e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x0c, 0x0e, 0xc6, 0x1e, 0x01, 0xff, 0xff, 0xff, 0xe3, 0xf8, 0x00, 0x00, 0x03, 0x60, 0x00,
+ 0x00, 0x0c, 0x07, 0xc6, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x03, 0xc6, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x01, 0xc7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x00, 0xc7, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+
+extern void readSwitches(void);
+#define OLED_RESET 4
+Adafruit_SSD1306 display(128, 64, &Wire1, OLED_RESET,1000000,1000000);
+
+MenuScreen *currentMenu = NULL;
+
+void plotSubOption(const char* label, const char* unit = nullptr) {
+ int text_x, unit_x;
+ int label_pixel_width = strlen(label)*12;
+
+ if(unit == nullptr) {
+ text_x = 96 - (label_pixel_width/2);
+ } else {
+ int unit_pixel_width = strlen(unit)*6;
+ int halfSum = (label_pixel_width + unit_pixel_width)/2;
+ text_x = 96 - halfSum;
+ unit_x = 96 + halfSum - unit_pixel_width;
+ display.setCursor(unit_x,40);
+ display.setTextSize(1);
+ display.println(unit);
+ }
+
+ display.setTextSize(2);
+ display.setCursor(text_x,33);
+ display.println(label);
+}
+
+template
+static void plotMenuEntries(std::array entries, size_t cursorPos) {
+ display.fillRect(0, MENU_HEADER_OFFSET, 63, 64-MENU_HEADER_OFFSET, BLACK);
+ display.setTextSize(1);
+
+ size_t scrollPos = 0;
+ if (entries.size() >= MENU_NUM_ROWS) {
+ if ((cursorPos - scrollPos) > (MENU_NUM_ROWS-2) ) {
+ scrollPos = cursorPos - (MENU_NUM_ROWS-2);
+ } else if( (cursorPos - scrollPos) < 1) {
+ scrollPos = cursorPos - 1;
+ }
+
+ scrollPos = constrain(scrollPos, 0, entries.size() - MENU_NUM_ROWS);
+ }
+
+ int row = 0;
+ int end = constrain(scrollPos + MENU_NUM_ROWS, 0, entries.size());
+ for (size_t i = scrollPos; i < end; i++, row++) {
+ int rowPixel = (row)*MENU_ROW_HEIGHT + MENU_HEADER_OFFSET;
+ display.setCursor(0,rowPixel);
+ if (cursorPos == i) {
+ display.setTextColor(BLACK, WHITE);
+ } else {
+ display.setTextColor(WHITE);
+ }
+
+ display.println(entries[i].title());
+ }
+}
+
+class AboutMenu : public MenuScreen {
+ const char *title() {
+ return "ABOUT";
+ }
+
+ void update(InputState input, bool redraw) {
+ if (redraw) {
+ display.clearDisplay();
+ display.setCursor(49,0);
+ display.setTextColor(WHITE);
+ display.setTextSize(0);
+ display.println("xEVI");
+ display.setCursor(16,12);
+ display.print("firmware v.");
+ display.println(FIRMWARE_VERSION);
+ display.print("eeprom v.");
+ display.println(EEPROM_VERSION);
+ }
+ }
+};
+
+template
+class MainMenu : public MenuScreen {
+ public:
+ MainMenu(std::array entries) : _entries(entries) { }
+ void update(InputState input, bool redraw) {
+ if (input.changed && input.btnMenu) {
+ _inSubMenu = !_inSubMenu;
+ input.changed = false;
+ redraw = true;
+ }
+
+ if (_inSubMenu) {
+ _entries[_cursorPos].update(input, redraw);
+ return;
+ }
+
+ if (input.changed) {
+ _cursorPos = (_cursorPos + input.knobMenu) % _entries.size();
+ }
+
+ draw(redraw);
+ };
+
+ const char *title() {
+ return "MENU";
+ }
+
+ private:
+ void draw(bool redraw) {
+ if (redraw) {
+ display.clearDisplay();
+ display.setTextSize(1);
+ display.setCursor(0,0);
+ display.drawLine(0, MENU_ROW_HEIGHT, 127, MENU_ROW_HEIGHT, WHITE);
+ display.println("MENU");
+ }
+
+ plotMenuEntries(_entries, _cursorPos);
+
+ }
+
+ bool _inSubMenu = false;
+ size_t _cursorPos;
+ std::array _entries;
+};
+
+template
+class SubMenu : public MenuScreen {
+ public:
+ SubMenu(const char *title, std::array entries) : _title(title), _entries(entries) {}
+ void update(InputState input, bool redraw) {
+ bool redrawValue = false;
+ if (input.changed && input.knobMenu != 0) {
+ _cursorPos = (_cursorPos + input.knobMenu) % _entries.size();
+ draw(false);
+ input.changed = false;
+ redrawValue = true;
+ }
+
+ if (redraw) {
+ draw(redraw);
+ }
+
+ _entries[_cursorPos].update(input, redrawValue);
+ };
+
+ const char *title() {
+ return _title;
+ }
+
+ private:
+ void draw(bool redraw) {
+ if (redraw) {
+ display.clearDisplay();
+ display.setTextSize(1);
+ display.setCursor(0,0);
+ display.drawLine(0, MENU_ROW_HEIGHT, 127, MENU_ROW_HEIGHT, WHITE);
+ display.println(_title);
+ }
+
+ plotMenuEntries(_entries, _cursorPos);
+ }
+ const char *_title;
+ size_t _cursorPos;
+ std::array _entries;
+};
+
+template<
+ size_t L,
+ typename T
+>
+class ValueMenu : public MenuScreen {
+ public:
+ ValueMenu(
+ const char * title, T &value,
+ const T min, const T max, const bool wrap = false,
+ const std::array labels = {}
+ ) : _title(title), _value(value), _min(min), _max(max), _wrap(wrap), _labels(labels) {}
+ void update(InputState input, bool redraw) {
+ if (input.knobMenu) {
+ _value = (_value + input.knobMenu);
+ if (_value > _max) {
+ _value = _min;
+ } else if (_value < _min) {
+ _value = _max;
+ }
+
+ draw(redraw);
+ } else if (redraw) {
+ draw(redraw);
+ }
+ }
+ private:
+ T &_value;
+ const T _min;
+ const T _max;
+ const bool _wrap;
+ const std::array _labels;
+ const char *_title;
+
+ void draw(bool redraw) {
+ if (redraw) {
+ display.fillRect(63,11,64,52,BLACK);
+ display.drawRect(63,11,64,52,WHITE);
+ display.setTextSize(1);
+ int len = strlen(this->_title);
+
+ display.setCursor(95-len*3,15);
+ display.println(this->_title);
+ }
+
+ char buffer[12];
+ snprintf(buffer, 12, "%+d", _value);
+ size_t label_idx = _value - _min;
+ if (_labels.size() > 0 && label_idx >= 0 && label_idx <= _labels.size()) {
+ plotSubOption(_labels[label_idx], buffer);
+ } else {
+ plotSubOption(buffer);
+ }
+ }
+};
+
+
+void drawFlash(int x, int y){
+ display.drawLine(x+5,y,x,y+6,WHITE);
+ display.drawLine(x,y+6,x+5,y+6,WHITE);
+ display.drawLine(x,y+12,x+5,y+6,WHITE);
+}
+
+void initDisplay() {
+
+ // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
+ display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64)
+
+ // Show image buffer on the display hardware.
+ // Since the buffer is intialized with an Adafruit splashscreen
+ // internally, this will display the splashscreen.
+
+ display.clearDisplay();
+ #if defined(NURAD)
+ display.drawBitmap(0,0,nurad_logo_bmp,LOGO16_GLCD_WIDTH,LOGO16_GLCD_HEIGHT,1);
+ #else
+ display.drawBitmap(0,0,nuevi_logo_bmp,LOGO16_GLCD_WIDTH,LOGO16_GLCD_HEIGHT,1);
+ #endif
+ display.display();
+}
+
+void displayError(const char *error) {
+ display.clearDisplay();
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(0,0);
+ display.println(error);
+ display.display();
+ Serial.print("ERROR: ");
+ Serial.println(error);
+}
+
+void showVersion() {
+ display.setTextColor(WHITE);
+ display.setTextSize(1);
+ display.setCursor(85,52);
+ display.print("v.");
+ display.println(FIRMWARE_VERSION);
+ display.display();
+}
+
+static void clearSub(){
+ display.fillRect(63,11,64,52,BLACK);
+}
+
+static void clearSubValue() {
+ display.fillRect(65, 24, 60, 37, BLACK);
+}
+
+//***********************************************************
+const MenuScreen breathModeMenu = ValueMenu<4, BreathMode>("BREATH MODE", currentPreset->breathMode, 0, 1, true, {{ "STANDARD", "LSB", "AT", "LSB_AT" }});
+const MenuScreen breathCCMenu = ValueMenu<128, uint8_t>("BREATH CC", currentPreset->breathCC, 0, 127, true, CC_NAMES);
+const MenuScreen velocityMenu = ValueMenu<1, uint8_t>("VELOCITY", currentPreset->fixedVelocity, 0, 127, true, {{ "DYN" }});
+const MenuScreen curveMenu = ValueMenu<0, uint8_t>("CURVE", currentPreset->breathCurve, 0, 12); // TODO: curve display
+const MenuScreen velSmpDlMenu = ValueMenu<1, uint8_t>("VEL DELAY", currentPreset->velSmpDl, 0, 30, true, { "OFF" }); // TODO: unit ms
+const MenuScreen velBiasMenu = ValueMenu<1, uint8_t>("VEL BOOST", currentPreset->velBias, 0, 30, true, { "OFF" });
+const MenuScreen breathIntervalMenu = ValueMenu<0, uint8_t>("BR INTERV", currentPreset->breathInterval, 0, 30, true);
+const MenuScreen trill3Menu = ValueMenu<0, int8_t>("TRILL3", currentPreset->trill3_interval, 3, 4, true, {});
+const MenuScreen cvTuneMenu = ValueMenu<0, int8_t>("CV Tune", currentPreset->cvTune, -100, 100, false, {});
+const MenuScreen cvVibMenu = ValueMenu<0, uint8_t>("CV Vib LFO", currentPreset->cvVibRate, 0, 8, false, {});
+const MenuScreen cvScaleMenu = ValueMenu<0, int8_t>("CV SCALING", currentPreset->cvScale, -100, 100, false, {});
+const std::array transposeLabels = {
+ "C>", "C#>", "D>", "D#>", "E>", "F>", "F#>", "G>", "G#>", "A>", "Bb>", "B>",
+ ">C<", "("TRANSPOSE", state.transpose, -12, 12, true, transposeLabels);
+const MenuScreen octaveMenu = ValueMenu<0, uint8_t>("OCTAVE", state.octave, -3, 3, true, {});
+const MenuScreen midiMenu = ValueMenu<0, byte>("MIDI CH", currentPreset->MIDIchannel, 1, 16, false, {});
+const MenuScreen vibDepthMenu = ValueMenu<1, uint8_t>("DEPTH", currentPreset->vibratoDepth, 0, 9, true, {"OFF"});
+const MenuScreen vibRetnMenu = ValueMenu<1, uint8_t>("RETURN", currentPreset->vibRetn, 0, 4, true, {"OFF"});
+const MenuScreen vibSenseMenu = ValueMenu<0, uint8_t>("SENSE LVR", currentPreset->vibSens, 0, 12);
+const MenuScreen vibSquelchMenu = ValueMenu<0, uint8_t>("SQUELCH LVR", currentPreset->vibSquelch, 0, 12);
+const MenuScreen vibDirMenu = ValueMenu<2, VibratoMode>("DIRECTION", currentPreset->vibratoMode, VSTART_DOWN, VSTART_UP, true, { "START DOWN", "START UP"});
+const MenuScreen biteCtlMenu = ValueMenu<4, ExtraControl>("BITE CTL", currentPreset->biteControl, 0, 3, true, {{
+ "OFF",
+ "VIBRATO",
+ "GLIDE",
+ "CC"
+}});
+const MenuScreen biteCCMenu = ValueMenu<128, uint8_t>("BITE CC", currentPreset->biteCC, 0, 127, true, CC_NAMES);
+const MenuScreen leverCtlMenu = ValueMenu<4, ExtraControl>("LEVER CTL", currentPreset->leverControl, 0, 3, true, {
+ "OFF",
+ "VIBRATO",
+ "GLIDE",
+ "CC"
+});
+const MenuScreen leverCCMenu = ValueMenu<128, uint8_t>("LEVER CC", currentPreset->leverCC, 0, 127, true, CC_NAMES);
+const MenuScreen portMenu = ValueMenu<4, PortamentoMode>("GLIDE MOD", currentPreset->portamentoMode, 0, 3, true, {
+ "OFF",
+ "ON",
+ "SWITCH_ONLY",
+ "GLIDE_ONLY",
+});
+const MenuScreen portLimitMenu = ValueMenu<0, uint8_t>("GLIDE LMT", currentPreset->portamentoLimit, 1, 127, true);
+const MenuScreen pitchBendMenu = ValueMenu<0, uint8_t>("PITCHBEND", currentPreset->PBdepth, 0, 12, true);
+const MenuScreen extraCtlMenu = ValueMenu<4, ExtraControl>("EXCT CC A", currentPreset->extraControl, 0,4, true, {
+ "OFF",
+ "ON",
+ "SWITCH_ONLY",
+ "GLIDE_ONLY",
+});
+const MenuScreen extraCCMenu = ValueMenu<128, uint8_t>("EXCT CC", currentPreset->extraCC, 0,4, true, CC_NAMES);
+const MenuScreen deglitchMenu = ValueMenu<1, uint8_t>("DEGLITCH", currentPreset->deglitch, 0, 70, true, {"OFF"});
+const MenuScreen pinkyMenu = ValueMenu<29, uint8_t>("PINKY KEY", currentPreset->pinkySetting, 0, 29, true, {
+ "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1",
+ "PB/2",
+ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
+ "PBD", "GLD", "MOD", "QTN"
+});
+const MenuScreen fingeringMenu = ValueMenu<4, FingeringMode>("FINGERING", currentPreset->fingering, 0, 3, true, {
+ "EVI",
+ "EVR",
+ "TPT",
+ "HRN",
+});
+const MenuScreen rollerMenu = ValueMenu<6, RollerMode>("ROLLRMODE", currentPreset->rollerMode, 1, 6, true, {
+ "HIGHEST",
+ "HIGHEST_EXTEND",
+ "HIGHEST_PAIR",
+ "HIGHEST_PAIR_EXTEND",
+ "PARTIAL",
+ "PARTIAL_EXTEND",
+});
+
+std::array breathMenuEntries = {
+ breathModeMenu,
+ breathCCMenu,
+ velocityMenu,
+ curveMenu,
+ velSmpDlMenu,
+ velBiasMenu,
+ breathIntervalMenu,
+};
+const MenuScreen breathMenu = SubMenu<7>("BREATH SETUP", breathMenuEntries);
+
+const std::array controlMenuEntries = {
+ fingeringMenu,
+ rollerMenu,
+ biteCtlMenu,
+ biteCCMenu,
+ leverCtlMenu,
+ leverCCMenu,
+ extraCtlMenu,
+ extraCCMenu,
+ portMenu,
+ portLimitMenu,
+ deglitchMenu,
+ pinkyMenu,
+ pitchBendMenu
+};
+const MenuScreen controlMenu = SubMenu<13>("CONTROL SETUP", controlMenuEntries);
+
+const std::array vibratoMenuEntries = {
+ vibDepthMenu,
+ vibRetnMenu,
+ vibDirMenu,
+ vibSenseMenu,
+ vibSquelchMenu,
+};
+const MenuScreen vibratoMenu = SubMenu<5>("VIBRATO", vibratoMenuEntries);
+
+
+const MenuScreen aboutMenu = AboutMenu();
+
+std::array extrasMenuEntries = {
+ trill3Menu,
+ cvTuneMenu,
+ cvScaleMenu,
+ cvVibMenu,
+};
+const MenuScreen extrasMenu = SubMenu<4>("EXTRAS", extrasMenuEntries);
+
+
+// Top-level screens
+const std::array mainMenuEntries = {
+ transposeMenu,
+ octaveMenu,
+ midiMenu,
+ breathMenu,
+ controlMenu,
+ vibratoMenu,
+ adjustMenu,
+ extrasMenu,
+ aboutMenu,
+};
+const MenuScreen mainMenuPage = MainMenu<9>(mainMenuEntries);
+// const MenuScreen patchPage
+// const MenuScreen presetPage
+// const MenuScreen ccPage
+
+static void curveCustomDraw() {
+ const char* curveMenuLabels[] = {"-4", "-3", "-2", "-1", "LIN", "+1", "+2",
+ "+3", "+4", "S1", "S2", "Z1", "Z2" };
+ int y0 = 0, x0 = 0;
+ int scale = ((1<<14)-1)/60;
+ for(int x = x0; x < 60; x+=1) {
+ int y = multiMap(x*scale, curveIn, curves[currentPreset->breathCurve], 17);
+ y = (y*37) / ((1<<14)-1);
+ display.drawLine(x0 + 65, 60 - y0, x + 65, 60 - y, WHITE);
+ x0 = x; y0 = y;
+ }
+ display.setCursor(125 - 3*6, 60-8 );
+ display.setTextSize(0);
+ display.print(curveMenuLabels[currentPreset->breathCurve]);
+}
+
+
+static bool updateSensorPixelsFlag = false;
+void drawSensorPixels() {
+ updateSensorPixelsFlag = true;
+}
+
+//***********************************************************
+
+static InputState readInput(uint32_t timeNow) {
+
+ static uint32_t lastDebounceTime = 0; // the last time the output pin was toggled
+ static uint32_t buttonRepeatTime = 0;
+ static uint32_t buttonPressedTime = 0;
+ static uint8_t lastDeumButtons = 0;
+ static uint8_t deumButtonState = 0;
+ static int lastKnobs[] = {0, 0, 0, 0};
+
+ InputState input;
+
+ uint8_t deumButtons = buttonState();
+ // check to see if you just pressed the button
+ // (i.e. the input went from LOW to HIGH), and you've waited long enough
+ // since the last press to ignore any noise:
+
+ // If the switch changed, due to noise or pressing:
+ if (deumButtons != lastDeumButtons) {
+ // reset the debouncing timer
+ lastDebounceTime = timeNow;
+ }
+
+ if ((timeNow - lastDebounceTime) > debounceDelay) {
+ // whatever the reading is at, it's been there for longer than the debounce
+ // delay, so take it as the actual current state:
+
+ // if the button state has changed:
+ if (deumButtons != deumButtonState) {
+ // keys.current = deumButtons;
+ input.btnMenu = deumButtons & BTN_MENU;
+ input.btnVal1 = deumButtons & BTN_VAL1;
+ input.btnVal2 = deumButtons & BTN_VAL2;
+ input.btnPreset = deumButtons & BTN_PRESET;
+ input.changed = true;
+
+ deumButtonState = deumButtons;
+ menuTime = timeNow;
+ buttonPressedTime = timeNow;
+ }
+ }
+
+ for (int i = 0; i < 4; i++) {
+ int val = readKnob(i);
+ if (val != lastKnobs[i]) {
+ input.changed = 1;
+ switch (i) {
+ case 0:
+ input.knobMenu = val;
+ break;
+ case 1:
+ input.knobVal1 = val;
+ break;
+ case 2:
+ input.knobVal2 = val;
+ break;
+ case 3:
+ input.knobPreset = val;
+ break;
+ }
+ }
+ }
+
+ // save the reading. Next time through the loop, it'll be the lastButtonState:
+ lastDeumButtons = deumButtons;
+
+ return input;
+}
+
+
+
+void handleMenu(bool draw) {
+ unsigned long timeNow = millis();
+
+ InputState input = readInput(timeNow);
+
+ // shut off menu system if not used for a while (changes not stored by exiting a setting manually will not be stored in EEPROM)
+ if (currentMenu && ((timeNow - menuTime) > menuTimeUp)) {
+ display.ssd1306_command(SSD1306_DISPLAYOFF);
+ display.clearDisplay();
+ currentMenu = NULL;
+ }
+
+ if (currentMenu && (draw || input.changed)) {
+ currentMenu->update(input, false);
+ }
+}
\ No newline at end of file
diff --git a/NuEVI/src/menu.h b/NuEVI/src/menu.h
new file mode 100644
index 0000000..3bdc009
--- /dev/null
+++ b/NuEVI/src/menu.h
@@ -0,0 +1,44 @@
+#ifndef __MENU_H
+#define __MENU_H
+
+#include "wiring.h"
+
+#define MENU_ROW_HEIGHT 9
+#define MENU_HEADER_OFFSET 12
+#define MENU_NUM_ROWS 6
+#define ADJUST_NUM_ROWS 3
+#define ADJUST_ROW_HEIGHT 21
+
+extern const unsigned long debounceDelay; // the debounce time; increase if the output flickers
+extern const unsigned long buttonRepeatInterval;
+extern const unsigned long buttonRepeatDelay;
+extern const unsigned long cursorBlinkInterval; // the cursor blink toggle interval time
+extern const unsigned long patchViewTimeUp; // ms until patch view shuts off
+extern const unsigned long menuTimeUp; // menu shuts off after one minute of button inactivity
+
+struct InputState {
+ bool changed = false;
+ bool btnMenu = false;
+ bool btnVal1 = false;
+ bool btnVal2 = false;
+ bool btnPreset = false;
+ int knobMenu = 0;
+ int knobVal1 = 0;
+ int knobVal2 = 0;
+ int knobPreset = 0;
+};
+
+struct MenuScreen {
+ MenuScreen() {};
+ virtual const char *title() { return ""; };
+ virtual void update(InputState input, bool redraw) {};
+ virtual ~MenuScreen() {};
+};
+extern const MenuScreen adjustMenu;
+
+void initDisplay();
+void showVersion();
+void displayError(const char *error);
+void handleMenu(bool draw);
+
+#endif
diff --git a/NuEVI/midi.cpp b/NuEVI/src/midi.cpp
similarity index 93%
rename from NuEVI/midi.cpp
rename to NuEVI/src/midi.cpp
index 40ab1e3..126fbab 100644
--- a/NuEVI/midi.cpp
+++ b/NuEVI/src/midi.cpp
@@ -1,226 +1,232 @@
-#include
-
-#include "midi.h"
-#include "hardware.h"
-#include "globals.h"
-
-int midiChannel;
-
-
-void midiSetChannel(uint8_t channel) {
- midiChannel = constrain(channel, 1, 16);
-}
-
-byte midiGetChannel() {
- return midiChannel;
-}
-
-
-void midiSendProgramChange(uint8_t patch) {
- usbMIDI.sendProgramChange(patch-1, midiChannel);
- dinMIDIsendProgramChange(patch-1, midiChannel-1);
-}
-
-void midiSendControlChange(uint8_t ccParam, uint8_t ccValue) {
- usbMIDI.sendControlChange(ccParam, ccValue, midiChannel);
- dinMIDIsendControlChange(ccParam, ccValue, midiChannel - 1);
-}
-
-void midiSendNoteOn(uint8_t note, uint8_t velocity) {
- usbMIDI.sendNoteOn(note, velocity, midiChannel);
- dinMIDIsendNoteOn(note, velocity, midiChannel - 1);
-}
-
-void midiSendNoteOff(uint8_t note) {
- //Always send velocity 0 on note off to avoid confusing some synthesizers
- usbMIDI.sendNoteOn(note, 0, midiChannel);
- dinMIDIsendNoteOn(note, 0, midiChannel - 1);
-}
-
-
-void midiSendAfterTouch(uint8_t value) {
- usbMIDI.sendAfterTouch(value, midiChannel);
- dinMIDIsendAfterTouch(value, midiChannel - 1);
-}
-
-
-void midiSendPitchBend(uint16_t value) {
- #if (TEENSYDUINO >= 141)
- usbMIDI.sendPitchBend(value-8192, midiChannel); // newer teensyduino "pitchBend-8192" older just "pitchBend"... strange thing to change
- #else
- usbMIDI.sendPitchBend(value, midiChannel);
- #endif
- dinMIDIsendPitchBend(value, midiChannel - 1);
-}
-
-void midiDiscardInput()
-{
- while (usbMIDI.read()) {
- // read & ignore incoming messages
- }
-}
-
-void midiReset() { // reset controllers
- midiSendControlChange(7, 100);
- midiSendControlChange(11, 127);
-}
-
-void midiPanic() { // all notes off
- midiSendControlChange(123, 0);
- for (int i = 0; i < 128; i++){
- midiSendNoteOff(i);
- delay(2);
- }
-}
-
-void midiInitialize(uint8_t channel) {
- MIDI_SERIAL.begin(31250); // start serial with midi baudrate 31250
- MIDI_SERIAL.flush();
- if(widiJumper){
- WIDI_SERIAL.begin(31250); // start serial with midi baudrate 31250
- WIDI_SERIAL.flush();
- }
- midiSetChannel(channel);
-}
-
-
-
-//Serial midi functions
-
-// Send a three byte din midi message
-void midiSend3B(uint8_t midistatus, uint8_t data1, uint8_t data2) {
- MIDI_SERIAL.write(midistatus);
- MIDI_SERIAL.write(data1);
- MIDI_SERIAL.write(data2);
- if (widiJumper && widiOn){
- WIDI_SERIAL.write(midistatus);
- WIDI_SERIAL.write(data1);
- WIDI_SERIAL.write(data2);
- }
-}
-
-//**************************************************************
-
-// Send a two byte din midi message
-void midiSend2B(uint8_t midistatus, uint8_t data) {
- MIDI_SERIAL.write(midistatus);
- MIDI_SERIAL.write(data);
- if (widiJumper && widiOn){
- WIDI_SERIAL.write(midistatus);
- WIDI_SERIAL.write(data);
- }
-}
-
-//**************************************************************
-
-// Send din pitchbend
-void dinMIDIsendPitchBend(uint16_t pb, uint8_t ch) {
- int pitchLSB = pb & 0x007F;
- int pitchMSB = (pb >>7) & 0x007F;
- midiSend3B((0xE0 | ch), pitchLSB, pitchMSB);
-}
-
-//**************************************************************
-
-// Send din control change
-void dinMIDIsendControlChange(uint8_t ccNumber, uint8_t cc, uint8_t ch) {
- midiSend3B((0xB0 | ch), ccNumber, cc);
-}
-
-//**************************************************************
-
-// Send din note on
-void dinMIDIsendNoteOn(uint8_t note, uint8_t vel, uint8_t ch) {
- midiSend3B((0x90 | ch), note, vel);
-}
-
-//**************************************************************
-
-// Send din note off
-void dinMIDIsendNoteOff(uint8_t note, uint8_t vel, uint8_t ch) {
- midiSend3B((0x80 | ch), note, vel);
-}
-
-//**************************************************************
-
-// Send din aftertouch
-void dinMIDIsendAfterTouch(uint8_t value, uint8_t ch) {
- midiSend2B((0xD0 | ch), value);
-}
-
-//**************************************************************
-
-// Send din program change
-void dinMIDIsendProgramChange(uint8_t value, uint8_t ch) {
- midiSend2B((0xC0 | ch), value);
-}
-
-// Send sysex commands to wireless module
-void dinMIDIsendSysex(const uint8_t data[], const uint8_t length) {
- MIDI_SERIAL.write(0xF0); //Sysex command
- for(int i=0; i3) return; //Don't send invalid values
-
- buf[5] = level;
- dinMIDIsendSysex(buf, 6);
-
-}
-
-void sendWLChannel(const uint8_t channel) {
- uint8_t buf[6] = {
- 0x00, 0x21, 0x11, //Manufacturer id
- 0x02, //TX02
- 0x05, //Set channel
- 0x04 //Channel value (4-80)
- };
-
- if(channel<4 || channel>80) return; //Don't send invalid values
-
- buf[5] = channel;
- dinMIDIsendSysex(buf, 6);
-
-}
-
-//Translate between "midi data" (only use 7 LSB per byte, big endian) and "teensy data" (little endian)
-//Only 14 LSB of int value are used (2MSB are discarded), so only works for unsigned data 0-16383
-
-//NOTE: This assumes code is running on a little-endian CPU, both for real device (Teensy) and simulator.
-uint16_t convertToMidiValue(const uint16_t realdata) {
- return (realdata & 0x3F80) >>7 | (realdata & 0x007F) <<8;
-}
-
-uint16_t convertFromMidiValue(const uint16_t mididata) {
- return (mididata & 0x7F00) >> 8 | (mididata & 0x007F) <<7 ;
-}
-
-//Read from a memory location, such as MIDI receive buffer
-uint16_t convertFromMidiValue(const uint8_t* mididata) {
- uint8_t msb = *mididata;
- uint8_t lsb = *(mididata+1);
-
- return (msb & 0x007F) <<7 | (lsb & 0x007F);
-}
-
-//This is a bit different. MSB of each byte is just discarded (instead of discarding MSB for whole value). Just used for CRC (easier to compare)
-uint32_t convertToMidiCRC(const uint32_t realdata) {
- uint8_t* p = (uint8_t*)&realdata;
-
- uint32_t r=0;
- for(int i=0; i<4; ++i) {
- r = r<<8 | (p[i] & 0x7F);
- }
- return r;
-}
+#include
+
+#include "midi.h"
+#include "hardware.h"
+#include "globals.h"
+
+int midiChannel;
+
+
+void midiSetChannel(uint8_t channel) {
+ midiChannel = constrain(channel, 1, 16);
+}
+
+byte midiGetChannel() {
+ return midiChannel;
+}
+
+
+void midiSendProgramChange(uint8_t patch) {
+ usbMIDI.sendProgramChange(patch-1, midiChannel);
+ dinMIDIsendProgramChange(patch-1, midiChannel-1);
+}
+
+void midiSendControlChange(uint8_t ccParam, uint8_t ccValue) {
+ usbMIDI.sendControlChange(ccParam, ccValue, midiChannel);
+ dinMIDIsendControlChange(ccParam, ccValue, midiChannel - 1);
+}
+
+void midiSendNoteOn(uint8_t note, uint8_t velocity) {
+ usbMIDI.sendNoteOn(note, velocity, midiChannel);
+ dinMIDIsendNoteOn(note, velocity, midiChannel - 1);
+}
+
+void midiSendNoteOff(uint8_t note) {
+ //Always send velocity 0 on note off to avoid confusing some synthesizers
+ usbMIDI.sendNoteOn(note, 0, midiChannel);
+ dinMIDIsendNoteOn(note, 0, midiChannel - 1);
+}
+
+
+void midiSendAfterTouch(uint8_t value) {
+ usbMIDI.sendAfterTouch(value, midiChannel);
+ dinMIDIsendAfterTouch(value, midiChannel - 1);
+}
+
+
+void midiSendPitchBend(uint16_t value) {
+ #if (TEENSYDUINO >= 141)
+ usbMIDI.sendPitchBend(value-8192, midiChannel); // newer teensyduino "pitchBend-8192" older just "pitchBend"... strange thing to change
+ #else
+ usbMIDI.sendPitchBend(value, midiChannel);
+ #endif
+ dinMIDIsendPitchBend(value, midiChannel - 1);
+}
+
+void midiDiscardInput()
+{
+ while (usbMIDI.read()) {
+ // read & ignore incoming messages
+ }
+}
+
+void midiReset() { // reset controllers
+ midiSendControlChange(7, 100);
+ midiSendControlChange(11, 127);
+}
+
+void midiPanic() { // all notes off
+ midiSendControlChange(123, 0);
+ for (int i = 0; i < 128; i++){
+ midiSendNoteOff(i);
+ delay(2);
+ }
+}
+
+void midiInitialize(uint8_t channel) {
+ /*
+ MIDI_SERIAL.begin(31250); // start serial with midi baudrate 31250
+ MIDI_SERIAL.flush();
+ if(widiJumper){
+ WIDI_SERIAL.begin(31250); // start serial with midi baudrate 31250
+ WIDI_SERIAL.flush();
+ }
+ */
+ midiSetChannel(channel);
+}
+
+
+
+//Serial midi functions
+
+// Send a three byte din midi message
+void midiSend3B(uint8_t midistatus, uint8_t data1, uint8_t data2) {
+ /*
+ MIDI_SERIAL.write(midistatus);
+ MIDI_SERIAL.write(data1);
+ MIDI_SERIAL.write(data2);
+ if (widiJumper && widiOn){
+ WIDI_SERIAL.write(midistatus);
+ WIDI_SERIAL.write(data1);
+ WIDI_SERIAL.write(data2);
+ }
+ */
+}
+
+//**************************************************************
+
+// Send a two byte din midi message
+void midiSend2B(uint8_t midistatus, uint8_t data) {
+ /*
+ MIDI_SERIAL.write(midistatus);
+ MIDI_SERIAL.write(data);
+ if (widiJumper && widiOn){
+ WIDI_SERIAL.write(midistatus);
+ WIDI_SERIAL.write(data);
+ }
+ */
+}
+
+//**************************************************************
+
+// Send din pitchbend
+void dinMIDIsendPitchBend(uint16_t pb, uint8_t ch) {
+ int pitchLSB = pb & 0x007F;
+ int pitchMSB = (pb >>7) & 0x007F;
+ midiSend3B((0xE0 | ch), pitchLSB, pitchMSB);
+}
+
+//**************************************************************
+
+// Send din control change
+void dinMIDIsendControlChange(uint8_t ccNumber, uint8_t cc, uint8_t ch) {
+ midiSend3B((0xB0 | ch), ccNumber, cc);
+}
+
+//**************************************************************
+
+// Send din note on
+void dinMIDIsendNoteOn(uint8_t note, uint8_t vel, uint8_t ch) {
+ midiSend3B((0x90 | ch), note, vel);
+}
+
+//**************************************************************
+
+// Send din note off
+void dinMIDIsendNoteOff(uint8_t note, uint8_t vel, uint8_t ch) {
+ midiSend3B((0x80 | ch), note, vel);
+}
+
+//**************************************************************
+
+// Send din aftertouch
+void dinMIDIsendAfterTouch(uint8_t value, uint8_t ch) {
+ midiSend2B((0xD0 | ch), value);
+}
+
+//**************************************************************
+
+// Send din program change
+void dinMIDIsendProgramChange(uint8_t value, uint8_t ch) {
+ midiSend2B((0xC0 | ch), value);
+}
+
+// Send sysex commands to wireless module
+void dinMIDIsendSysex(const uint8_t data[], const uint8_t length) {
+ //MIDI_SERIAL.write(0xF0); //Sysex command
+ for(int i=0; i3) return; //Don't send invalid values
+
+ buf[5] = level;
+ dinMIDIsendSysex(buf, 6);
+
+}
+
+void sendWLChannel(const uint8_t channel) {
+ uint8_t buf[6] = {
+ 0x00, 0x21, 0x11, //Manufacturer id
+ 0x02, //TX02
+ 0x05, //Set channel
+ 0x04 //Channel value (4-80)
+ };
+
+ if(channel<4 || channel>80) return; //Don't send invalid values
+
+ buf[5] = channel;
+ dinMIDIsendSysex(buf, 6);
+
+}
+
+//Translate between "midi data" (only use 7 LSB per byte, big endian) and "teensy data" (little endian)
+//Only 14 LSB of int value are used (2MSB are discarded), so only works for unsigned data 0-16383
+
+//NOTE: This assumes code is running on a little-endian CPU, both for real device (Teensy) and simulator.
+uint16_t convertToMidiValue(const uint16_t realdata) {
+ return (realdata & 0x3F80) >>7 | (realdata & 0x007F) <<8;
+}
+
+uint16_t convertFromMidiValue(const uint16_t mididata) {
+ return (mididata & 0x7F00) >> 8 | (mididata & 0x007F) <<7 ;
+}
+
+//Read from a memory location, such as MIDI receive buffer
+uint16_t convertFromMidiValue(const uint8_t* mididata) {
+ uint8_t msb = *mididata;
+ uint8_t lsb = *(mididata+1);
+
+ return (msb & 0x007F) <<7 | (lsb & 0x007F);
+}
+
+//This is a bit different. MSB of each byte is just discarded (instead of discarding MSB for whole value). Just used for CRC (easier to compare)
+uint32_t convertToMidiCRC(const uint32_t realdata) {
+ uint8_t* p = (uint8_t*)&realdata;
+
+ uint32_t r=0;
+ for(int i=0; i<4; ++i) {
+ r = r<<8 | (p[i] & 0x7F);
+ }
+ return r;
+}
diff --git a/NuEVI/midi.h b/NuEVI/src/midi.h
old mode 100755
new mode 100644
similarity index 97%
rename from NuEVI/midi.h
rename to NuEVI/src/midi.h
index 36edd83..0b8ba95
--- a/NuEVI/midi.h
+++ b/NuEVI/src/midi.h
@@ -1,46 +1,46 @@
-#ifndef __MIDI_H
-#define __MIDI_H
-
-//This is a completely made up "European" SysEx manufacturer ID.
-static const char sysex_id[] = { 0x00, 0x3e, 0x7f };
-
-//Enable use of USB and serial MIDI
-#define USE_MIDI_USB
-#define USE_MIDI_SERIAL
-
-//Set / get current midi channel
-void midiSetChannel(uint8_t channel);
-uint8_t midiGetChannel();
-
-void midiSendProgramChange(uint8_t patch);
-void midiSendControlChange(uint8_t ccParam, uint8_t ccValue);
-void midiSendNoteOn(uint8_t note, uint8_t velocity);
-void midiSendNoteOff(uint8_t note);
-void midiSendAfterTouch(uint8_t value);
-void midiSendPitchBend(uint16_t value);
-
-void midiDiscardInput(void);
-void midiReset(); // reset controllers
-void midiPanic(); // turn all notes off
-
-void midiInitialize(uint8_t channel=1);
-
-void dinMIDIsendControlChange(uint8_t ccNumber, uint8_t cc, uint8_t ch);
-void dinMIDIsendNoteOn(uint8_t note, uint8_t vel, uint8_t ch);
-void dinMIDIsendNoteOff(uint8_t note, uint8_t vel, uint8_t ch);
-void dinMIDIsendAfterTouch(uint8_t value, uint8_t ch);
-void dinMIDIsendProgramChange(uint8_t value, uint8_t ch);
-void dinMIDIsendPitchBend(uint16_t pb, uint8_t ch);
-void dinMIDIsendSysex(const uint8_t data[], const uint8_t length);
-
-void sendWLPower(const uint8_t level);
-void sendWLChannel(const uint8_t channel);
-
-
-//Convert things between "regular data" and MIDI data (byte order and 7-bits-per-byte)
-uint16_t convertToMidiValue(const uint16_t realdata);
-uint16_t convertFromMidiValue(const uint16_t mididata);
-uint16_t convertFromMidiValue(const uint8_t* mididata);
-uint32_t convertToMidiCRC(const uint32_t realdata);
-
-#endif
+#ifndef __MIDI_H
+#define __MIDI_H
+
+//This is a completely made up "European" SysEx manufacturer ID.
+static const char sysex_id[] = { 0x00, 0x3e, 0x7f };
+
+//Enable use of USB and serial MIDI
+#define USE_MIDI_USB
+#define USE_MIDI_SERIAL
+
+//Set / get current midi channel
+void midiSetChannel(uint8_t channel);
+uint8_t midiGetChannel();
+
+void midiSendProgramChange(uint8_t patch);
+void midiSendControlChange(uint8_t ccParam, uint8_t ccValue);
+void midiSendNoteOn(uint8_t note, uint8_t velocity);
+void midiSendNoteOff(uint8_t note);
+void midiSendAfterTouch(uint8_t value);
+void midiSendPitchBend(uint16_t value);
+
+void midiDiscardInput(void);
+void midiReset(); // reset controllers
+void midiPanic(); // turn all notes off
+
+void midiInitialize(uint8_t channel=1);
+
+void dinMIDIsendControlChange(uint8_t ccNumber, uint8_t cc, uint8_t ch);
+void dinMIDIsendNoteOn(uint8_t note, uint8_t vel, uint8_t ch);
+void dinMIDIsendNoteOff(uint8_t note, uint8_t vel, uint8_t ch);
+void dinMIDIsendAfterTouch(uint8_t value, uint8_t ch);
+void dinMIDIsendProgramChange(uint8_t value, uint8_t ch);
+void dinMIDIsendPitchBend(uint16_t pb, uint8_t ch);
+void dinMIDIsendSysex(const uint8_t data[], const uint8_t length);
+
+void sendWLPower(const uint8_t level);
+void sendWLChannel(const uint8_t channel);
+
+
+//Convert things between "regular data" and MIDI data (byte order and 7-bits-per-byte)
+uint16_t convertToMidiValue(const uint16_t realdata);
+uint16_t convertFromMidiValue(const uint16_t mididata);
+uint16_t convertFromMidiValue(const uint8_t* mididata);
+uint32_t convertToMidiCRC(const uint32_t realdata);
+
+#endif
diff --git a/NuEVI/name.c b/NuEVI/src/name.c
old mode 100755
new mode 100644
similarity index 56%
rename from NuEVI/name.c
rename to NuEVI/src/name.c
index a90b580..d33344a
--- a/NuEVI/name.c
+++ b/NuEVI/src/name.c
@@ -1,22 +1,16 @@
-// To give your project a unique name, this code must be
-// placed into a .c file (its own tab). It can not be in
-// a .cpp file or your main sketch (the .ino file).
-
-#include "usb_names.h"
-
-// Edit these lines to create your own name. The length must
-// match the number of characters in your custom name.
-#if defined(NURAD)
-#define MIDI_NAME {'N','u','R','A','D',' ','M','I','D','I'}
-#else
-#define MIDI_NAME {'N','u','E','V','I',' ','M','I','D','I'}
-#endif
-#define MIDI_NAME_LEN 10
-
-// Do not change this part. This exact format is required by USB.
-
-struct usb_string_descriptor_struct usb_string_product_name = {
- 2 + MIDI_NAME_LEN * 2,
- 3,
- MIDI_NAME
-};
+// To give your project a unique name, this code must be
+// placed into a .c file (its own tab). It can not be in
+// a .cpp file or your main sketch (the .ino file).
+
+#include "usb_names.h"
+
+#define MIDI_NAME {'x','E','V','I',' ','M','I','D','I'}
+#define MIDI_NAME_LEN 9
+
+// Do not change this part. This exact format is required by USB.
+
+struct usb_string_descriptor_struct usb_string_product_name = {
+ 2 + MIDI_NAME_LEN * 2,
+ 3,
+ MIDI_NAME
+};
diff --git a/NuEVI/src/settings.cpp b/NuEVI/src/settings.cpp
new file mode 100644
index 0000000..bc2f3eb
--- /dev/null
+++ b/NuEVI/src/settings.cpp
@@ -0,0 +1,342 @@
+#include
+#include
+#include
+
+
+#include "settings.h"
+#include "globals.h"
+#include "menu.h"
+#include "hardware.h"
+#include "config.h"
+#include "midi.h"
+#include "led.h"
+
+//Read and write EEPROM data
+void writeInt(const uint16_t address, const uint16_t value) {
+ union {
+ uint8_t v[2];
+ uint16_t val;
+ } data;
+ data.val = value;
+ EEPROM.update(address, data.v[0]);
+ EEPROM.update(address+1, data.v[1]);
+}
+
+uint16_t readInt(uint16_t address) {
+ union {
+ uint8_t v[2];
+ uint16_t val;
+ } data;
+ data.v[0] = EEPROM.read(address);
+ data.v[1] = EEPROM.read(address+1);
+ return data.val;
+}
+
+void writeCalibration() {
+ EEPROM.put(SETTINGS_OFFSET, calibration);
+}
+
+void readCalibration() {
+ EEPROM.get(SETTINGS_OFFSET, calibration);
+}
+
+void writePreset(uint8_t preset) {
+ EEPROM.put(SETTINGS_OFFSET + preset * sizeof(preset_t), presets[preset]);
+}
+
+void writePresets() {
+ EEPROM.put(SETTINGS_OFFSET + CALIBRATION_MAX_SIZE, presets);
+}
+
+void readPresets() {
+ EEPROM.get(SETTINGS_OFFSET + CALIBRATION_MAX_SIZE, presets);
+}
+
+//Functions to send and receive config (and other things) via USB MIDI SysEx messages
+uint32_t crc32(const uint8_t *message, const size_t length) {
+ size_t pos=0;
+ uint32_t crc=0xFFFFFFFF;
+
+ while (pos> 1) ^ (0xEDB88320 & -(crc & 1));
+ }
+ }
+ return ~crc;
+}
+
+
+/*
+
+Send EEPROM config dump as sysex message. Message format is structured like this:
+
++------------------------------------------------------------------------------------+
+| vendor(3) | "NuEVIc01" (8) | Payload size (2) | EEPROM data (variable) | crc32 (4) |
++------------------------------------------------------------------------------------+
+
+Payload size is for the EEPROM data chunk (not including anything else before or after
+CRC32 covers the entire buffer up to and including the eeprom data (but not the checksum itself)
+
+This currently operates under the assumption that the whole EEPROM chunk only consists of unsigned 16 bit ints, only using the range 0-16383
+
+*/
+void sendSysexSettings() {
+ const char *header = "NuEVIc01"; //NuEVI config dump 01
+
+ //Build a send buffer of all the things
+ size_t sysex_size = 3 + strlen(header) + 2 + EEPROM_SIZE + 4;
+ uint8_t *sysex_data = (uint8_t*)malloc(sysex_size);
+
+ //Positions (offsets) of parts in send buffer
+ int header_pos = 3;
+ int size_pos = header_pos + strlen(header);
+ int payload_pos = size_pos + 2;
+ int checksum_pos = payload_pos + EEPROM_SIZE;
+
+ //SysEX manufacturer ID
+ memcpy(sysex_data, sysex_id, 3);
+
+ //Header with command code
+ memcpy(sysex_data+header_pos, header, strlen(header));
+
+ //Payload length
+ *(uint16_t*)(sysex_data+size_pos) = convertToMidiValue(EEPROM_SIZE);
+
+ //Config data
+ uint16_t* config_buffer_start = (uint16_t*)(sysex_data+payload_pos);
+
+ //Read one settings item at a time, change data format, and put in send buffer
+ readPresets();
+ uint16_t *preset_buffer = (uint16_t*)presets;
+ for(uint16_t idx=0; idx
+#include "globals.h"
+
+
+#define EEPROM_VERSION 1
+#define EEPROM_VERSION_ADDR 0
+#define SETTINGS_OFFSET 2
+#define PRESET_MAX_SIZE 128 // Leave extra space for future settings
+#define PRESET_COUNT 8
+#define CALIBRATION_MAX_SIZE 54 // Leave extra space for future settings
+#define EEPROM_SIZE 1080 // Cannot exceed this amount of EEPROM space
+
+static_assert(SETTINGS_OFFSET + PRESET_MAX_SIZE * PRESET_COUNT + CALIBRATION_MAX_SIZE <= EEPROM_SIZE,
+ "Not enough EEPROM");
+
+/**
+ * Sensor calibration is global across presets
+*/
+struct calibration_t {
+ int16_t breathThrValOffset = 5;
+ int16_t breathMaxValOffset = 1500;
+ int16_t breathAltThrValOffset = 5;
+ int16_t breathAltMaxValOffset = 1500;
+ int16_t biteThrVal = 50;
+ int16_t biteMaxVal = 150;
+ int16_t pbDnThrVal = 50;
+ int16_t pbDnMaxVal = 150;
+ int16_t pbUpThrVal = 50;
+ int16_t pbUpMaxVal = 150;
+ int16_t leverThrVal = 50;
+ int16_t leverMaxVal = 150;
+ int16_t extraThrVal = 50;
+ int16_t extraMaxVal = 150;
+ int16_t ctouchThrVal = 80;
+ uint8_t _reserved[24];
+};
+
+static_assert(sizeof(calibration_t) == CALIBRATION_MAX_SIZE, "calibration data wrong size");
+
+/**
+ * Per-preset config
+*/
+struct preset_t {
+ uint8_t MIDIchannel = 1; // Midi channel to send on
+ uint8_t breathCC = 2; // breath CC selection
+ uint8_t altBreathCC = 70; // breath CC selection
+ uint8_t extraCC = 1; // extra CC selection
+ uint8_t leverCC = 7; // "lever" CC selection
+ uint8_t biteCC = 11; // bite CC selection
+ uint8_t fixedVelocity = 0; // Zero = not fixed
+ uint8_t portamentoLimit = 127; // 1-127 - max portamento level
+ uint8_t PBdepth = 1; // OFF:1-12 divider
+ uint8_t deglitch = 20; // debounes time for key/roller inputs
+ uint8_t breathCurve = 4; // breath curve selection
+ uint8_t velSmpDl = 20; // velocity sample delay
+ uint8_t velBias = 0; // velocity bias
+ uint8_t pinkySetting = 12; // 0 - 11 (QuickTranspose -12 to -1), 12 (pb/2), 13 - 24 (QuickTranspose +1 to +12), 25 (EC2), 26 (ECSW), 27 (LVL), 28 (LVLP)
+ uint8_t breathInterval; // 3-15
+ int8_t trill3_interval = 4;
+ uint8_t vibSquelch = 12; // vibrato signal squelch
+ uint8_t cvVibRate = 0; // OFF, 1 - 8 CV extra controller LFO vibrato rate 4.5Hz to 8Hz
+ int8_t cvTune = 0;
+ int8_t cvScale = 0;
+
+ PortamentoMode portamentoMode;
+ BreathMode breathMode = BreathMode::BREATH_LSB_AT;
+ FingeringMode fingering = FingeringMode::EVI;
+ RollerMode rollerMode = RollerMode::HIGHEST;
+ ExtraControl biteControl = ExtraControl::GLIDE;
+ ExtraControl leverControl = ExtraControl::VIBRATO;
+ ExtraControl extraControl = ExtraControl::CC;
+
+ VibratoMode vibratoMode = VSTART_DOWN; // direction of first vibrato wave UPWD or DNWD
+ uint8_t vibratoDepth = 1; // OFF:1-9
+ uint8_t vibSens = 2; // vibrato sensitivity
+ uint8_t vibRetn = 2; // vibrato return speed
+
+ uint8_t knob1CC = 71;
+ uint8_t knob2CC = 72;
+ uint8_t knob3CC = 73;
+ uint8_t knob4CC = 74;
+
+ uint8_t icmAccelMode;
+ uint8_t icmAccelCC;
+ uint8_t icmTiltMode;
+ uint8_t icmTiltCC;
+ uint8_t icmRotationMode;
+ uint8_t icmRotationCC;
+
+ uint8_t _reserved[87];
+};
+
+static_assert(sizeof(preset_t) == PRESET_MAX_SIZE, "preset_t must be 128 bytes");
+extern preset_t presets[PRESET_COUNT];
+extern calibration_t calibration;
+extern preset_t *currentPreset;
+
+#define NO_CHECKSUM 0x7F007F00
+
+void readEEPROM(const bool factoryReset);
+void writePreset(uint8_t preset);
+void writeCalibration();
+
+//Functions for config management mode
+void sendSysexSettings();
+void sendSysexMessage(const char* messageCode);
+void sendSysexVersion();
+
+void handleSysex(uint8_t *data, unsigned int length);
+void handleSysexChunk(const uint8_t *data, uint16_t length, bool last);
+
+uint32_t crc32(const uint8_t *message, const size_t length);
+
+void configInitScreen();
+void configShowMessage(const char* message);
+
+void configModeSetup();
+void configModeLoop();
+
+#endif
diff --git a/NuEVI/src/test.cpp b/NuEVI/src/test.cpp
new file mode 100644
index 0000000..a3b2db3
--- /dev/null
+++ b/NuEVI/src/test.cpp
@@ -0,0 +1,57 @@
+#include "hardware.h"
+
+uint8_t oldButtons = 0;
+uint16_t oldKeys = 0;
+uint16_t oldUtil = 0;
+bool plotCap = false;
+
+void handleTestMode() {
+ uint8_t buttons = buttonState();
+ if (buttons != oldButtons) {
+ oldButtons = buttons;
+ Serial.print("Buttons:");
+ Serial.println(buttons, HEX);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ int k = readKnob(i);
+ if (k != 0) {
+ Serial.print("Knob");
+ Serial.print(i);
+ Serial.print(":");
+ Serial.println(k);
+ }
+ }
+
+ uint16_t keys = keysTouched();
+ if (keys != oldKeys) {
+ Serial.print("Keys:");
+ Serial.println(keys, HEX);
+ }
+
+ uint16_t util = utilTouched();
+ if (util != oldUtil) {
+ Serial.print("Util:");
+ Serial.println(util, HEX);
+ }
+
+ if (buttons == 0x01) {
+ plotCap = !plotCap;
+ }
+
+ if (plotCap) {
+ for (int i = 0; i < 12; i++) {
+ Serial.print(">key");
+ Serial.print(i);
+ Serial.print(":");
+ Serial.println(readTouchKey(i));
+ }
+
+ for (int i = 0; i < 12; i++) {
+ Serial.print(">util");
+ Serial.print(i);
+ Serial.print(":");
+ Serial.println(readTouchUtil(i));
+ }
+ }
+}
\ No newline at end of file
diff --git a/NuEVI/src/test.h b/NuEVI/src/test.h
new file mode 100644
index 0000000..d36fb67
--- /dev/null
+++ b/NuEVI/src/test.h
@@ -0,0 +1,6 @@
+#ifndef __TEST_H
+#define __TEST_H
+
+void handleTestMode();
+
+#endif
\ No newline at end of file
diff --git a/NuEVI/src/xEVI.cpp b/NuEVI/src/xEVI.cpp
new file mode 100644
index 0000000..5e30ce4
--- /dev/null
+++ b/NuEVI/src/xEVI.cpp
@@ -0,0 +1,823 @@
+#include
+#include
+#include
+#include
+#include
+
+#include "globals.h"
+#include "hardware.h"
+#include "midi.h"
+#include "menu.h"
+#include "config.h"
+#include "settings.h"
+#include "led.h"
+
+/*
+NAME: xEVI
+WRITTEN BY: BRIAN HREBEC
+BASED ON: NuEVI by JOHAN BERGLUND
+DATE: 2023-8-23
+FOR: PJRC Teensy 4.0 and 2x MPR121 capactive touch sensor board.
+ Uses an SSD1306 controlled OLED display communicating over I2C and a NeoPixel LED strip for status display
+ ICM20948 for intertial measurement.
+FUNCTION: EVI Wind Controller using MPRLS pressure sensors and capacitive touch keys. Output to USB MIDI and CV.
+*/
+
+#if !defined(USB_MIDI) && !defined(USB_MIDI_SERIAL)
+#error "USB MIDI not enabled. Please set USB type to 'MIDI' or 'Serial + MIDI'."
+#endif
+
+preset_t presets[PRESET_COUNT];
+instrument_state_t state;
+preset_t *currentPreset;
+calibration_t calibration;
+
+static const int pbDepthList[13] = { 8192, 8192, 4096, 2731, 2048, 1638, 1365, 1170, 1024, 910, 819, 744, 683 };
+static const float vibDepth[10] = { 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.40, 0.45 }; // max pitch bend values (+/-) for the vibrato settings
+static const short vibMaxBiteList[16] = { 1400, 1200, 1000, 900, 800, 700, 600, 500, 400, 300, 250, 200, 150, 100, 50, 25 };
+static const short vibMaxList[12] = { 300, 275, 250, 225, 200, 175, 150, 125, 100, 75, 50, 25 };
+static const int timeDividerList[9] = { 0, 222, 200, 181, 167, 152, 143, 130, 125 }; // For CV vibrato - 222 is 4.5Hz, 200 is 5Hz, 181 is 5.5Hz 167 is 6Hz, 152 is 6.5Hz, 143 is 7Hz, 130 is 7.5Hz, 125 is 8Hz
+
+static const unsigned short curveM4[] = { 0, 4300, 7000, 8700, 9900, 10950, 11900, 12600, 13300, 13900, 14500, 15000, 15450, 15700, 16000, 16250, 16383 };
+static const unsigned short curveM3[] = { 0, 2900, 5100, 6650, 8200, 9500, 10550, 11500, 12300, 13100, 13800, 14450, 14950, 15350, 15750, 16150, 16383 };
+static const unsigned short curveM2[] = { 0, 2000, 3600, 5000, 6450, 7850, 9000, 10100, 11100, 12100, 12900, 13700, 14400, 14950, 15500, 16000, 16383 };
+static const unsigned short curveM1[] = { 0, 1400, 2850, 4100, 5300, 6450, 7600, 8700, 9800, 10750, 11650, 12600, 13350, 14150, 14950, 15650, 16383 };
+const unsigned short curveIn[] = { 0, 1023, 2047, 3071, 4095, 5119, 6143, 7167, 8191, 9215, 10239, 11263, 12287, 13311, 14335, 15359, 16383 };
+static const unsigned short curveP1[] = { 0, 600, 1350, 2150, 2900, 3800, 4700, 5600, 6650, 7700, 8800, 9900, 11100, 12300, 13500, 14850, 16383 };
+static const unsigned short curveP2[] = { 0, 400, 800, 1300, 2000, 2650, 3500, 4300, 5300, 6250, 7400, 8500, 9600, 11050, 12400, 14100, 16383 };
+static const unsigned short curveP3[] = { 0, 200, 500, 900, 1300, 1800, 2350, 3100, 3800, 4600, 5550, 6550, 8000, 9500, 11250, 13400, 16383 };
+static const unsigned short curveP4[] = { 0, 100, 200, 400, 700, 1050, 1500, 1950, 2550, 3200, 4000, 4900, 6050, 7500, 9300, 12100, 16383 };
+static const unsigned short curveS1[] = { 0, 600, 1350, 2150, 2900, 3800, 4700, 6000, 8700, 11000, 12400, 13400, 14300, 14950, 15500, 16000, 16383 };
+static const unsigned short curveS2[] = { 0, 600, 1350, 2150, 2900, 4000, 6100, 9000, 11000, 12100, 12900, 13700, 14400, 14950, 15500, 16000, 16383 };
+// static const unsigned short curveS3[] = {0,600,1350,2300,3800,6200,8700,10200,11100,12100,12900,13700,14400,14950,15500,16000,16383};
+// static const unsigned short curveS4[] = {0,600,1700,4000,6600,8550,9700,10550,11400,12200,12900,13700,14400,14950,15500,16000,16383};
+
+static const unsigned short curveZ1[] = { 0, 1400, 2100, 2900, 3200, 3900, 4700, 5600, 6650, 7700, 8800, 9900, 11100, 12300, 13500, 14850, 16383 };
+static const unsigned short curveZ2[] = { 0, 2000, 3200, 3800, 4096, 4800, 5100, 5900, 6650, 7700, 8800, 9900, 11100, 12300, 13500, 14850, 16383 };
+
+const std::array curves = {
+ curveM4, curveM3, curveM2, curveM1, curveIn, curveP1, curveP2,
+ curveP3, curveP4, curveS1, curveS2, curveZ1, curveZ2 };
+
+static int waveformsTable[maxSamplesNum] = {
+ // Sine wave
+ 0x7ff, 0x86a, 0x8d5, 0x93f, 0x9a9, 0xa11, 0xa78, 0xadd, 0xb40, 0xba1,
+ 0xbff, 0xc5a, 0xcb2, 0xd08, 0xd59, 0xda7, 0xdf1, 0xe36, 0xe77, 0xeb4,
+ 0xeec, 0xf1f, 0xf4d, 0xf77, 0xf9a, 0xfb9, 0xfd2, 0xfe5, 0xff3, 0xffc,
+ 0xfff, 0xffc, 0xff3, 0xfe5, 0xfd2, 0xfb9, 0xf9a, 0xf77, 0xf4d, 0xf1f,
+ 0xeec, 0xeb4, 0xe77, 0xe36, 0xdf1, 0xda7, 0xd59, 0xd08, 0xcb2, 0xc5a,
+ 0xbff, 0xba1, 0xb40, 0xadd, 0xa78, 0xa11, 0x9a9, 0x93f, 0x8d5, 0x86a,
+ 0x7ff, 0x794, 0x729, 0x6bf, 0x655, 0x5ed, 0x586, 0x521, 0x4be, 0x45d,
+ 0x3ff, 0x3a4, 0x34c, 0x2f6, 0x2a5, 0x257, 0x20d, 0x1c8, 0x187, 0x14a,
+ 0x112, 0xdf, 0xb1, 0x87, 0x64, 0x45, 0x2c, 0x19, 0xb, 0x2,
+ 0x0, 0x2, 0xb, 0x19, 0x2c, 0x45, 0x64, 0x87, 0xb1, 0xdf,
+ 0x112, 0x14a, 0x187, 0x1c8, 0x20d, 0x257, 0x2a5, 0x2f6, 0x34c, 0x3a4,
+ 0x3ff, 0x45d, 0x4be, 0x521, 0x586, 0x5ed, 0x655, 0x6bf, 0x729, 0x794 };
+
+const int rollerHarmonic[2][7] = { {0, 7, 12, 16, 19, 24, 26}, // F horn 2,3,4,5,6,8,9 hrm
+ {7, 12, 16, 19, 24, 26, 31} }; // Bb horn 3,4,5,6,8,9,12 hrm
+
+const int trumpetHarmonic[2][7] = { {0, 7, 12, 16, 19, 26, 31}, //! K4: hrm 8->9, 10->12
+ {0, 7, 12, 16, 19, 24, 28} }; // trumpet 2,3,4,5,6,8,10 hrm
+
+bool configManagementMode = false;
+bool testMode = false;
+
+//_______________________________________________________________________________________________ SETUP
+
+// MIDI note value check with out of range octave repeat
+inline int noteValueCheck(int note) {
+ if (note > 127) {
+ note = 115 + (note - 127) % 12;
+ } else if (note < 0) {
+ note = 12 - abs(note) % 12;
+ }
+ return note;
+}
+
+//***********************************************************
+
+void port(int portCC) {
+ if (portCC == state.portamentoVal) {
+ return;
+ }
+
+ if (currentPreset->portamentoMode == PortamentoMode::PON || currentPreset->portamentoMode == PortamentoMode::PGLIDE_ONLY) {
+ if (state.portamentoVal > 0 && portCC == 0) {
+ midiSendControlChange(CCN_PortOnOff, 0);
+ } else if (state.portamentoVal == 0 && portCC > 0) {
+ midiSendControlChange(CCN_PortOnOff, 127);
+ }
+ }
+
+ midiSendControlChange(CCN_Port, portCC);
+ state.portamentoVal = portCC;
+}
+
+// Update CV output pin, run from timer.
+void cvUpdate() {
+ static byte cvPortaTuneCount = 0;
+ uint32_t currentTime = millis();
+ int cvPressure = readPressure();
+ analogWrite(cvBreathPin, cvPressure);
+ state.targetPitch = (state.activeNote - 24) * 42;
+ state.targetPitch += map(state.pitchBend, 0, 16383, -84, 84);
+ state.targetPitch -= state.quarterToneTrigger * 21;
+ if (state.portamentoVal > 0) {
+ if (state.targetPitch > state.cvPitch) {
+ if (!cvPortaTuneCount) {
+ state.cvPitch += 1 + (127 - state.portamentoVal) / 4;
+ } else {
+ cvPortaTuneCount++;
+ if (cvPortaTuneCount > CVPORTATUNE)
+ cvPortaTuneCount = 0;
+ }
+ if (state.cvPitch > state.targetPitch)
+ state.cvPitch = state.targetPitch;
+ } else if (state.targetPitch < state.cvPitch) {
+ if (!cvPortaTuneCount) {
+ state.cvPitch -= 1 + (127 - state.portamentoVal) / 4;
+ } else {
+ cvPortaTuneCount++;
+ if (cvPortaTuneCount > CVPORTATUNE)
+ cvPortaTuneCount = 0;
+ }
+ if (state.cvPitch < state.targetPitch)
+ state.cvPitch = state.targetPitch;
+ } else {
+ state.cvPitch = state.targetPitch;
+ }
+ } else {
+ state.cvPitch = state.targetPitch;
+ }
+
+ if (currentPreset->cvVibRate) {
+ int timeDivider = timeDividerList[currentPreset->cvVibRate];
+ int cvVib = map(((waveformsTable[map(currentTime % timeDivider, 0, timeDivider, 0, maxSamplesNum - 1)] - 2047)), -259968, 259969, -11, 11);
+ state.cvPitch += cvVib;
+ }
+ int cvPitchTuned = 2 * (currentPreset->cvTune) + map(state.cvPitch, 0, 4032, 0, 4032 + 2 * (currentPreset->cvScale));
+ analogWrite(cvPitchPin, constrain(cvPitchTuned, 0, 4095));
+}
+
+//**************************************************************
+// non linear mapping function (http://playground.arduino.cc/Main/MultiMap)
+// note: the _in array should have increasing values
+unsigned int multiMap(unsigned short val, const unsigned short* _in, const unsigned short* _out, uint8_t size) {
+ // take care the value is within range
+ // val = constrain(val, _in[0], _in[size-1]);
+ if (val <= _in[0])
+ return _out[0];
+ if (val >= _in[size - 1])
+ return _out[size - 1];
+
+ // search right interval
+ uint8_t pos = 1; // _in[0] allready tested
+ while (val > _in[pos])
+ pos++;
+
+ // this will handle all exact "points" in the _in array
+ if (val == _in[pos])
+ return _out[pos];
+
+ // interpolate in the right segment for the rest
+ return (val - _in[pos - 1]) * (_out[pos] - _out[pos - 1]) / (_in[pos] - _in[pos - 1]) + _out[pos - 1];
+}
+
+
+
+//**************************************************************
+
+// map breath values to selected curve
+unsigned int breathCurve(unsigned int inputVal) {
+ if (currentPreset->breathCurve >= curves.size())
+ return inputVal;
+ return multiMap(inputVal, curveIn, curves[currentPreset->breathCurve], 17);
+}
+
+//**************************************************************
+
+int patchLimit(int value) {
+ return constrain(value, 1, 128);
+}
+
+//**************************************************************
+
+int breath() {
+ static int oldbreath = 0;
+ static unsigned int oldbreathhires = 0;
+
+ int breathCCval, breathCCvalFine;
+ unsigned int breathCCvalHires;
+ breathCCvalHires = breathCurve(mapConstrain(state.breathSignal, state.breathThrVal, state.breathMaxVal, 0, 16383));
+ breathCCval = (breathCCvalHires >> 7) & 0x007F;
+ breathCCvalFine = breathCCvalHires & 0x007F;
+ if (breathCCval != oldbreath) { // only send midi data if breath has changed from previous value
+ if (currentPreset->breathCC) {
+ // send midi cc
+ midiSendControlChange(currentPreset->breathCC, breathCCval);
+ }
+ if (currentPreset->breathMode == BreathMode::BREATH_AT || currentPreset->breathMode == BreathMode::BREATH_LSB_AT) {
+ // send aftertouch
+ midiSendAfterTouch(breathCCval);
+ }
+ oldbreath = breathCCval;
+ }
+
+ if (breathCCvalHires != oldbreathhires
+ && (currentPreset->breathMode == BreathMode::BREATH_LSB || currentPreset->breathMode == BreathMode::BREATH_LSB_AT)) {
+ midiSendControlChange(currentPreset->breathCC + 32, breathCCvalFine);
+ }
+
+ oldbreathhires = breathCCvalHires;
+
+ return breathCCval;
+}
+
+//**************************************************************
+
+void pitch_bend() {
+ // handle input from pitchbend touchpads and
+ // on-pcb variable capacitor for vibrato.
+ static int oldpb = 0;
+ int vibMax;
+ int vibMaxBite;
+ int calculatedPBdepth;
+ byte pbTouched = 0;
+ int vibRead = 0;
+ int vibReadBite = 0;
+ state.pbUpSignal = readTouchUtil(pbUpPin); // PCB PIN "Pu"
+ state.pbDnSignal = readTouchUtil(pbDnPin); // PCB PIN "Pd"
+ bool halfPitchBendKey = (currentPreset->pinkySetting == PBD) && state.pinkyKey; // hold pinky key for 1/2 pitchbend value
+ state.quarterToneTrigger = (currentPreset->pinkySetting == QTN) && state.pinkyKey; // pinky key for a quarter tone down using pitch bend (assuming PB range on synth is set to 2 semitones)
+
+ calculatedPBdepth = pbDepthList[currentPreset->PBdepth];
+ if (halfPitchBendKey)
+ calculatedPBdepth = calculatedPBdepth * 0.5;
+
+ vibMax = vibMaxList[currentPreset->vibSens - 1];
+
+ float calculatedDepth = 0;
+ if (currentPreset->vibratoMode == VibratoMode::VSTART_DOWN) {
+ calculatedDepth = calculatedPBdepth * vibDepth[currentPreset->vibratoDepth];
+ } else {
+ calculatedDepth = (0 - calculatedPBdepth * vibDepth[currentPreset->vibratoDepth]);
+ }
+
+ if (ExtraControl::VIBRATO == currentPreset->biteControl) { // bite vibrato
+ vibMaxBite = vibMaxBiteList[currentPreset->vibSens - 1];
+ vibReadBite = readTouchUtil(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
+
+ if (vibReadBite < state.vibThrBite) {
+ state.vibSignal = (state.vibSignal + mapConstrain(
+ vibReadBite, (state.vibZeroBite - vibMaxBite), state.vibThrBite, calculatedDepth, 0)
+ ) / 2;
+ } else if (vibReadBite > state.vibThrBiteLo) {
+ state.vibSignal = (state.vibSignal + mapConstrain(
+ vibReadBite, (state.vibZeroBite + vibMaxBite), state.vibThrBite, calculatedDepth, 0)
+ ) / 2;
+ } else {
+ state.vibSignal = state.vibSignal / 2;
+ }
+ }
+
+ if (ExtraControl::VIBRATO == currentPreset->leverControl) { // lever vibrato
+ vibRead = readTouchUtil(vibratoPin);
+ if (vibRead < state.vibThr) {
+ state.vibSignal = (state.vibSignal +
+ mapConstrain(vibRead, (state.vibZero - vibMax), state.vibThr, calculatedDepth, 0)
+ ) / 2;
+ } else if (vibRead > state.vibThrLo) {
+ state.vibSignal = (state.vibSignal +
+ mapConstrain(vibRead, (state.vibZero + vibMax), state.vibThr, calculatedDepth, 0)
+ ) / 2;
+ } else {
+ state.vibSignal = state.vibSignal / 2;
+ }
+ }
+
+ switch (currentPreset->vibRetn) { // moving baseline
+ case 0:
+ // keep vibZero value
+ break;
+ case 1:
+ state.vibZero = state.vibZero * 0.95 + vibRead * 0.05;
+ state.vibZeroBite = state.vibZeroBite * 0.95 + vibReadBite * 0.05;
+ break;
+ case 2:
+ state.vibZero = state.vibZero * 0.9 + vibRead * 0.1;
+ state.vibZeroBite = state.vibZeroBite * 0.9 + vibReadBite * 0.1;
+ break;
+ case 3:
+ state.vibZero = state.vibZero * 0.8 + vibRead * 0.2;
+ state.vibZeroBite = state.vibZeroBite * 0.8 + vibReadBite * 0.2;
+ break;
+ case 4:
+ state.vibZero = state.vibZero * 0.6 + vibRead * 0.4;
+ state.vibZeroBite = state.vibZeroBite * 0.6 + vibReadBite * 0.4;
+ }
+ state.vibThr = state.vibZero - currentPreset->vibSquelch;
+ state.vibThrLo = state.vibZero + currentPreset->vibSquelch;
+ state.vibThrBite = state.vibZeroBite - currentPreset->vibSquelch;
+ state.vibThrBiteLo = state.vibZeroBite + currentPreset->vibSquelch;
+ int pbPos = mapConstrain(state.pbUpSignal, calibration.pbUpMaxVal, calibration.pbUpThrVal, calculatedPBdepth, 0);
+ int pbNeg = mapConstrain(state.pbDnSignal, calibration.pbDnMaxVal, calibration.pbDnThrVal, calculatedPBdepth, 0);
+ int pbSum = 8193 + pbPos - pbNeg;
+ int pbDif = abs(pbPos - pbNeg);
+
+ if ((state.pbUpSignal < calibration.pbUpThrVal || state.pbDnSignal < calibration.pbDnThrVal) && currentPreset->PBdepth) {
+ if (pbDif < 10) {
+ state.pitchBend = 8192;
+ } else {
+ state.pitchBend = state.pitchBend * 0.6 + 0.4 * pbSum;
+ }
+ pbTouched = 1;
+ }
+ if (!pbTouched) {
+ state.pitchBend = state.pitchBend * 0.6 + 8192 * 0.4; // released, so smooth your way back to zero
+ if ((state.pitchBend > 8187) && (state.pitchBend < 8197))
+ state.pitchBend = 8192; // 8192 is 0 pitch bend, don't miss it bc of smoothing
+ }
+
+ state.pitchBend = state.pitchBend + state.vibSignal;
+ state.pitchBend = constrain(state.pitchBend, 0, 16383);
+
+ state.pbSend = state.pitchBend - state.quarterToneTrigger * calculatedPBdepth * 0.25;
+ state.pbSend = constrain(state.pbSend, 0, 16383);
+
+ if (state.pbSend != oldpb) { // only send midi data if pitch bend has changed from previous value
+ midiSendPitchBend(state.pbSend);
+ oldpb = state.pbSend;
+ }
+}
+
+//***********************************************************
+
+void portamento_() {
+ if (currentPreset->portamentoMode == PortamentoMode::POFF) {
+ port(0); // ensure it's off
+ return;
+ }
+
+ int portSumCC = 0;
+ if (currentPreset->pinkySetting == GLD) {
+ if (state.pinkyKey) {
+ portSumCC += currentPreset->portamentoLimit;
+ }
+ }
+ if (ExtraControl::GLIDE == currentPreset->biteControl) {
+ // Portamento is controlled with the bite sensor in the mouthpiece
+ state.biteSignal = readTouchUtil(bitePin);
+ if (state.biteSignal >= calibration.biteThrVal) { // if we are enabled and over the threshold, send portamento
+ portSumCC += mapConstrain(state.biteSignal, calibration.biteThrVal, calibration.biteMaxVal, 0, currentPreset->portamentoLimit);
+ }
+ }
+
+ if (ExtraControl::GLIDE == currentPreset->leverControl) {
+ // Portamento is controlled with thumb lever
+ state.leverSignal = readTouchUtil(vibratoPin);
+ if (((3000 - state.leverSignal) >= calibration.leverThrVal)) { // if we are enabled and over the threshold, send portamento
+ portSumCC += mapConstrain((3000 - state.leverSignal), calibration.leverThrVal, calibration.leverMaxVal, 0, currentPreset->portamentoLimit);
+ }
+ }
+
+ port(constrain(portSumCC, 0, currentPreset->portamentoLimit)); // Total output glide rate limited to glide max setting
+}
+
+//***********************************************************
+
+void biteCC_() {
+ int biteVal = 0;
+ if (ExtraControl::CC == currentPreset->biteControl) {
+ state.biteSignal = readTouchUtil(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
+ if (state.biteSignal >= calibration.biteThrVal) { // we are over the threshold, calculate CC value
+ biteVal = mapConstrain(state.biteSignal, calibration.biteThrVal, calibration.biteMaxVal, 0, 127);
+ }
+
+ if (biteVal != state.biteVal) {
+ midiSendControlChange(currentPreset->biteCC, biteVal);
+ }
+ state.biteVal = biteVal;
+ }
+}
+
+void autoCal() {
+ state.vibZero = state.vibZeroBite = 0;
+ for(int i = 1 ; i <= CALIBRATE_SAMPLE_COUNT; ++i) {
+ state.breathZero += readPressure();
+ state.breathAltZero += readAltPressure();
+ state.vibZero += readTouchUtil(vibratoPin);
+ state.vibZeroBite += readTouchUtil(bitePin);
+ }
+
+ state.breathZero /= CALIBRATE_SAMPLE_COUNT;
+ state.breathAltZero /= CALIBRATE_SAMPLE_COUNT;
+ state.vibZero /= CALIBRATE_SAMPLE_COUNT;
+ state.vibZeroBite /= CALIBRATE_SAMPLE_COUNT;
+
+ state.vibThr = state.vibZero - currentPreset->vibSquelch;
+ state.vibThrLo = state.vibZero + currentPreset->vibSquelch;
+ state.vibThrBite = state.vibZeroBite - currentPreset->vibSquelch;
+ state.vibThrBiteLo = state.vibZeroBite + currentPreset->vibSquelch;
+
+ state.breathThrVal = state.breathZero + calibration.breathThrValOffset;
+ state.breathMaxVal = state.breathThrVal + calibration.breathMaxValOffset;
+ state.breathAltThrVal = state.breathAltZero + calibration.breathAltThrValOffset;
+ state.breathAltMaxVal = state.breathAltThrVal + calibration.breathAltMaxValOffset;
+
+}
+
+void fullAutoCal() {
+ int calRead;
+ int calReadNext;
+ autoCal();
+
+ // Lever
+ calRead = 3000 - readTouchUtil(vibratoPin);
+ calibration.leverThrVal = constrain(calRead + 60, LEVER_LO_LIMIT, LEVER_HI_LIMIT);
+ calibration.leverMaxVal = constrain(calRead + 120, LEVER_LO_LIMIT, LEVER_HI_LIMIT);
+
+ // Bite sensor
+ calRead = readTouchUtil(bitePin);
+ calibration.biteThrVal = constrain(calRead + 100, BITE_LO_LIMIT, BITE_HI_LIMIT);
+ calibration.biteMaxVal = constrain(calibration.biteThrVal + 300, BITE_LO_LIMIT, BITE_HI_LIMIT);
+
+ // Touch sensors
+ calRead = CTOUCH_HI_LIMIT;
+ for (byte i = 0; i < 12; i++) {
+ calReadNext = readTouchKey(i);
+ if (calReadNext < calRead)
+ calRead = calReadNext; // use lowest value
+ }
+
+ calibration.ctouchThrVal = calRead - 20;
+}
+
+//***********************************************************
+
+/*
+ * Read octave and return offset
+ */
+int readOctave() {
+ static byte lastOctaveR = 0;
+
+ // Roller modes
+ // 1: Highest touched roller, release memory
+ // 2: Highest touched roller, extend range on top/bottom release
+ // 3: Touched roller pair
+ // 4: Touched roller pair, extend range
+ // 5: Touched roller, pair = 5th partial
+ // 6: Touched roller, pair = 5th partial, extend range
+ RollerMode rollerMode = currentPreset->rollerMode;
+ byte extend = rollerMode == RollerMode::HIGHEST_EXTEND || rollerMode == RollerMode::HIGHEST_PAIR_EXTEND || rollerMode == RollerMode::PARTIAL_EXTEND ? 1 : 0;
+
+ byte rollers[6];
+ uint16_t ctouchThrVal = calibration.ctouchThrVal;
+ rollers[0] = readTouchUtil(R1Pin) < ctouchThrVal;
+ rollers[1] = readTouchUtil(R2Pin) < ctouchThrVal;
+ rollers[2] = readTouchUtil(R3Pin) < ctouchThrVal;
+ rollers[3] = readTouchUtil(R4Pin) < ctouchThrVal;
+ rollers[4] = readTouchUtil(R5Pin) < ctouchThrVal;
+ rollers[5] = readTouchUtil(R6Pin) < ctouchThrVal;
+
+ byte offset = 0;
+ byte octaveR = 0;
+ if (rollerMode == RollerMode::HIGHEST || rollerMode == RollerMode::HIGHEST_EXTEND) {
+ for (int i = 5; i >= 0; i--) {
+ if (rollers[i]) {
+ octaveR = i + 1;
+ break;
+ }
+ }
+ } else if (rollerMode == RollerMode::HIGHEST_PAIR || rollerMode == RollerMode::HIGHEST_PAIR_EXTEND) {
+ for (int i = 5; i >= 1; i--) {
+ if (rollers[i] && rollers[i - 1]) {
+ octaveR = i + 1;
+ break;
+ }
+ }
+
+ // Allow top/bottom single rollers in extended mode
+ if (octaveR == 0 && extend) {
+ if (rollers[0]) {
+ octaveR = 1;
+ } else if (rollers[5]) {
+ octaveR = 6;
+ }
+ }
+ } else if (rollerMode == RollerMode::PARTIAL || rollerMode == RollerMode::PARTIAL_EXTEND) {
+ for (int i = 5; i >= 0; i--) {
+ if (rollers[i]) {
+ octaveR = i + 1;
+ if (i > 0 && rollers[i - 1]) {
+ offset = -5;
+ }
+ break;
+ }
+ }
+
+ // Go up/down a partial on top/bottom release
+ if (extend && octaveR == 0) {
+ if (lastOctaveR == 1) {
+ offset = -5;
+ } else if (lastOctaveR == 6) {
+ offset = 7;
+ }
+
+ octaveR = lastOctaveR;
+ }
+ }
+
+ // Handle extended release
+ if (extend && octaveR == 0) {
+ if (rollerMode == RollerMode::HIGHEST_EXTEND && lastOctaveR == 6) {
+ octaveR = 7;
+ } else if (rollerMode == RollerMode::PARTIAL_EXTEND && lastOctaveR == 7) {
+ octaveR = 8;
+ } else if (lastOctaveR == 1) {
+ octaveR = 0;
+ } else {
+ octaveR = lastOctaveR;
+ }
+ }
+
+ lastOctaveR = octaveR;
+
+ FingeringMode fingering = currentPreset->fingering;
+ byte K4 = readTouchKey(K4Pin) < calibration.ctouchThrVal;
+ if (FingeringMode::TPT == fingering) { // TPT fingering
+ return 24 + offset + trumpetHarmonic[K4][octaveR]; // roller harmonics
+ } else if (FingeringMode::HRN == fingering) { // HRN fingering
+ return 12 + offset + rollerHarmonic[K4][octaveR]; // roller harmonics
+ } else if (FingeringMode::EVR == fingering) { // HRN fingering
+ return 12 * (6 - octaveR) + offset;
+ } else { // EVI
+ return 12 * octaveR + offset;
+ }
+}
+
+int readSwitches() {
+ // Keep the last fingering value for debouncing
+ static int lastFingering = 0;
+ static int fingeredNote = 0;
+ static unsigned long lastDeglitchTime = 0; // The last time the fingering was changed
+
+ // Read touch pads (MPR121), compare against threshold value
+ bool touchKeys[12];
+ for (byte i = 0; i < 12; i++) {
+ touchKeys[i] = readTouchKey(i) < calibration.ctouchThrVal;
+ }
+
+ // Valves and trill keys, TRUE (1) for pressed, FALSE (0) for not pressed
+ byte K1 = touchKeys[K1Pin]; // Valve 1 (pitch change -2)
+ byte K2 = touchKeys[K2Pin]; // Valve 2 (pitch change -1)
+ byte K3 = touchKeys[K3Pin]; // Valve 3 (pitch change -3)
+ byte K4 = touchKeys[K4Pin]; // Left Hand index finger (pitch change -5)
+ byte K5 = touchKeys[K5Pin]; // Trill key 1 (pitch change +2)
+ byte K6 = touchKeys[K6Pin]; // Trill key 2 (pitch change +1)
+ byte K7 = touchKeys[K7Pin]; // Trill key 3 (pitch change +4)
+
+ state.pinkyKey = touchKeys[K8Pin];
+
+ int qTransp = (state.pinkyKey && (currentPreset->pinkySetting < 25)) ? currentPreset->pinkySetting - 12 : 0;
+
+ // Calculate midi note number from pressed keys
+ int fingeredNoteUntransposed = 0;
+ if (EVI == currentPreset->fingering) { // EVI fingering
+ fingeredNoteUntransposed = START_NOTE - 2 * K1 - K2 - 3 * K3 //"Trumpet valves"
+ - 5 * K4 // Fifth key
+ + 2 * K5 + K6 + currentPreset->trill3_interval * K7; // Trill keys. 3rd trill key interval controlled by setting
+ } else if (EVR == currentPreset->fingering) { // EVR fingering
+ fingeredNoteUntransposed = START_NOTE - 2 * K1 - K2 - 3 * K3 //"Trumpet valves"
+ - 5 * K4 // Fifth key
+ + 2 * K5 + K6 + currentPreset->trill3_interval * K7; // Trill keys. 3rd trill key interval controlled by setting
+ } else if (TPT == currentPreset->fingering) { // TPT fingering
+ fingeredNoteUntransposed = START_NOTE - 2 * K1 - K2 - 3 * K3 //"Trumpet valves"
+ - 2 // Trumpet in B flat
+ + 2 * K5 + K6 + currentPreset->trill3_interval * K7; // Trill keys. 3rd trill key interval controlled by setting
+ } else if (HRN == currentPreset->fingering) { // HRN fingering
+ fingeredNoteUntransposed = START_NOTE - 2 * K1 - K2 - 3 * K3 //"Trumpet valves"
+ + 5 * K4 // Switch to Bb horn
+ + 5 // Horn in F
+ + 2 * K5 + K6 + currentPreset->trill3_interval * K7; // Trill keys. 3rd trill key interval controlled by setting
+ }
+
+ if (K3 && K7) {
+ if (4 == currentPreset->trill3_interval)
+ fingeredNoteUntransposed += 2;
+ else
+ fingeredNoteUntransposed += 4;
+ }
+
+ int fingeredNoteRead = fingeredNoteUntransposed + state.transpose - 12 + qTransp;
+
+ if (fingeredNoteRead != lastFingering) { //
+ // reset the debouncing timer
+ lastDeglitchTime = millis();
+ }
+
+ if ((millis() - lastDeglitchTime) > currentPreset->deglitch) {
+ // whatever the reading is at, it's been there for longer
+ // than the debounce delay, so take it as the actual current state
+ fingeredNote = fingeredNoteRead;
+ }
+
+ lastFingering = fingeredNoteRead;
+
+ return fingeredNote;
+}
+
+void noteOn(int fingeredNote, float pressureSensor, int initial_breath_value) {
+ // Yes, so calculate MIDI note and velocity, then send a note on event
+ // We should be at tonguing peak, so set velocity based on current pressureSensor value unless fixed velocity is set
+ state.breathSignal = constrain(max(pressureSensor, initial_breath_value), state.breathThrVal, state.breathMaxVal);
+ byte velocitySend;
+ if (!currentPreset->fixedVelocity) {
+ unsigned int breathValHires = breathCurve(mapConstrain(state.breathSignal, state.breathThrVal, state.breathMaxVal, 0, 16383));
+ velocitySend = (breathValHires >> 7) & 0x007F;
+ velocitySend = constrain(velocitySend + velocitySend * .1 * currentPreset->velBias, 1, 127);
+ } else {
+ velocitySend = currentPreset->fixedVelocity;
+ }
+
+ breath(); // send breath data
+ midiSendNoteOn(fingeredNote, velocitySend); // send Note On message for new note
+ state.activeNote = fingeredNote;
+}
+
+void handleOffStateActions() {
+ if (state.activeMIDIchannel != currentPreset->MIDIchannel) {
+ state.activeMIDIchannel = currentPreset->MIDIchannel; // only switch channel if no active note
+ midiSetChannel(state.activeMIDIchannel);
+ }
+ if ((state.activePatch != state.patch) && state.doPatchUpdate) {
+ state.activePatch = state.patch;
+ midiSendProgramChange(state.activePatch);
+ state.doPatchUpdate = 0;
+ }
+}
+
+/*
+ Initialize the main instrument state
+*/
+void initState() {
+ state.activePatch = 0;
+ state.mainState = NOTE_OFF; // initialize main state machine
+
+ state.activeMIDIchannel = currentPreset->MIDIchannel;
+ midiInitialize(currentPreset->MIDIchannel);
+}
+
+/**
+ * Send CC data when needed
+ */
+void sendCCs() {
+ static unsigned long ccBreathSendTime = 0L; // The last time we sent breath CC values
+ static unsigned long ccSendTime = 0L; // The last time we sent CC values
+ static unsigned long ccSendTime2 = 0L; // The last time we sent CC values 2 (slower)
+ static unsigned long ccSendTime3 = 0L; // The last time we sent CC values 3 (and slower)
+
+ // Is it time to send more CC data?
+ uint32_t currentTime = millis();
+ if ((currentTime - ccBreathSendTime) > (currentPreset->breathInterval - 1u)) {
+ breath();
+ ccBreathSendTime = currentTime;
+ }
+ if (currentTime - ccSendTime > CC_INTERVAL_PRIMARY) {
+ // deal with Pitch Bend, Modulation, etc.
+ pitch_bend();
+ biteCC_();
+ ccSendTime = currentTime;
+ }
+ if (currentTime - ccSendTime2 > CC_INTERVAL_PORT) {
+ portamento_();
+ ccSendTime2 = currentTime;
+ }
+ if (currentTime - ccSendTime3 > CC_INTERVAL_OTHER) {
+ updateSensorLEDs();
+ ccSendTime3 = currentTime;
+ }
+}
+
+/**
+ * Main instrument state machine
+ */
+void runStateMachine() {
+ static unsigned long breath_on_time = 0L; // Time when breath sensor value went over the ON threshold
+ static int initial_breath_value = 0; // The breath value at the time we observed the transition
+
+ int fingeredNote = noteValueCheck(readSwitches() + readOctave());
+ if (state.mainState == NOTE_OFF) {
+ handleOffStateActions();
+ if ((state.breathSignal > state.breathThrVal)) {
+ // Value has risen above threshold. Move to the RISE_WAIT
+ // state. Record time and initial breath value.
+ breath_on_time = millis();
+ initial_breath_value = state.breathSignal;
+ state.mainState = RISE_WAIT; // Go to next state
+ }
+ } else if (state.mainState == RISE_WAIT) {
+ if ((state.breathSignal > state.breathThrVal)) {
+ // Has enough time passed for us to collect our second sample?
+ if ((millis() - breath_on_time > currentPreset->velSmpDl) || (0 == currentPreset->velSmpDl) || currentPreset->fixedVelocity) {
+ noteOn(fingeredNote, state.breathSignal, initial_breath_value);
+ state.mainState = NOTE_ON;
+ }
+ } else {
+ // Value fell below threshold before velocity sample delay time passed. Return to NOTE_OFF state
+ state.mainState = NOTE_OFF;
+ }
+ } else if (state.mainState == NOTE_ON) {
+ if ((state.breathSignal < state.breathThrVal)) {
+ // Value has fallen below threshold - turn the note off
+ midiSendNoteOff(state.activeNote); // send Note Off message
+ state.breathSignal = 0;
+ state.mainState = NOTE_OFF;
+ } else {
+ if (fingeredNote != state.activeNote) {
+ // Player has moved to a new fingering while still blowing.
+ // Send a note off for the current note and a note on for
+ // the new note.
+ noteOn(fingeredNote, state.breathSignal, 0);
+ delayMicroseconds(2000); // delay for midi recording fix
+ midiSendNoteOff(state.activeNote); // send Note Off message
+ }
+ }
+ }
+}
+
+void setup() {
+ if (checkButtonState(DEBUG_CONFIG)) {
+ Serial.begin(9600); // debug
+ Serial.println("Debug Startup");
+ }
+
+ bool factoryReset = checkButtonState(STARTUP_FACTORY_RESET);
+ configManagementMode = checkButtonState(STARTUP_CONFIG);
+ testMode = checkButtonState(TEST_CONFIG);
+
+ initDisplay(); // Start up display and show logo
+ initHardware();
+
+ // If going into config management mode, stop here before we even touch the EEPROM.
+ if (configManagementMode) {
+ configModeSetup();
+ return;
+ }
+
+ // Read eeprom data into global vars
+ readEEPROM(factoryReset);
+
+ statusLedFlash(500);
+ statusLedOff();
+
+ if (factoryReset) {
+ // Full calibration
+ fullAutoCal();
+ } else {
+ // Minimal startup calibration (atmo pressure)
+ autoCal();
+ }
+
+ showVersion();
+ delay(1000);
+
+ initState(); // Set up midi/etc
+ statusLedOn(); // Switch on the onboard LED to indicate power on/ready
+}
+
+//_______________________________________________________________________________________________ MAIN LOOP
+
+void loop() {
+ static unsigned long pixelUpdateTime = 0;
+ static const unsigned long pixelUpdateInterval = 80;
+
+ // If in config mgmt loop, do that and nothing else
+ if (configManagementMode) {
+ configModeLoop();
+ return;
+ }
+
+ if (testMode) {
+
+ }
+
+ state.breathSignal = constrain(readPressure(), BREATH_LO_LIMIT, BREATH_HI_LIMIT); // Get the filtered pressure sensor reading from analog pin A0, input from sensor MP3V5004GP
+
+ runStateMachine();
+ sendCCs();
+
+ // cvUpdate();
+ midiDiscardInput();
+
+ if (millis() - pixelUpdateTime > pixelUpdateInterval) {
+ // even if we just alter a pixel, the whole display is redrawn (35ms of MPU lockup) and we can't do that all the time
+ // this is one of the big reasons the display is for setup use only
+ // TODO: is this still true on teensy 4?
+ pixelUpdateTime = millis();
+ handleMenu(true);
+ } else {
+ handleMenu(false);
+ }
+
+}
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
index bcd7ff9..521a2e5
--- a/README.md
+++ b/README.md
@@ -1,35 +1,35 @@
-# NuEVI
-A project by wind controller enthusiasts wanting to save the endangered Electronic Valve Instrument.
-
-Follow the project at https://hackaday.io/project/25756-diy-evi-style-windcontroller
-
-
-## Building NuEVI
-
-NuEVI is easiest to build using the Arduino IDE. You will also need to download and install
-[Teensyduino](https://www.pjrc.com/teensy/td_download.html) to build for and upload to the Teensy.
-
-### Libraries
-
-A few libraries need to be added that are not part of the default Arduino install. These can be
-added directly via the Library Manager in the Arduino IDE:
-* Adafruit MPR121
-* Adafruit GFX
-* Adafruit SSD1306 (version 1.2.9 or above)
-* NuEVI also includes on the [Filters](https://github.com/JonHub/Filters) library by Jonathan Driscoll, but that is no longer an external dependency.
-
-
-### Compile options
-
-Open NuEVI.ino in the Arduino IDE. Under "Tools -> Board", select "Teensy 3.2 / 3.1". Then set
-"Tools -> USB Type" to "MIDI".
-
-### Building and uploading
-
-Connect the NuEVI via USB to your computer, open the Teensy application and make sure the "Auto"
-option is selected (the green round icon). In Arduino IDE, select "Sketch -> Verify/Compile" and
-once that is complete press the reset button on the Teensy chip (you have to remove the top cover
-on the NuEVI to access this). Upon resetting, it should upload the new firmware onto the NuEVI.
-
-After uploading new firmware, you may need to reset the config memory of the NuEVI. To do this, press
-and hold the MENU and ENTER buttons while turning on the NuEVI. Note that this resets all sensor calibrations too. For new versions this should not be neccessary, as value and version checks are in place.
+# NuEVI
+A project by wind controller enthusiasts wanting to save the endangered Electronic Valve Instrument.
+
+Follow the project at https://hackaday.io/project/25756-diy-evi-style-windcontroller
+
+
+## Building NuEVI
+
+NuEVI is easiest to build using the Arduino IDE. You will also need to download and install
+[Teensyduino](https://www.pjrc.com/teensy/td_download.html) to build for and upload to the Teensy.
+
+### Libraries
+
+A few libraries need to be added that are not part of the default Arduino install. These can be
+added directly via the Library Manager in the Arduino IDE:
+* Adafruit MPR121
+* Adafruit GFX
+* Adafruit SSD1306 (version 1.2.9 or above)
+* NuEVI also includes on the [Filters](https://github.com/JonHub/Filters) library by Jonathan Driscoll, but that is no longer an external dependency.
+
+
+### Compile options
+
+Open NuEVI.ino in the Arduino IDE. Under "Tools -> Board", select "Teensy 3.2 / 3.1". Then set
+"Tools -> USB Type" to "MIDI".
+
+### Building and uploading
+
+Connect the NuEVI via USB to your computer, open the Teensy application and make sure the "Auto"
+option is selected (the green round icon). In Arduino IDE, select "Sketch -> Verify/Compile" and
+once that is complete press the reset button on the Teensy chip (you have to remove the top cover
+on the NuEVI to access this). Upon resetting, it should upload the new firmware onto the NuEVI.
+
+After uploading new firmware, you may need to reset the config memory of the NuEVI. To do this, press
+and hold the MENU and ENTER buttons while turning on the NuEVI. Note that this resets all sensor calibrations too. For new versions this should not be neccessary, as value and version checks are in place.
diff --git a/TestMPR121/TestMPR121.ino b/TestMPR121/TestMPR121.ino
index 3ce7ab3..7806675 100644
--- a/TestMPR121/TestMPR121.ino
+++ b/TestMPR121/TestMPR121.ino
@@ -1,153 +1,153 @@
-#include
-#include
-
-/*
- Tool to test an MPR121 unit. Wires each touch input to a teensy pin to simulate touch sensor signals.
- Used to detect faulty MPR121 units before assembly.
-*/
-
-Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
-
-//LED output pins. Red is the onboard one, other two are just wired via resistors to +3.3V
-#define RED_LED 13
-#define GREEN_LED 20
-#define YELLOW_LED 21
-
-void setup(void) {
- Serial.begin(115200);
-
- //Set all "test ports" to high-impedance for now
- for(int i=0; i<=11; i++) {
- pinMode(i, INPUT);
- }
-
- pinMode(RED_LED, OUTPUT); led(RED_LED, true);
- pinMode(GREEN_LED, OUTPUT); led(GREEN_LED, true);
- pinMode(YELLOW_LED, OUTPUT); led(YELLOW_LED, true);
-
- delay(100);
- int serialwait = 100; //Max time to wait for serial port initialization
- while(!Serial && serialwait)
- {
- delay(1);
- --serialwait;
- }
-
- led(RED_LED, false);
- led(GREEN_LED, false);
- led(YELLOW_LED, false);
-
- Serial.println("Running MPR121 test");
-
- if (!touchSensor.begin(0x5A)) {
- //Bail out if MPR121 cannot be initialized (chip broken or not present).
- Serial.println("MPR121 initialization failed!");
- failure();
- return;
- } else {
- Serial.println("MPR121 init ok.");
- }
-
- //Attempt some kind of random seeding
- srandom(analogRead(0) ^ millis());
- delay(200);
-
- run_all();
-}
-
-void led(uint8_t pin, bool state) {
- //Onboard red LED is wired a bit differently
- if(pin != RED_LED) {
- digitalWrite(pin, state?LOW:HIGH);
- } else {
- digitalWrite(pin, state?HIGH:LOW);
- }
-}
-
-void set_touch_pins(uint16_t value)
-{
- for(int pin=0; pin<12; ++pin)
- {
- uint16_t touched = (value >> pin) & 0x0001; //Mask out bit value of pin
- int teensyPin = 11-pin; //Row of teensy pins is 0-11 but mirrored vs MPR121
-
- if(touched) {
- pinMode(teensyPin, INPUT_PULLDOWN);
- } else {
- pinMode(teensyPin, INPUT_PULLUP);
- }
- }
-}
-
-bool run_test(const char* name, uint16_t value) {
- Serial.print(name);
- set_touch_pins(value);
- led(YELLOW_LED, true);
- delay(50);
- led(YELLOW_LED, false);
- delay(50);
- uint16_t t = touchSensor.touched();
- Serial.print(", expected: ");
- Serial.print(value, HEX);
- Serial.print(" got: ");
- Serial.print(t, HEX);
-
- if(value == t) {
- Serial.println(" PASS");
- return true;
- } else {
- Serial.println(" FAIL");
- return false;
- }
-}
-
-void failure() {
- led(RED_LED, true);
- led(GREEN_LED, false);
- Serial.println("Test failed!");
-}
-
-void success() {
- led(RED_LED, false);
- led(GREEN_LED, true);
- Serial.println("All tests succeeded!");
-}
-
-//Macro to bail out on any failure
-#define TEST(x) if(!x) { failure(); return; }
-
-void run_all(void) {
-
- TEST(run_test("ALL_OFF", 0x000));
- TEST(run_test("ALL_ON", 0xFFF));
-
- //Pins one at a time
- TEST(run_test("P0", 0x001 << 0));
- TEST(run_test("P1", 0x001 << 1));
- TEST(run_test("P2", 0x001 << 2));
- TEST(run_test("P3", 0x001 << 3));
- TEST(run_test("P4", 0x001 << 4));
- TEST(run_test("P5", 0x001 << 5));
- TEST(run_test("P6", 0x001 << 6));
- TEST(run_test("P7", 0x001 << 7));
- TEST(run_test("P8", 0x001 << 8));
- TEST(run_test("P9", 0x001 << 9));
- TEST(run_test("P10", 0x001 << 10));
- TEST(run_test("P11", 0x001 << 11));
-
- //Alternating pattern
- TEST(run_test("ODD", 0x0555));
- TEST(run_test("EVEN", 0x0AAA));
-
- //A few random ones for good measure
- for(int i=0; i<8; i++) {
- TEST(run_test("RANDOM", random() % 0x1000));
- }
-
- success();
-}
-
-//Dummy loop does nothing
-void loop() {
- delay(100);
+#include
+#include
+
+/*
+ Tool to test an MPR121 unit. Wires each touch input to a teensy pin to simulate touch sensor signals.
+ Used to detect faulty MPR121 units before assembly.
+*/
+
+Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
+
+//LED output pins. Red is the onboard one, other two are just wired via resistors to +3.3V
+#define RED_LED 13
+#define GREEN_LED 20
+#define YELLOW_LED 21
+
+void setup(void) {
+ Serial.begin(115200);
+
+ //Set all "test ports" to high-impedance for now
+ for(int i=0; i<=11; i++) {
+ pinMode(i, INPUT);
+ }
+
+ pinMode(RED_LED, OUTPUT); led(RED_LED, true);
+ pinMode(GREEN_LED, OUTPUT); led(GREEN_LED, true);
+ pinMode(YELLOW_LED, OUTPUT); led(YELLOW_LED, true);
+
+ delay(100);
+ int serialwait = 100; //Max time to wait for serial port initialization
+ while(!Serial && serialwait)
+ {
+ delay(1);
+ --serialwait;
+ }
+
+ led(RED_LED, false);
+ led(GREEN_LED, false);
+ led(YELLOW_LED, false);
+
+ Serial.println("Running MPR121 test");
+
+ if (!touchSensor.begin(0x5A)) {
+ //Bail out if MPR121 cannot be initialized (chip broken or not present).
+ Serial.println("MPR121 initialization failed!");
+ failure();
+ return;
+ } else {
+ Serial.println("MPR121 init ok.");
+ }
+
+ //Attempt some kind of random seeding
+ srandom(analogRead(0) ^ millis());
+ delay(200);
+
+ run_all();
+}
+
+void led(uint8_t pin, bool state) {
+ //Onboard red LED is wired a bit differently
+ if(pin != RED_LED) {
+ digitalWrite(pin, state?LOW:HIGH);
+ } else {
+ digitalWrite(pin, state?HIGH:LOW);
+ }
+}
+
+void set_touch_pins(uint16_t value)
+{
+ for(int pin=0; pin<12; ++pin)
+ {
+ uint16_t touched = (value >> pin) & 0x0001; //Mask out bit value of pin
+ int teensyPin = 11-pin; //Row of teensy pins is 0-11 but mirrored vs MPR121
+
+ if(touched) {
+ pinMode(teensyPin, INPUT_PULLDOWN);
+ } else {
+ pinMode(teensyPin, INPUT_PULLUP);
+ }
+ }
+}
+
+bool run_test(const char* name, uint16_t value) {
+ Serial.print(name);
+ set_touch_pins(value);
+ led(YELLOW_LED, true);
+ delay(50);
+ led(YELLOW_LED, false);
+ delay(50);
+ uint16_t t = touchSensor.touched();
+ Serial.print(", expected: ");
+ Serial.print(value, HEX);
+ Serial.print(" got: ");
+ Serial.print(t, HEX);
+
+ if(value == t) {
+ Serial.println(" PASS");
+ return true;
+ } else {
+ Serial.println(" FAIL");
+ return false;
+ }
+}
+
+void failure() {
+ led(RED_LED, true);
+ led(GREEN_LED, false);
+ Serial.println("Test failed!");
+}
+
+void success() {
+ led(RED_LED, false);
+ led(GREEN_LED, true);
+ Serial.println("All tests succeeded!");
+}
+
+//Macro to bail out on any failure
+#define TEST(x) if(!x) { failure(); return; }
+
+void run_all(void) {
+
+ TEST(run_test("ALL_OFF", 0x000));
+ TEST(run_test("ALL_ON", 0xFFF));
+
+ //Pins one at a time
+ TEST(run_test("P0", 0x001 << 0));
+ TEST(run_test("P1", 0x001 << 1));
+ TEST(run_test("P2", 0x001 << 2));
+ TEST(run_test("P3", 0x001 << 3));
+ TEST(run_test("P4", 0x001 << 4));
+ TEST(run_test("P5", 0x001 << 5));
+ TEST(run_test("P6", 0x001 << 6));
+ TEST(run_test("P7", 0x001 << 7));
+ TEST(run_test("P8", 0x001 << 8));
+ TEST(run_test("P9", 0x001 << 9));
+ TEST(run_test("P10", 0x001 << 10));
+ TEST(run_test("P11", 0x001 << 11));
+
+ //Alternating pattern
+ TEST(run_test("ODD", 0x0555));
+ TEST(run_test("EVEN", 0x0AAA));
+
+ //A few random ones for good measure
+ for(int i=0; i<8; i++) {
+ TEST(run_test("RANDOM", random() % 0x1000));
+ }
+
+ success();
+}
+
+//Dummy loop does nothing
+void loop() {
+ delay(100);
}
\ No newline at end of file
diff --git a/hardware/bcbreakout/mpx.brd b/hardware/bcbreakout/mpx.brd
index dc38a00..5a37377 100644
--- a/hardware/bcbreakout/mpx.brd
+++ b/hardware/bcbreakout/mpx.brd
@@ -1,1460 +1,1460 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Vs
-GND
-Vout
-BREATH
-SENSOR
-Johan Berglund 2017
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>EAGLE Design Rules</b>
-<p>
-Die Standard-Design-Rules sind so gewählt, dass sie für
-die meisten Anwendungen passen. Sollte ihre Platine
-besondere Anforderungen haben, treffen Sie die erforderlichen
-Einstellungen hier und speichern die Design Rules unter
-einem neuen Namen ab.
-<b>EAGLE Design Rules</b>
-<p>
-The default Design Rules have been set to cover
-a wide range of applications. Your particular design
-may have different requirements, so please make the
-necessary adjustments and save your customized
-design rules under a new name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Since Version 6.2.2 text objects can contain more than one line,
-which will not be processed correctly with this version.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Vs
+GND
+Vout
+BREATH
+SENSOR
+Johan Berglund 2017
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>EAGLE Design Rules</b>
+<p>
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.
+<b>EAGLE Design Rules</b>
+<p>
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Since Version 6.2.2 text objects can contain more than one line,
+which will not be processed correctly with this version.
+
+
+
diff --git a/hardware/bcbreakout/mpx.sch b/hardware/bcbreakout/mpx.sch
index 0400106..cbae89a 100644
--- a/hardware/bcbreakout/mpx.sch
+++ b/hardware/bcbreakout/mpx.sch
@@ -1,4734 +1,4734 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Super Small Outline Package 1317-04
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Super Small Outline Package 1317A-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1351-01 Dual Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1368-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482A-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482B-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482C-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Generic MPX pressure sensor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 3 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 4 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 6 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 3.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 4.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 5.2 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 4.3 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 5.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 6.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 5.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 6.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 7.2 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 8.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 9.1 x 18.2 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 6.2 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 7.4 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 8.7 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 10.8 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 11.3 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 9.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 11.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 13.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 20.5 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 13.7 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 16.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 18.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 19.2 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 20.3 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 15.5 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 6.3 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 15.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 17.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
-Metric Code Size 1005
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
-Metric Code Size 1608
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
-Metric Code Size 2012
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
-Metric Code Size 3216
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
-Metric Code Size 3225
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
-Metric Code Size 4532
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
-Metric Code Size 4564
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b> </b><p>
-Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
-
-
->NAME
->VALUE
-
-
-
-Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-<B>CAPACITOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Super Small Outline Package 1317-04
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Super Small Outline Package 1317A-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1351-01 Dual Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1368-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482A-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482B-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482C-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generic MPX pressure sensor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 3 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 4 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 6 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 3.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 4.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 5.2 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 4.3 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 5.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 6.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 5.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 6.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 7.2 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 8.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 9.1 x 18.2 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 6.2 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 7.4 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 8.7 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 10.8 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 11.3 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 9.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 11.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 13.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 20.5 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 13.7 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 16.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 18.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 19.2 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 20.3 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 15.5 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 6.3 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 15.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 17.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
+Metric Code Size 1005
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
+Metric Code Size 1608
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
+Metric Code Size 2012
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
+Metric Code Size 3216
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
+Metric Code Size 3225
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
+Metric Code Size 4532
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
+Metric Code Size 4564
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b> </b><p>
+Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
+
+
+>NAME
+>VALUE
+
+
+
+Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+<B>CAPACITOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/devboard/Open EVI.brd b/hardware/devboard/Open EVI.brd
index e2bee72..14fd95d 100644
--- a/hardware/devboard/Open EVI.brd
+++ b/hardware/devboard/Open EVI.brd
@@ -1,1861 +1,1861 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TEENSY
-Vin
-GND
-OUT
-GND
-+
-MIDI
-A0
-GND
-Vc
-BC
-47
-47
-A6
-A7
-Vc
-GND
-MPR121
-TOUCH
-TOUCH
-PWR
-Open EVI testing board
-
-
-
-
-Johan Berglund 2017
-9
-12
-6
-3
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>EAGLE Design Rules</b>
-<p>
-Die Standard-Design-Rules sind so gewählt, dass sie für
-die meisten Anwendungen passen. Sollte ihre Platine
-besondere Anforderungen haben, treffen Sie die erforderlichen
-Einstellungen hier und speichern die Design Rules unter
-einem neuen Namen ab.
-<b>EAGLE Design Rules</b>
-<p>
-The default Design Rules have been set to cover
-a wide range of applications. Your particular design
-may have different requirements, so please make the
-necessary adjustments and save your customized
-design rules under a new name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TEENSY
+Vin
+GND
+OUT
+GND
++
+MIDI
+A0
+GND
+Vc
+BC
+47
+47
+A6
+A7
+Vc
+GND
+MPR121
+TOUCH
+TOUCH
+PWR
+Open EVI testing board
+
+
+
+
+Johan Berglund 2017
+9
+12
+6
+3
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>EAGLE Design Rules</b>
+<p>
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.
+<b>EAGLE Design Rules</b>
+<p>
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/devboard/Open EVI.sch b/hardware/devboard/Open EVI.sch
index e8e8cbe..01e8d2f 100644
--- a/hardware/devboard/Open EVI.sch
+++ b/hardware/devboard/Open EVI.sch
@@ -1,4249 +1,4249 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 10 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 12 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 15mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 2.5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 10mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 3.81 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 17.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 6.35 mm
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-<b>RESISTOR</b><p>
-type V234, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V235, grid 17.78 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V526-0, grid 2.5 mm
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 7.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-0922
-
-
-
-<b>RESISTOR</b><p>
-type RDH, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-RDH
-
-
-
-
-<b>Mini MELF 0102 Axial</b>
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b> chip<p>
-Source: http://www.vishay.com/docs/20008/dcrcw.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR52<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR53<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR54<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR56<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC60<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Package 4527</b><p>
-Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
-Source: http://www.vishay.com .. dcrcw.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
-Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
-Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<B>RESISTOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-<b>TINY SWITCH</b> ON - ON<p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 10 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 12 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 15mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 2.5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 10mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 3.81 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 17.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 6.35 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+<b>RESISTOR</b><p>
+type V234, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V235, grid 17.78 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V526-0, grid 2.5 mm
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 7.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0922
+
+
+
+<b>RESISTOR</b><p>
+type RDH, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+RDH
+
+
+
+
+<b>Mini MELF 0102 Axial</b>
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b> chip<p>
+Source: http://www.vishay.com/docs/20008/dcrcw.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR52<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR53<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR54<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR56<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC60<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Package 4527</b><p>
+Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
+Source: http://www.vishay.com .. dcrcw.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
+Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
+Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<B>RESISTOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+<b>TINY SWITCH</b> ON - ON<p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/nuevipcbs/Navboard2.brd b/hardware/nuevipcbs/Navboard2.brd
index aef3de1..1531bbc 100644
--- a/hardware/nuevipcbs/Navboard2.brd
+++ b/hardware/nuevipcbs/Navboard2.brd
@@ -1,529 +1,529 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-MENU
-ENTER
-UP
-DOWN
-GND
-GND
-VCC
-SCL
-SDA
-GND
-VCC
-SCL
-SDA
-Johan Berglund 2018
-M
-U
-E
-D
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<h3>SparkFun Electronics' Retired foot prints</h3>
-In this library you'll find all manner of retired footprints for resistors, capacitors, board names, ICs, etc., that are <b> no longer used</b> in our catalog.
-<br>
-<br>
-We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
-<br>
-<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
-<br>
-<br>
-<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
-<br>
-<br>
-You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.
-
-
-<b>OMRON SWITCH</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>EAGLE Design Rules</b>
-<p>
-Die Standard-Design-Rules sind so gewählt, dass sie für
-die meisten Anwendungen passen. Sollte ihre Platine
-besondere Anforderungen haben, treffen Sie die erforderlichen
-Einstellungen hier und speichern die Design Rules unter
-einem neuen Namen ab.
-<b>EAGLE Design Rules</b>
-<p>
-The default Design Rules have been set to cover
-a wide range of applications. Your particular design
-may have different requirements, so please make the
-necessary adjustments and save your customized
-design rules under a new name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+MENU
+ENTER
+UP
+DOWN
+GND
+GND
+VCC
+SCL
+SDA
+GND
+VCC
+SCL
+SDA
+Johan Berglund 2018
+M
+U
+E
+D
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<h3>SparkFun Electronics' Retired foot prints</h3>
+In this library you'll find all manner of retired footprints for resistors, capacitors, board names, ICs, etc., that are <b> no longer used</b> in our catalog.
+<br>
+<br>
+We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
+<br>
+<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
+<br>
+<br>
+<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
+<br>
+<br>
+You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.
+
+
+<b>OMRON SWITCH</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>EAGLE Design Rules</b>
+<p>
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.
+<b>EAGLE Design Rules</b>
+<p>
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/nuevipcbs/Navboard2.sch b/hardware/nuevipcbs/Navboard2.sch
index b9bddd7..0fabdc4 100644
--- a/hardware/nuevipcbs/Navboard2.sch
+++ b/hardware/nuevipcbs/Navboard2.sch
@@ -1,519 +1,519 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h3>SparkFun Electronics' Retired foot prints</h3>
-In this library you'll find all manner of retired footprints for resistors, capacitors, board names, ICs, etc., that are <b> no longer used</b> in our catalog.
-<br>
-<br>
-We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
-<br>
-<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
-<br>
-<br>
-<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
-<br>
-<br>
-You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.
-
-
-<b>OMRON SWITCH</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->Value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-<b>Momentary Switch</b><br>
-Button commonly used for reset or general input.<br>
-Spark Fun Electronics SKU : COM-00097<br>
-SMT- SWCH-08247
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Pin header 1x1 for 0.1" spacing</b>
-<p>
-With round pins
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>SparkFun Electronics' Retired foot prints</h3>
+In this library you'll find all manner of retired footprints for resistors, capacitors, board names, ICs, etc., that are <b> no longer used</b> in our catalog.
+<br>
+<br>
+We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
+<br>
+<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
+<br>
+<br>
+<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
+<br>
+<br>
+You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.
+
+
+<b>OMRON SWITCH</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+<b>Momentary Switch</b><br>
+Button commonly used for reset or general input.<br>
+Spark Fun Electronics SKU : COM-00097<br>
+SMT- SWCH-08247
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Pin header 1x1 for 0.1" spacing</b>
+<p>
+With round pins
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/nuevipcbs/NuEVI.brd b/hardware/nuevipcbs/NuEVI.brd
index 5d7136b..3b63d96 100644
--- a/hardware/nuevipcbs/NuEVI.brd
+++ b/hardware/nuevipcbs/NuEVI.brd
@@ -1,3248 +1,3248 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TEENSY
-+
--
-S
-G
-+
-MIDI
-GND
-47
-47
-A6
-A7
-Vcc
-GND
-MPR121
-PWR
-NuEVI main board
-
-
-
-
-Johan Berglund 2018
-12
-
-
-
-
-
-
-
-BITE
-EC
-VIBRATO
-VUSB
-R1
-R2
-R3
-R4
-R5
-K1
-K2
-K3
-K5
-K6
-K7
-PD
-SK
-Pu
-Pd
-OLED
-GND
-Vcc
-SCL
-SDA
-M
-U
-E
-D
-NAV
-103
-105
-471
-MP3V5004GP
-11
-LED
-B
-P
-GND
-100
-100
-K4
-
-
-
-
-
-
-KEYS/ROLLERS
-DAC
-+
--
-10K
-10K
-47
-47
-BAT
-RAW/SW
-+
--
-SCL
-SDA
-BCV
-GND
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>EAGLE Design Rules</b>
-<p>
-Die Standard-Design-Rules sind so gewählt, dass sie für
-die meisten Anwendungen passen. Sollte ihre Platine
-besondere Anforderungen haben, treffen Sie die erforderlichen
-Einstellungen hier und speichern die Design Rules unter
-einem neuen Namen ab.
-<b>EAGLE Design Rules</b>
-<p>
-The default Design Rules have been set to cover
-a wide range of applications. Your particular design
-may have different requirements, so please make the
-necessary adjustments and save your customized
-design rules under a new name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TEENSY
++
+-
+S
+G
++
+MIDI
+GND
+47
+47
+A6
+A7
+Vcc
+GND
+MPR121
+PWR
+NuEVI main board
+
+
+
+
+Johan Berglund 2018
+12
+
+
+
+
+
+
+
+BITE
+EC
+VIBRATO
+VUSB
+R1
+R2
+R3
+R4
+R5
+K1
+K2
+K3
+K5
+K6
+K7
+PD
+SK
+Pu
+Pd
+OLED
+GND
+Vcc
+SCL
+SDA
+M
+U
+E
+D
+NAV
+103
+105
+471
+MP3V5004GP
+11
+LED
+B
+P
+GND
+100
+100
+K4
+
+
+
+
+
+
+KEYS/ROLLERS
+DAC
++
+-
+10K
+10K
+47
+47
+BAT
+RAW/SW
++
+-
+SCL
+SDA
+BCV
+GND
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>EAGLE Design Rules</b>
+<p>
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.
+<b>EAGLE Design Rules</b>
+<p>
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/nuevipcbs/NuEVI.sch b/hardware/nuevipcbs/NuEVI.sch
index 5dce9c3..ab2dc4a 100644
--- a/hardware/nuevipcbs/NuEVI.sch
+++ b/hardware/nuevipcbs/NuEVI.sch
@@ -1,9008 +1,9008 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 10 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 12 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 15mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 2.5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 10mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 3.81 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 17.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 6.35 mm
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-<b>RESISTOR</b><p>
-type V234, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V235, grid 17.78 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V526-0, grid 2.5 mm
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 7.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-0922
-
-
-
-<b>RESISTOR</b><p>
-type RDH, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-RDH
-
-
-
-
-<b>Mini MELF 0102 Axial</b>
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b> chip<p>
-Source: http://www.vishay.com/docs/20008/dcrcw.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR52<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR53<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR54<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR56<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC60<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Package 4527</b><p>
-Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
-Source: http://www.vishay.com .. dcrcw.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
-Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
-Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<B>RESISTOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-<b>TINY SWITCH</b> ON - ON<p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Super Small Outline Package 1317-04
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Super Small Outline Package 1317A-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1351-01 Dual Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1368-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482A-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482B-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482C-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Generic MPX pressure sensor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 3 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 4 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 6 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 3.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 4.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 5.2 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 4.3 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 5.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 6.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 5.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 6.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 7.2 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 8.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 9.1 x 18.2 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 6.2 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 7.4 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 8.7 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 10.8 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 11.3 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 9.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 11.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 13.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 20.5 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 13.7 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 16.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 18.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 19.2 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 20.3 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 15.5 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 6.3 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 15.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 17.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
-Metric Code Size 1005
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
-Metric Code Size 1608
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
-Metric Code Size 2012
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
-Metric Code Size 3216
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
-Metric Code Size 3225
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
-Metric Code Size 4532
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
-Metric Code Size 4564
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b> </b><p>
-Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
-
-
->NAME
->VALUE
-
-
-
-Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-<B>CAPACITOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 10 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 12 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 15mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 2.5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 10mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 3.81 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 17.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 6.35 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+<b>RESISTOR</b><p>
+type V234, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V235, grid 17.78 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V526-0, grid 2.5 mm
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 7.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0922
+
+
+
+<b>RESISTOR</b><p>
+type RDH, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+RDH
+
+
+
+
+<b>Mini MELF 0102 Axial</b>
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b> chip<p>
+Source: http://www.vishay.com/docs/20008/dcrcw.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR52<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR53<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR54<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR56<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC60<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Package 4527</b><p>
+Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
+Source: http://www.vishay.com .. dcrcw.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
+Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
+Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<B>RESISTOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+<b>TINY SWITCH</b> ON - ON<p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Super Small Outline Package 1317-04
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Super Small Outline Package 1317A-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1351-01 Dual Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1368-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482A-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482B-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482C-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generic MPX pressure sensor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 3 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 4 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 6 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 3.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 4.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 5.2 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 4.3 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 5.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 6.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 5.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 6.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 7.2 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 8.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 9.1 x 18.2 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 6.2 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 7.4 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 8.7 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 10.8 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 11.3 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 9.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 11.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 13.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 20.5 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 13.7 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 16.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 18.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 19.2 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 20.3 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 15.5 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 6.3 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 15.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 17.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
+Metric Code Size 1005
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
+Metric Code Size 1608
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
+Metric Code Size 2012
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
+Metric Code Size 3216
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
+Metric Code Size 3225
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
+Metric Code Size 4532
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
+Metric Code Size 4564
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b> </b><p>
+Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
+
+
+>NAME
+>VALUE
+
+
+
+Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+<B>CAPACITOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/pla-pkey-nurad.scad b/hardware/pla-pkey-nurad.scad
index 13d16bf..c4d94a2 100644
--- a/hardware/pla-pkey-nurad.scad
+++ b/hardware/pla-pkey-nurad.scad
@@ -1,35 +1,35 @@
-w=8; //key width, default 8
-wc=10; //mounting end outer diameter, default 10
-l=15; //key length (range normally increase in steps of 5)
-hght=3; //key height, default 3,3.5 and 4
-angl=25; //key end angle, default 25
-estp=1.5; //end step before angle, default 0.5
-noext=0; //set to 1 to get just the round part
-
-// 20/3,26/3.5,32/4 sk: 15/3 (estp 1.5)
-
- module prism(l, w, h){
- polyhedron(
- points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
- faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
- );
- }
-
-difference(){
- translate([0,0,0]) cylinder(h=hght,r=wc/2,,$fn=100);
- translate([0,0,hght-2]) cylinder(h=2.2,r1=1.6,r2=3.2,$fn=100);
- translate([0,0,-1]) cylinder(h=hght+5,r=1.6,$fn=100);
- //translate([-8,-8,0]) cube([16,2,3]);
-
-}
-if (!noext){
-difference(){
- translate([-w/2,-l+1,0]) cube([w,l,hght]);
- translate([0,0,hght-2]) cylinder(h=2.2,r1=1.6,r2=3.2,$fn=100);
- translate([0,0,-1]) cylinder(h=hght+5,r=1.6,$fn=100);
- translate([w/2-1,-l,hght]) rotate([180,0,90]) prism(l,1,1);
- translate([-w/2-0.001,-l,hght-1]) rotate([90,0,90]) prism(l,1,1);
- //translate([-w/2,-l+5.5,hght]) rotate([160,0,0])prism(w,15,15);
- translate([-w/2,-l,estp]) rotate([angl,0,0])cube(40,40,40);
-}
-}
+w=8; //key width, default 8
+wc=10; //mounting end outer diameter, default 10
+l=15; //key length (range normally increase in steps of 5)
+hght=3; //key height, default 3,3.5 and 4
+angl=25; //key end angle, default 25
+estp=1.5; //end step before angle, default 0.5
+noext=0; //set to 1 to get just the round part
+
+// 20/3,26/3.5,32/4 sk: 15/3 (estp 1.5)
+
+ module prism(l, w, h){
+ polyhedron(
+ points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
+ faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
+ );
+ }
+
+difference(){
+ translate([0,0,0]) cylinder(h=hght,r=wc/2,,$fn=100);
+ translate([0,0,hght-2]) cylinder(h=2.2,r1=1.6,r2=3.2,$fn=100);
+ translate([0,0,-1]) cylinder(h=hght+5,r=1.6,$fn=100);
+ //translate([-8,-8,0]) cube([16,2,3]);
+
+}
+if (!noext){
+difference(){
+ translate([-w/2,-l+1,0]) cube([w,l,hght]);
+ translate([0,0,hght-2]) cylinder(h=2.2,r1=1.6,r2=3.2,$fn=100);
+ translate([0,0,-1]) cylinder(h=hght+5,r=1.6,$fn=100);
+ translate([w/2-1,-l,hght]) rotate([180,0,90]) prism(l,1,1);
+ translate([-w/2-0.001,-l,hght-1]) rotate([90,0,90]) prism(l,1,1);
+ //translate([-w/2,-l+5.5,hght]) rotate([160,0,0])prism(w,15,15);
+ translate([-w/2,-l,estp]) rotate([angl,0,0])cube(40,40,40);
+}
+}
diff --git a/hardware/rev-a-nuevi/NuEVI.brd b/hardware/rev-a-nuevi/NuEVI.brd
index 8139682..0bca5df 100644
--- a/hardware/rev-a-nuevi/NuEVI.brd
+++ b/hardware/rev-a-nuevi/NuEVI.brd
@@ -1,3131 +1,3131 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TEENSY
-+
--
-S
-G
-+
-MIDI
-GND
-47
-47
-A6
-A7
-Vcc
-GND
-MPR121
-TOUCH
-PWR
-NuEVI main board
-
-
-
-
-Johan Berglund 2017
-12
-
-
-
-
-
-
-
-BITE
-EC
-VIBRATO
-VUSB
-R1
-R2
-R3
-R4
-R5
-R6
-K1
-K2
-K3
-K5
-K6
-K7
-S1
-S2
-Pu
-Pd
-OLED
-GND
-Vcc
-SCL
-SDA
-M
-U
-E
-D
-NAV
-
-
-
-
-
-
-BATT
-
-
-USB
-103
-105
-471
-MP3V5004GP
-11
-LED
-B
-P
-GND
-100
-100
-AUX
-AUX
-K4
-GND
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>EAGLE Design Rules</b>
-<p>
-Die Standard-Design-Rules sind so gewählt, dass sie für
-die meisten Anwendungen passen. Sollte ihre Platine
-besondere Anforderungen haben, treffen Sie die erforderlichen
-Einstellungen hier und speichern die Design Rules unter
-einem neuen Namen ab.
-<b>EAGLE Design Rules</b>
-<p>
-The default Design Rules have been set to cover
-a wide range of applications. Your particular design
-may have different requirements, so please make the
-necessary adjustments and save your customized
-design rules under a new name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TEENSY
++
+-
+S
+G
++
+MIDI
+GND
+47
+47
+A6
+A7
+Vcc
+GND
+MPR121
+TOUCH
+PWR
+NuEVI main board
+
+
+
+
+Johan Berglund 2017
+12
+
+
+
+
+
+
+
+BITE
+EC
+VIBRATO
+VUSB
+R1
+R2
+R3
+R4
+R5
+R6
+K1
+K2
+K3
+K5
+K6
+K7
+S1
+S2
+Pu
+Pd
+OLED
+GND
+Vcc
+SCL
+SDA
+M
+U
+E
+D
+NAV
+
+
+
+
+
+
+BATT
+
+
+USB
+103
+105
+471
+MP3V5004GP
+11
+LED
+B
+P
+GND
+100
+100
+AUX
+AUX
+K4
+GND
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>EAGLE Design Rules</b>
+<p>
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.
+<b>EAGLE Design Rules</b>
+<p>
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hardware/rev-a-nuevi/NuEVI.sch b/hardware/rev-a-nuevi/NuEVI.sch
index eba6e37..1ca9c12 100644
--- a/hardware/rev-a-nuevi/NuEVI.sch
+++ b/hardware/rev-a-nuevi/NuEVI.sch
@@ -1,8900 +1,8900 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Pin Header Connectors</b><p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>PIN HEADER</b>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<map name="nav_main">
-<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
-<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
-<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
-<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
-<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
-<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
-<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
-<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
-<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
-<area shape="default" nohref>
-</map>
-
-<html>
-
-<title></title>
-
- <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
-
-<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
-<tr valign="top">
-
-</td>
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-</BODY></HTML>
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-wave soldering
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b> wave soldering<p>
-Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.10 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.12 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-MELF 0.25 W
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0204, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 10 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 12 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 15mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 2.5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 5 mm
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0207, grid 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 10mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0309, grid 2.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0411, grid 3.81 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0414, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 17.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0617, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 5 mm
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b><p>
-type 0613, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 22.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-
-<b>RESISTOR</b><p>
-type 0817, grid 6.35 mm
-
-
-
-
-
-
->NAME
->VALUE
-0817
-
-
-
-<b>RESISTOR</b><p>
-type V234, grid 12.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V235, grid 17.78 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>RESISTOR</b><p>
-type V526-0, grid 2.5 mm
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC2211</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC3715</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Reflow Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CECC Size RC6123</b> Wave Soldering<p>
-source Beyschlag
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>RESISTOR</b><p>
-type 0922, grid 7.5 mm
-
-
-
-
-
-
->NAME
->VALUE
-0922
-
-
-
-<b>RESISTOR</b><p>
-type RDH, grid 15 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-RDH
-
-
-
-
-<b>Mini MELF 0102 Axial</b>
-
-
-
-
->NAME
->VALUE
-
-
-
-<b>RESISTOR</b> chip<p>
-Source: http://www.vishay.com/docs/20008/dcrcw.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR52<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR53<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR54<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RBR56<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC55<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
-MIL SIZE RNC60<br>
-Source: VISHAY .. vta56.pdf
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Package 4527</b><p>
-Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Wirewound Resistors, Precision Power</b><p>
-Source: VISHAY wscwsn.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
-Source: http://www.vishay.com .. dcrcw.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
-Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
-Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<B>RESISTOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Switches</b><p>
-Marquardt, Siemens, C&K, ITT, and others<p>
-<author>Created by librarian@cadsoft.de</author>
-
-
-<b>TINY SWITCH</b><p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-<b>TINY SWITCH</b> ON - ON<p>
-Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h1>Freescale Semiconductor MPX series pressure sensors</h1>
-
-<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
-
-
-Super Small Outline Package 1317-04
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Super Small Outline Package 1317A-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1351-01 Dual Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1368-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 1369-01 Side Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package 482A-01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482B-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Small Outline Package Through-Hole 482C-03
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Basic Element Unibody Package 867-08
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867B-04
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Side Ported (DP) Unibody Package 867C-05
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Side Ported (AP, GP) Unibody Package 867E-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Horizontal Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-Pressure Top Ported Unibody Package 867F-03
-<br>Vertical Mount
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Generic MPX pressure sensor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<b>Resistors, Capacitors, Inductors</b><p>
-Based on the previous libraries:
-<ul>
-<li>r.lbr
-<li>cap.lbr
-<li>cap-fe.lbr
-<li>captant.lbr
-<li>polcap.lbr
-<li>ipc-smd.lbr
-</ul>
-All SMD packages are defined according to the IPC specifications and CECC<p>
-<author>Created by librarian@cadsoft.de</author><p>
-<p>
-for Electrolyt Capacitors see also :<p>
-www.bccomponents.com <p>
-www.panasonic.com<p>
-www.kemet.com<p>
-http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
-<p>
-for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
-
-<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
-<tr valign="top">
-
-<! <td width="10"> </td>
-<td width="90%">
-
-<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
-<P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
- </B>
- </TD>
- <TD ALIGN=CENTER>
- <B>
- <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
- </B>
- </TD><TD> </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
- 3005P<BR>
- 3006P<BR>
- 3006W<BR>
- 3006Y<BR>
- 3009P<BR>
- 3009W<BR>
- 3009Y<BR>
- 3057J<BR>
- 3057L<BR>
- 3057P<BR>
- 3057Y<BR>
- 3059J<BR>
- 3059L<BR>
- 3059P<BR>
- 3059Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 89P<BR>
- 89W<BR>
- 89X<BR>
- 89PH<BR>
- 76P<BR>
- 89XH<BR>
- 78SLT<BR>
- 78L ALT<BR>
- 56P ALT<BR>
- 78P ALT<BR>
- T8S<BR>
- 78L<BR>
- 56P<BR>
- 78P<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- T18/784<BR>
- 783<BR>
- 781<BR>
- -<BR>
- -<BR>
- -<BR>
- 2199<BR>
- 1697/1897<BR>
- 1680/1880<BR>
- 2187<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 8035EKP/CT20/RJ-20P<BR>
- -<BR>
- RJ-20X<BR>
- -<BR>
- -<BR>
- -<BR>
- 1211L<BR>
- 8012EKQ ALT<BR>
- 8012EKR ALT<BR>
- 1211P<BR>
- 8012EKJ<BR>
- 8012EKL<BR>
- 8012EKQ<BR>
- 8012EKR<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 2101P<BR>
- 2101W<BR>
- 2101Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 2102L<BR>
- 2102S<BR>
- 2102Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVMCOG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 43P<BR>
- 43W<BR>
- 43Y<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 40L<BR>
- 40P<BR>
- 40Y<BR>
- 70Y-T602<BR>
- 70L<BR>
- 70P<BR>
- 70Y<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- RT/RTR12<BR>
- -<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR>
- RJ/RJR12<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3250L<BR>
- 3250P<BR>
- 3250W<BR>
- 3250X<BR>
- 3252P<BR>
- 3252W<BR>
- 3252X<BR>
- 3260P<BR>
- 3260W<BR>
- 3260X<BR>
- 3262P<BR>
- 3262W<BR>
- 3262X<BR>
- 3266P<BR>
- 3266W<BR>
- 3266X<BR>
- 3290H<BR>
- 3290P<BR>
- 3290W<BR>
- 3292P<BR>
- 3292W<BR>
- 3292X<BR>
- 3296P<BR>
- 3296W<BR>
- 3296X<BR>
- 3296Y<BR>
- 3296Z<BR>
- 3299P<BR>
- 3299W<BR>
- 3299X<BR>
- 3299Y<BR>
- 3299Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66X ALT<BR>
- -<BR>
- 64W ALT<BR>
- -<BR>
- 64P ALT<BR>
- 64W ALT<BR>
- 64X ALT<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 66X ALT<BR>
- 66P ALT<BR>
- 66W ALT<BR>
- 66P<BR>
- 66W<BR>
- 66X<BR>
- 67P<BR>
- 67W<BR>
- 67X<BR>
- 67Y<BR>
- 67Z<BR>
- 68P<BR>
- 68W<BR>
- 68X<BR>
- 67Y ALT<BR>
- 67Z ALT<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 5050<BR>
- 5091<BR>
- 5080<BR>
- 5087<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- T63YB<BR>
- T63XB<BR>
- -<BR>
- -<BR>
- -<BR>
- 5887<BR>
- 5891<BR>
- 5880<BR>
- -<BR>
- -<BR>
- -<BR>
- T93Z<BR>
- T93YA<BR>
- T93XA<BR>
- T93YB<BR>
- T93XB<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 8026EKP<BR>
- 8026EKW<BR>
- 8026EKM<BR>
- 8026EKP<BR>
- 8026EKB<BR>
- 8026EKM<BR>
- 1309X<BR>
- 1309P<BR>
- 1309W<BR>
- 8024EKP<BR>
- 8024EKW<BR>
- 8024EKN<BR>
- RJ-9P/CT9P<BR>
- RJ-9W<BR>
- RJ-9X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- 3103P<BR>
- 3103Y<BR>
- 3103Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3105P/3106P<BR>
- 3105W/3106W<BR>
- 3105X/3106X<BR>
- 3105Y/3106Y<BR>
- 3105Z/3105Z<BR>
- 3102P<BR>
- 3102W<BR>
- 3102X<BR>
- 3102Y<BR>
- 3102Z<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMCBG<BR>
- EVMCCG<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 55-1-X<BR>
- 55-4-X<BR>
- 55-3-X<BR>
- 55-2-X<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 50-2-X<BR>
- 50-4-X<BR>
- 50-3-X<BR>
- -<BR>
- -<BR>
- -<BR>
- 64P<BR>
- 64W<BR>
- 64X<BR>
- 64Y<BR>
- 64Z<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RT/RTR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RJ/RJR22<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RT/RTR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RJ/RJR26<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RT/RTR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- RJ/RJR24<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=8>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
- </TD>
- <TD ALIGN=CENTER>
- <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3323P<BR>
- 3323S<BR>
- 3323W<BR>
- 3329H<BR>
- 3329P<BR>
- 3329W<BR>
- 3339H<BR>
- 3339P<BR>
- 3339W<BR>
- 3352E<BR>
- 3352H<BR>
- 3352K<BR>
- 3352P<BR>
- 3352T<BR>
- 3352V<BR>
- 3352W<BR>
- 3362H<BR>
- 3362M<BR>
- 3362P<BR>
- 3362R<BR>
- 3362S<BR>
- 3362U<BR>
- 3362W<BR>
- 3362X<BR>
- 3386B<BR>
- 3386C<BR>
- 3386F<BR>
- 3386H<BR>
- 3386K<BR>
- 3386M<BR>
- 3386P<BR>
- 3386S<BR>
- 3386W<BR>
- 3386X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 25P<BR>
- 25S<BR>
- 25RX<BR>
- 82P<BR>
- 82M<BR>
- 82PA<BR>
- -<BR>
- -<BR>
- -<BR>
- 91E<BR>
- 91X<BR>
- 91T<BR>
- 91B<BR>
- 91A<BR>
- 91V<BR>
- 91W<BR>
- 25W<BR>
- 25V<BR>
- 25P<BR>
- -<BR>
- 25S<BR>
- 25U<BR>
- 25RX<BR>
- 25X<BR>
- 72XW<BR>
- 72XL<BR>
- 72PM<BR>
- 72RX<BR>
- -<BR>
- 72PX<BR>
- 72P<BR>
- 72RXW<BR>
- 72RXL<BR>
- 72X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- T7YB<BR>
- T7YA<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- TXD<BR>
- TYA<BR>
- TYP<BR>
- -<BR>
- TYD<BR>
- TX<BR>
- -<BR>
- 150SX<BR>
- 100SX<BR>
- 102T<BR>
- 101S<BR>
- 190T<BR>
- 150TX<BR>
- 101<BR>
- -<BR>
- -<BR>
- 101SX<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ET6P<BR>
- ET6S<BR>
- ET6X<BR>
- RJ-6W/8014EMW<BR>
- RJ-6P/8014EMP<BR>
- RJ-6X/8014EMX<BR>
- TM7W<BR>
- TM7P<BR>
- TM7X<BR>
- -<BR>
- 8017SMS<BR>
- -<BR>
- 8017SMB<BR>
- 8017SMA<BR>
- -<BR>
- -<BR>
- CT-6W<BR>
- CT-6H<BR>
- CT-6P<BR>
- CT-6R<BR>
- -<BR>
- CT-6V<BR>
- CT-6X<BR>
- -<BR>
- -<BR>
- 8038EKV<BR>
- -<BR>
- 8038EKX<BR>
- -<BR>
- -<BR>
- 8038EKP<BR>
- 8038EKZ<BR>
- 8038EKW<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 3321H<BR>
- 3321P<BR>
- 3321N<BR>
- 1102H<BR>
- 1102P<BR>
- 1102T<BR>
- RVA0911V304A<BR>
- -<BR>
- RVA0911H413A<BR>
- RVG0707V100A<BR>
- RVA0607V(H)306A<BR>
- RVA1214H213A<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 3104B<BR>
- 3104C<BR>
- 3104F<BR>
- 3104H<BR>
- -<BR>
- 3104M<BR>
- 3104P<BR>
- 3104S<BR>
- 3104W<BR>
- 3104X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- EVMQ0G<BR>
- EVMQIG<BR>
- EVMQ3G<BR>
- EVMS0G<BR>
- EVMQ0G<BR>
- EVMG0G<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMK4GA00B<BR>
- EVM30GA00B<BR>
- EVMK0GA00B<BR>
- EVM38GA00B<BR>
- EVMB6<BR>
- EVLQ0<BR>
- -<BR>
- EVMMSG<BR>
- EVMMBG<BR>
- EVMMAG<BR>
- -<BR>
- -<BR>
- EVMMCS<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- EVMM1<BR>
- -<BR>
- -<BR>
- EVMM0<BR>
- -<BR>
- -<BR>
- EVMM3<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- 62-3-1<BR>
- 62-1-2<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67R<BR>
- -<BR>
- 67P<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- 67X<BR>
- 63V<BR>
- 63S<BR>
- 63M<BR>
- -<BR>
- -<BR>
- 63H<BR>
- 63P<BR>
- -<BR>
- -<BR>
- 63X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- RJ/RJR50<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P> <P>
-<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
- <TR>
- <TD COLSPAN=7>
- <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
- <P>
- <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3224G<BR>
- 3224J<BR>
- 3224W<BR>
- 3269P<BR>
- 3269W<BR>
- 3269X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 44G<BR>
- 44J<BR>
- 44W<BR>
- 84P<BR>
- 84W<BR>
- 84X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST63Z<BR>
- ST63Y<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- ST5P<BR>
- ST5W<BR>
- ST5X<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=7>
- <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
- </TD>
- <TD>
- <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
- </TD>
- </TR>
- <TR>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 3314G<BR>
- 3314J<BR>
- 3364A/B<BR>
- 3364C/D<BR>
- 3364W/X<BR>
- 3313G<BR>
- 3313J<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- 23B<BR>
- 23A<BR>
- 21X<BR>
- 21W<BR>
- -<BR>
- 22B<BR>
- 22A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST5YL/ST53YL<BR>
- ST5YJ/5T53YJ<BR>
- ST-23A<BR>
- ST-22B<BR>
- ST-22<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- ST-4B<BR>
- ST-4A<BR>
- -<BR>
- -<BR>
- -<BR>
- ST-3B<BR>
- ST-3A<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- EVM-6YS<BR>
- EVM-1E<BR>
- EVM-1G<BR>
- EVM-1D<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- G4B<BR>
- G4A<BR>
- TR04-3S1<BR>
- TRG04-2S1<BR>
- -<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
- -<BR>
- -<BR>
- DVR-43A<BR>
- CVR-42C<BR>
- CVR-42A/C<BR>
- -<BR>
- -<BR></FONT>
- </TD>
- </TR>
-</TABLE>
-<P>
-<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
-<P>
-
-
-<P>
-</td>
-</tr>
-</table>
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 2.5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 3 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 4 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 5 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm, outline 6 x 5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.4 x 4.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 2.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 4.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 5.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 3.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 4.2 x 10.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 5.2 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 4.3 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 5.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm, outline 6.4 x 13.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 5.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 6.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 7.2 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 8.4 x 18.3 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 15 mm, outline 9.1 x 18.2 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 6.2 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 7.4 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 8.7 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 10.8 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 22.5 mm, outline 11.3 x 26.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 9.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 11.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 13.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 20.5 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 13.7 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 16.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 32.5 mm, outline 18.2 x 37.4 mm
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 19.2 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 20.3 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 5 mm, outline 3.5 x 7.5 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 37.5 mm, outline 15.5 x 41.8 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 7.5 mm, outline 6.3 x 10.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 15.4 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>CAPACITOR</b><p>
-grid 27.5 mm, outline 17.3 x 31.6 mm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
-Metric Code Size 1005
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
-Metric Code Size 1608
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
-Metric Code Size 2012
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
-Metric Code Size 3216
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
-Metric Code Size 3225
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
-Metric Code Size 4532
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
-Metric Code Size 4564
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b> </b><p>
-Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
-
-
->NAME
->VALUE
-
-
-
-Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
-
-
->NAME
->VALUE
-
-
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b><p>
-Source: AVX .. aphvc.pdf
-
-
-
-
->NAME
->VALUE
-
-
-
-
-<b>CAPACITOR</b>
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-
-
->NAME
->VALUE
-
-
-
-
-
-
-
-
-<B>CAPACITOR</B>, European symbol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Pin Header Connectors</b><p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>PIN HEADER</b>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<map name="nav_main">
+<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
+<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
+<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
+<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
+<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
+<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
+<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
+<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
+<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
+<area shape="default" nohref>
+</map>
+
+<html>
+
+<title></title>
+
+ <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
+
+<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
+<tr valign="top">
+
+</td>
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+</BODY></HTML>
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+wave soldering
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b> wave soldering<p>
+Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.10 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.12 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+MELF 0.25 W
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0204, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 10 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 12 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 15mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 2.5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 5 mm
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0207, grid 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 10mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0309, grid 2.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0411, grid 3.81 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0414, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 17.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0617, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b><p>
+type 0613, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 22.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+
+<b>RESISTOR</b><p>
+type 0817, grid 6.35 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0817
+
+
+
+<b>RESISTOR</b><p>
+type V234, grid 12.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V235, grid 17.78 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>RESISTOR</b><p>
+type V526-0, grid 2.5 mm
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC2211</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC3715</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Reflow Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CECC Size RC6123</b> Wave Soldering<p>
+source Beyschlag
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>RESISTOR</b><p>
+type 0922, grid 7.5 mm
+
+
+
+
+
+
+>NAME
+>VALUE
+0922
+
+
+
+<b>RESISTOR</b><p>
+type RDH, grid 15 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+RDH
+
+
+
+
+<b>Mini MELF 0102 Axial</b>
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<b>RESISTOR</b> chip<p>
+Source: http://www.vishay.com/docs/20008/dcrcw.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR52<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR53<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR54<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RBR56<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC55<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p>
+MIL SIZE RNC60<br>
+Source: VISHAY .. vta56.pdf
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Package 4527</b><p>
+Source: http://www.vishay.com/docs/31059/wsrhigh.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Wirewound Resistors, Precision Power</b><p>
+Source: VISHAY wscwsn.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p>
+Source: http://www.vishay.com .. dcrcw.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p>
+Source: http://www.murata.com .. GRM43DR72E224KW01.pdf
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p>
+Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<B>RESISTOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Switches</b><p>
+Marquardt, Siemens, C&K, ITT, and others<p>
+<author>Created by librarian@cadsoft.de</author>
+
+
+<b>TINY SWITCH</b><p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+<b>TINY SWITCH</b> ON - ON<p>
+Source: http://www2.produktinfo.conrad.com/datenblaetter/700000-724999/705152-da-01-de-Subminiaturschalter_TL_36YO.pdf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h1>Freescale Semiconductor MPX series pressure sensors</h1>
+
+<p>Created by <a href="mailto:bkilian@interia.pl">bkilian@interia.pl</a> (Poland)</p>
+
+
+Super Small Outline Package 1317-04
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Super Small Outline Package 1317A-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1351-01 Dual Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1368-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 1369-01 Side Port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package 482A-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482B-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Small Outline Package Through-Hole 482C-03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Basic Element Unibody Package 867-08
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867B-04
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Side Ported (DP) Unibody Package 867C-05
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Side Ported (AP, GP) Unibody Package 867E-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Horizontal Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+Pressure Top Ported Unibody Package 867F-03
+<br>Vertical Mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generic MPX pressure sensor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<b>Resistors, Capacitors, Inductors</b><p>
+Based on the previous libraries:
+<ul>
+<li>r.lbr
+<li>cap.lbr
+<li>cap-fe.lbr
+<li>captant.lbr
+<li>polcap.lbr
+<li>ipc-smd.lbr
+</ul>
+All SMD packages are defined according to the IPC specifications and CECC<p>
+<author>Created by librarian@cadsoft.de</author><p>
+<p>
+for Electrolyt Capacitors see also :<p>
+www.bccomponents.com <p>
+www.panasonic.com<p>
+www.kemet.com<p>
+http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b>
+<p>
+for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
+
+<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0>
+<tr valign="top">
+
+<! <td width="10"> </td>
+<td width="90%">
+
+<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
+<P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
+ </B>
+ </TD>
+ <TD ALIGN=CENTER>
+ <B>
+ <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
+ </B>
+ </TD><TD> </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
+ 3005P<BR>
+ 3006P<BR>
+ 3006W<BR>
+ 3006Y<BR>
+ 3009P<BR>
+ 3009W<BR>
+ 3009Y<BR>
+ 3057J<BR>
+ 3057L<BR>
+ 3057P<BR>
+ 3057Y<BR>
+ 3059J<BR>
+ 3059L<BR>
+ 3059P<BR>
+ 3059Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 89P<BR>
+ 89W<BR>
+ 89X<BR>
+ 89PH<BR>
+ 76P<BR>
+ 89XH<BR>
+ 78SLT<BR>
+ 78L ALT<BR>
+ 56P ALT<BR>
+ 78P ALT<BR>
+ T8S<BR>
+ 78L<BR>
+ 56P<BR>
+ 78P<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ T18/784<BR>
+ 783<BR>
+ 781<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2199<BR>
+ 1697/1897<BR>
+ 1680/1880<BR>
+ 2187<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 8035EKP/CT20/RJ-20P<BR>
+ -<BR>
+ RJ-20X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 1211L<BR>
+ 8012EKQ ALT<BR>
+ 8012EKR ALT<BR>
+ 1211P<BR>
+ 8012EKJ<BR>
+ 8012EKL<BR>
+ 8012EKQ<BR>
+ 8012EKR<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 2101P<BR>
+ 2101W<BR>
+ 2101Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 2102L<BR>
+ 2102S<BR>
+ 2102Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVMCOG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 43P<BR>
+ 43W<BR>
+ 43Y<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 40L<BR>
+ 40P<BR>
+ 40Y<BR>
+ 70Y-T602<BR>
+ 70L<BR>
+ 70P<BR>
+ 70Y<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ RT/RTR12<BR>
+ -<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR>
+ RJ/RJR12<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3250L<BR>
+ 3250P<BR>
+ 3250W<BR>
+ 3250X<BR>
+ 3252P<BR>
+ 3252W<BR>
+ 3252X<BR>
+ 3260P<BR>
+ 3260W<BR>
+ 3260X<BR>
+ 3262P<BR>
+ 3262W<BR>
+ 3262X<BR>
+ 3266P<BR>
+ 3266W<BR>
+ 3266X<BR>
+ 3290H<BR>
+ 3290P<BR>
+ 3290W<BR>
+ 3292P<BR>
+ 3292W<BR>
+ 3292X<BR>
+ 3296P<BR>
+ 3296W<BR>
+ 3296X<BR>
+ 3296Y<BR>
+ 3296Z<BR>
+ 3299P<BR>
+ 3299W<BR>
+ 3299X<BR>
+ 3299Y<BR>
+ 3299Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66X ALT<BR>
+ -<BR>
+ 64W ALT<BR>
+ -<BR>
+ 64P ALT<BR>
+ 64W ALT<BR>
+ 64X ALT<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 66X ALT<BR>
+ 66P ALT<BR>
+ 66W ALT<BR>
+ 66P<BR>
+ 66W<BR>
+ 66X<BR>
+ 67P<BR>
+ 67W<BR>
+ 67X<BR>
+ 67Y<BR>
+ 67Z<BR>
+ 68P<BR>
+ 68W<BR>
+ 68X<BR>
+ 67Y ALT<BR>
+ 67Z ALT<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 5050<BR>
+ 5091<BR>
+ 5080<BR>
+ 5087<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T63YB<BR>
+ T63XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 5887<BR>
+ 5891<BR>
+ 5880<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ T93Z<BR>
+ T93YA<BR>
+ T93XA<BR>
+ T93YB<BR>
+ T93XB<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 8026EKP<BR>
+ 8026EKW<BR>
+ 8026EKM<BR>
+ 8026EKP<BR>
+ 8026EKB<BR>
+ 8026EKM<BR>
+ 1309X<BR>
+ 1309P<BR>
+ 1309W<BR>
+ 8024EKP<BR>
+ 8024EKW<BR>
+ 8024EKN<BR>
+ RJ-9P/CT9P<BR>
+ RJ-9W<BR>
+ RJ-9X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ 3103P<BR>
+ 3103Y<BR>
+ 3103Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3105P/3106P<BR>
+ 3105W/3106W<BR>
+ 3105X/3106X<BR>
+ 3105Y/3106Y<BR>
+ 3105Z/3105Z<BR>
+ 3102P<BR>
+ 3102W<BR>
+ 3102X<BR>
+ 3102Y<BR>
+ 3102Z<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMCBG<BR>
+ EVMCCG<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 55-1-X<BR>
+ 55-4-X<BR>
+ 55-3-X<BR>
+ 55-2-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 50-2-X<BR>
+ 50-4-X<BR>
+ 50-3-X<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 64P<BR>
+ 64W<BR>
+ 64X<BR>
+ 64Y<BR>
+ 64Z<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RT/RTR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RJ/RJR22<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RT/RTR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RJ/RJR26<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RT/RTR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ RJ/RJR24<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=8>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
+ </TD>
+ <TD ALIGN=CENTER>
+ <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3323P<BR>
+ 3323S<BR>
+ 3323W<BR>
+ 3329H<BR>
+ 3329P<BR>
+ 3329W<BR>
+ 3339H<BR>
+ 3339P<BR>
+ 3339W<BR>
+ 3352E<BR>
+ 3352H<BR>
+ 3352K<BR>
+ 3352P<BR>
+ 3352T<BR>
+ 3352V<BR>
+ 3352W<BR>
+ 3362H<BR>
+ 3362M<BR>
+ 3362P<BR>
+ 3362R<BR>
+ 3362S<BR>
+ 3362U<BR>
+ 3362W<BR>
+ 3362X<BR>
+ 3386B<BR>
+ 3386C<BR>
+ 3386F<BR>
+ 3386H<BR>
+ 3386K<BR>
+ 3386M<BR>
+ 3386P<BR>
+ 3386S<BR>
+ 3386W<BR>
+ 3386X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 25P<BR>
+ 25S<BR>
+ 25RX<BR>
+ 82P<BR>
+ 82M<BR>
+ 82PA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 91E<BR>
+ 91X<BR>
+ 91T<BR>
+ 91B<BR>
+ 91A<BR>
+ 91V<BR>
+ 91W<BR>
+ 25W<BR>
+ 25V<BR>
+ 25P<BR>
+ -<BR>
+ 25S<BR>
+ 25U<BR>
+ 25RX<BR>
+ 25X<BR>
+ 72XW<BR>
+ 72XL<BR>
+ 72PM<BR>
+ 72RX<BR>
+ -<BR>
+ 72PX<BR>
+ 72P<BR>
+ 72RXW<BR>
+ 72RXL<BR>
+ 72X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ T7YB<BR>
+ T7YA<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ TXD<BR>
+ TYA<BR>
+ TYP<BR>
+ -<BR>
+ TYD<BR>
+ TX<BR>
+ -<BR>
+ 150SX<BR>
+ 100SX<BR>
+ 102T<BR>
+ 101S<BR>
+ 190T<BR>
+ 150TX<BR>
+ 101<BR>
+ -<BR>
+ -<BR>
+ 101SX<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ET6P<BR>
+ ET6S<BR>
+ ET6X<BR>
+ RJ-6W/8014EMW<BR>
+ RJ-6P/8014EMP<BR>
+ RJ-6X/8014EMX<BR>
+ TM7W<BR>
+ TM7P<BR>
+ TM7X<BR>
+ -<BR>
+ 8017SMS<BR>
+ -<BR>
+ 8017SMB<BR>
+ 8017SMA<BR>
+ -<BR>
+ -<BR>
+ CT-6W<BR>
+ CT-6H<BR>
+ CT-6P<BR>
+ CT-6R<BR>
+ -<BR>
+ CT-6V<BR>
+ CT-6X<BR>
+ -<BR>
+ -<BR>
+ 8038EKV<BR>
+ -<BR>
+ 8038EKX<BR>
+ -<BR>
+ -<BR>
+ 8038EKP<BR>
+ 8038EKZ<BR>
+ 8038EKW<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3321H<BR>
+ 3321P<BR>
+ 3321N<BR>
+ 1102H<BR>
+ 1102P<BR>
+ 1102T<BR>
+ RVA0911V304A<BR>
+ -<BR>
+ RVA0911H413A<BR>
+ RVG0707V100A<BR>
+ RVA0607V(H)306A<BR>
+ RVA1214H213A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 3104B<BR>
+ 3104C<BR>
+ 3104F<BR>
+ 3104H<BR>
+ -<BR>
+ 3104M<BR>
+ 3104P<BR>
+ 3104S<BR>
+ 3104W<BR>
+ 3104X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ EVMQ0G<BR>
+ EVMQIG<BR>
+ EVMQ3G<BR>
+ EVMS0G<BR>
+ EVMQ0G<BR>
+ EVMG0G<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMK4GA00B<BR>
+ EVM30GA00B<BR>
+ EVMK0GA00B<BR>
+ EVM38GA00B<BR>
+ EVMB6<BR>
+ EVLQ0<BR>
+ -<BR>
+ EVMMSG<BR>
+ EVMMBG<BR>
+ EVMMAG<BR>
+ -<BR>
+ -<BR>
+ EVMMCS<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ EVMM1<BR>
+ -<BR>
+ -<BR>
+ EVMM0<BR>
+ -<BR>
+ -<BR>
+ EVMM3<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ 62-3-1<BR>
+ 62-1-2<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67R<BR>
+ -<BR>
+ 67P<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ 67X<BR>
+ 63V<BR>
+ 63S<BR>
+ 63M<BR>
+ -<BR>
+ -<BR>
+ 63H<BR>
+ 63P<BR>
+ -<BR>
+ -<BR>
+ 63X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ RJ/RJR50<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P> <P>
+<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
+ <P>
+ <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3224G<BR>
+ 3224J<BR>
+ 3224W<BR>
+ 3269P<BR>
+ 3269W<BR>
+ 3269X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 44G<BR>
+ 44J<BR>
+ 44W<BR>
+ 84P<BR>
+ 84W<BR>
+ 84X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST63Z<BR>
+ ST63Y<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST5P<BR>
+ ST5W<BR>
+ ST5X<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ </TD>
+ </TR>
+ <TR>
+ <TD COLSPAN=7>
+ <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
+ </TD>
+ <TD>
+ <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
+ </TD>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 3314G<BR>
+ 3314J<BR>
+ 3364A/B<BR>
+ 3364C/D<BR>
+ 3364W/X<BR>
+ 3313G<BR>
+ 3313J<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ 23B<BR>
+ 23A<BR>
+ 21X<BR>
+ 21W<BR>
+ -<BR>
+ 22B<BR>
+ 22A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST5YL/ST53YL<BR>
+ ST5YJ/5T53YJ<BR>
+ ST-23A<BR>
+ ST-22B<BR>
+ ST-22<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ ST-4B<BR>
+ ST-4A<BR>
+ -<BR>
+ -<BR>
+ -<BR>
+ ST-3B<BR>
+ ST-3A<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ EVM-6YS<BR>
+ EVM-1E<BR>
+ EVM-1G<BR>
+ EVM-1D<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ G4B<BR>
+ G4A<BR>
+ TR04-3S1<BR>
+ TRG04-2S1<BR>
+ -<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
+ -<BR>
+ -<BR>
+ DVR-43A<BR>
+ CVR-42C<BR>
+ CVR-42A/C<BR>
+ -<BR>
+ -<BR></FONT>
+ </TD>
+ </TR>
+</TABLE>
+<P>
+<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
+<P>
+
+
+<P>
+</td>
+</tr>
+</table>
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 2.5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 3 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 4 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 5 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm, outline 6 x 5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 mm + 5 mm, outline 2.4 x 7 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 2.5 + 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.4 x 4.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 2.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 4.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 5.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+Horizontal, grid 5 mm, outline 7.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 3.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 4.2 x 10.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 5.2 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 4.3 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 5.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm, outline 6.4 x 13.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 5.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 6.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 7.2 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 8.4 x 18.3 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 15 mm, outline 9.1 x 18.2 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 6.2 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 7.4 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 8.7 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 10.8 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 22.5 mm, outline 11.3 x 26.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 9.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 11.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 13.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 20.5 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 13.7 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 16.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 32.5 mm, outline 18.2 x 37.4 mm
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 19.2 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 20.3 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 5 mm, outline 3.5 x 7.5 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 37.5 mm, outline 15.5 x 41.8 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 7.5 mm, outline 6.3 x 10.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 15.4 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>CAPACITOR</b><p>
+grid 27.5 mm, outline 17.3 x 31.6 mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p>
+Metric Code Size 1005
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p>
+Metric Code Size 1608
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p>
+Metric Code Size 2012
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p>
+Metric Code Size 3216
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p>
+Metric Code Size 3225
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p>
+Metric Code Size 4532
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p>
+Metric Code Size 4564
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b> </b><p>
+Source: http://www.vishay.com/docs/10129/hpc0201a.pdf
+
+
+>NAME
+>VALUE
+
+
+
+Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b><p>
+Source: AVX .. aphvc.pdf
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<b>CAPACITOR</b>
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+<B>CAPACITOR</B>, European symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/simulation/Makefile b/simulation/Makefile
index 1a603dd..1628b08 100644
--- a/simulation/Makefile
+++ b/simulation/Makefile
@@ -1,85 +1,85 @@
-CC=clang
-CXX=clang++
-
-CFLAGS=-Wall -Wextra -Wpedantic -Wno-gnu -mmacosx-version-min=10.9 -F/Library/Frameworks
-CFLAGS += -DARDUINO=10808 -DTEENSYDUINO=146 -D__MK20DX256__ -DUSB_MIDI
-
-RELEASE ?= 0
-ifeq ($(RELEASE), 1)
- CFLAGS +=-O3
-else
- CFLAGS += -O0 -g
-endif
-
-
-CXXFLAGS= $(CFLAGS) -std=c++14
-
-LIBS=-framework SDL2 -lc++ -lc -framework OpenGL
-LDFLAGS=-macosx_version_min 10.9 -rpath @executable_path/../Frameworks
-
-SYSINC = ./include
-INCS = ../NuEVI ./include ./imgui ./gl3w
-
-INCDIRS = $(addprefix -isystem ,$(SYSINC))
-INCDIRS += $(addprefix -I,$(INCS))
-
-
-TARGET=nuevisim
-
-CXXFILES= ../NuEVI/menu.cpp \
- ../NuEVI/adjustmenu.cpp \
- ../NuEVI/midi.cpp \
- ../NuEVI/settings.cpp \
- ../NuEVI/led.cpp \
- src/nuevisim.cpp \
- src/simeeprom.cpp \
- src/Print.cpp \
- src/simserial.cpp \
- src/simwire.cpp \
- src/simusbmidi.cpp \
- src/filters.cpp \
- src/Adafruit_GFX_sim.cpp \
- src/Adafruit_SSD1306_sim.cpp \
- src/Adafruit_MPR121_sim.cpp \
- imgui/imgui.cpp \
- imgui/imgui_draw.cpp \
- imgui/imgui_widgets.cpp \
- imgui/examples/imgui_impl_sdl.cpp \
- imgui/examples/imgui_impl_opengl3.cpp
-
-
-CFILES= gl3w/gl3w.c
-
-OBJS=$(CXXFILES:.cpp=.o) $(CFILES:.c=.o)
-
-all: $(TARGET)
-
-nuevisim: $(OBJS)
- $(LD) $(LDFLAGS) -o $(TARGET) $(LIBS) $^
-
-%.o: %.c
- $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $<
-
-%.o: %.cpp
- $(CXX) $(CXXFLAGS) $(INCDIRS) -c -o $@ $<
-
-clean:
- rm -f $(TARGET) $(OBJS) *.o
-
-.PHONY: all
-
-
-# Dependecies
-DEPS=make.deps
-
-.PHONY: deps mrproper
-mrproper: clean
- rm $(DEPS)
-deps: $(DEPS)
-
-H_DEPS=$(wildcard src/*.h) $(wildcard ../NuEVI/*.h)
-
-make.deps: $(CXXFILES) $(H_DEPS)
- $(CXX) $(CXXFLAGS) -Wno-deprecated $(INCDIRS) -MM $(DEPS_HS) $^ > $@
-
--include .deps/*
+CC=clang
+CXX=clang++
+
+CFLAGS=-Wall -Wextra -Wpedantic -Wno-gnu -mmacosx-version-min=10.9 -F/Library/Frameworks
+CFLAGS += -DARDUINO=10808 -DTEENSYDUINO=146 -D__MK20DX256__ -DUSB_MIDI
+
+RELEASE ?= 0
+ifeq ($(RELEASE), 1)
+ CFLAGS +=-O3
+else
+ CFLAGS += -O0 -g
+endif
+
+
+CXXFLAGS= $(CFLAGS) -std=c++14
+
+LIBS=-framework SDL2 -lc++ -lc -framework OpenGL
+LDFLAGS=-macosx_version_min 10.9 -rpath @executable_path/../Frameworks
+
+SYSINC = ./include
+INCS = ../NuEVI ./include ./imgui ./gl3w
+
+INCDIRS = $(addprefix -isystem ,$(SYSINC))
+INCDIRS += $(addprefix -I,$(INCS))
+
+
+TARGET=nuevisim
+
+CXXFILES= ../NuEVI/menu.cpp \
+ ../NuEVI/adjustmenu.cpp \
+ ../NuEVI/midi.cpp \
+ ../NuEVI/settings.cpp \
+ ../NuEVI/led.cpp \
+ src/nuevisim.cpp \
+ src/simeeprom.cpp \
+ src/Print.cpp \
+ src/simserial.cpp \
+ src/simwire.cpp \
+ src/simusbmidi.cpp \
+ src/filters.cpp \
+ src/Adafruit_GFX_sim.cpp \
+ src/Adafruit_SSD1306_sim.cpp \
+ src/Adafruit_MPR121_sim.cpp \
+ imgui/imgui.cpp \
+ imgui/imgui_draw.cpp \
+ imgui/imgui_widgets.cpp \
+ imgui/examples/imgui_impl_sdl.cpp \
+ imgui/examples/imgui_impl_opengl3.cpp
+
+
+CFILES= gl3w/gl3w.c
+
+OBJS=$(CXXFILES:.cpp=.o) $(CFILES:.c=.o)
+
+all: $(TARGET)
+
+nuevisim: $(OBJS)
+ $(LD) $(LDFLAGS) -o $(TARGET) $(LIBS) $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $<
+
+%.o: %.cpp
+ $(CXX) $(CXXFLAGS) $(INCDIRS) -c -o $@ $<
+
+clean:
+ rm -f $(TARGET) $(OBJS) *.o
+
+.PHONY: all
+
+
+# Dependecies
+DEPS=make.deps
+
+.PHONY: deps mrproper
+mrproper: clean
+ rm $(DEPS)
+deps: $(DEPS)
+
+H_DEPS=$(wildcard src/*.h) $(wildcard ../NuEVI/*.h)
+
+make.deps: $(CXXFILES) $(H_DEPS)
+ $(CXX) $(CXXFLAGS) -Wno-deprecated $(INCDIRS) -MM $(DEPS_HS) $^ > $@
+
+-include .deps/*
diff --git a/simulation/gl3w/GL/gl3w.h b/simulation/gl3w/GL/gl3w.h
index 33edd54..3b151a8 100644
--- a/simulation/gl3w/GL/gl3w.h
+++ b/simulation/gl3w/GL/gl3w.h
@@ -1,1387 +1,1387 @@
-/*
-
- This file was generated with gl3w_gen.py, part of gl3w
- (hosted at https://github.com/skaslev/gl3w)
-
- This is free and unencumbered software released into the public domain.
-
- Anyone is free to copy, modify, publish, use, compile, sell, or
- distribute this software, either in source code form or as a compiled
- binary, for any purpose, commercial or non-commercial, and by any
- means.
-
- In jurisdictions that recognize copyright laws, the author or authors
- of this software dedicate any and all copyright interest in the
- software to the public domain. We make this dedication for the benefit
- of the public at large and to the detriment of our heirs and
- successors. We intend this dedication to be an overt act of
- relinquishment in perpetuity of all present and future rights to this
- software under copyright law.
-
- 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 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.
-
-*/
-
-#ifndef __gl3w_h_
-#define __gl3w_h_
-
-#include
-
-#ifndef __gl_h_
-#define __gl_h_
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define GL3W_OK 0
-#define GL3W_ERROR_INIT -1
-#define GL3W_ERROR_LIBRARY_OPEN -2
-#define GL3W_ERROR_OPENGL_VERSION -3
-
-typedef void (*GL3WglProc)(void);
-typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
-
-/* gl3w api */
-int gl3wInit(void);
-int gl3wInit2(GL3WGetProcAddressProc proc);
-int gl3wIsSupported(int major, int minor);
-GL3WglProc gl3wGetProcAddress(const char *proc);
-
-/* gl3w internal state */
-union GL3WProcs {
- GL3WglProc ptr[657];
- struct {
- PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram;
- PFNGLACTIVETEXTUREPROC ActiveTexture;
- PFNGLATTACHSHADERPROC AttachShader;
- PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender;
- PFNGLBEGINQUERYPROC BeginQuery;
- PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed;
- PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback;
- PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation;
- PFNGLBINDBUFFERPROC BindBuffer;
- PFNGLBINDBUFFERBASEPROC BindBufferBase;
- PFNGLBINDBUFFERRANGEPROC BindBufferRange;
- PFNGLBINDBUFFERSBASEPROC BindBuffersBase;
- PFNGLBINDBUFFERSRANGEPROC BindBuffersRange;
- PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation;
- PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed;
- PFNGLBINDFRAMEBUFFERPROC BindFramebuffer;
- PFNGLBINDIMAGETEXTUREPROC BindImageTexture;
- PFNGLBINDIMAGETEXTURESPROC BindImageTextures;
- PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline;
- PFNGLBINDRENDERBUFFERPROC BindRenderbuffer;
- PFNGLBINDSAMPLERPROC BindSampler;
- PFNGLBINDSAMPLERSPROC BindSamplers;
- PFNGLBINDTEXTUREPROC BindTexture;
- PFNGLBINDTEXTUREUNITPROC BindTextureUnit;
- PFNGLBINDTEXTURESPROC BindTextures;
- PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback;
- PFNGLBINDVERTEXARRAYPROC BindVertexArray;
- PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer;
- PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers;
- PFNGLBLENDCOLORPROC BlendColor;
- PFNGLBLENDEQUATIONPROC BlendEquation;
- PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
- PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei;
- PFNGLBLENDEQUATIONIPROC BlendEquationi;
- PFNGLBLENDFUNCPROC BlendFunc;
- PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
- PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei;
- PFNGLBLENDFUNCIPROC BlendFunci;
- PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer;
- PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer;
- PFNGLBUFFERDATAPROC BufferData;
- PFNGLBUFFERSTORAGEPROC BufferStorage;
- PFNGLBUFFERSUBDATAPROC BufferSubData;
- PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
- PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus;
- PFNGLCLAMPCOLORPROC ClampColor;
- PFNGLCLEARPROC Clear;
- PFNGLCLEARBUFFERDATAPROC ClearBufferData;
- PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData;
- PFNGLCLEARBUFFERFIPROC ClearBufferfi;
- PFNGLCLEARBUFFERFVPROC ClearBufferfv;
- PFNGLCLEARBUFFERIVPROC ClearBufferiv;
- PFNGLCLEARBUFFERUIVPROC ClearBufferuiv;
- PFNGLCLEARCOLORPROC ClearColor;
- PFNGLCLEARDEPTHPROC ClearDepth;
- PFNGLCLEARDEPTHFPROC ClearDepthf;
- PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData;
- PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData;
- PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi;
- PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv;
- PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv;
- PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv;
- PFNGLCLEARSTENCILPROC ClearStencil;
- PFNGLCLEARTEXIMAGEPROC ClearTexImage;
- PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage;
- PFNGLCLIENTWAITSYNCPROC ClientWaitSync;
- PFNGLCLIPCONTROLPROC ClipControl;
- PFNGLCOLORMASKPROC ColorMask;
- PFNGLCOLORMASKIPROC ColorMaski;
- PFNGLCOMPILESHADERPROC CompileShader;
- PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D;
- PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D;
- PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D;
- PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D;
- PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
- PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D;
- PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData;
- PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData;
- PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData;
- PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D;
- PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D;
- PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D;
- PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D;
- PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D;
- PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D;
- PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D;
- PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D;
- PFNGLCREATEBUFFERSPROC CreateBuffers;
- PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers;
- PFNGLCREATEPROGRAMPROC CreateProgram;
- PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines;
- PFNGLCREATEQUERIESPROC CreateQueries;
- PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers;
- PFNGLCREATESAMPLERSPROC CreateSamplers;
- PFNGLCREATESHADERPROC CreateShader;
- PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv;
- PFNGLCREATETEXTURESPROC CreateTextures;
- PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks;
- PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays;
- PFNGLCULLFACEPROC CullFace;
- PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback;
- PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl;
- PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert;
- PFNGLDELETEBUFFERSPROC DeleteBuffers;
- PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers;
- PFNGLDELETEPROGRAMPROC DeleteProgram;
- PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines;
- PFNGLDELETEQUERIESPROC DeleteQueries;
- PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers;
- PFNGLDELETESAMPLERSPROC DeleteSamplers;
- PFNGLDELETESHADERPROC DeleteShader;
- PFNGLDELETESYNCPROC DeleteSync;
- PFNGLDELETETEXTURESPROC DeleteTextures;
- PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks;
- PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays;
- PFNGLDEPTHFUNCPROC DepthFunc;
- PFNGLDEPTHMASKPROC DepthMask;
- PFNGLDEPTHRANGEPROC DepthRange;
- PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv;
- PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed;
- PFNGLDEPTHRANGEFPROC DepthRangef;
- PFNGLDETACHSHADERPROC DetachShader;
- PFNGLDISABLEPROC Disable;
- PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib;
- PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
- PFNGLDISABLEIPROC Disablei;
- PFNGLDISPATCHCOMPUTEPROC DispatchCompute;
- PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect;
- PFNGLDRAWARRAYSPROC DrawArrays;
- PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect;
- PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced;
- PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance;
- PFNGLDRAWBUFFERPROC DrawBuffer;
- PFNGLDRAWBUFFERSPROC DrawBuffers;
- PFNGLDRAWELEMENTSPROC DrawElements;
- PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex;
- PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect;
- PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced;
- PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance;
- PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex;
- PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC DrawElementsInstancedBaseVertexBaseInstance;
- PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements;
- PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex;
- PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback;
- PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced;
- PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream;
- PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced;
- PFNGLENABLEPROC Enable;
- PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib;
- PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
- PFNGLENABLEIPROC Enablei;
- PFNGLENDCONDITIONALRENDERPROC EndConditionalRender;
- PFNGLENDQUERYPROC EndQuery;
- PFNGLENDQUERYINDEXEDPROC EndQueryIndexed;
- PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback;
- PFNGLFENCESYNCPROC FenceSync;
- PFNGLFINISHPROC Finish;
- PFNGLFLUSHPROC Flush;
- PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange;
- PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange;
- PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri;
- PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
- PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture;
- PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D;
- PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
- PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D;
- PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer;
- PFNGLFRONTFACEPROC FrontFace;
- PFNGLGENBUFFERSPROC GenBuffers;
- PFNGLGENFRAMEBUFFERSPROC GenFramebuffers;
- PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines;
- PFNGLGENQUERIESPROC GenQueries;
- PFNGLGENRENDERBUFFERSPROC GenRenderbuffers;
- PFNGLGENSAMPLERSPROC GenSamplers;
- PFNGLGENTEXTURESPROC GenTextures;
- PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks;
- PFNGLGENVERTEXARRAYSPROC GenVertexArrays;
- PFNGLGENERATEMIPMAPPROC GenerateMipmap;
- PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap;
- PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv;
- PFNGLGETACTIVEATTRIBPROC GetActiveAttrib;
- PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName;
- PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName;
- PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv;
- PFNGLGETACTIVEUNIFORMPROC GetActiveUniform;
- PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName;
- PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv;
- PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName;
- PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv;
- PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders;
- PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
- PFNGLGETBOOLEANI_VPROC GetBooleani_v;
- PFNGLGETBOOLEANVPROC GetBooleanv;
- PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v;
- PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
- PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv;
- PFNGLGETBUFFERSUBDATAPROC GetBufferSubData;
- PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage;
- PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage;
- PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage;
- PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog;
- PFNGLGETDOUBLEI_VPROC GetDoublei_v;
- PFNGLGETDOUBLEVPROC GetDoublev;
- PFNGLGETERRORPROC GetError;
- PFNGLGETFLOATI_VPROC GetFloati_v;
- PFNGLGETFLOATVPROC GetFloatv;
- PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex;
- PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation;
- PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
- PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv;
- PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus;
- PFNGLGETINTEGER64I_VPROC GetInteger64i_v;
- PFNGLGETINTEGER64VPROC GetInteger64v;
- PFNGLGETINTEGERI_VPROC GetIntegeri_v;
- PFNGLGETINTEGERVPROC GetIntegerv;
- PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v;
- PFNGLGETINTERNALFORMATIVPROC GetInternalformativ;
- PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv;
- PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v;
- PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv;
- PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv;
- PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData;
- PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv;
- PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv;
- PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv;
- PFNGLGETOBJECTLABELPROC GetObjectLabel;
- PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel;
- PFNGLGETPOINTERVPROC GetPointerv;
- PFNGLGETPROGRAMBINARYPROC GetProgramBinary;
- PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog;
- PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv;
- PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog;
- PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv;
- PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex;
- PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation;
- PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex;
- PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName;
- PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv;
- PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv;
- PFNGLGETPROGRAMIVPROC GetProgramiv;
- PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v;
- PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv;
- PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v;
- PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv;
- PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv;
- PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v;
- PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv;
- PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v;
- PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv;
- PFNGLGETQUERYIVPROC GetQueryiv;
- PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
- PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv;
- PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv;
- PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv;
- PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv;
- PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog;
- PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat;
- PFNGLGETSHADERSOURCEPROC GetShaderSource;
- PFNGLGETSHADERIVPROC GetShaderiv;
- PFNGLGETSTRINGPROC GetString;
- PFNGLGETSTRINGIPROC GetStringi;
- PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex;
- PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation;
- PFNGLGETSYNCIVPROC GetSynciv;
- PFNGLGETTEXIMAGEPROC GetTexImage;
- PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv;
- PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv;
- PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv;
- PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv;
- PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv;
- PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv;
- PFNGLGETTEXTUREIMAGEPROC GetTextureImage;
- PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv;
- PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv;
- PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv;
- PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv;
- PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv;
- PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv;
- PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage;
- PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying;
- PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v;
- PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v;
- PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv;
- PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex;
- PFNGLGETUNIFORMINDICESPROC GetUniformIndices;
- PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
- PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv;
- PFNGLGETUNIFORMDVPROC GetUniformdv;
- PFNGLGETUNIFORMFVPROC GetUniformfv;
- PFNGLGETUNIFORMIVPROC GetUniformiv;
- PFNGLGETUNIFORMUIVPROC GetUniformuiv;
- PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv;
- PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv;
- PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv;
- PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv;
- PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv;
- PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv;
- PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
- PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv;
- PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv;
- PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
- PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage;
- PFNGLGETNTEXIMAGEPROC GetnTexImage;
- PFNGLGETNUNIFORMDVPROC GetnUniformdv;
- PFNGLGETNUNIFORMFVPROC GetnUniformfv;
- PFNGLGETNUNIFORMIVPROC GetnUniformiv;
- PFNGLGETNUNIFORMUIVPROC GetnUniformuiv;
- PFNGLHINTPROC Hint;
- PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData;
- PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData;
- PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer;
- PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData;
- PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData;
- PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer;
- PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage;
- PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage;
- PFNGLISBUFFERPROC IsBuffer;
- PFNGLISENABLEDPROC IsEnabled;
- PFNGLISENABLEDIPROC IsEnabledi;
- PFNGLISFRAMEBUFFERPROC IsFramebuffer;
- PFNGLISPROGRAMPROC IsProgram;
- PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline;
- PFNGLISQUERYPROC IsQuery;
- PFNGLISRENDERBUFFERPROC IsRenderbuffer;
- PFNGLISSAMPLERPROC IsSampler;
- PFNGLISSHADERPROC IsShader;
- PFNGLISSYNCPROC IsSync;
- PFNGLISTEXTUREPROC IsTexture;
- PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback;
- PFNGLISVERTEXARRAYPROC IsVertexArray;
- PFNGLLINEWIDTHPROC LineWidth;
- PFNGLLINKPROGRAMPROC LinkProgram;
- PFNGLLOGICOPPROC LogicOp;
- PFNGLMAPBUFFERPROC MapBuffer;
- PFNGLMAPBUFFERRANGEPROC MapBufferRange;
- PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer;
- PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange;
- PFNGLMEMORYBARRIERPROC MemoryBarrier;
- PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion;
- PFNGLMINSAMPLESHADINGPROC MinSampleShading;
- PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays;
- PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect;
- PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount;
- PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements;
- PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex;
- PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect;
- PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount;
- PFNGLNAMEDBUFFERDATAPROC NamedBufferData;
- PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage;
- PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData;
- PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer;
- PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers;
- PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri;
- PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer;
- PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer;
- PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture;
- PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer;
- PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage;
- PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample;
- PFNGLOBJECTLABELPROC ObjectLabel;
- PFNGLOBJECTPTRLABELPROC ObjectPtrLabel;
- PFNGLPATCHPARAMETERFVPROC PatchParameterfv;
- PFNGLPATCHPARAMETERIPROC PatchParameteri;
- PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback;
- PFNGLPIXELSTOREFPROC PixelStoref;
- PFNGLPIXELSTOREIPROC PixelStorei;
- PFNGLPOINTPARAMETERFPROC PointParameterf;
- PFNGLPOINTPARAMETERFVPROC PointParameterfv;
- PFNGLPOINTPARAMETERIPROC PointParameteri;
- PFNGLPOINTPARAMETERIVPROC PointParameteriv;
- PFNGLPOINTSIZEPROC PointSize;
- PFNGLPOLYGONMODEPROC PolygonMode;
- PFNGLPOLYGONOFFSETPROC PolygonOffset;
- PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp;
- PFNGLPOPDEBUGGROUPPROC PopDebugGroup;
- PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex;
- PFNGLPROGRAMBINARYPROC ProgramBinary;
- PFNGLPROGRAMPARAMETERIPROC ProgramParameteri;
- PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d;
- PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv;
- PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f;
- PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv;
- PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i;
- PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv;
- PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui;
- PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv;
- PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d;
- PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv;
- PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f;
- PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv;
- PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i;
- PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv;
- PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui;
- PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv;
- PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d;
- PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv;
- PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f;
- PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv;
- PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i;
- PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv;
- PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui;
- PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv;
- PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d;
- PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv;
- PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f;
- PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv;
- PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i;
- PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv;
- PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui;
- PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv;
- PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv;
- PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv;
- PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv;
- PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv;
- PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv;
- PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv;
- PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv;
- PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv;
- PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv;
- PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv;
- PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv;
- PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv;
- PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv;
- PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv;
- PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv;
- PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv;
- PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv;
- PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv;
- PFNGLPROVOKINGVERTEXPROC ProvokingVertex;
- PFNGLPUSHDEBUGGROUPPROC PushDebugGroup;
- PFNGLQUERYCOUNTERPROC QueryCounter;
- PFNGLREADBUFFERPROC ReadBuffer;
- PFNGLREADPIXELSPROC ReadPixels;
- PFNGLREADNPIXELSPROC ReadnPixels;
- PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler;
- PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage;
- PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample;
- PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback;
- PFNGLSAMPLECOVERAGEPROC SampleCoverage;
- PFNGLSAMPLEMASKIPROC SampleMaski;
- PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv;
- PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv;
- PFNGLSAMPLERPARAMETERFPROC SamplerParameterf;
- PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv;
- PFNGLSAMPLERPARAMETERIPROC SamplerParameteri;
- PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv;
- PFNGLSCISSORPROC Scissor;
- PFNGLSCISSORARRAYVPROC ScissorArrayv;
- PFNGLSCISSORINDEXEDPROC ScissorIndexed;
- PFNGLSCISSORINDEXEDVPROC ScissorIndexedv;
- PFNGLSHADERBINARYPROC ShaderBinary;
- PFNGLSHADERSOURCEPROC ShaderSource;
- PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding;
- PFNGLSPECIALIZESHADERPROC SpecializeShader;
- PFNGLSTENCILFUNCPROC StencilFunc;
- PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
- PFNGLSTENCILMASKPROC StencilMask;
- PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate;
- PFNGLSTENCILOPPROC StencilOp;
- PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate;
- PFNGLTEXBUFFERPROC TexBuffer;
- PFNGLTEXBUFFERRANGEPROC TexBufferRange;
- PFNGLTEXIMAGE1DPROC TexImage1D;
- PFNGLTEXIMAGE2DPROC TexImage2D;
- PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample;
- PFNGLTEXIMAGE3DPROC TexImage3D;
- PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample;
- PFNGLTEXPARAMETERIIVPROC TexParameterIiv;
- PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv;
- PFNGLTEXPARAMETERFPROC TexParameterf;
- PFNGLTEXPARAMETERFVPROC TexParameterfv;
- PFNGLTEXPARAMETERIPROC TexParameteri;
- PFNGLTEXPARAMETERIVPROC TexParameteriv;
- PFNGLTEXSTORAGE1DPROC TexStorage1D;
- PFNGLTEXSTORAGE2DPROC TexStorage2D;
- PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample;
- PFNGLTEXSTORAGE3DPROC TexStorage3D;
- PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample;
- PFNGLTEXSUBIMAGE1DPROC TexSubImage1D;
- PFNGLTEXSUBIMAGE2DPROC TexSubImage2D;
- PFNGLTEXSUBIMAGE3DPROC TexSubImage3D;
- PFNGLTEXTUREBARRIERPROC TextureBarrier;
- PFNGLTEXTUREBUFFERPROC TextureBuffer;
- PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange;
- PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv;
- PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv;
- PFNGLTEXTUREPARAMETERFPROC TextureParameterf;
- PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv;
- PFNGLTEXTUREPARAMETERIPROC TextureParameteri;
- PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv;
- PFNGLTEXTURESTORAGE1DPROC TextureStorage1D;
- PFNGLTEXTURESTORAGE2DPROC TextureStorage2D;
- PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample;
- PFNGLTEXTURESTORAGE3DPROC TextureStorage3D;
- PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample;
- PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D;
- PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D;
- PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D;
- PFNGLTEXTUREVIEWPROC TextureView;
- PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase;
- PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange;
- PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings;
- PFNGLUNIFORM1DPROC Uniform1d;
- PFNGLUNIFORM1DVPROC Uniform1dv;
- PFNGLUNIFORM1FPROC Uniform1f;
- PFNGLUNIFORM1FVPROC Uniform1fv;
- PFNGLUNIFORM1IPROC Uniform1i;
- PFNGLUNIFORM1IVPROC Uniform1iv;
- PFNGLUNIFORM1UIPROC Uniform1ui;
- PFNGLUNIFORM1UIVPROC Uniform1uiv;
- PFNGLUNIFORM2DPROC Uniform2d;
- PFNGLUNIFORM2DVPROC Uniform2dv;
- PFNGLUNIFORM2FPROC Uniform2f;
- PFNGLUNIFORM2FVPROC Uniform2fv;
- PFNGLUNIFORM2IPROC Uniform2i;
- PFNGLUNIFORM2IVPROC Uniform2iv;
- PFNGLUNIFORM2UIPROC Uniform2ui;
- PFNGLUNIFORM2UIVPROC Uniform2uiv;
- PFNGLUNIFORM3DPROC Uniform3d;
- PFNGLUNIFORM3DVPROC Uniform3dv;
- PFNGLUNIFORM3FPROC Uniform3f;
- PFNGLUNIFORM3FVPROC Uniform3fv;
- PFNGLUNIFORM3IPROC Uniform3i;
- PFNGLUNIFORM3IVPROC Uniform3iv;
- PFNGLUNIFORM3UIPROC Uniform3ui;
- PFNGLUNIFORM3UIVPROC Uniform3uiv;
- PFNGLUNIFORM4DPROC Uniform4d;
- PFNGLUNIFORM4DVPROC Uniform4dv;
- PFNGLUNIFORM4FPROC Uniform4f;
- PFNGLUNIFORM4FVPROC Uniform4fv;
- PFNGLUNIFORM4IPROC Uniform4i;
- PFNGLUNIFORM4IVPROC Uniform4iv;
- PFNGLUNIFORM4UIPROC Uniform4ui;
- PFNGLUNIFORM4UIVPROC Uniform4uiv;
- PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding;
- PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv;
- PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
- PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv;
- PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv;
- PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv;
- PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv;
- PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv;
- PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
- PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv;
- PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv;
- PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv;
- PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv;
- PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv;
- PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
- PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv;
- PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv;
- PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv;
- PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv;
- PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv;
- PFNGLUNMAPBUFFERPROC UnmapBuffer;
- PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer;
- PFNGLUSEPROGRAMPROC UseProgram;
- PFNGLUSEPROGRAMSTAGESPROC UseProgramStages;
- PFNGLVALIDATEPROGRAMPROC ValidateProgram;
- PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline;
- PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding;
- PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat;
- PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat;
- PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat;
- PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor;
- PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer;
- PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer;
- PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers;
- PFNGLVERTEXATTRIB1DPROC VertexAttrib1d;
- PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv;
- PFNGLVERTEXATTRIB1FPROC VertexAttrib1f;
- PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv;
- PFNGLVERTEXATTRIB1SPROC VertexAttrib1s;
- PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv;
- PFNGLVERTEXATTRIB2DPROC VertexAttrib2d;
- PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv;
- PFNGLVERTEXATTRIB2FPROC VertexAttrib2f;
- PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv;
- PFNGLVERTEXATTRIB2SPROC VertexAttrib2s;
- PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv;
- PFNGLVERTEXATTRIB3DPROC VertexAttrib3d;
- PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv;
- PFNGLVERTEXATTRIB3FPROC VertexAttrib3f;
- PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv;
- PFNGLVERTEXATTRIB3SPROC VertexAttrib3s;
- PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv;
- PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv;
- PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv;
- PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv;
- PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub;
- PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv;
- PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv;
- PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv;
- PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv;
- PFNGLVERTEXATTRIB4DPROC VertexAttrib4d;
- PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv;
- PFNGLVERTEXATTRIB4FPROC VertexAttrib4f;
- PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv;
- PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv;
- PFNGLVERTEXATTRIB4SPROC VertexAttrib4s;
- PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv;
- PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv;
- PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv;
- PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv;
- PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding;
- PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor;
- PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat;
- PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i;
- PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv;
- PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui;
- PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv;
- PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i;
- PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv;
- PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui;
- PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv;
- PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i;
- PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv;
- PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui;
- PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv;
- PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv;
- PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i;
- PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv;
- PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv;
- PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv;
- PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui;
- PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv;
- PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv;
- PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat;
- PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer;
- PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d;
- PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv;
- PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d;
- PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv;
- PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d;
- PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv;
- PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d;
- PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv;
- PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat;
- PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer;
- PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui;
- PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv;
- PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui;
- PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv;
- PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui;
- PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv;
- PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui;
- PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv;
- PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
- PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor;
- PFNGLVIEWPORTPROC Viewport;
- PFNGLVIEWPORTARRAYVPROC ViewportArrayv;
- PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf;
- PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv;
- PFNGLWAITSYNCPROC WaitSync;
- } gl;
-};
-
-extern union GL3WProcs gl3wProcs;
-
-/* OpenGL functions */
-#define glActiveShaderProgram gl3wProcs.gl.ActiveShaderProgram
-#define glActiveTexture gl3wProcs.gl.ActiveTexture
-#define glAttachShader gl3wProcs.gl.AttachShader
-#define glBeginConditionalRender gl3wProcs.gl.BeginConditionalRender
-#define glBeginQuery gl3wProcs.gl.BeginQuery
-#define glBeginQueryIndexed gl3wProcs.gl.BeginQueryIndexed
-#define glBeginTransformFeedback gl3wProcs.gl.BeginTransformFeedback
-#define glBindAttribLocation gl3wProcs.gl.BindAttribLocation
-#define glBindBuffer gl3wProcs.gl.BindBuffer
-#define glBindBufferBase gl3wProcs.gl.BindBufferBase
-#define glBindBufferRange gl3wProcs.gl.BindBufferRange
-#define glBindBuffersBase gl3wProcs.gl.BindBuffersBase
-#define glBindBuffersRange gl3wProcs.gl.BindBuffersRange
-#define glBindFragDataLocation gl3wProcs.gl.BindFragDataLocation
-#define glBindFragDataLocationIndexed gl3wProcs.gl.BindFragDataLocationIndexed
-#define glBindFramebuffer gl3wProcs.gl.BindFramebuffer
-#define glBindImageTexture gl3wProcs.gl.BindImageTexture
-#define glBindImageTextures gl3wProcs.gl.BindImageTextures
-#define glBindProgramPipeline gl3wProcs.gl.BindProgramPipeline
-#define glBindRenderbuffer gl3wProcs.gl.BindRenderbuffer
-#define glBindSampler gl3wProcs.gl.BindSampler
-#define glBindSamplers gl3wProcs.gl.BindSamplers
-#define glBindTexture gl3wProcs.gl.BindTexture
-#define glBindTextureUnit gl3wProcs.gl.BindTextureUnit
-#define glBindTextures gl3wProcs.gl.BindTextures
-#define glBindTransformFeedback gl3wProcs.gl.BindTransformFeedback
-#define glBindVertexArray gl3wProcs.gl.BindVertexArray
-#define glBindVertexBuffer gl3wProcs.gl.BindVertexBuffer
-#define glBindVertexBuffers gl3wProcs.gl.BindVertexBuffers
-#define glBlendColor gl3wProcs.gl.BlendColor
-#define glBlendEquation gl3wProcs.gl.BlendEquation
-#define glBlendEquationSeparate gl3wProcs.gl.BlendEquationSeparate
-#define glBlendEquationSeparatei gl3wProcs.gl.BlendEquationSeparatei
-#define glBlendEquationi gl3wProcs.gl.BlendEquationi
-#define glBlendFunc gl3wProcs.gl.BlendFunc
-#define glBlendFuncSeparate gl3wProcs.gl.BlendFuncSeparate
-#define glBlendFuncSeparatei gl3wProcs.gl.BlendFuncSeparatei
-#define glBlendFunci gl3wProcs.gl.BlendFunci
-#define glBlitFramebuffer gl3wProcs.gl.BlitFramebuffer
-#define glBlitNamedFramebuffer gl3wProcs.gl.BlitNamedFramebuffer
-#define glBufferData gl3wProcs.gl.BufferData
-#define glBufferStorage gl3wProcs.gl.BufferStorage
-#define glBufferSubData gl3wProcs.gl.BufferSubData
-#define glCheckFramebufferStatus gl3wProcs.gl.CheckFramebufferStatus
-#define glCheckNamedFramebufferStatus gl3wProcs.gl.CheckNamedFramebufferStatus
-#define glClampColor gl3wProcs.gl.ClampColor
-#define glClear gl3wProcs.gl.Clear
-#define glClearBufferData gl3wProcs.gl.ClearBufferData
-#define glClearBufferSubData gl3wProcs.gl.ClearBufferSubData
-#define glClearBufferfi gl3wProcs.gl.ClearBufferfi
-#define glClearBufferfv gl3wProcs.gl.ClearBufferfv
-#define glClearBufferiv gl3wProcs.gl.ClearBufferiv
-#define glClearBufferuiv gl3wProcs.gl.ClearBufferuiv
-#define glClearColor gl3wProcs.gl.ClearColor
-#define glClearDepth gl3wProcs.gl.ClearDepth
-#define glClearDepthf gl3wProcs.gl.ClearDepthf
-#define glClearNamedBufferData gl3wProcs.gl.ClearNamedBufferData
-#define glClearNamedBufferSubData gl3wProcs.gl.ClearNamedBufferSubData
-#define glClearNamedFramebufferfi gl3wProcs.gl.ClearNamedFramebufferfi
-#define glClearNamedFramebufferfv gl3wProcs.gl.ClearNamedFramebufferfv
-#define glClearNamedFramebufferiv gl3wProcs.gl.ClearNamedFramebufferiv
-#define glClearNamedFramebufferuiv gl3wProcs.gl.ClearNamedFramebufferuiv
-#define glClearStencil gl3wProcs.gl.ClearStencil
-#define glClearTexImage gl3wProcs.gl.ClearTexImage
-#define glClearTexSubImage gl3wProcs.gl.ClearTexSubImage
-#define glClientWaitSync gl3wProcs.gl.ClientWaitSync
-#define glClipControl gl3wProcs.gl.ClipControl
-#define glColorMask gl3wProcs.gl.ColorMask
-#define glColorMaski gl3wProcs.gl.ColorMaski
-#define glCompileShader gl3wProcs.gl.CompileShader
-#define glCompressedTexImage1D gl3wProcs.gl.CompressedTexImage1D
-#define glCompressedTexImage2D gl3wProcs.gl.CompressedTexImage2D
-#define glCompressedTexImage3D gl3wProcs.gl.CompressedTexImage3D
-#define glCompressedTexSubImage1D gl3wProcs.gl.CompressedTexSubImage1D
-#define glCompressedTexSubImage2D gl3wProcs.gl.CompressedTexSubImage2D
-#define glCompressedTexSubImage3D gl3wProcs.gl.CompressedTexSubImage3D
-#define glCompressedTextureSubImage1D gl3wProcs.gl.CompressedTextureSubImage1D
-#define glCompressedTextureSubImage2D gl3wProcs.gl.CompressedTextureSubImage2D
-#define glCompressedTextureSubImage3D gl3wProcs.gl.CompressedTextureSubImage3D
-#define glCopyBufferSubData gl3wProcs.gl.CopyBufferSubData
-#define glCopyImageSubData gl3wProcs.gl.CopyImageSubData
-#define glCopyNamedBufferSubData gl3wProcs.gl.CopyNamedBufferSubData
-#define glCopyTexImage1D gl3wProcs.gl.CopyTexImage1D
-#define glCopyTexImage2D gl3wProcs.gl.CopyTexImage2D
-#define glCopyTexSubImage1D gl3wProcs.gl.CopyTexSubImage1D
-#define glCopyTexSubImage2D gl3wProcs.gl.CopyTexSubImage2D
-#define glCopyTexSubImage3D gl3wProcs.gl.CopyTexSubImage3D
-#define glCopyTextureSubImage1D gl3wProcs.gl.CopyTextureSubImage1D
-#define glCopyTextureSubImage2D gl3wProcs.gl.CopyTextureSubImage2D
-#define glCopyTextureSubImage3D gl3wProcs.gl.CopyTextureSubImage3D
-#define glCreateBuffers gl3wProcs.gl.CreateBuffers
-#define glCreateFramebuffers gl3wProcs.gl.CreateFramebuffers
-#define glCreateProgram gl3wProcs.gl.CreateProgram
-#define glCreateProgramPipelines gl3wProcs.gl.CreateProgramPipelines
-#define glCreateQueries gl3wProcs.gl.CreateQueries
-#define glCreateRenderbuffers gl3wProcs.gl.CreateRenderbuffers
-#define glCreateSamplers gl3wProcs.gl.CreateSamplers
-#define glCreateShader gl3wProcs.gl.CreateShader
-#define glCreateShaderProgramv gl3wProcs.gl.CreateShaderProgramv
-#define glCreateTextures gl3wProcs.gl.CreateTextures
-#define glCreateTransformFeedbacks gl3wProcs.gl.CreateTransformFeedbacks
-#define glCreateVertexArrays gl3wProcs.gl.CreateVertexArrays
-#define glCullFace gl3wProcs.gl.CullFace
-#define glDebugMessageCallback gl3wProcs.gl.DebugMessageCallback
-#define glDebugMessageControl gl3wProcs.gl.DebugMessageControl
-#define glDebugMessageInsert gl3wProcs.gl.DebugMessageInsert
-#define glDeleteBuffers gl3wProcs.gl.DeleteBuffers
-#define glDeleteFramebuffers gl3wProcs.gl.DeleteFramebuffers
-#define glDeleteProgram gl3wProcs.gl.DeleteProgram
-#define glDeleteProgramPipelines gl3wProcs.gl.DeleteProgramPipelines
-#define glDeleteQueries gl3wProcs.gl.DeleteQueries
-#define glDeleteRenderbuffers gl3wProcs.gl.DeleteRenderbuffers
-#define glDeleteSamplers gl3wProcs.gl.DeleteSamplers
-#define glDeleteShader gl3wProcs.gl.DeleteShader
-#define glDeleteSync gl3wProcs.gl.DeleteSync
-#define glDeleteTextures gl3wProcs.gl.DeleteTextures
-#define glDeleteTransformFeedbacks gl3wProcs.gl.DeleteTransformFeedbacks
-#define glDeleteVertexArrays gl3wProcs.gl.DeleteVertexArrays
-#define glDepthFunc gl3wProcs.gl.DepthFunc
-#define glDepthMask gl3wProcs.gl.DepthMask
-#define glDepthRange gl3wProcs.gl.DepthRange
-#define glDepthRangeArrayv gl3wProcs.gl.DepthRangeArrayv
-#define glDepthRangeIndexed gl3wProcs.gl.DepthRangeIndexed
-#define glDepthRangef gl3wProcs.gl.DepthRangef
-#define glDetachShader gl3wProcs.gl.DetachShader
-#define glDisable gl3wProcs.gl.Disable
-#define glDisableVertexArrayAttrib gl3wProcs.gl.DisableVertexArrayAttrib
-#define glDisableVertexAttribArray gl3wProcs.gl.DisableVertexAttribArray
-#define glDisablei gl3wProcs.gl.Disablei
-#define glDispatchCompute gl3wProcs.gl.DispatchCompute
-#define glDispatchComputeIndirect gl3wProcs.gl.DispatchComputeIndirect
-#define glDrawArrays gl3wProcs.gl.DrawArrays
-#define glDrawArraysIndirect gl3wProcs.gl.DrawArraysIndirect
-#define glDrawArraysInstanced gl3wProcs.gl.DrawArraysInstanced
-#define glDrawArraysInstancedBaseInstance gl3wProcs.gl.DrawArraysInstancedBaseInstance
-#define glDrawBuffer gl3wProcs.gl.DrawBuffer
-#define glDrawBuffers gl3wProcs.gl.DrawBuffers
-#define glDrawElements gl3wProcs.gl.DrawElements
-#define glDrawElementsBaseVertex gl3wProcs.gl.DrawElementsBaseVertex
-#define glDrawElementsIndirect gl3wProcs.gl.DrawElementsIndirect
-#define glDrawElementsInstanced gl3wProcs.gl.DrawElementsInstanced
-#define glDrawElementsInstancedBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseInstance
-#define glDrawElementsInstancedBaseVertex gl3wProcs.gl.DrawElementsInstancedBaseVertex
-#define glDrawElementsInstancedBaseVertexBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseVertexBaseInstance
-#define glDrawRangeElements gl3wProcs.gl.DrawRangeElements
-#define glDrawRangeElementsBaseVertex gl3wProcs.gl.DrawRangeElementsBaseVertex
-#define glDrawTransformFeedback gl3wProcs.gl.DrawTransformFeedback
-#define glDrawTransformFeedbackInstanced gl3wProcs.gl.DrawTransformFeedbackInstanced
-#define glDrawTransformFeedbackStream gl3wProcs.gl.DrawTransformFeedbackStream
-#define glDrawTransformFeedbackStreamInstanced gl3wProcs.gl.DrawTransformFeedbackStreamInstanced
-#define glEnable gl3wProcs.gl.Enable
-#define glEnableVertexArrayAttrib gl3wProcs.gl.EnableVertexArrayAttrib
-#define glEnableVertexAttribArray gl3wProcs.gl.EnableVertexAttribArray
-#define glEnablei gl3wProcs.gl.Enablei
-#define glEndConditionalRender gl3wProcs.gl.EndConditionalRender
-#define glEndQuery gl3wProcs.gl.EndQuery
-#define glEndQueryIndexed gl3wProcs.gl.EndQueryIndexed
-#define glEndTransformFeedback gl3wProcs.gl.EndTransformFeedback
-#define glFenceSync gl3wProcs.gl.FenceSync
-#define glFinish gl3wProcs.gl.Finish
-#define glFlush gl3wProcs.gl.Flush
-#define glFlushMappedBufferRange gl3wProcs.gl.FlushMappedBufferRange
-#define glFlushMappedNamedBufferRange gl3wProcs.gl.FlushMappedNamedBufferRange
-#define glFramebufferParameteri gl3wProcs.gl.FramebufferParameteri
-#define glFramebufferRenderbuffer gl3wProcs.gl.FramebufferRenderbuffer
-#define glFramebufferTexture gl3wProcs.gl.FramebufferTexture
-#define glFramebufferTexture1D gl3wProcs.gl.FramebufferTexture1D
-#define glFramebufferTexture2D gl3wProcs.gl.FramebufferTexture2D
-#define glFramebufferTexture3D gl3wProcs.gl.FramebufferTexture3D
-#define glFramebufferTextureLayer gl3wProcs.gl.FramebufferTextureLayer
-#define glFrontFace gl3wProcs.gl.FrontFace
-#define glGenBuffers gl3wProcs.gl.GenBuffers
-#define glGenFramebuffers gl3wProcs.gl.GenFramebuffers
-#define glGenProgramPipelines gl3wProcs.gl.GenProgramPipelines
-#define glGenQueries gl3wProcs.gl.GenQueries
-#define glGenRenderbuffers gl3wProcs.gl.GenRenderbuffers
-#define glGenSamplers gl3wProcs.gl.GenSamplers
-#define glGenTextures gl3wProcs.gl.GenTextures
-#define glGenTransformFeedbacks gl3wProcs.gl.GenTransformFeedbacks
-#define glGenVertexArrays gl3wProcs.gl.GenVertexArrays
-#define glGenerateMipmap gl3wProcs.gl.GenerateMipmap
-#define glGenerateTextureMipmap gl3wProcs.gl.GenerateTextureMipmap
-#define glGetActiveAtomicCounterBufferiv gl3wProcs.gl.GetActiveAtomicCounterBufferiv
-#define glGetActiveAttrib gl3wProcs.gl.GetActiveAttrib
-#define glGetActiveSubroutineName gl3wProcs.gl.GetActiveSubroutineName
-#define glGetActiveSubroutineUniformName gl3wProcs.gl.GetActiveSubroutineUniformName
-#define glGetActiveSubroutineUniformiv gl3wProcs.gl.GetActiveSubroutineUniformiv
-#define glGetActiveUniform gl3wProcs.gl.GetActiveUniform
-#define glGetActiveUniformBlockName gl3wProcs.gl.GetActiveUniformBlockName
-#define glGetActiveUniformBlockiv gl3wProcs.gl.GetActiveUniformBlockiv
-#define glGetActiveUniformName gl3wProcs.gl.GetActiveUniformName
-#define glGetActiveUniformsiv gl3wProcs.gl.GetActiveUniformsiv
-#define glGetAttachedShaders gl3wProcs.gl.GetAttachedShaders
-#define glGetAttribLocation gl3wProcs.gl.GetAttribLocation
-#define glGetBooleani_v gl3wProcs.gl.GetBooleani_v
-#define glGetBooleanv gl3wProcs.gl.GetBooleanv
-#define glGetBufferParameteri64v gl3wProcs.gl.GetBufferParameteri64v
-#define glGetBufferParameteriv gl3wProcs.gl.GetBufferParameteriv
-#define glGetBufferPointerv gl3wProcs.gl.GetBufferPointerv
-#define glGetBufferSubData gl3wProcs.gl.GetBufferSubData
-#define glGetCompressedTexImage gl3wProcs.gl.GetCompressedTexImage
-#define glGetCompressedTextureImage gl3wProcs.gl.GetCompressedTextureImage
-#define glGetCompressedTextureSubImage gl3wProcs.gl.GetCompressedTextureSubImage
-#define glGetDebugMessageLog gl3wProcs.gl.GetDebugMessageLog
-#define glGetDoublei_v gl3wProcs.gl.GetDoublei_v
-#define glGetDoublev gl3wProcs.gl.GetDoublev
-#define glGetError gl3wProcs.gl.GetError
-#define glGetFloati_v gl3wProcs.gl.GetFloati_v
-#define glGetFloatv gl3wProcs.gl.GetFloatv
-#define glGetFragDataIndex gl3wProcs.gl.GetFragDataIndex
-#define glGetFragDataLocation gl3wProcs.gl.GetFragDataLocation
-#define glGetFramebufferAttachmentParameteriv gl3wProcs.gl.GetFramebufferAttachmentParameteriv
-#define glGetFramebufferParameteriv gl3wProcs.gl.GetFramebufferParameteriv
-#define glGetGraphicsResetStatus gl3wProcs.gl.GetGraphicsResetStatus
-#define glGetInteger64i_v gl3wProcs.gl.GetInteger64i_v
-#define glGetInteger64v gl3wProcs.gl.GetInteger64v
-#define glGetIntegeri_v gl3wProcs.gl.GetIntegeri_v
-#define glGetIntegerv gl3wProcs.gl.GetIntegerv
-#define glGetInternalformati64v gl3wProcs.gl.GetInternalformati64v
-#define glGetInternalformativ gl3wProcs.gl.GetInternalformativ
-#define glGetMultisamplefv gl3wProcs.gl.GetMultisamplefv
-#define glGetNamedBufferParameteri64v gl3wProcs.gl.GetNamedBufferParameteri64v
-#define glGetNamedBufferParameteriv gl3wProcs.gl.GetNamedBufferParameteriv
-#define glGetNamedBufferPointerv gl3wProcs.gl.GetNamedBufferPointerv
-#define glGetNamedBufferSubData gl3wProcs.gl.GetNamedBufferSubData
-#define glGetNamedFramebufferAttachmentParameteriv gl3wProcs.gl.GetNamedFramebufferAttachmentParameteriv
-#define glGetNamedFramebufferParameteriv gl3wProcs.gl.GetNamedFramebufferParameteriv
-#define glGetNamedRenderbufferParameteriv gl3wProcs.gl.GetNamedRenderbufferParameteriv
-#define glGetObjectLabel gl3wProcs.gl.GetObjectLabel
-#define glGetObjectPtrLabel gl3wProcs.gl.GetObjectPtrLabel
-#define glGetPointerv gl3wProcs.gl.GetPointerv
-#define glGetProgramBinary gl3wProcs.gl.GetProgramBinary
-#define glGetProgramInfoLog gl3wProcs.gl.GetProgramInfoLog
-#define glGetProgramInterfaceiv gl3wProcs.gl.GetProgramInterfaceiv
-#define glGetProgramPipelineInfoLog gl3wProcs.gl.GetProgramPipelineInfoLog
-#define glGetProgramPipelineiv gl3wProcs.gl.GetProgramPipelineiv
-#define glGetProgramResourceIndex gl3wProcs.gl.GetProgramResourceIndex
-#define glGetProgramResourceLocation gl3wProcs.gl.GetProgramResourceLocation
-#define glGetProgramResourceLocationIndex gl3wProcs.gl.GetProgramResourceLocationIndex
-#define glGetProgramResourceName gl3wProcs.gl.GetProgramResourceName
-#define glGetProgramResourceiv gl3wProcs.gl.GetProgramResourceiv
-#define glGetProgramStageiv gl3wProcs.gl.GetProgramStageiv
-#define glGetProgramiv gl3wProcs.gl.GetProgramiv
-#define glGetQueryBufferObjecti64v gl3wProcs.gl.GetQueryBufferObjecti64v
-#define glGetQueryBufferObjectiv gl3wProcs.gl.GetQueryBufferObjectiv
-#define glGetQueryBufferObjectui64v gl3wProcs.gl.GetQueryBufferObjectui64v
-#define glGetQueryBufferObjectuiv gl3wProcs.gl.GetQueryBufferObjectuiv
-#define glGetQueryIndexediv gl3wProcs.gl.GetQueryIndexediv
-#define glGetQueryObjecti64v gl3wProcs.gl.GetQueryObjecti64v
-#define glGetQueryObjectiv gl3wProcs.gl.GetQueryObjectiv
-#define glGetQueryObjectui64v gl3wProcs.gl.GetQueryObjectui64v
-#define glGetQueryObjectuiv gl3wProcs.gl.GetQueryObjectuiv
-#define glGetQueryiv gl3wProcs.gl.GetQueryiv
-#define glGetRenderbufferParameteriv gl3wProcs.gl.GetRenderbufferParameteriv
-#define glGetSamplerParameterIiv gl3wProcs.gl.GetSamplerParameterIiv
-#define glGetSamplerParameterIuiv gl3wProcs.gl.GetSamplerParameterIuiv
-#define glGetSamplerParameterfv gl3wProcs.gl.GetSamplerParameterfv
-#define glGetSamplerParameteriv gl3wProcs.gl.GetSamplerParameteriv
-#define glGetShaderInfoLog gl3wProcs.gl.GetShaderInfoLog
-#define glGetShaderPrecisionFormat gl3wProcs.gl.GetShaderPrecisionFormat
-#define glGetShaderSource gl3wProcs.gl.GetShaderSource
-#define glGetShaderiv gl3wProcs.gl.GetShaderiv
-#define glGetString gl3wProcs.gl.GetString
-#define glGetStringi gl3wProcs.gl.GetStringi
-#define glGetSubroutineIndex gl3wProcs.gl.GetSubroutineIndex
-#define glGetSubroutineUniformLocation gl3wProcs.gl.GetSubroutineUniformLocation
-#define glGetSynciv gl3wProcs.gl.GetSynciv
-#define glGetTexImage gl3wProcs.gl.GetTexImage
-#define glGetTexLevelParameterfv gl3wProcs.gl.GetTexLevelParameterfv
-#define glGetTexLevelParameteriv gl3wProcs.gl.GetTexLevelParameteriv
-#define glGetTexParameterIiv gl3wProcs.gl.GetTexParameterIiv
-#define glGetTexParameterIuiv gl3wProcs.gl.GetTexParameterIuiv
-#define glGetTexParameterfv gl3wProcs.gl.GetTexParameterfv
-#define glGetTexParameteriv gl3wProcs.gl.GetTexParameteriv
-#define glGetTextureImage gl3wProcs.gl.GetTextureImage
-#define glGetTextureLevelParameterfv gl3wProcs.gl.GetTextureLevelParameterfv
-#define glGetTextureLevelParameteriv gl3wProcs.gl.GetTextureLevelParameteriv
-#define glGetTextureParameterIiv gl3wProcs.gl.GetTextureParameterIiv
-#define glGetTextureParameterIuiv gl3wProcs.gl.GetTextureParameterIuiv
-#define glGetTextureParameterfv gl3wProcs.gl.GetTextureParameterfv
-#define glGetTextureParameteriv gl3wProcs.gl.GetTextureParameteriv
-#define glGetTextureSubImage gl3wProcs.gl.GetTextureSubImage
-#define glGetTransformFeedbackVarying gl3wProcs.gl.GetTransformFeedbackVarying
-#define glGetTransformFeedbacki64_v gl3wProcs.gl.GetTransformFeedbacki64_v
-#define glGetTransformFeedbacki_v gl3wProcs.gl.GetTransformFeedbacki_v
-#define glGetTransformFeedbackiv gl3wProcs.gl.GetTransformFeedbackiv
-#define glGetUniformBlockIndex gl3wProcs.gl.GetUniformBlockIndex
-#define glGetUniformIndices gl3wProcs.gl.GetUniformIndices
-#define glGetUniformLocation gl3wProcs.gl.GetUniformLocation
-#define glGetUniformSubroutineuiv gl3wProcs.gl.GetUniformSubroutineuiv
-#define glGetUniformdv gl3wProcs.gl.GetUniformdv
-#define glGetUniformfv gl3wProcs.gl.GetUniformfv
-#define glGetUniformiv gl3wProcs.gl.GetUniformiv
-#define glGetUniformuiv gl3wProcs.gl.GetUniformuiv
-#define glGetVertexArrayIndexed64iv gl3wProcs.gl.GetVertexArrayIndexed64iv
-#define glGetVertexArrayIndexediv gl3wProcs.gl.GetVertexArrayIndexediv
-#define glGetVertexArrayiv gl3wProcs.gl.GetVertexArrayiv
-#define glGetVertexAttribIiv gl3wProcs.gl.GetVertexAttribIiv
-#define glGetVertexAttribIuiv gl3wProcs.gl.GetVertexAttribIuiv
-#define glGetVertexAttribLdv gl3wProcs.gl.GetVertexAttribLdv
-#define glGetVertexAttribPointerv gl3wProcs.gl.GetVertexAttribPointerv
-#define glGetVertexAttribdv gl3wProcs.gl.GetVertexAttribdv
-#define glGetVertexAttribfv gl3wProcs.gl.GetVertexAttribfv
-#define glGetVertexAttribiv gl3wProcs.gl.GetVertexAttribiv
-#define glGetnCompressedTexImage gl3wProcs.gl.GetnCompressedTexImage
-#define glGetnTexImage gl3wProcs.gl.GetnTexImage
-#define glGetnUniformdv gl3wProcs.gl.GetnUniformdv
-#define glGetnUniformfv gl3wProcs.gl.GetnUniformfv
-#define glGetnUniformiv gl3wProcs.gl.GetnUniformiv
-#define glGetnUniformuiv gl3wProcs.gl.GetnUniformuiv
-#define glHint gl3wProcs.gl.Hint
-#define glInvalidateBufferData gl3wProcs.gl.InvalidateBufferData
-#define glInvalidateBufferSubData gl3wProcs.gl.InvalidateBufferSubData
-#define glInvalidateFramebuffer gl3wProcs.gl.InvalidateFramebuffer
-#define glInvalidateNamedFramebufferData gl3wProcs.gl.InvalidateNamedFramebufferData
-#define glInvalidateNamedFramebufferSubData gl3wProcs.gl.InvalidateNamedFramebufferSubData
-#define glInvalidateSubFramebuffer gl3wProcs.gl.InvalidateSubFramebuffer
-#define glInvalidateTexImage gl3wProcs.gl.InvalidateTexImage
-#define glInvalidateTexSubImage gl3wProcs.gl.InvalidateTexSubImage
-#define glIsBuffer gl3wProcs.gl.IsBuffer
-#define glIsEnabled gl3wProcs.gl.IsEnabled
-#define glIsEnabledi gl3wProcs.gl.IsEnabledi
-#define glIsFramebuffer gl3wProcs.gl.IsFramebuffer
-#define glIsProgram gl3wProcs.gl.IsProgram
-#define glIsProgramPipeline gl3wProcs.gl.IsProgramPipeline
-#define glIsQuery gl3wProcs.gl.IsQuery
-#define glIsRenderbuffer gl3wProcs.gl.IsRenderbuffer
-#define glIsSampler gl3wProcs.gl.IsSampler
-#define glIsShader gl3wProcs.gl.IsShader
-#define glIsSync gl3wProcs.gl.IsSync
-#define glIsTexture gl3wProcs.gl.IsTexture
-#define glIsTransformFeedback gl3wProcs.gl.IsTransformFeedback
-#define glIsVertexArray gl3wProcs.gl.IsVertexArray
-#define glLineWidth gl3wProcs.gl.LineWidth
-#define glLinkProgram gl3wProcs.gl.LinkProgram
-#define glLogicOp gl3wProcs.gl.LogicOp
-#define glMapBuffer gl3wProcs.gl.MapBuffer
-#define glMapBufferRange gl3wProcs.gl.MapBufferRange
-#define glMapNamedBuffer gl3wProcs.gl.MapNamedBuffer
-#define glMapNamedBufferRange gl3wProcs.gl.MapNamedBufferRange
-#define glMemoryBarrier gl3wProcs.gl.MemoryBarrier
-#define glMemoryBarrierByRegion gl3wProcs.gl.MemoryBarrierByRegion
-#define glMinSampleShading gl3wProcs.gl.MinSampleShading
-#define glMultiDrawArrays gl3wProcs.gl.MultiDrawArrays
-#define glMultiDrawArraysIndirect gl3wProcs.gl.MultiDrawArraysIndirect
-#define glMultiDrawArraysIndirectCount gl3wProcs.gl.MultiDrawArraysIndirectCount
-#define glMultiDrawElements gl3wProcs.gl.MultiDrawElements
-#define glMultiDrawElementsBaseVertex gl3wProcs.gl.MultiDrawElementsBaseVertex
-#define glMultiDrawElementsIndirect gl3wProcs.gl.MultiDrawElementsIndirect
-#define glMultiDrawElementsIndirectCount gl3wProcs.gl.MultiDrawElementsIndirectCount
-#define glNamedBufferData gl3wProcs.gl.NamedBufferData
-#define glNamedBufferStorage gl3wProcs.gl.NamedBufferStorage
-#define glNamedBufferSubData gl3wProcs.gl.NamedBufferSubData
-#define glNamedFramebufferDrawBuffer gl3wProcs.gl.NamedFramebufferDrawBuffer
-#define glNamedFramebufferDrawBuffers gl3wProcs.gl.NamedFramebufferDrawBuffers
-#define glNamedFramebufferParameteri gl3wProcs.gl.NamedFramebufferParameteri
-#define glNamedFramebufferReadBuffer gl3wProcs.gl.NamedFramebufferReadBuffer
-#define glNamedFramebufferRenderbuffer gl3wProcs.gl.NamedFramebufferRenderbuffer
-#define glNamedFramebufferTexture gl3wProcs.gl.NamedFramebufferTexture
-#define glNamedFramebufferTextureLayer gl3wProcs.gl.NamedFramebufferTextureLayer
-#define glNamedRenderbufferStorage gl3wProcs.gl.NamedRenderbufferStorage
-#define glNamedRenderbufferStorageMultisample gl3wProcs.gl.NamedRenderbufferStorageMultisample
-#define glObjectLabel gl3wProcs.gl.ObjectLabel
-#define glObjectPtrLabel gl3wProcs.gl.ObjectPtrLabel
-#define glPatchParameterfv gl3wProcs.gl.PatchParameterfv
-#define glPatchParameteri gl3wProcs.gl.PatchParameteri
-#define glPauseTransformFeedback gl3wProcs.gl.PauseTransformFeedback
-#define glPixelStoref gl3wProcs.gl.PixelStoref
-#define glPixelStorei gl3wProcs.gl.PixelStorei
-#define glPointParameterf gl3wProcs.gl.PointParameterf
-#define glPointParameterfv gl3wProcs.gl.PointParameterfv
-#define glPointParameteri gl3wProcs.gl.PointParameteri
-#define glPointParameteriv gl3wProcs.gl.PointParameteriv
-#define glPointSize gl3wProcs.gl.PointSize
-#define glPolygonMode gl3wProcs.gl.PolygonMode
-#define glPolygonOffset gl3wProcs.gl.PolygonOffset
-#define glPolygonOffsetClamp gl3wProcs.gl.PolygonOffsetClamp
-#define glPopDebugGroup gl3wProcs.gl.PopDebugGroup
-#define glPrimitiveRestartIndex gl3wProcs.gl.PrimitiveRestartIndex
-#define glProgramBinary gl3wProcs.gl.ProgramBinary
-#define glProgramParameteri gl3wProcs.gl.ProgramParameteri
-#define glProgramUniform1d gl3wProcs.gl.ProgramUniform1d
-#define glProgramUniform1dv gl3wProcs.gl.ProgramUniform1dv
-#define glProgramUniform1f gl3wProcs.gl.ProgramUniform1f
-#define glProgramUniform1fv gl3wProcs.gl.ProgramUniform1fv
-#define glProgramUniform1i gl3wProcs.gl.ProgramUniform1i
-#define glProgramUniform1iv gl3wProcs.gl.ProgramUniform1iv
-#define glProgramUniform1ui gl3wProcs.gl.ProgramUniform1ui
-#define glProgramUniform1uiv gl3wProcs.gl.ProgramUniform1uiv
-#define glProgramUniform2d gl3wProcs.gl.ProgramUniform2d
-#define glProgramUniform2dv gl3wProcs.gl.ProgramUniform2dv
-#define glProgramUniform2f gl3wProcs.gl.ProgramUniform2f
-#define glProgramUniform2fv gl3wProcs.gl.ProgramUniform2fv
-#define glProgramUniform2i gl3wProcs.gl.ProgramUniform2i
-#define glProgramUniform2iv gl3wProcs.gl.ProgramUniform2iv
-#define glProgramUniform2ui gl3wProcs.gl.ProgramUniform2ui
-#define glProgramUniform2uiv gl3wProcs.gl.ProgramUniform2uiv
-#define glProgramUniform3d gl3wProcs.gl.ProgramUniform3d
-#define glProgramUniform3dv gl3wProcs.gl.ProgramUniform3dv
-#define glProgramUniform3f gl3wProcs.gl.ProgramUniform3f
-#define glProgramUniform3fv gl3wProcs.gl.ProgramUniform3fv
-#define glProgramUniform3i gl3wProcs.gl.ProgramUniform3i
-#define glProgramUniform3iv gl3wProcs.gl.ProgramUniform3iv
-#define glProgramUniform3ui gl3wProcs.gl.ProgramUniform3ui
-#define glProgramUniform3uiv gl3wProcs.gl.ProgramUniform3uiv
-#define glProgramUniform4d gl3wProcs.gl.ProgramUniform4d
-#define glProgramUniform4dv gl3wProcs.gl.ProgramUniform4dv
-#define glProgramUniform4f gl3wProcs.gl.ProgramUniform4f
-#define glProgramUniform4fv gl3wProcs.gl.ProgramUniform4fv
-#define glProgramUniform4i gl3wProcs.gl.ProgramUniform4i
-#define glProgramUniform4iv gl3wProcs.gl.ProgramUniform4iv
-#define glProgramUniform4ui gl3wProcs.gl.ProgramUniform4ui
-#define glProgramUniform4uiv gl3wProcs.gl.ProgramUniform4uiv
-#define glProgramUniformMatrix2dv gl3wProcs.gl.ProgramUniformMatrix2dv
-#define glProgramUniformMatrix2fv gl3wProcs.gl.ProgramUniformMatrix2fv
-#define glProgramUniformMatrix2x3dv gl3wProcs.gl.ProgramUniformMatrix2x3dv
-#define glProgramUniformMatrix2x3fv gl3wProcs.gl.ProgramUniformMatrix2x3fv
-#define glProgramUniformMatrix2x4dv gl3wProcs.gl.ProgramUniformMatrix2x4dv
-#define glProgramUniformMatrix2x4fv gl3wProcs.gl.ProgramUniformMatrix2x4fv
-#define glProgramUniformMatrix3dv gl3wProcs.gl.ProgramUniformMatrix3dv
-#define glProgramUniformMatrix3fv gl3wProcs.gl.ProgramUniformMatrix3fv
-#define glProgramUniformMatrix3x2dv gl3wProcs.gl.ProgramUniformMatrix3x2dv
-#define glProgramUniformMatrix3x2fv gl3wProcs.gl.ProgramUniformMatrix3x2fv
-#define glProgramUniformMatrix3x4dv gl3wProcs.gl.ProgramUniformMatrix3x4dv
-#define glProgramUniformMatrix3x4fv gl3wProcs.gl.ProgramUniformMatrix3x4fv
-#define glProgramUniformMatrix4dv gl3wProcs.gl.ProgramUniformMatrix4dv
-#define glProgramUniformMatrix4fv gl3wProcs.gl.ProgramUniformMatrix4fv
-#define glProgramUniformMatrix4x2dv gl3wProcs.gl.ProgramUniformMatrix4x2dv
-#define glProgramUniformMatrix4x2fv gl3wProcs.gl.ProgramUniformMatrix4x2fv
-#define glProgramUniformMatrix4x3dv gl3wProcs.gl.ProgramUniformMatrix4x3dv
-#define glProgramUniformMatrix4x3fv gl3wProcs.gl.ProgramUniformMatrix4x3fv
-#define glProvokingVertex gl3wProcs.gl.ProvokingVertex
-#define glPushDebugGroup gl3wProcs.gl.PushDebugGroup
-#define glQueryCounter gl3wProcs.gl.QueryCounter
-#define glReadBuffer gl3wProcs.gl.ReadBuffer
-#define glReadPixels gl3wProcs.gl.ReadPixels
-#define glReadnPixels gl3wProcs.gl.ReadnPixels
-#define glReleaseShaderCompiler gl3wProcs.gl.ReleaseShaderCompiler
-#define glRenderbufferStorage gl3wProcs.gl.RenderbufferStorage
-#define glRenderbufferStorageMultisample gl3wProcs.gl.RenderbufferStorageMultisample
-#define glResumeTransformFeedback gl3wProcs.gl.ResumeTransformFeedback
-#define glSampleCoverage gl3wProcs.gl.SampleCoverage
-#define glSampleMaski gl3wProcs.gl.SampleMaski
-#define glSamplerParameterIiv gl3wProcs.gl.SamplerParameterIiv
-#define glSamplerParameterIuiv gl3wProcs.gl.SamplerParameterIuiv
-#define glSamplerParameterf gl3wProcs.gl.SamplerParameterf
-#define glSamplerParameterfv gl3wProcs.gl.SamplerParameterfv
-#define glSamplerParameteri gl3wProcs.gl.SamplerParameteri
-#define glSamplerParameteriv gl3wProcs.gl.SamplerParameteriv
-#define glScissor gl3wProcs.gl.Scissor
-#define glScissorArrayv gl3wProcs.gl.ScissorArrayv
-#define glScissorIndexed gl3wProcs.gl.ScissorIndexed
-#define glScissorIndexedv gl3wProcs.gl.ScissorIndexedv
-#define glShaderBinary gl3wProcs.gl.ShaderBinary
-#define glShaderSource gl3wProcs.gl.ShaderSource
-#define glShaderStorageBlockBinding gl3wProcs.gl.ShaderStorageBlockBinding
-#define glSpecializeShader gl3wProcs.gl.SpecializeShader
-#define glStencilFunc gl3wProcs.gl.StencilFunc
-#define glStencilFuncSeparate gl3wProcs.gl.StencilFuncSeparate
-#define glStencilMask gl3wProcs.gl.StencilMask
-#define glStencilMaskSeparate gl3wProcs.gl.StencilMaskSeparate
-#define glStencilOp gl3wProcs.gl.StencilOp
-#define glStencilOpSeparate gl3wProcs.gl.StencilOpSeparate
-#define glTexBuffer gl3wProcs.gl.TexBuffer
-#define glTexBufferRange gl3wProcs.gl.TexBufferRange
-#define glTexImage1D gl3wProcs.gl.TexImage1D
-#define glTexImage2D gl3wProcs.gl.TexImage2D
-#define glTexImage2DMultisample gl3wProcs.gl.TexImage2DMultisample
-#define glTexImage3D gl3wProcs.gl.TexImage3D
-#define glTexImage3DMultisample gl3wProcs.gl.TexImage3DMultisample
-#define glTexParameterIiv gl3wProcs.gl.TexParameterIiv
-#define glTexParameterIuiv gl3wProcs.gl.TexParameterIuiv
-#define glTexParameterf gl3wProcs.gl.TexParameterf
-#define glTexParameterfv gl3wProcs.gl.TexParameterfv
-#define glTexParameteri gl3wProcs.gl.TexParameteri
-#define glTexParameteriv gl3wProcs.gl.TexParameteriv
-#define glTexStorage1D gl3wProcs.gl.TexStorage1D
-#define glTexStorage2D gl3wProcs.gl.TexStorage2D
-#define glTexStorage2DMultisample gl3wProcs.gl.TexStorage2DMultisample
-#define glTexStorage3D gl3wProcs.gl.TexStorage3D
-#define glTexStorage3DMultisample gl3wProcs.gl.TexStorage3DMultisample
-#define glTexSubImage1D gl3wProcs.gl.TexSubImage1D
-#define glTexSubImage2D gl3wProcs.gl.TexSubImage2D
-#define glTexSubImage3D gl3wProcs.gl.TexSubImage3D
-#define glTextureBarrier gl3wProcs.gl.TextureBarrier
-#define glTextureBuffer gl3wProcs.gl.TextureBuffer
-#define glTextureBufferRange gl3wProcs.gl.TextureBufferRange
-#define glTextureParameterIiv gl3wProcs.gl.TextureParameterIiv
-#define glTextureParameterIuiv gl3wProcs.gl.TextureParameterIuiv
-#define glTextureParameterf gl3wProcs.gl.TextureParameterf
-#define glTextureParameterfv gl3wProcs.gl.TextureParameterfv
-#define glTextureParameteri gl3wProcs.gl.TextureParameteri
-#define glTextureParameteriv gl3wProcs.gl.TextureParameteriv
-#define glTextureStorage1D gl3wProcs.gl.TextureStorage1D
-#define glTextureStorage2D gl3wProcs.gl.TextureStorage2D
-#define glTextureStorage2DMultisample gl3wProcs.gl.TextureStorage2DMultisample
-#define glTextureStorage3D gl3wProcs.gl.TextureStorage3D
-#define glTextureStorage3DMultisample gl3wProcs.gl.TextureStorage3DMultisample
-#define glTextureSubImage1D gl3wProcs.gl.TextureSubImage1D
-#define glTextureSubImage2D gl3wProcs.gl.TextureSubImage2D
-#define glTextureSubImage3D gl3wProcs.gl.TextureSubImage3D
-#define glTextureView gl3wProcs.gl.TextureView
-#define glTransformFeedbackBufferBase gl3wProcs.gl.TransformFeedbackBufferBase
-#define glTransformFeedbackBufferRange gl3wProcs.gl.TransformFeedbackBufferRange
-#define glTransformFeedbackVaryings gl3wProcs.gl.TransformFeedbackVaryings
-#define glUniform1d gl3wProcs.gl.Uniform1d
-#define glUniform1dv gl3wProcs.gl.Uniform1dv
-#define glUniform1f gl3wProcs.gl.Uniform1f
-#define glUniform1fv gl3wProcs.gl.Uniform1fv
-#define glUniform1i gl3wProcs.gl.Uniform1i
-#define glUniform1iv gl3wProcs.gl.Uniform1iv
-#define glUniform1ui gl3wProcs.gl.Uniform1ui
-#define glUniform1uiv gl3wProcs.gl.Uniform1uiv
-#define glUniform2d gl3wProcs.gl.Uniform2d
-#define glUniform2dv gl3wProcs.gl.Uniform2dv
-#define glUniform2f gl3wProcs.gl.Uniform2f
-#define glUniform2fv gl3wProcs.gl.Uniform2fv
-#define glUniform2i gl3wProcs.gl.Uniform2i
-#define glUniform2iv gl3wProcs.gl.Uniform2iv
-#define glUniform2ui gl3wProcs.gl.Uniform2ui
-#define glUniform2uiv gl3wProcs.gl.Uniform2uiv
-#define glUniform3d gl3wProcs.gl.Uniform3d
-#define glUniform3dv gl3wProcs.gl.Uniform3dv
-#define glUniform3f gl3wProcs.gl.Uniform3f
-#define glUniform3fv gl3wProcs.gl.Uniform3fv
-#define glUniform3i gl3wProcs.gl.Uniform3i
-#define glUniform3iv gl3wProcs.gl.Uniform3iv
-#define glUniform3ui gl3wProcs.gl.Uniform3ui
-#define glUniform3uiv gl3wProcs.gl.Uniform3uiv
-#define glUniform4d gl3wProcs.gl.Uniform4d
-#define glUniform4dv gl3wProcs.gl.Uniform4dv
-#define glUniform4f gl3wProcs.gl.Uniform4f
-#define glUniform4fv gl3wProcs.gl.Uniform4fv
-#define glUniform4i gl3wProcs.gl.Uniform4i
-#define glUniform4iv gl3wProcs.gl.Uniform4iv
-#define glUniform4ui gl3wProcs.gl.Uniform4ui
-#define glUniform4uiv gl3wProcs.gl.Uniform4uiv
-#define glUniformBlockBinding gl3wProcs.gl.UniformBlockBinding
-#define glUniformMatrix2dv gl3wProcs.gl.UniformMatrix2dv
-#define glUniformMatrix2fv gl3wProcs.gl.UniformMatrix2fv
-#define glUniformMatrix2x3dv gl3wProcs.gl.UniformMatrix2x3dv
-#define glUniformMatrix2x3fv gl3wProcs.gl.UniformMatrix2x3fv
-#define glUniformMatrix2x4dv gl3wProcs.gl.UniformMatrix2x4dv
-#define glUniformMatrix2x4fv gl3wProcs.gl.UniformMatrix2x4fv
-#define glUniformMatrix3dv gl3wProcs.gl.UniformMatrix3dv
-#define glUniformMatrix3fv gl3wProcs.gl.UniformMatrix3fv
-#define glUniformMatrix3x2dv gl3wProcs.gl.UniformMatrix3x2dv
-#define glUniformMatrix3x2fv gl3wProcs.gl.UniformMatrix3x2fv
-#define glUniformMatrix3x4dv gl3wProcs.gl.UniformMatrix3x4dv
-#define glUniformMatrix3x4fv gl3wProcs.gl.UniformMatrix3x4fv
-#define glUniformMatrix4dv gl3wProcs.gl.UniformMatrix4dv
-#define glUniformMatrix4fv gl3wProcs.gl.UniformMatrix4fv
-#define glUniformMatrix4x2dv gl3wProcs.gl.UniformMatrix4x2dv
-#define glUniformMatrix4x2fv gl3wProcs.gl.UniformMatrix4x2fv
-#define glUniformMatrix4x3dv gl3wProcs.gl.UniformMatrix4x3dv
-#define glUniformMatrix4x3fv gl3wProcs.gl.UniformMatrix4x3fv
-#define glUniformSubroutinesuiv gl3wProcs.gl.UniformSubroutinesuiv
-#define glUnmapBuffer gl3wProcs.gl.UnmapBuffer
-#define glUnmapNamedBuffer gl3wProcs.gl.UnmapNamedBuffer
-#define glUseProgram gl3wProcs.gl.UseProgram
-#define glUseProgramStages gl3wProcs.gl.UseProgramStages
-#define glValidateProgram gl3wProcs.gl.ValidateProgram
-#define glValidateProgramPipeline gl3wProcs.gl.ValidateProgramPipeline
-#define glVertexArrayAttribBinding gl3wProcs.gl.VertexArrayAttribBinding
-#define glVertexArrayAttribFormat gl3wProcs.gl.VertexArrayAttribFormat
-#define glVertexArrayAttribIFormat gl3wProcs.gl.VertexArrayAttribIFormat
-#define glVertexArrayAttribLFormat gl3wProcs.gl.VertexArrayAttribLFormat
-#define glVertexArrayBindingDivisor gl3wProcs.gl.VertexArrayBindingDivisor
-#define glVertexArrayElementBuffer gl3wProcs.gl.VertexArrayElementBuffer
-#define glVertexArrayVertexBuffer gl3wProcs.gl.VertexArrayVertexBuffer
-#define glVertexArrayVertexBuffers gl3wProcs.gl.VertexArrayVertexBuffers
-#define glVertexAttrib1d gl3wProcs.gl.VertexAttrib1d
-#define glVertexAttrib1dv gl3wProcs.gl.VertexAttrib1dv
-#define glVertexAttrib1f gl3wProcs.gl.VertexAttrib1f
-#define glVertexAttrib1fv gl3wProcs.gl.VertexAttrib1fv
-#define glVertexAttrib1s gl3wProcs.gl.VertexAttrib1s
-#define glVertexAttrib1sv gl3wProcs.gl.VertexAttrib1sv
-#define glVertexAttrib2d gl3wProcs.gl.VertexAttrib2d
-#define glVertexAttrib2dv gl3wProcs.gl.VertexAttrib2dv
-#define glVertexAttrib2f gl3wProcs.gl.VertexAttrib2f
-#define glVertexAttrib2fv gl3wProcs.gl.VertexAttrib2fv
-#define glVertexAttrib2s gl3wProcs.gl.VertexAttrib2s
-#define glVertexAttrib2sv gl3wProcs.gl.VertexAttrib2sv
-#define glVertexAttrib3d gl3wProcs.gl.VertexAttrib3d
-#define glVertexAttrib3dv gl3wProcs.gl.VertexAttrib3dv
-#define glVertexAttrib3f gl3wProcs.gl.VertexAttrib3f
-#define glVertexAttrib3fv gl3wProcs.gl.VertexAttrib3fv
-#define glVertexAttrib3s gl3wProcs.gl.VertexAttrib3s
-#define glVertexAttrib3sv gl3wProcs.gl.VertexAttrib3sv
-#define glVertexAttrib4Nbv gl3wProcs.gl.VertexAttrib4Nbv
-#define glVertexAttrib4Niv gl3wProcs.gl.VertexAttrib4Niv
-#define glVertexAttrib4Nsv gl3wProcs.gl.VertexAttrib4Nsv
-#define glVertexAttrib4Nub gl3wProcs.gl.VertexAttrib4Nub
-#define glVertexAttrib4Nubv gl3wProcs.gl.VertexAttrib4Nubv
-#define glVertexAttrib4Nuiv gl3wProcs.gl.VertexAttrib4Nuiv
-#define glVertexAttrib4Nusv gl3wProcs.gl.VertexAttrib4Nusv
-#define glVertexAttrib4bv gl3wProcs.gl.VertexAttrib4bv
-#define glVertexAttrib4d gl3wProcs.gl.VertexAttrib4d
-#define glVertexAttrib4dv gl3wProcs.gl.VertexAttrib4dv
-#define glVertexAttrib4f gl3wProcs.gl.VertexAttrib4f
-#define glVertexAttrib4fv gl3wProcs.gl.VertexAttrib4fv
-#define glVertexAttrib4iv gl3wProcs.gl.VertexAttrib4iv
-#define glVertexAttrib4s gl3wProcs.gl.VertexAttrib4s
-#define glVertexAttrib4sv gl3wProcs.gl.VertexAttrib4sv
-#define glVertexAttrib4ubv gl3wProcs.gl.VertexAttrib4ubv
-#define glVertexAttrib4uiv gl3wProcs.gl.VertexAttrib4uiv
-#define glVertexAttrib4usv gl3wProcs.gl.VertexAttrib4usv
-#define glVertexAttribBinding gl3wProcs.gl.VertexAttribBinding
-#define glVertexAttribDivisor gl3wProcs.gl.VertexAttribDivisor
-#define glVertexAttribFormat gl3wProcs.gl.VertexAttribFormat
-#define glVertexAttribI1i gl3wProcs.gl.VertexAttribI1i
-#define glVertexAttribI1iv gl3wProcs.gl.VertexAttribI1iv
-#define glVertexAttribI1ui gl3wProcs.gl.VertexAttribI1ui
-#define glVertexAttribI1uiv gl3wProcs.gl.VertexAttribI1uiv
-#define glVertexAttribI2i gl3wProcs.gl.VertexAttribI2i
-#define glVertexAttribI2iv gl3wProcs.gl.VertexAttribI2iv
-#define glVertexAttribI2ui gl3wProcs.gl.VertexAttribI2ui
-#define glVertexAttribI2uiv gl3wProcs.gl.VertexAttribI2uiv
-#define glVertexAttribI3i gl3wProcs.gl.VertexAttribI3i
-#define glVertexAttribI3iv gl3wProcs.gl.VertexAttribI3iv
-#define glVertexAttribI3ui gl3wProcs.gl.VertexAttribI3ui
-#define glVertexAttribI3uiv gl3wProcs.gl.VertexAttribI3uiv
-#define glVertexAttribI4bv gl3wProcs.gl.VertexAttribI4bv
-#define glVertexAttribI4i gl3wProcs.gl.VertexAttribI4i
-#define glVertexAttribI4iv gl3wProcs.gl.VertexAttribI4iv
-#define glVertexAttribI4sv gl3wProcs.gl.VertexAttribI4sv
-#define glVertexAttribI4ubv gl3wProcs.gl.VertexAttribI4ubv
-#define glVertexAttribI4ui gl3wProcs.gl.VertexAttribI4ui
-#define glVertexAttribI4uiv gl3wProcs.gl.VertexAttribI4uiv
-#define glVertexAttribI4usv gl3wProcs.gl.VertexAttribI4usv
-#define glVertexAttribIFormat gl3wProcs.gl.VertexAttribIFormat
-#define glVertexAttribIPointer gl3wProcs.gl.VertexAttribIPointer
-#define glVertexAttribL1d gl3wProcs.gl.VertexAttribL1d
-#define glVertexAttribL1dv gl3wProcs.gl.VertexAttribL1dv
-#define glVertexAttribL2d gl3wProcs.gl.VertexAttribL2d
-#define glVertexAttribL2dv gl3wProcs.gl.VertexAttribL2dv
-#define glVertexAttribL3d gl3wProcs.gl.VertexAttribL3d
-#define glVertexAttribL3dv gl3wProcs.gl.VertexAttribL3dv
-#define glVertexAttribL4d gl3wProcs.gl.VertexAttribL4d
-#define glVertexAttribL4dv gl3wProcs.gl.VertexAttribL4dv
-#define glVertexAttribLFormat gl3wProcs.gl.VertexAttribLFormat
-#define glVertexAttribLPointer gl3wProcs.gl.VertexAttribLPointer
-#define glVertexAttribP1ui gl3wProcs.gl.VertexAttribP1ui
-#define glVertexAttribP1uiv gl3wProcs.gl.VertexAttribP1uiv
-#define glVertexAttribP2ui gl3wProcs.gl.VertexAttribP2ui
-#define glVertexAttribP2uiv gl3wProcs.gl.VertexAttribP2uiv
-#define glVertexAttribP3ui gl3wProcs.gl.VertexAttribP3ui
-#define glVertexAttribP3uiv gl3wProcs.gl.VertexAttribP3uiv
-#define glVertexAttribP4ui gl3wProcs.gl.VertexAttribP4ui
-#define glVertexAttribP4uiv gl3wProcs.gl.VertexAttribP4uiv
-#define glVertexAttribPointer gl3wProcs.gl.VertexAttribPointer
-#define glVertexBindingDivisor gl3wProcs.gl.VertexBindingDivisor
-#define glViewport gl3wProcs.gl.Viewport
-#define glViewportArrayv gl3wProcs.gl.ViewportArrayv
-#define glViewportIndexedf gl3wProcs.gl.ViewportIndexedf
-#define glViewportIndexedfv gl3wProcs.gl.ViewportIndexedfv
-#define glWaitSync gl3wProcs.gl.WaitSync
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+
+ This file was generated with gl3w_gen.py, part of gl3w
+ (hosted at https://github.com/skaslev/gl3w)
+
+ This is free and unencumbered software released into the public domain.
+
+ Anyone is free to copy, modify, publish, use, compile, sell, or
+ distribute this software, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any
+ means.
+
+ In jurisdictions that recognize copyright laws, the author or authors
+ of this software dedicate any and all copyright interest in the
+ software to the public domain. We make this dedication for the benefit
+ of the public at large and to the detriment of our heirs and
+ successors. We intend this dedication to be an overt act of
+ relinquishment in perpetuity of all present and future rights to this
+ software under copyright law.
+
+ 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 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.
+
+*/
+
+#ifndef __gl3w_h_
+#define __gl3w_h_
+
+#include
+
+#ifndef __gl_h_
+#define __gl_h_
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define GL3W_OK 0
+#define GL3W_ERROR_INIT -1
+#define GL3W_ERROR_LIBRARY_OPEN -2
+#define GL3W_ERROR_OPENGL_VERSION -3
+
+typedef void (*GL3WglProc)(void);
+typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
+
+/* gl3w api */
+int gl3wInit(void);
+int gl3wInit2(GL3WGetProcAddressProc proc);
+int gl3wIsSupported(int major, int minor);
+GL3WglProc gl3wGetProcAddress(const char *proc);
+
+/* gl3w internal state */
+union GL3WProcs {
+ GL3WglProc ptr[657];
+ struct {
+ PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram;
+ PFNGLACTIVETEXTUREPROC ActiveTexture;
+ PFNGLATTACHSHADERPROC AttachShader;
+ PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender;
+ PFNGLBEGINQUERYPROC BeginQuery;
+ PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed;
+ PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback;
+ PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation;
+ PFNGLBINDBUFFERPROC BindBuffer;
+ PFNGLBINDBUFFERBASEPROC BindBufferBase;
+ PFNGLBINDBUFFERRANGEPROC BindBufferRange;
+ PFNGLBINDBUFFERSBASEPROC BindBuffersBase;
+ PFNGLBINDBUFFERSRANGEPROC BindBuffersRange;
+ PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation;
+ PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed;
+ PFNGLBINDFRAMEBUFFERPROC BindFramebuffer;
+ PFNGLBINDIMAGETEXTUREPROC BindImageTexture;
+ PFNGLBINDIMAGETEXTURESPROC BindImageTextures;
+ PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline;
+ PFNGLBINDRENDERBUFFERPROC BindRenderbuffer;
+ PFNGLBINDSAMPLERPROC BindSampler;
+ PFNGLBINDSAMPLERSPROC BindSamplers;
+ PFNGLBINDTEXTUREPROC BindTexture;
+ PFNGLBINDTEXTUREUNITPROC BindTextureUnit;
+ PFNGLBINDTEXTURESPROC BindTextures;
+ PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback;
+ PFNGLBINDVERTEXARRAYPROC BindVertexArray;
+ PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer;
+ PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers;
+ PFNGLBLENDCOLORPROC BlendColor;
+ PFNGLBLENDEQUATIONPROC BlendEquation;
+ PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
+ PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei;
+ PFNGLBLENDEQUATIONIPROC BlendEquationi;
+ PFNGLBLENDFUNCPROC BlendFunc;
+ PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
+ PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei;
+ PFNGLBLENDFUNCIPROC BlendFunci;
+ PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer;
+ PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer;
+ PFNGLBUFFERDATAPROC BufferData;
+ PFNGLBUFFERSTORAGEPROC BufferStorage;
+ PFNGLBUFFERSUBDATAPROC BufferSubData;
+ PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
+ PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus;
+ PFNGLCLAMPCOLORPROC ClampColor;
+ PFNGLCLEARPROC Clear;
+ PFNGLCLEARBUFFERDATAPROC ClearBufferData;
+ PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData;
+ PFNGLCLEARBUFFERFIPROC ClearBufferfi;
+ PFNGLCLEARBUFFERFVPROC ClearBufferfv;
+ PFNGLCLEARBUFFERIVPROC ClearBufferiv;
+ PFNGLCLEARBUFFERUIVPROC ClearBufferuiv;
+ PFNGLCLEARCOLORPROC ClearColor;
+ PFNGLCLEARDEPTHPROC ClearDepth;
+ PFNGLCLEARDEPTHFPROC ClearDepthf;
+ PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData;
+ PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData;
+ PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi;
+ PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv;
+ PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv;
+ PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv;
+ PFNGLCLEARSTENCILPROC ClearStencil;
+ PFNGLCLEARTEXIMAGEPROC ClearTexImage;
+ PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage;
+ PFNGLCLIENTWAITSYNCPROC ClientWaitSync;
+ PFNGLCLIPCONTROLPROC ClipControl;
+ PFNGLCOLORMASKPROC ColorMask;
+ PFNGLCOLORMASKIPROC ColorMaski;
+ PFNGLCOMPILESHADERPROC CompileShader;
+ PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D;
+ PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D;
+ PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D;
+ PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D;
+ PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
+ PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D;
+ PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData;
+ PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData;
+ PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData;
+ PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D;
+ PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D;
+ PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D;
+ PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D;
+ PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D;
+ PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D;
+ PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D;
+ PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D;
+ PFNGLCREATEBUFFERSPROC CreateBuffers;
+ PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers;
+ PFNGLCREATEPROGRAMPROC CreateProgram;
+ PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines;
+ PFNGLCREATEQUERIESPROC CreateQueries;
+ PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers;
+ PFNGLCREATESAMPLERSPROC CreateSamplers;
+ PFNGLCREATESHADERPROC CreateShader;
+ PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv;
+ PFNGLCREATETEXTURESPROC CreateTextures;
+ PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks;
+ PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays;
+ PFNGLCULLFACEPROC CullFace;
+ PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback;
+ PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl;
+ PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert;
+ PFNGLDELETEBUFFERSPROC DeleteBuffers;
+ PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers;
+ PFNGLDELETEPROGRAMPROC DeleteProgram;
+ PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines;
+ PFNGLDELETEQUERIESPROC DeleteQueries;
+ PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers;
+ PFNGLDELETESAMPLERSPROC DeleteSamplers;
+ PFNGLDELETESHADERPROC DeleteShader;
+ PFNGLDELETESYNCPROC DeleteSync;
+ PFNGLDELETETEXTURESPROC DeleteTextures;
+ PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks;
+ PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays;
+ PFNGLDEPTHFUNCPROC DepthFunc;
+ PFNGLDEPTHMASKPROC DepthMask;
+ PFNGLDEPTHRANGEPROC DepthRange;
+ PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv;
+ PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed;
+ PFNGLDEPTHRANGEFPROC DepthRangef;
+ PFNGLDETACHSHADERPROC DetachShader;
+ PFNGLDISABLEPROC Disable;
+ PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib;
+ PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
+ PFNGLDISABLEIPROC Disablei;
+ PFNGLDISPATCHCOMPUTEPROC DispatchCompute;
+ PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect;
+ PFNGLDRAWARRAYSPROC DrawArrays;
+ PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect;
+ PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced;
+ PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance;
+ PFNGLDRAWBUFFERPROC DrawBuffer;
+ PFNGLDRAWBUFFERSPROC DrawBuffers;
+ PFNGLDRAWELEMENTSPROC DrawElements;
+ PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex;
+ PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect;
+ PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced;
+ PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance;
+ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex;
+ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC DrawElementsInstancedBaseVertexBaseInstance;
+ PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements;
+ PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex;
+ PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback;
+ PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced;
+ PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream;
+ PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced;
+ PFNGLENABLEPROC Enable;
+ PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib;
+ PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
+ PFNGLENABLEIPROC Enablei;
+ PFNGLENDCONDITIONALRENDERPROC EndConditionalRender;
+ PFNGLENDQUERYPROC EndQuery;
+ PFNGLENDQUERYINDEXEDPROC EndQueryIndexed;
+ PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback;
+ PFNGLFENCESYNCPROC FenceSync;
+ PFNGLFINISHPROC Finish;
+ PFNGLFLUSHPROC Flush;
+ PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange;
+ PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange;
+ PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri;
+ PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
+ PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture;
+ PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D;
+ PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
+ PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D;
+ PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer;
+ PFNGLFRONTFACEPROC FrontFace;
+ PFNGLGENBUFFERSPROC GenBuffers;
+ PFNGLGENFRAMEBUFFERSPROC GenFramebuffers;
+ PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines;
+ PFNGLGENQUERIESPROC GenQueries;
+ PFNGLGENRENDERBUFFERSPROC GenRenderbuffers;
+ PFNGLGENSAMPLERSPROC GenSamplers;
+ PFNGLGENTEXTURESPROC GenTextures;
+ PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks;
+ PFNGLGENVERTEXARRAYSPROC GenVertexArrays;
+ PFNGLGENERATEMIPMAPPROC GenerateMipmap;
+ PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap;
+ PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv;
+ PFNGLGETACTIVEATTRIBPROC GetActiveAttrib;
+ PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName;
+ PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName;
+ PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv;
+ PFNGLGETACTIVEUNIFORMPROC GetActiveUniform;
+ PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName;
+ PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv;
+ PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName;
+ PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv;
+ PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders;
+ PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
+ PFNGLGETBOOLEANI_VPROC GetBooleani_v;
+ PFNGLGETBOOLEANVPROC GetBooleanv;
+ PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v;
+ PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
+ PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv;
+ PFNGLGETBUFFERSUBDATAPROC GetBufferSubData;
+ PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage;
+ PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage;
+ PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage;
+ PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog;
+ PFNGLGETDOUBLEI_VPROC GetDoublei_v;
+ PFNGLGETDOUBLEVPROC GetDoublev;
+ PFNGLGETERRORPROC GetError;
+ PFNGLGETFLOATI_VPROC GetFloati_v;
+ PFNGLGETFLOATVPROC GetFloatv;
+ PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex;
+ PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation;
+ PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
+ PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv;
+ PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus;
+ PFNGLGETINTEGER64I_VPROC GetInteger64i_v;
+ PFNGLGETINTEGER64VPROC GetInteger64v;
+ PFNGLGETINTEGERI_VPROC GetIntegeri_v;
+ PFNGLGETINTEGERVPROC GetIntegerv;
+ PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v;
+ PFNGLGETINTERNALFORMATIVPROC GetInternalformativ;
+ PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv;
+ PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v;
+ PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv;
+ PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv;
+ PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData;
+ PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv;
+ PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv;
+ PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv;
+ PFNGLGETOBJECTLABELPROC GetObjectLabel;
+ PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel;
+ PFNGLGETPOINTERVPROC GetPointerv;
+ PFNGLGETPROGRAMBINARYPROC GetProgramBinary;
+ PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog;
+ PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv;
+ PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog;
+ PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv;
+ PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex;
+ PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation;
+ PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex;
+ PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName;
+ PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv;
+ PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv;
+ PFNGLGETPROGRAMIVPROC GetProgramiv;
+ PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v;
+ PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv;
+ PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v;
+ PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv;
+ PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv;
+ PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v;
+ PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv;
+ PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v;
+ PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv;
+ PFNGLGETQUERYIVPROC GetQueryiv;
+ PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
+ PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv;
+ PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv;
+ PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv;
+ PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv;
+ PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog;
+ PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat;
+ PFNGLGETSHADERSOURCEPROC GetShaderSource;
+ PFNGLGETSHADERIVPROC GetShaderiv;
+ PFNGLGETSTRINGPROC GetString;
+ PFNGLGETSTRINGIPROC GetStringi;
+ PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex;
+ PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation;
+ PFNGLGETSYNCIVPROC GetSynciv;
+ PFNGLGETTEXIMAGEPROC GetTexImage;
+ PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv;
+ PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv;
+ PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv;
+ PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv;
+ PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv;
+ PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv;
+ PFNGLGETTEXTUREIMAGEPROC GetTextureImage;
+ PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv;
+ PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv;
+ PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv;
+ PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv;
+ PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv;
+ PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv;
+ PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage;
+ PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying;
+ PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v;
+ PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v;
+ PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv;
+ PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex;
+ PFNGLGETUNIFORMINDICESPROC GetUniformIndices;
+ PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
+ PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv;
+ PFNGLGETUNIFORMDVPROC GetUniformdv;
+ PFNGLGETUNIFORMFVPROC GetUniformfv;
+ PFNGLGETUNIFORMIVPROC GetUniformiv;
+ PFNGLGETUNIFORMUIVPROC GetUniformuiv;
+ PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv;
+ PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv;
+ PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv;
+ PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv;
+ PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv;
+ PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv;
+ PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
+ PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv;
+ PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv;
+ PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
+ PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage;
+ PFNGLGETNTEXIMAGEPROC GetnTexImage;
+ PFNGLGETNUNIFORMDVPROC GetnUniformdv;
+ PFNGLGETNUNIFORMFVPROC GetnUniformfv;
+ PFNGLGETNUNIFORMIVPROC GetnUniformiv;
+ PFNGLGETNUNIFORMUIVPROC GetnUniformuiv;
+ PFNGLHINTPROC Hint;
+ PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData;
+ PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData;
+ PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer;
+ PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData;
+ PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData;
+ PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer;
+ PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage;
+ PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage;
+ PFNGLISBUFFERPROC IsBuffer;
+ PFNGLISENABLEDPROC IsEnabled;
+ PFNGLISENABLEDIPROC IsEnabledi;
+ PFNGLISFRAMEBUFFERPROC IsFramebuffer;
+ PFNGLISPROGRAMPROC IsProgram;
+ PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline;
+ PFNGLISQUERYPROC IsQuery;
+ PFNGLISRENDERBUFFERPROC IsRenderbuffer;
+ PFNGLISSAMPLERPROC IsSampler;
+ PFNGLISSHADERPROC IsShader;
+ PFNGLISSYNCPROC IsSync;
+ PFNGLISTEXTUREPROC IsTexture;
+ PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback;
+ PFNGLISVERTEXARRAYPROC IsVertexArray;
+ PFNGLLINEWIDTHPROC LineWidth;
+ PFNGLLINKPROGRAMPROC LinkProgram;
+ PFNGLLOGICOPPROC LogicOp;
+ PFNGLMAPBUFFERPROC MapBuffer;
+ PFNGLMAPBUFFERRANGEPROC MapBufferRange;
+ PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer;
+ PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange;
+ PFNGLMEMORYBARRIERPROC MemoryBarrier;
+ PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion;
+ PFNGLMINSAMPLESHADINGPROC MinSampleShading;
+ PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays;
+ PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect;
+ PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount;
+ PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements;
+ PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex;
+ PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect;
+ PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount;
+ PFNGLNAMEDBUFFERDATAPROC NamedBufferData;
+ PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage;
+ PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData;
+ PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer;
+ PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers;
+ PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri;
+ PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer;
+ PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer;
+ PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture;
+ PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer;
+ PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage;
+ PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample;
+ PFNGLOBJECTLABELPROC ObjectLabel;
+ PFNGLOBJECTPTRLABELPROC ObjectPtrLabel;
+ PFNGLPATCHPARAMETERFVPROC PatchParameterfv;
+ PFNGLPATCHPARAMETERIPROC PatchParameteri;
+ PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback;
+ PFNGLPIXELSTOREFPROC PixelStoref;
+ PFNGLPIXELSTOREIPROC PixelStorei;
+ PFNGLPOINTPARAMETERFPROC PointParameterf;
+ PFNGLPOINTPARAMETERFVPROC PointParameterfv;
+ PFNGLPOINTPARAMETERIPROC PointParameteri;
+ PFNGLPOINTPARAMETERIVPROC PointParameteriv;
+ PFNGLPOINTSIZEPROC PointSize;
+ PFNGLPOLYGONMODEPROC PolygonMode;
+ PFNGLPOLYGONOFFSETPROC PolygonOffset;
+ PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp;
+ PFNGLPOPDEBUGGROUPPROC PopDebugGroup;
+ PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex;
+ PFNGLPROGRAMBINARYPROC ProgramBinary;
+ PFNGLPROGRAMPARAMETERIPROC ProgramParameteri;
+ PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d;
+ PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv;
+ PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f;
+ PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv;
+ PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i;
+ PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv;
+ PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui;
+ PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv;
+ PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d;
+ PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv;
+ PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f;
+ PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv;
+ PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i;
+ PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv;
+ PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui;
+ PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv;
+ PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d;
+ PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv;
+ PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f;
+ PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv;
+ PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i;
+ PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv;
+ PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui;
+ PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv;
+ PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d;
+ PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv;
+ PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f;
+ PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv;
+ PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i;
+ PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv;
+ PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui;
+ PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv;
+ PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv;
+ PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv;
+ PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv;
+ PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv;
+ PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv;
+ PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv;
+ PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv;
+ PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv;
+ PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv;
+ PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv;
+ PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv;
+ PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv;
+ PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv;
+ PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv;
+ PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv;
+ PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv;
+ PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv;
+ PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv;
+ PFNGLPROVOKINGVERTEXPROC ProvokingVertex;
+ PFNGLPUSHDEBUGGROUPPROC PushDebugGroup;
+ PFNGLQUERYCOUNTERPROC QueryCounter;
+ PFNGLREADBUFFERPROC ReadBuffer;
+ PFNGLREADPIXELSPROC ReadPixels;
+ PFNGLREADNPIXELSPROC ReadnPixels;
+ PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler;
+ PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage;
+ PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample;
+ PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback;
+ PFNGLSAMPLECOVERAGEPROC SampleCoverage;
+ PFNGLSAMPLEMASKIPROC SampleMaski;
+ PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv;
+ PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv;
+ PFNGLSAMPLERPARAMETERFPROC SamplerParameterf;
+ PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv;
+ PFNGLSAMPLERPARAMETERIPROC SamplerParameteri;
+ PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv;
+ PFNGLSCISSORPROC Scissor;
+ PFNGLSCISSORARRAYVPROC ScissorArrayv;
+ PFNGLSCISSORINDEXEDPROC ScissorIndexed;
+ PFNGLSCISSORINDEXEDVPROC ScissorIndexedv;
+ PFNGLSHADERBINARYPROC ShaderBinary;
+ PFNGLSHADERSOURCEPROC ShaderSource;
+ PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding;
+ PFNGLSPECIALIZESHADERPROC SpecializeShader;
+ PFNGLSTENCILFUNCPROC StencilFunc;
+ PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
+ PFNGLSTENCILMASKPROC StencilMask;
+ PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate;
+ PFNGLSTENCILOPPROC StencilOp;
+ PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate;
+ PFNGLTEXBUFFERPROC TexBuffer;
+ PFNGLTEXBUFFERRANGEPROC TexBufferRange;
+ PFNGLTEXIMAGE1DPROC TexImage1D;
+ PFNGLTEXIMAGE2DPROC TexImage2D;
+ PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample;
+ PFNGLTEXIMAGE3DPROC TexImage3D;
+ PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample;
+ PFNGLTEXPARAMETERIIVPROC TexParameterIiv;
+ PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv;
+ PFNGLTEXPARAMETERFPROC TexParameterf;
+ PFNGLTEXPARAMETERFVPROC TexParameterfv;
+ PFNGLTEXPARAMETERIPROC TexParameteri;
+ PFNGLTEXPARAMETERIVPROC TexParameteriv;
+ PFNGLTEXSTORAGE1DPROC TexStorage1D;
+ PFNGLTEXSTORAGE2DPROC TexStorage2D;
+ PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample;
+ PFNGLTEXSTORAGE3DPROC TexStorage3D;
+ PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample;
+ PFNGLTEXSUBIMAGE1DPROC TexSubImage1D;
+ PFNGLTEXSUBIMAGE2DPROC TexSubImage2D;
+ PFNGLTEXSUBIMAGE3DPROC TexSubImage3D;
+ PFNGLTEXTUREBARRIERPROC TextureBarrier;
+ PFNGLTEXTUREBUFFERPROC TextureBuffer;
+ PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange;
+ PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv;
+ PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv;
+ PFNGLTEXTUREPARAMETERFPROC TextureParameterf;
+ PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv;
+ PFNGLTEXTUREPARAMETERIPROC TextureParameteri;
+ PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv;
+ PFNGLTEXTURESTORAGE1DPROC TextureStorage1D;
+ PFNGLTEXTURESTORAGE2DPROC TextureStorage2D;
+ PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample;
+ PFNGLTEXTURESTORAGE3DPROC TextureStorage3D;
+ PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample;
+ PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D;
+ PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D;
+ PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D;
+ PFNGLTEXTUREVIEWPROC TextureView;
+ PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase;
+ PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange;
+ PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings;
+ PFNGLUNIFORM1DPROC Uniform1d;
+ PFNGLUNIFORM1DVPROC Uniform1dv;
+ PFNGLUNIFORM1FPROC Uniform1f;
+ PFNGLUNIFORM1FVPROC Uniform1fv;
+ PFNGLUNIFORM1IPROC Uniform1i;
+ PFNGLUNIFORM1IVPROC Uniform1iv;
+ PFNGLUNIFORM1UIPROC Uniform1ui;
+ PFNGLUNIFORM1UIVPROC Uniform1uiv;
+ PFNGLUNIFORM2DPROC Uniform2d;
+ PFNGLUNIFORM2DVPROC Uniform2dv;
+ PFNGLUNIFORM2FPROC Uniform2f;
+ PFNGLUNIFORM2FVPROC Uniform2fv;
+ PFNGLUNIFORM2IPROC Uniform2i;
+ PFNGLUNIFORM2IVPROC Uniform2iv;
+ PFNGLUNIFORM2UIPROC Uniform2ui;
+ PFNGLUNIFORM2UIVPROC Uniform2uiv;
+ PFNGLUNIFORM3DPROC Uniform3d;
+ PFNGLUNIFORM3DVPROC Uniform3dv;
+ PFNGLUNIFORM3FPROC Uniform3f;
+ PFNGLUNIFORM3FVPROC Uniform3fv;
+ PFNGLUNIFORM3IPROC Uniform3i;
+ PFNGLUNIFORM3IVPROC Uniform3iv;
+ PFNGLUNIFORM3UIPROC Uniform3ui;
+ PFNGLUNIFORM3UIVPROC Uniform3uiv;
+ PFNGLUNIFORM4DPROC Uniform4d;
+ PFNGLUNIFORM4DVPROC Uniform4dv;
+ PFNGLUNIFORM4FPROC Uniform4f;
+ PFNGLUNIFORM4FVPROC Uniform4fv;
+ PFNGLUNIFORM4IPROC Uniform4i;
+ PFNGLUNIFORM4IVPROC Uniform4iv;
+ PFNGLUNIFORM4UIPROC Uniform4ui;
+ PFNGLUNIFORM4UIVPROC Uniform4uiv;
+ PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding;
+ PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv;
+ PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
+ PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv;
+ PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv;
+ PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv;
+ PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv;
+ PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv;
+ PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
+ PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv;
+ PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv;
+ PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv;
+ PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv;
+ PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv;
+ PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
+ PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv;
+ PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv;
+ PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv;
+ PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv;
+ PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv;
+ PFNGLUNMAPBUFFERPROC UnmapBuffer;
+ PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer;
+ PFNGLUSEPROGRAMPROC UseProgram;
+ PFNGLUSEPROGRAMSTAGESPROC UseProgramStages;
+ PFNGLVALIDATEPROGRAMPROC ValidateProgram;
+ PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline;
+ PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding;
+ PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat;
+ PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat;
+ PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat;
+ PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor;
+ PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer;
+ PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer;
+ PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers;
+ PFNGLVERTEXATTRIB1DPROC VertexAttrib1d;
+ PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv;
+ PFNGLVERTEXATTRIB1FPROC VertexAttrib1f;
+ PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv;
+ PFNGLVERTEXATTRIB1SPROC VertexAttrib1s;
+ PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv;
+ PFNGLVERTEXATTRIB2DPROC VertexAttrib2d;
+ PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv;
+ PFNGLVERTEXATTRIB2FPROC VertexAttrib2f;
+ PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv;
+ PFNGLVERTEXATTRIB2SPROC VertexAttrib2s;
+ PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv;
+ PFNGLVERTEXATTRIB3DPROC VertexAttrib3d;
+ PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv;
+ PFNGLVERTEXATTRIB3FPROC VertexAttrib3f;
+ PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv;
+ PFNGLVERTEXATTRIB3SPROC VertexAttrib3s;
+ PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv;
+ PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv;
+ PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv;
+ PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv;
+ PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub;
+ PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv;
+ PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv;
+ PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv;
+ PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv;
+ PFNGLVERTEXATTRIB4DPROC VertexAttrib4d;
+ PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv;
+ PFNGLVERTEXATTRIB4FPROC VertexAttrib4f;
+ PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv;
+ PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv;
+ PFNGLVERTEXATTRIB4SPROC VertexAttrib4s;
+ PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv;
+ PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv;
+ PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv;
+ PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv;
+ PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding;
+ PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor;
+ PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat;
+ PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i;
+ PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv;
+ PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui;
+ PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv;
+ PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i;
+ PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv;
+ PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui;
+ PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv;
+ PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i;
+ PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv;
+ PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui;
+ PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv;
+ PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv;
+ PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i;
+ PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv;
+ PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv;
+ PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv;
+ PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui;
+ PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv;
+ PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv;
+ PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat;
+ PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer;
+ PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d;
+ PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv;
+ PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d;
+ PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv;
+ PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d;
+ PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv;
+ PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d;
+ PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv;
+ PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat;
+ PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer;
+ PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui;
+ PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv;
+ PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui;
+ PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv;
+ PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui;
+ PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv;
+ PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui;
+ PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv;
+ PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
+ PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor;
+ PFNGLVIEWPORTPROC Viewport;
+ PFNGLVIEWPORTARRAYVPROC ViewportArrayv;
+ PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf;
+ PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv;
+ PFNGLWAITSYNCPROC WaitSync;
+ } gl;
+};
+
+extern union GL3WProcs gl3wProcs;
+
+/* OpenGL functions */
+#define glActiveShaderProgram gl3wProcs.gl.ActiveShaderProgram
+#define glActiveTexture gl3wProcs.gl.ActiveTexture
+#define glAttachShader gl3wProcs.gl.AttachShader
+#define glBeginConditionalRender gl3wProcs.gl.BeginConditionalRender
+#define glBeginQuery gl3wProcs.gl.BeginQuery
+#define glBeginQueryIndexed gl3wProcs.gl.BeginQueryIndexed
+#define glBeginTransformFeedback gl3wProcs.gl.BeginTransformFeedback
+#define glBindAttribLocation gl3wProcs.gl.BindAttribLocation
+#define glBindBuffer gl3wProcs.gl.BindBuffer
+#define glBindBufferBase gl3wProcs.gl.BindBufferBase
+#define glBindBufferRange gl3wProcs.gl.BindBufferRange
+#define glBindBuffersBase gl3wProcs.gl.BindBuffersBase
+#define glBindBuffersRange gl3wProcs.gl.BindBuffersRange
+#define glBindFragDataLocation gl3wProcs.gl.BindFragDataLocation
+#define glBindFragDataLocationIndexed gl3wProcs.gl.BindFragDataLocationIndexed
+#define glBindFramebuffer gl3wProcs.gl.BindFramebuffer
+#define glBindImageTexture gl3wProcs.gl.BindImageTexture
+#define glBindImageTextures gl3wProcs.gl.BindImageTextures
+#define glBindProgramPipeline gl3wProcs.gl.BindProgramPipeline
+#define glBindRenderbuffer gl3wProcs.gl.BindRenderbuffer
+#define glBindSampler gl3wProcs.gl.BindSampler
+#define glBindSamplers gl3wProcs.gl.BindSamplers
+#define glBindTexture gl3wProcs.gl.BindTexture
+#define glBindTextureUnit gl3wProcs.gl.BindTextureUnit
+#define glBindTextures gl3wProcs.gl.BindTextures
+#define glBindTransformFeedback gl3wProcs.gl.BindTransformFeedback
+#define glBindVertexArray gl3wProcs.gl.BindVertexArray
+#define glBindVertexBuffer gl3wProcs.gl.BindVertexBuffer
+#define glBindVertexBuffers gl3wProcs.gl.BindVertexBuffers
+#define glBlendColor gl3wProcs.gl.BlendColor
+#define glBlendEquation gl3wProcs.gl.BlendEquation
+#define glBlendEquationSeparate gl3wProcs.gl.BlendEquationSeparate
+#define glBlendEquationSeparatei gl3wProcs.gl.BlendEquationSeparatei
+#define glBlendEquationi gl3wProcs.gl.BlendEquationi
+#define glBlendFunc gl3wProcs.gl.BlendFunc
+#define glBlendFuncSeparate gl3wProcs.gl.BlendFuncSeparate
+#define glBlendFuncSeparatei gl3wProcs.gl.BlendFuncSeparatei
+#define glBlendFunci gl3wProcs.gl.BlendFunci
+#define glBlitFramebuffer gl3wProcs.gl.BlitFramebuffer
+#define glBlitNamedFramebuffer gl3wProcs.gl.BlitNamedFramebuffer
+#define glBufferData gl3wProcs.gl.BufferData
+#define glBufferStorage gl3wProcs.gl.BufferStorage
+#define glBufferSubData gl3wProcs.gl.BufferSubData
+#define glCheckFramebufferStatus gl3wProcs.gl.CheckFramebufferStatus
+#define glCheckNamedFramebufferStatus gl3wProcs.gl.CheckNamedFramebufferStatus
+#define glClampColor gl3wProcs.gl.ClampColor
+#define glClear gl3wProcs.gl.Clear
+#define glClearBufferData gl3wProcs.gl.ClearBufferData
+#define glClearBufferSubData gl3wProcs.gl.ClearBufferSubData
+#define glClearBufferfi gl3wProcs.gl.ClearBufferfi
+#define glClearBufferfv gl3wProcs.gl.ClearBufferfv
+#define glClearBufferiv gl3wProcs.gl.ClearBufferiv
+#define glClearBufferuiv gl3wProcs.gl.ClearBufferuiv
+#define glClearColor gl3wProcs.gl.ClearColor
+#define glClearDepth gl3wProcs.gl.ClearDepth
+#define glClearDepthf gl3wProcs.gl.ClearDepthf
+#define glClearNamedBufferData gl3wProcs.gl.ClearNamedBufferData
+#define glClearNamedBufferSubData gl3wProcs.gl.ClearNamedBufferSubData
+#define glClearNamedFramebufferfi gl3wProcs.gl.ClearNamedFramebufferfi
+#define glClearNamedFramebufferfv gl3wProcs.gl.ClearNamedFramebufferfv
+#define glClearNamedFramebufferiv gl3wProcs.gl.ClearNamedFramebufferiv
+#define glClearNamedFramebufferuiv gl3wProcs.gl.ClearNamedFramebufferuiv
+#define glClearStencil gl3wProcs.gl.ClearStencil
+#define glClearTexImage gl3wProcs.gl.ClearTexImage
+#define glClearTexSubImage gl3wProcs.gl.ClearTexSubImage
+#define glClientWaitSync gl3wProcs.gl.ClientWaitSync
+#define glClipControl gl3wProcs.gl.ClipControl
+#define glColorMask gl3wProcs.gl.ColorMask
+#define glColorMaski gl3wProcs.gl.ColorMaski
+#define glCompileShader gl3wProcs.gl.CompileShader
+#define glCompressedTexImage1D gl3wProcs.gl.CompressedTexImage1D
+#define glCompressedTexImage2D gl3wProcs.gl.CompressedTexImage2D
+#define glCompressedTexImage3D gl3wProcs.gl.CompressedTexImage3D
+#define glCompressedTexSubImage1D gl3wProcs.gl.CompressedTexSubImage1D
+#define glCompressedTexSubImage2D gl3wProcs.gl.CompressedTexSubImage2D
+#define glCompressedTexSubImage3D gl3wProcs.gl.CompressedTexSubImage3D
+#define glCompressedTextureSubImage1D gl3wProcs.gl.CompressedTextureSubImage1D
+#define glCompressedTextureSubImage2D gl3wProcs.gl.CompressedTextureSubImage2D
+#define glCompressedTextureSubImage3D gl3wProcs.gl.CompressedTextureSubImage3D
+#define glCopyBufferSubData gl3wProcs.gl.CopyBufferSubData
+#define glCopyImageSubData gl3wProcs.gl.CopyImageSubData
+#define glCopyNamedBufferSubData gl3wProcs.gl.CopyNamedBufferSubData
+#define glCopyTexImage1D gl3wProcs.gl.CopyTexImage1D
+#define glCopyTexImage2D gl3wProcs.gl.CopyTexImage2D
+#define glCopyTexSubImage1D gl3wProcs.gl.CopyTexSubImage1D
+#define glCopyTexSubImage2D gl3wProcs.gl.CopyTexSubImage2D
+#define glCopyTexSubImage3D gl3wProcs.gl.CopyTexSubImage3D
+#define glCopyTextureSubImage1D gl3wProcs.gl.CopyTextureSubImage1D
+#define glCopyTextureSubImage2D gl3wProcs.gl.CopyTextureSubImage2D
+#define glCopyTextureSubImage3D gl3wProcs.gl.CopyTextureSubImage3D
+#define glCreateBuffers gl3wProcs.gl.CreateBuffers
+#define glCreateFramebuffers gl3wProcs.gl.CreateFramebuffers
+#define glCreateProgram gl3wProcs.gl.CreateProgram
+#define glCreateProgramPipelines gl3wProcs.gl.CreateProgramPipelines
+#define glCreateQueries gl3wProcs.gl.CreateQueries
+#define glCreateRenderbuffers gl3wProcs.gl.CreateRenderbuffers
+#define glCreateSamplers gl3wProcs.gl.CreateSamplers
+#define glCreateShader gl3wProcs.gl.CreateShader
+#define glCreateShaderProgramv gl3wProcs.gl.CreateShaderProgramv
+#define glCreateTextures gl3wProcs.gl.CreateTextures
+#define glCreateTransformFeedbacks gl3wProcs.gl.CreateTransformFeedbacks
+#define glCreateVertexArrays gl3wProcs.gl.CreateVertexArrays
+#define glCullFace gl3wProcs.gl.CullFace
+#define glDebugMessageCallback gl3wProcs.gl.DebugMessageCallback
+#define glDebugMessageControl gl3wProcs.gl.DebugMessageControl
+#define glDebugMessageInsert gl3wProcs.gl.DebugMessageInsert
+#define glDeleteBuffers gl3wProcs.gl.DeleteBuffers
+#define glDeleteFramebuffers gl3wProcs.gl.DeleteFramebuffers
+#define glDeleteProgram gl3wProcs.gl.DeleteProgram
+#define glDeleteProgramPipelines gl3wProcs.gl.DeleteProgramPipelines
+#define glDeleteQueries gl3wProcs.gl.DeleteQueries
+#define glDeleteRenderbuffers gl3wProcs.gl.DeleteRenderbuffers
+#define glDeleteSamplers gl3wProcs.gl.DeleteSamplers
+#define glDeleteShader gl3wProcs.gl.DeleteShader
+#define glDeleteSync gl3wProcs.gl.DeleteSync
+#define glDeleteTextures gl3wProcs.gl.DeleteTextures
+#define glDeleteTransformFeedbacks gl3wProcs.gl.DeleteTransformFeedbacks
+#define glDeleteVertexArrays gl3wProcs.gl.DeleteVertexArrays
+#define glDepthFunc gl3wProcs.gl.DepthFunc
+#define glDepthMask gl3wProcs.gl.DepthMask
+#define glDepthRange gl3wProcs.gl.DepthRange
+#define glDepthRangeArrayv gl3wProcs.gl.DepthRangeArrayv
+#define glDepthRangeIndexed gl3wProcs.gl.DepthRangeIndexed
+#define glDepthRangef gl3wProcs.gl.DepthRangef
+#define glDetachShader gl3wProcs.gl.DetachShader
+#define glDisable gl3wProcs.gl.Disable
+#define glDisableVertexArrayAttrib gl3wProcs.gl.DisableVertexArrayAttrib
+#define glDisableVertexAttribArray gl3wProcs.gl.DisableVertexAttribArray
+#define glDisablei gl3wProcs.gl.Disablei
+#define glDispatchCompute gl3wProcs.gl.DispatchCompute
+#define glDispatchComputeIndirect gl3wProcs.gl.DispatchComputeIndirect
+#define glDrawArrays gl3wProcs.gl.DrawArrays
+#define glDrawArraysIndirect gl3wProcs.gl.DrawArraysIndirect
+#define glDrawArraysInstanced gl3wProcs.gl.DrawArraysInstanced
+#define glDrawArraysInstancedBaseInstance gl3wProcs.gl.DrawArraysInstancedBaseInstance
+#define glDrawBuffer gl3wProcs.gl.DrawBuffer
+#define glDrawBuffers gl3wProcs.gl.DrawBuffers
+#define glDrawElements gl3wProcs.gl.DrawElements
+#define glDrawElementsBaseVertex gl3wProcs.gl.DrawElementsBaseVertex
+#define glDrawElementsIndirect gl3wProcs.gl.DrawElementsIndirect
+#define glDrawElementsInstanced gl3wProcs.gl.DrawElementsInstanced
+#define glDrawElementsInstancedBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseInstance
+#define glDrawElementsInstancedBaseVertex gl3wProcs.gl.DrawElementsInstancedBaseVertex
+#define glDrawElementsInstancedBaseVertexBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseVertexBaseInstance
+#define glDrawRangeElements gl3wProcs.gl.DrawRangeElements
+#define glDrawRangeElementsBaseVertex gl3wProcs.gl.DrawRangeElementsBaseVertex
+#define glDrawTransformFeedback gl3wProcs.gl.DrawTransformFeedback
+#define glDrawTransformFeedbackInstanced gl3wProcs.gl.DrawTransformFeedbackInstanced
+#define glDrawTransformFeedbackStream gl3wProcs.gl.DrawTransformFeedbackStream
+#define glDrawTransformFeedbackStreamInstanced gl3wProcs.gl.DrawTransformFeedbackStreamInstanced
+#define glEnable gl3wProcs.gl.Enable
+#define glEnableVertexArrayAttrib gl3wProcs.gl.EnableVertexArrayAttrib
+#define glEnableVertexAttribArray gl3wProcs.gl.EnableVertexAttribArray
+#define glEnablei gl3wProcs.gl.Enablei
+#define glEndConditionalRender gl3wProcs.gl.EndConditionalRender
+#define glEndQuery gl3wProcs.gl.EndQuery
+#define glEndQueryIndexed gl3wProcs.gl.EndQueryIndexed
+#define glEndTransformFeedback gl3wProcs.gl.EndTransformFeedback
+#define glFenceSync gl3wProcs.gl.FenceSync
+#define glFinish gl3wProcs.gl.Finish
+#define glFlush gl3wProcs.gl.Flush
+#define glFlushMappedBufferRange gl3wProcs.gl.FlushMappedBufferRange
+#define glFlushMappedNamedBufferRange gl3wProcs.gl.FlushMappedNamedBufferRange
+#define glFramebufferParameteri gl3wProcs.gl.FramebufferParameteri
+#define glFramebufferRenderbuffer gl3wProcs.gl.FramebufferRenderbuffer
+#define glFramebufferTexture gl3wProcs.gl.FramebufferTexture
+#define glFramebufferTexture1D gl3wProcs.gl.FramebufferTexture1D
+#define glFramebufferTexture2D gl3wProcs.gl.FramebufferTexture2D
+#define glFramebufferTexture3D gl3wProcs.gl.FramebufferTexture3D
+#define glFramebufferTextureLayer gl3wProcs.gl.FramebufferTextureLayer
+#define glFrontFace gl3wProcs.gl.FrontFace
+#define glGenBuffers gl3wProcs.gl.GenBuffers
+#define glGenFramebuffers gl3wProcs.gl.GenFramebuffers
+#define glGenProgramPipelines gl3wProcs.gl.GenProgramPipelines
+#define glGenQueries gl3wProcs.gl.GenQueries
+#define glGenRenderbuffers gl3wProcs.gl.GenRenderbuffers
+#define glGenSamplers gl3wProcs.gl.GenSamplers
+#define glGenTextures gl3wProcs.gl.GenTextures
+#define glGenTransformFeedbacks gl3wProcs.gl.GenTransformFeedbacks
+#define glGenVertexArrays gl3wProcs.gl.GenVertexArrays
+#define glGenerateMipmap gl3wProcs.gl.GenerateMipmap
+#define glGenerateTextureMipmap gl3wProcs.gl.GenerateTextureMipmap
+#define glGetActiveAtomicCounterBufferiv gl3wProcs.gl.GetActiveAtomicCounterBufferiv
+#define glGetActiveAttrib gl3wProcs.gl.GetActiveAttrib
+#define glGetActiveSubroutineName gl3wProcs.gl.GetActiveSubroutineName
+#define glGetActiveSubroutineUniformName gl3wProcs.gl.GetActiveSubroutineUniformName
+#define glGetActiveSubroutineUniformiv gl3wProcs.gl.GetActiveSubroutineUniformiv
+#define glGetActiveUniform gl3wProcs.gl.GetActiveUniform
+#define glGetActiveUniformBlockName gl3wProcs.gl.GetActiveUniformBlockName
+#define glGetActiveUniformBlockiv gl3wProcs.gl.GetActiveUniformBlockiv
+#define glGetActiveUniformName gl3wProcs.gl.GetActiveUniformName
+#define glGetActiveUniformsiv gl3wProcs.gl.GetActiveUniformsiv
+#define glGetAttachedShaders gl3wProcs.gl.GetAttachedShaders
+#define glGetAttribLocation gl3wProcs.gl.GetAttribLocation
+#define glGetBooleani_v gl3wProcs.gl.GetBooleani_v
+#define glGetBooleanv gl3wProcs.gl.GetBooleanv
+#define glGetBufferParameteri64v gl3wProcs.gl.GetBufferParameteri64v
+#define glGetBufferParameteriv gl3wProcs.gl.GetBufferParameteriv
+#define glGetBufferPointerv gl3wProcs.gl.GetBufferPointerv
+#define glGetBufferSubData gl3wProcs.gl.GetBufferSubData
+#define glGetCompressedTexImage gl3wProcs.gl.GetCompressedTexImage
+#define glGetCompressedTextureImage gl3wProcs.gl.GetCompressedTextureImage
+#define glGetCompressedTextureSubImage gl3wProcs.gl.GetCompressedTextureSubImage
+#define glGetDebugMessageLog gl3wProcs.gl.GetDebugMessageLog
+#define glGetDoublei_v gl3wProcs.gl.GetDoublei_v
+#define glGetDoublev gl3wProcs.gl.GetDoublev
+#define glGetError gl3wProcs.gl.GetError
+#define glGetFloati_v gl3wProcs.gl.GetFloati_v
+#define glGetFloatv gl3wProcs.gl.GetFloatv
+#define glGetFragDataIndex gl3wProcs.gl.GetFragDataIndex
+#define glGetFragDataLocation gl3wProcs.gl.GetFragDataLocation
+#define glGetFramebufferAttachmentParameteriv gl3wProcs.gl.GetFramebufferAttachmentParameteriv
+#define glGetFramebufferParameteriv gl3wProcs.gl.GetFramebufferParameteriv
+#define glGetGraphicsResetStatus gl3wProcs.gl.GetGraphicsResetStatus
+#define glGetInteger64i_v gl3wProcs.gl.GetInteger64i_v
+#define glGetInteger64v gl3wProcs.gl.GetInteger64v
+#define glGetIntegeri_v gl3wProcs.gl.GetIntegeri_v
+#define glGetIntegerv gl3wProcs.gl.GetIntegerv
+#define glGetInternalformati64v gl3wProcs.gl.GetInternalformati64v
+#define glGetInternalformativ gl3wProcs.gl.GetInternalformativ
+#define glGetMultisamplefv gl3wProcs.gl.GetMultisamplefv
+#define glGetNamedBufferParameteri64v gl3wProcs.gl.GetNamedBufferParameteri64v
+#define glGetNamedBufferParameteriv gl3wProcs.gl.GetNamedBufferParameteriv
+#define glGetNamedBufferPointerv gl3wProcs.gl.GetNamedBufferPointerv
+#define glGetNamedBufferSubData gl3wProcs.gl.GetNamedBufferSubData
+#define glGetNamedFramebufferAttachmentParameteriv gl3wProcs.gl.GetNamedFramebufferAttachmentParameteriv
+#define glGetNamedFramebufferParameteriv gl3wProcs.gl.GetNamedFramebufferParameteriv
+#define glGetNamedRenderbufferParameteriv gl3wProcs.gl.GetNamedRenderbufferParameteriv
+#define glGetObjectLabel gl3wProcs.gl.GetObjectLabel
+#define glGetObjectPtrLabel gl3wProcs.gl.GetObjectPtrLabel
+#define glGetPointerv gl3wProcs.gl.GetPointerv
+#define glGetProgramBinary gl3wProcs.gl.GetProgramBinary
+#define glGetProgramInfoLog gl3wProcs.gl.GetProgramInfoLog
+#define glGetProgramInterfaceiv gl3wProcs.gl.GetProgramInterfaceiv
+#define glGetProgramPipelineInfoLog gl3wProcs.gl.GetProgramPipelineInfoLog
+#define glGetProgramPipelineiv gl3wProcs.gl.GetProgramPipelineiv
+#define glGetProgramResourceIndex gl3wProcs.gl.GetProgramResourceIndex
+#define glGetProgramResourceLocation gl3wProcs.gl.GetProgramResourceLocation
+#define glGetProgramResourceLocationIndex gl3wProcs.gl.GetProgramResourceLocationIndex
+#define glGetProgramResourceName gl3wProcs.gl.GetProgramResourceName
+#define glGetProgramResourceiv gl3wProcs.gl.GetProgramResourceiv
+#define glGetProgramStageiv gl3wProcs.gl.GetProgramStageiv
+#define glGetProgramiv gl3wProcs.gl.GetProgramiv
+#define glGetQueryBufferObjecti64v gl3wProcs.gl.GetQueryBufferObjecti64v
+#define glGetQueryBufferObjectiv gl3wProcs.gl.GetQueryBufferObjectiv
+#define glGetQueryBufferObjectui64v gl3wProcs.gl.GetQueryBufferObjectui64v
+#define glGetQueryBufferObjectuiv gl3wProcs.gl.GetQueryBufferObjectuiv
+#define glGetQueryIndexediv gl3wProcs.gl.GetQueryIndexediv
+#define glGetQueryObjecti64v gl3wProcs.gl.GetQueryObjecti64v
+#define glGetQueryObjectiv gl3wProcs.gl.GetQueryObjectiv
+#define glGetQueryObjectui64v gl3wProcs.gl.GetQueryObjectui64v
+#define glGetQueryObjectuiv gl3wProcs.gl.GetQueryObjectuiv
+#define glGetQueryiv gl3wProcs.gl.GetQueryiv
+#define glGetRenderbufferParameteriv gl3wProcs.gl.GetRenderbufferParameteriv
+#define glGetSamplerParameterIiv gl3wProcs.gl.GetSamplerParameterIiv
+#define glGetSamplerParameterIuiv gl3wProcs.gl.GetSamplerParameterIuiv
+#define glGetSamplerParameterfv gl3wProcs.gl.GetSamplerParameterfv
+#define glGetSamplerParameteriv gl3wProcs.gl.GetSamplerParameteriv
+#define glGetShaderInfoLog gl3wProcs.gl.GetShaderInfoLog
+#define glGetShaderPrecisionFormat gl3wProcs.gl.GetShaderPrecisionFormat
+#define glGetShaderSource gl3wProcs.gl.GetShaderSource
+#define glGetShaderiv gl3wProcs.gl.GetShaderiv
+#define glGetString gl3wProcs.gl.GetString
+#define glGetStringi gl3wProcs.gl.GetStringi
+#define glGetSubroutineIndex gl3wProcs.gl.GetSubroutineIndex
+#define glGetSubroutineUniformLocation gl3wProcs.gl.GetSubroutineUniformLocation
+#define glGetSynciv gl3wProcs.gl.GetSynciv
+#define glGetTexImage gl3wProcs.gl.GetTexImage
+#define glGetTexLevelParameterfv gl3wProcs.gl.GetTexLevelParameterfv
+#define glGetTexLevelParameteriv gl3wProcs.gl.GetTexLevelParameteriv
+#define glGetTexParameterIiv gl3wProcs.gl.GetTexParameterIiv
+#define glGetTexParameterIuiv gl3wProcs.gl.GetTexParameterIuiv
+#define glGetTexParameterfv gl3wProcs.gl.GetTexParameterfv
+#define glGetTexParameteriv gl3wProcs.gl.GetTexParameteriv
+#define glGetTextureImage gl3wProcs.gl.GetTextureImage
+#define glGetTextureLevelParameterfv gl3wProcs.gl.GetTextureLevelParameterfv
+#define glGetTextureLevelParameteriv gl3wProcs.gl.GetTextureLevelParameteriv
+#define glGetTextureParameterIiv gl3wProcs.gl.GetTextureParameterIiv
+#define glGetTextureParameterIuiv gl3wProcs.gl.GetTextureParameterIuiv
+#define glGetTextureParameterfv gl3wProcs.gl.GetTextureParameterfv
+#define glGetTextureParameteriv gl3wProcs.gl.GetTextureParameteriv
+#define glGetTextureSubImage gl3wProcs.gl.GetTextureSubImage
+#define glGetTransformFeedbackVarying gl3wProcs.gl.GetTransformFeedbackVarying
+#define glGetTransformFeedbacki64_v gl3wProcs.gl.GetTransformFeedbacki64_v
+#define glGetTransformFeedbacki_v gl3wProcs.gl.GetTransformFeedbacki_v
+#define glGetTransformFeedbackiv gl3wProcs.gl.GetTransformFeedbackiv
+#define glGetUniformBlockIndex gl3wProcs.gl.GetUniformBlockIndex
+#define glGetUniformIndices gl3wProcs.gl.GetUniformIndices
+#define glGetUniformLocation gl3wProcs.gl.GetUniformLocation
+#define glGetUniformSubroutineuiv gl3wProcs.gl.GetUniformSubroutineuiv
+#define glGetUniformdv gl3wProcs.gl.GetUniformdv
+#define glGetUniformfv gl3wProcs.gl.GetUniformfv
+#define glGetUniformiv gl3wProcs.gl.GetUniformiv
+#define glGetUniformuiv gl3wProcs.gl.GetUniformuiv
+#define glGetVertexArrayIndexed64iv gl3wProcs.gl.GetVertexArrayIndexed64iv
+#define glGetVertexArrayIndexediv gl3wProcs.gl.GetVertexArrayIndexediv
+#define glGetVertexArrayiv gl3wProcs.gl.GetVertexArrayiv
+#define glGetVertexAttribIiv gl3wProcs.gl.GetVertexAttribIiv
+#define glGetVertexAttribIuiv gl3wProcs.gl.GetVertexAttribIuiv
+#define glGetVertexAttribLdv gl3wProcs.gl.GetVertexAttribLdv
+#define glGetVertexAttribPointerv gl3wProcs.gl.GetVertexAttribPointerv
+#define glGetVertexAttribdv gl3wProcs.gl.GetVertexAttribdv
+#define glGetVertexAttribfv gl3wProcs.gl.GetVertexAttribfv
+#define glGetVertexAttribiv gl3wProcs.gl.GetVertexAttribiv
+#define glGetnCompressedTexImage gl3wProcs.gl.GetnCompressedTexImage
+#define glGetnTexImage gl3wProcs.gl.GetnTexImage
+#define glGetnUniformdv gl3wProcs.gl.GetnUniformdv
+#define glGetnUniformfv gl3wProcs.gl.GetnUniformfv
+#define glGetnUniformiv gl3wProcs.gl.GetnUniformiv
+#define glGetnUniformuiv gl3wProcs.gl.GetnUniformuiv
+#define glHint gl3wProcs.gl.Hint
+#define glInvalidateBufferData gl3wProcs.gl.InvalidateBufferData
+#define glInvalidateBufferSubData gl3wProcs.gl.InvalidateBufferSubData
+#define glInvalidateFramebuffer gl3wProcs.gl.InvalidateFramebuffer
+#define glInvalidateNamedFramebufferData gl3wProcs.gl.InvalidateNamedFramebufferData
+#define glInvalidateNamedFramebufferSubData gl3wProcs.gl.InvalidateNamedFramebufferSubData
+#define glInvalidateSubFramebuffer gl3wProcs.gl.InvalidateSubFramebuffer
+#define glInvalidateTexImage gl3wProcs.gl.InvalidateTexImage
+#define glInvalidateTexSubImage gl3wProcs.gl.InvalidateTexSubImage
+#define glIsBuffer gl3wProcs.gl.IsBuffer
+#define glIsEnabled gl3wProcs.gl.IsEnabled
+#define glIsEnabledi gl3wProcs.gl.IsEnabledi
+#define glIsFramebuffer gl3wProcs.gl.IsFramebuffer
+#define glIsProgram gl3wProcs.gl.IsProgram
+#define glIsProgramPipeline gl3wProcs.gl.IsProgramPipeline
+#define glIsQuery gl3wProcs.gl.IsQuery
+#define glIsRenderbuffer gl3wProcs.gl.IsRenderbuffer
+#define glIsSampler gl3wProcs.gl.IsSampler
+#define glIsShader gl3wProcs.gl.IsShader
+#define glIsSync gl3wProcs.gl.IsSync
+#define glIsTexture gl3wProcs.gl.IsTexture
+#define glIsTransformFeedback gl3wProcs.gl.IsTransformFeedback
+#define glIsVertexArray gl3wProcs.gl.IsVertexArray
+#define glLineWidth gl3wProcs.gl.LineWidth
+#define glLinkProgram gl3wProcs.gl.LinkProgram
+#define glLogicOp gl3wProcs.gl.LogicOp
+#define glMapBuffer gl3wProcs.gl.MapBuffer
+#define glMapBufferRange gl3wProcs.gl.MapBufferRange
+#define glMapNamedBuffer gl3wProcs.gl.MapNamedBuffer
+#define glMapNamedBufferRange gl3wProcs.gl.MapNamedBufferRange
+#define glMemoryBarrier gl3wProcs.gl.MemoryBarrier
+#define glMemoryBarrierByRegion gl3wProcs.gl.MemoryBarrierByRegion
+#define glMinSampleShading gl3wProcs.gl.MinSampleShading
+#define glMultiDrawArrays gl3wProcs.gl.MultiDrawArrays
+#define glMultiDrawArraysIndirect gl3wProcs.gl.MultiDrawArraysIndirect
+#define glMultiDrawArraysIndirectCount gl3wProcs.gl.MultiDrawArraysIndirectCount
+#define glMultiDrawElements gl3wProcs.gl.MultiDrawElements
+#define glMultiDrawElementsBaseVertex gl3wProcs.gl.MultiDrawElementsBaseVertex
+#define glMultiDrawElementsIndirect gl3wProcs.gl.MultiDrawElementsIndirect
+#define glMultiDrawElementsIndirectCount gl3wProcs.gl.MultiDrawElementsIndirectCount
+#define glNamedBufferData gl3wProcs.gl.NamedBufferData
+#define glNamedBufferStorage gl3wProcs.gl.NamedBufferStorage
+#define glNamedBufferSubData gl3wProcs.gl.NamedBufferSubData
+#define glNamedFramebufferDrawBuffer gl3wProcs.gl.NamedFramebufferDrawBuffer
+#define glNamedFramebufferDrawBuffers gl3wProcs.gl.NamedFramebufferDrawBuffers
+#define glNamedFramebufferParameteri gl3wProcs.gl.NamedFramebufferParameteri
+#define glNamedFramebufferReadBuffer gl3wProcs.gl.NamedFramebufferReadBuffer
+#define glNamedFramebufferRenderbuffer gl3wProcs.gl.NamedFramebufferRenderbuffer
+#define glNamedFramebufferTexture gl3wProcs.gl.NamedFramebufferTexture
+#define glNamedFramebufferTextureLayer gl3wProcs.gl.NamedFramebufferTextureLayer
+#define glNamedRenderbufferStorage gl3wProcs.gl.NamedRenderbufferStorage
+#define glNamedRenderbufferStorageMultisample gl3wProcs.gl.NamedRenderbufferStorageMultisample
+#define glObjectLabel gl3wProcs.gl.ObjectLabel
+#define glObjectPtrLabel gl3wProcs.gl.ObjectPtrLabel
+#define glPatchParameterfv gl3wProcs.gl.PatchParameterfv
+#define glPatchParameteri gl3wProcs.gl.PatchParameteri
+#define glPauseTransformFeedback gl3wProcs.gl.PauseTransformFeedback
+#define glPixelStoref gl3wProcs.gl.PixelStoref
+#define glPixelStorei gl3wProcs.gl.PixelStorei
+#define glPointParameterf gl3wProcs.gl.PointParameterf
+#define glPointParameterfv gl3wProcs.gl.PointParameterfv
+#define glPointParameteri gl3wProcs.gl.PointParameteri
+#define glPointParameteriv gl3wProcs.gl.PointParameteriv
+#define glPointSize gl3wProcs.gl.PointSize
+#define glPolygonMode gl3wProcs.gl.PolygonMode
+#define glPolygonOffset gl3wProcs.gl.PolygonOffset
+#define glPolygonOffsetClamp gl3wProcs.gl.PolygonOffsetClamp
+#define glPopDebugGroup gl3wProcs.gl.PopDebugGroup
+#define glPrimitiveRestartIndex gl3wProcs.gl.PrimitiveRestartIndex
+#define glProgramBinary gl3wProcs.gl.ProgramBinary
+#define glProgramParameteri gl3wProcs.gl.ProgramParameteri
+#define glProgramUniform1d gl3wProcs.gl.ProgramUniform1d
+#define glProgramUniform1dv gl3wProcs.gl.ProgramUniform1dv
+#define glProgramUniform1f gl3wProcs.gl.ProgramUniform1f
+#define glProgramUniform1fv gl3wProcs.gl.ProgramUniform1fv
+#define glProgramUniform1i gl3wProcs.gl.ProgramUniform1i
+#define glProgramUniform1iv gl3wProcs.gl.ProgramUniform1iv
+#define glProgramUniform1ui gl3wProcs.gl.ProgramUniform1ui
+#define glProgramUniform1uiv gl3wProcs.gl.ProgramUniform1uiv
+#define glProgramUniform2d gl3wProcs.gl.ProgramUniform2d
+#define glProgramUniform2dv gl3wProcs.gl.ProgramUniform2dv
+#define glProgramUniform2f gl3wProcs.gl.ProgramUniform2f
+#define glProgramUniform2fv gl3wProcs.gl.ProgramUniform2fv
+#define glProgramUniform2i gl3wProcs.gl.ProgramUniform2i
+#define glProgramUniform2iv gl3wProcs.gl.ProgramUniform2iv
+#define glProgramUniform2ui gl3wProcs.gl.ProgramUniform2ui
+#define glProgramUniform2uiv gl3wProcs.gl.ProgramUniform2uiv
+#define glProgramUniform3d gl3wProcs.gl.ProgramUniform3d
+#define glProgramUniform3dv gl3wProcs.gl.ProgramUniform3dv
+#define glProgramUniform3f gl3wProcs.gl.ProgramUniform3f
+#define glProgramUniform3fv gl3wProcs.gl.ProgramUniform3fv
+#define glProgramUniform3i gl3wProcs.gl.ProgramUniform3i
+#define glProgramUniform3iv gl3wProcs.gl.ProgramUniform3iv
+#define glProgramUniform3ui gl3wProcs.gl.ProgramUniform3ui
+#define glProgramUniform3uiv gl3wProcs.gl.ProgramUniform3uiv
+#define glProgramUniform4d gl3wProcs.gl.ProgramUniform4d
+#define glProgramUniform4dv gl3wProcs.gl.ProgramUniform4dv
+#define glProgramUniform4f gl3wProcs.gl.ProgramUniform4f
+#define glProgramUniform4fv gl3wProcs.gl.ProgramUniform4fv
+#define glProgramUniform4i gl3wProcs.gl.ProgramUniform4i
+#define glProgramUniform4iv gl3wProcs.gl.ProgramUniform4iv
+#define glProgramUniform4ui gl3wProcs.gl.ProgramUniform4ui
+#define glProgramUniform4uiv gl3wProcs.gl.ProgramUniform4uiv
+#define glProgramUniformMatrix2dv gl3wProcs.gl.ProgramUniformMatrix2dv
+#define glProgramUniformMatrix2fv gl3wProcs.gl.ProgramUniformMatrix2fv
+#define glProgramUniformMatrix2x3dv gl3wProcs.gl.ProgramUniformMatrix2x3dv
+#define glProgramUniformMatrix2x3fv gl3wProcs.gl.ProgramUniformMatrix2x3fv
+#define glProgramUniformMatrix2x4dv gl3wProcs.gl.ProgramUniformMatrix2x4dv
+#define glProgramUniformMatrix2x4fv gl3wProcs.gl.ProgramUniformMatrix2x4fv
+#define glProgramUniformMatrix3dv gl3wProcs.gl.ProgramUniformMatrix3dv
+#define glProgramUniformMatrix3fv gl3wProcs.gl.ProgramUniformMatrix3fv
+#define glProgramUniformMatrix3x2dv gl3wProcs.gl.ProgramUniformMatrix3x2dv
+#define glProgramUniformMatrix3x2fv gl3wProcs.gl.ProgramUniformMatrix3x2fv
+#define glProgramUniformMatrix3x4dv gl3wProcs.gl.ProgramUniformMatrix3x4dv
+#define glProgramUniformMatrix3x4fv gl3wProcs.gl.ProgramUniformMatrix3x4fv
+#define glProgramUniformMatrix4dv gl3wProcs.gl.ProgramUniformMatrix4dv
+#define glProgramUniformMatrix4fv gl3wProcs.gl.ProgramUniformMatrix4fv
+#define glProgramUniformMatrix4x2dv gl3wProcs.gl.ProgramUniformMatrix4x2dv
+#define glProgramUniformMatrix4x2fv gl3wProcs.gl.ProgramUniformMatrix4x2fv
+#define glProgramUniformMatrix4x3dv gl3wProcs.gl.ProgramUniformMatrix4x3dv
+#define glProgramUniformMatrix4x3fv gl3wProcs.gl.ProgramUniformMatrix4x3fv
+#define glProvokingVertex gl3wProcs.gl.ProvokingVertex
+#define glPushDebugGroup gl3wProcs.gl.PushDebugGroup
+#define glQueryCounter gl3wProcs.gl.QueryCounter
+#define glReadBuffer gl3wProcs.gl.ReadBuffer
+#define glReadPixels gl3wProcs.gl.ReadPixels
+#define glReadnPixels gl3wProcs.gl.ReadnPixels
+#define glReleaseShaderCompiler gl3wProcs.gl.ReleaseShaderCompiler
+#define glRenderbufferStorage gl3wProcs.gl.RenderbufferStorage
+#define glRenderbufferStorageMultisample gl3wProcs.gl.RenderbufferStorageMultisample
+#define glResumeTransformFeedback gl3wProcs.gl.ResumeTransformFeedback
+#define glSampleCoverage gl3wProcs.gl.SampleCoverage
+#define glSampleMaski gl3wProcs.gl.SampleMaski
+#define glSamplerParameterIiv gl3wProcs.gl.SamplerParameterIiv
+#define glSamplerParameterIuiv gl3wProcs.gl.SamplerParameterIuiv
+#define glSamplerParameterf gl3wProcs.gl.SamplerParameterf
+#define glSamplerParameterfv gl3wProcs.gl.SamplerParameterfv
+#define glSamplerParameteri gl3wProcs.gl.SamplerParameteri
+#define glSamplerParameteriv gl3wProcs.gl.SamplerParameteriv
+#define glScissor gl3wProcs.gl.Scissor
+#define glScissorArrayv gl3wProcs.gl.ScissorArrayv
+#define glScissorIndexed gl3wProcs.gl.ScissorIndexed
+#define glScissorIndexedv gl3wProcs.gl.ScissorIndexedv
+#define glShaderBinary gl3wProcs.gl.ShaderBinary
+#define glShaderSource gl3wProcs.gl.ShaderSource
+#define glShaderStorageBlockBinding gl3wProcs.gl.ShaderStorageBlockBinding
+#define glSpecializeShader gl3wProcs.gl.SpecializeShader
+#define glStencilFunc gl3wProcs.gl.StencilFunc
+#define glStencilFuncSeparate gl3wProcs.gl.StencilFuncSeparate
+#define glStencilMask gl3wProcs.gl.StencilMask
+#define glStencilMaskSeparate gl3wProcs.gl.StencilMaskSeparate
+#define glStencilOp gl3wProcs.gl.StencilOp
+#define glStencilOpSeparate gl3wProcs.gl.StencilOpSeparate
+#define glTexBuffer gl3wProcs.gl.TexBuffer
+#define glTexBufferRange gl3wProcs.gl.TexBufferRange
+#define glTexImage1D gl3wProcs.gl.TexImage1D
+#define glTexImage2D gl3wProcs.gl.TexImage2D
+#define glTexImage2DMultisample gl3wProcs.gl.TexImage2DMultisample
+#define glTexImage3D gl3wProcs.gl.TexImage3D
+#define glTexImage3DMultisample gl3wProcs.gl.TexImage3DMultisample
+#define glTexParameterIiv gl3wProcs.gl.TexParameterIiv
+#define glTexParameterIuiv gl3wProcs.gl.TexParameterIuiv
+#define glTexParameterf gl3wProcs.gl.TexParameterf
+#define glTexParameterfv gl3wProcs.gl.TexParameterfv
+#define glTexParameteri gl3wProcs.gl.TexParameteri
+#define glTexParameteriv gl3wProcs.gl.TexParameteriv
+#define glTexStorage1D gl3wProcs.gl.TexStorage1D
+#define glTexStorage2D gl3wProcs.gl.TexStorage2D
+#define glTexStorage2DMultisample gl3wProcs.gl.TexStorage2DMultisample
+#define glTexStorage3D gl3wProcs.gl.TexStorage3D
+#define glTexStorage3DMultisample gl3wProcs.gl.TexStorage3DMultisample
+#define glTexSubImage1D gl3wProcs.gl.TexSubImage1D
+#define glTexSubImage2D gl3wProcs.gl.TexSubImage2D
+#define glTexSubImage3D gl3wProcs.gl.TexSubImage3D
+#define glTextureBarrier gl3wProcs.gl.TextureBarrier
+#define glTextureBuffer gl3wProcs.gl.TextureBuffer
+#define glTextureBufferRange gl3wProcs.gl.TextureBufferRange
+#define glTextureParameterIiv gl3wProcs.gl.TextureParameterIiv
+#define glTextureParameterIuiv gl3wProcs.gl.TextureParameterIuiv
+#define glTextureParameterf gl3wProcs.gl.TextureParameterf
+#define glTextureParameterfv gl3wProcs.gl.TextureParameterfv
+#define glTextureParameteri gl3wProcs.gl.TextureParameteri
+#define glTextureParameteriv gl3wProcs.gl.TextureParameteriv
+#define glTextureStorage1D gl3wProcs.gl.TextureStorage1D
+#define glTextureStorage2D gl3wProcs.gl.TextureStorage2D
+#define glTextureStorage2DMultisample gl3wProcs.gl.TextureStorage2DMultisample
+#define glTextureStorage3D gl3wProcs.gl.TextureStorage3D
+#define glTextureStorage3DMultisample gl3wProcs.gl.TextureStorage3DMultisample
+#define glTextureSubImage1D gl3wProcs.gl.TextureSubImage1D
+#define glTextureSubImage2D gl3wProcs.gl.TextureSubImage2D
+#define glTextureSubImage3D gl3wProcs.gl.TextureSubImage3D
+#define glTextureView gl3wProcs.gl.TextureView
+#define glTransformFeedbackBufferBase gl3wProcs.gl.TransformFeedbackBufferBase
+#define glTransformFeedbackBufferRange gl3wProcs.gl.TransformFeedbackBufferRange
+#define glTransformFeedbackVaryings gl3wProcs.gl.TransformFeedbackVaryings
+#define glUniform1d gl3wProcs.gl.Uniform1d
+#define glUniform1dv gl3wProcs.gl.Uniform1dv
+#define glUniform1f gl3wProcs.gl.Uniform1f
+#define glUniform1fv gl3wProcs.gl.Uniform1fv
+#define glUniform1i gl3wProcs.gl.Uniform1i
+#define glUniform1iv gl3wProcs.gl.Uniform1iv
+#define glUniform1ui gl3wProcs.gl.Uniform1ui
+#define glUniform1uiv gl3wProcs.gl.Uniform1uiv
+#define glUniform2d gl3wProcs.gl.Uniform2d
+#define glUniform2dv gl3wProcs.gl.Uniform2dv
+#define glUniform2f gl3wProcs.gl.Uniform2f
+#define glUniform2fv gl3wProcs.gl.Uniform2fv
+#define glUniform2i gl3wProcs.gl.Uniform2i
+#define glUniform2iv gl3wProcs.gl.Uniform2iv
+#define glUniform2ui gl3wProcs.gl.Uniform2ui
+#define glUniform2uiv gl3wProcs.gl.Uniform2uiv
+#define glUniform3d gl3wProcs.gl.Uniform3d
+#define glUniform3dv gl3wProcs.gl.Uniform3dv
+#define glUniform3f gl3wProcs.gl.Uniform3f
+#define glUniform3fv gl3wProcs.gl.Uniform3fv
+#define glUniform3i gl3wProcs.gl.Uniform3i
+#define glUniform3iv gl3wProcs.gl.Uniform3iv
+#define glUniform3ui gl3wProcs.gl.Uniform3ui
+#define glUniform3uiv gl3wProcs.gl.Uniform3uiv
+#define glUniform4d gl3wProcs.gl.Uniform4d
+#define glUniform4dv gl3wProcs.gl.Uniform4dv
+#define glUniform4f gl3wProcs.gl.Uniform4f
+#define glUniform4fv gl3wProcs.gl.Uniform4fv
+#define glUniform4i gl3wProcs.gl.Uniform4i
+#define glUniform4iv gl3wProcs.gl.Uniform4iv
+#define glUniform4ui gl3wProcs.gl.Uniform4ui
+#define glUniform4uiv gl3wProcs.gl.Uniform4uiv
+#define glUniformBlockBinding gl3wProcs.gl.UniformBlockBinding
+#define glUniformMatrix2dv gl3wProcs.gl.UniformMatrix2dv
+#define glUniformMatrix2fv gl3wProcs.gl.UniformMatrix2fv
+#define glUniformMatrix2x3dv gl3wProcs.gl.UniformMatrix2x3dv
+#define glUniformMatrix2x3fv gl3wProcs.gl.UniformMatrix2x3fv
+#define glUniformMatrix2x4dv gl3wProcs.gl.UniformMatrix2x4dv
+#define glUniformMatrix2x4fv gl3wProcs.gl.UniformMatrix2x4fv
+#define glUniformMatrix3dv gl3wProcs.gl.UniformMatrix3dv
+#define glUniformMatrix3fv gl3wProcs.gl.UniformMatrix3fv
+#define glUniformMatrix3x2dv gl3wProcs.gl.UniformMatrix3x2dv
+#define glUniformMatrix3x2fv gl3wProcs.gl.UniformMatrix3x2fv
+#define glUniformMatrix3x4dv gl3wProcs.gl.UniformMatrix3x4dv
+#define glUniformMatrix3x4fv gl3wProcs.gl.UniformMatrix3x4fv
+#define glUniformMatrix4dv gl3wProcs.gl.UniformMatrix4dv
+#define glUniformMatrix4fv gl3wProcs.gl.UniformMatrix4fv
+#define glUniformMatrix4x2dv gl3wProcs.gl.UniformMatrix4x2dv
+#define glUniformMatrix4x2fv gl3wProcs.gl.UniformMatrix4x2fv
+#define glUniformMatrix4x3dv gl3wProcs.gl.UniformMatrix4x3dv
+#define glUniformMatrix4x3fv gl3wProcs.gl.UniformMatrix4x3fv
+#define glUniformSubroutinesuiv gl3wProcs.gl.UniformSubroutinesuiv
+#define glUnmapBuffer gl3wProcs.gl.UnmapBuffer
+#define glUnmapNamedBuffer gl3wProcs.gl.UnmapNamedBuffer
+#define glUseProgram gl3wProcs.gl.UseProgram
+#define glUseProgramStages gl3wProcs.gl.UseProgramStages
+#define glValidateProgram gl3wProcs.gl.ValidateProgram
+#define glValidateProgramPipeline gl3wProcs.gl.ValidateProgramPipeline
+#define glVertexArrayAttribBinding gl3wProcs.gl.VertexArrayAttribBinding
+#define glVertexArrayAttribFormat gl3wProcs.gl.VertexArrayAttribFormat
+#define glVertexArrayAttribIFormat gl3wProcs.gl.VertexArrayAttribIFormat
+#define glVertexArrayAttribLFormat gl3wProcs.gl.VertexArrayAttribLFormat
+#define glVertexArrayBindingDivisor gl3wProcs.gl.VertexArrayBindingDivisor
+#define glVertexArrayElementBuffer gl3wProcs.gl.VertexArrayElementBuffer
+#define glVertexArrayVertexBuffer gl3wProcs.gl.VertexArrayVertexBuffer
+#define glVertexArrayVertexBuffers gl3wProcs.gl.VertexArrayVertexBuffers
+#define glVertexAttrib1d gl3wProcs.gl.VertexAttrib1d
+#define glVertexAttrib1dv gl3wProcs.gl.VertexAttrib1dv
+#define glVertexAttrib1f gl3wProcs.gl.VertexAttrib1f
+#define glVertexAttrib1fv gl3wProcs.gl.VertexAttrib1fv
+#define glVertexAttrib1s gl3wProcs.gl.VertexAttrib1s
+#define glVertexAttrib1sv gl3wProcs.gl.VertexAttrib1sv
+#define glVertexAttrib2d gl3wProcs.gl.VertexAttrib2d
+#define glVertexAttrib2dv gl3wProcs.gl.VertexAttrib2dv
+#define glVertexAttrib2f gl3wProcs.gl.VertexAttrib2f
+#define glVertexAttrib2fv gl3wProcs.gl.VertexAttrib2fv
+#define glVertexAttrib2s gl3wProcs.gl.VertexAttrib2s
+#define glVertexAttrib2sv gl3wProcs.gl.VertexAttrib2sv
+#define glVertexAttrib3d gl3wProcs.gl.VertexAttrib3d
+#define glVertexAttrib3dv gl3wProcs.gl.VertexAttrib3dv
+#define glVertexAttrib3f gl3wProcs.gl.VertexAttrib3f
+#define glVertexAttrib3fv gl3wProcs.gl.VertexAttrib3fv
+#define glVertexAttrib3s gl3wProcs.gl.VertexAttrib3s
+#define glVertexAttrib3sv gl3wProcs.gl.VertexAttrib3sv
+#define glVertexAttrib4Nbv gl3wProcs.gl.VertexAttrib4Nbv
+#define glVertexAttrib4Niv gl3wProcs.gl.VertexAttrib4Niv
+#define glVertexAttrib4Nsv gl3wProcs.gl.VertexAttrib4Nsv
+#define glVertexAttrib4Nub gl3wProcs.gl.VertexAttrib4Nub
+#define glVertexAttrib4Nubv gl3wProcs.gl.VertexAttrib4Nubv
+#define glVertexAttrib4Nuiv gl3wProcs.gl.VertexAttrib4Nuiv
+#define glVertexAttrib4Nusv gl3wProcs.gl.VertexAttrib4Nusv
+#define glVertexAttrib4bv gl3wProcs.gl.VertexAttrib4bv
+#define glVertexAttrib4d gl3wProcs.gl.VertexAttrib4d
+#define glVertexAttrib4dv gl3wProcs.gl.VertexAttrib4dv
+#define glVertexAttrib4f gl3wProcs.gl.VertexAttrib4f
+#define glVertexAttrib4fv gl3wProcs.gl.VertexAttrib4fv
+#define glVertexAttrib4iv gl3wProcs.gl.VertexAttrib4iv
+#define glVertexAttrib4s gl3wProcs.gl.VertexAttrib4s
+#define glVertexAttrib4sv gl3wProcs.gl.VertexAttrib4sv
+#define glVertexAttrib4ubv gl3wProcs.gl.VertexAttrib4ubv
+#define glVertexAttrib4uiv gl3wProcs.gl.VertexAttrib4uiv
+#define glVertexAttrib4usv gl3wProcs.gl.VertexAttrib4usv
+#define glVertexAttribBinding gl3wProcs.gl.VertexAttribBinding
+#define glVertexAttribDivisor gl3wProcs.gl.VertexAttribDivisor
+#define glVertexAttribFormat gl3wProcs.gl.VertexAttribFormat
+#define glVertexAttribI1i gl3wProcs.gl.VertexAttribI1i
+#define glVertexAttribI1iv gl3wProcs.gl.VertexAttribI1iv
+#define glVertexAttribI1ui gl3wProcs.gl.VertexAttribI1ui
+#define glVertexAttribI1uiv gl3wProcs.gl.VertexAttribI1uiv
+#define glVertexAttribI2i gl3wProcs.gl.VertexAttribI2i
+#define glVertexAttribI2iv gl3wProcs.gl.VertexAttribI2iv
+#define glVertexAttribI2ui gl3wProcs.gl.VertexAttribI2ui
+#define glVertexAttribI2uiv gl3wProcs.gl.VertexAttribI2uiv
+#define glVertexAttribI3i gl3wProcs.gl.VertexAttribI3i
+#define glVertexAttribI3iv gl3wProcs.gl.VertexAttribI3iv
+#define glVertexAttribI3ui gl3wProcs.gl.VertexAttribI3ui
+#define glVertexAttribI3uiv gl3wProcs.gl.VertexAttribI3uiv
+#define glVertexAttribI4bv gl3wProcs.gl.VertexAttribI4bv
+#define glVertexAttribI4i gl3wProcs.gl.VertexAttribI4i
+#define glVertexAttribI4iv gl3wProcs.gl.VertexAttribI4iv
+#define glVertexAttribI4sv gl3wProcs.gl.VertexAttribI4sv
+#define glVertexAttribI4ubv gl3wProcs.gl.VertexAttribI4ubv
+#define glVertexAttribI4ui gl3wProcs.gl.VertexAttribI4ui
+#define glVertexAttribI4uiv gl3wProcs.gl.VertexAttribI4uiv
+#define glVertexAttribI4usv gl3wProcs.gl.VertexAttribI4usv
+#define glVertexAttribIFormat gl3wProcs.gl.VertexAttribIFormat
+#define glVertexAttribIPointer gl3wProcs.gl.VertexAttribIPointer
+#define glVertexAttribL1d gl3wProcs.gl.VertexAttribL1d
+#define glVertexAttribL1dv gl3wProcs.gl.VertexAttribL1dv
+#define glVertexAttribL2d gl3wProcs.gl.VertexAttribL2d
+#define glVertexAttribL2dv gl3wProcs.gl.VertexAttribL2dv
+#define glVertexAttribL3d gl3wProcs.gl.VertexAttribL3d
+#define glVertexAttribL3dv gl3wProcs.gl.VertexAttribL3dv
+#define glVertexAttribL4d gl3wProcs.gl.VertexAttribL4d
+#define glVertexAttribL4dv gl3wProcs.gl.VertexAttribL4dv
+#define glVertexAttribLFormat gl3wProcs.gl.VertexAttribLFormat
+#define glVertexAttribLPointer gl3wProcs.gl.VertexAttribLPointer
+#define glVertexAttribP1ui gl3wProcs.gl.VertexAttribP1ui
+#define glVertexAttribP1uiv gl3wProcs.gl.VertexAttribP1uiv
+#define glVertexAttribP2ui gl3wProcs.gl.VertexAttribP2ui
+#define glVertexAttribP2uiv gl3wProcs.gl.VertexAttribP2uiv
+#define glVertexAttribP3ui gl3wProcs.gl.VertexAttribP3ui
+#define glVertexAttribP3uiv gl3wProcs.gl.VertexAttribP3uiv
+#define glVertexAttribP4ui gl3wProcs.gl.VertexAttribP4ui
+#define glVertexAttribP4uiv gl3wProcs.gl.VertexAttribP4uiv
+#define glVertexAttribPointer gl3wProcs.gl.VertexAttribPointer
+#define glVertexBindingDivisor gl3wProcs.gl.VertexBindingDivisor
+#define glViewport gl3wProcs.gl.Viewport
+#define glViewportArrayv gl3wProcs.gl.ViewportArrayv
+#define glViewportIndexedf gl3wProcs.gl.ViewportIndexedf
+#define glViewportIndexedfv gl3wProcs.gl.ViewportIndexedfv
+#define glWaitSync gl3wProcs.gl.WaitSync
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/simulation/gl3w/GL/glcorearb.h b/simulation/gl3w/GL/glcorearb.h
index 5d3c00f..9fc910d 100644
--- a/simulation/gl3w/GL/glcorearb.h
+++ b/simulation/gl3w/GL/glcorearb.h
@@ -1,5703 +1,5703 @@
-#ifndef __gl_glcorearb_h_
-#define __gl_glcorearb_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2017 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are 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 Materials.
-**
-** THE MATERIALS ARE 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
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-** https://github.com/KhronosGroup/OpenGL-Registry
-*/
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-/* glcorearb.h is for use with OpenGL core profile implementations.
-** It should should be placed in the same directory as gl.h and
-** included as .
-**
-** glcorearb.h includes only APIs in the latest OpenGL core profile
-** implementation together with APIs in newer ARB extensions which
-** can be supported by the core profile. It does not, and never will
-** include functionality removed from the core profile, such as
-** fixed-function vertex and fragment processing.
-**
-** Do not #include both and either of or
-** in the same source file.
-*/
-
-/* Generated C header for:
- * API: gl
- * Profile: core
- * Versions considered: .*
- * Versions emitted: .*
- * Default extensions included: glcore
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef GL_VERSION_1_0
-#define GL_VERSION_1_0 1
-typedef void GLvoid;
-typedef unsigned int GLenum;
-typedef float GLfloat;
-typedef int GLint;
-typedef int GLsizei;
-typedef unsigned int GLbitfield;
-typedef double GLdouble;
-typedef unsigned int GLuint;
-typedef unsigned char GLboolean;
-typedef unsigned char GLubyte;
-#define GL_DEPTH_BUFFER_BIT 0x00000100
-#define GL_STENCIL_BUFFER_BIT 0x00000400
-#define GL_COLOR_BUFFER_BIT 0x00004000
-#define GL_FALSE 0
-#define GL_TRUE 1
-#define GL_POINTS 0x0000
-#define GL_LINES 0x0001
-#define GL_LINE_LOOP 0x0002
-#define GL_LINE_STRIP 0x0003
-#define GL_TRIANGLES 0x0004
-#define GL_TRIANGLE_STRIP 0x0005
-#define GL_TRIANGLE_FAN 0x0006
-#define GL_QUADS 0x0007
-#define GL_NEVER 0x0200
-#define GL_LESS 0x0201
-#define GL_EQUAL 0x0202
-#define GL_LEQUAL 0x0203
-#define GL_GREATER 0x0204
-#define GL_NOTEQUAL 0x0205
-#define GL_GEQUAL 0x0206
-#define GL_ALWAYS 0x0207
-#define GL_ZERO 0
-#define GL_ONE 1
-#define GL_SRC_COLOR 0x0300
-#define GL_ONE_MINUS_SRC_COLOR 0x0301
-#define GL_SRC_ALPHA 0x0302
-#define GL_ONE_MINUS_SRC_ALPHA 0x0303
-#define GL_DST_ALPHA 0x0304
-#define GL_ONE_MINUS_DST_ALPHA 0x0305
-#define GL_DST_COLOR 0x0306
-#define GL_ONE_MINUS_DST_COLOR 0x0307
-#define GL_SRC_ALPHA_SATURATE 0x0308
-#define GL_NONE 0
-#define GL_FRONT_LEFT 0x0400
-#define GL_FRONT_RIGHT 0x0401
-#define GL_BACK_LEFT 0x0402
-#define GL_BACK_RIGHT 0x0403
-#define GL_FRONT 0x0404
-#define GL_BACK 0x0405
-#define GL_LEFT 0x0406
-#define GL_RIGHT 0x0407
-#define GL_FRONT_AND_BACK 0x0408
-#define GL_NO_ERROR 0
-#define GL_INVALID_ENUM 0x0500
-#define GL_INVALID_VALUE 0x0501
-#define GL_INVALID_OPERATION 0x0502
-#define GL_OUT_OF_MEMORY 0x0505
-#define GL_CW 0x0900
-#define GL_CCW 0x0901
-#define GL_POINT_SIZE 0x0B11
-#define GL_POINT_SIZE_RANGE 0x0B12
-#define GL_POINT_SIZE_GRANULARITY 0x0B13
-#define GL_LINE_SMOOTH 0x0B20
-#define GL_LINE_WIDTH 0x0B21
-#define GL_LINE_WIDTH_RANGE 0x0B22
-#define GL_LINE_WIDTH_GRANULARITY 0x0B23
-#define GL_POLYGON_MODE 0x0B40
-#define GL_POLYGON_SMOOTH 0x0B41
-#define GL_CULL_FACE 0x0B44
-#define GL_CULL_FACE_MODE 0x0B45
-#define GL_FRONT_FACE 0x0B46
-#define GL_DEPTH_RANGE 0x0B70
-#define GL_DEPTH_TEST 0x0B71
-#define GL_DEPTH_WRITEMASK 0x0B72
-#define GL_DEPTH_CLEAR_VALUE 0x0B73
-#define GL_DEPTH_FUNC 0x0B74
-#define GL_STENCIL_TEST 0x0B90
-#define GL_STENCIL_CLEAR_VALUE 0x0B91
-#define GL_STENCIL_FUNC 0x0B92
-#define GL_STENCIL_VALUE_MASK 0x0B93
-#define GL_STENCIL_FAIL 0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
-#define GL_STENCIL_REF 0x0B97
-#define GL_STENCIL_WRITEMASK 0x0B98
-#define GL_VIEWPORT 0x0BA2
-#define GL_DITHER 0x0BD0
-#define GL_BLEND_DST 0x0BE0
-#define GL_BLEND_SRC 0x0BE1
-#define GL_BLEND 0x0BE2
-#define GL_LOGIC_OP_MODE 0x0BF0
-#define GL_DRAW_BUFFER 0x0C01
-#define GL_READ_BUFFER 0x0C02
-#define GL_SCISSOR_BOX 0x0C10
-#define GL_SCISSOR_TEST 0x0C11
-#define GL_COLOR_CLEAR_VALUE 0x0C22
-#define GL_COLOR_WRITEMASK 0x0C23
-#define GL_DOUBLEBUFFER 0x0C32
-#define GL_STEREO 0x0C33
-#define GL_LINE_SMOOTH_HINT 0x0C52
-#define GL_POLYGON_SMOOTH_HINT 0x0C53
-#define GL_UNPACK_SWAP_BYTES 0x0CF0
-#define GL_UNPACK_LSB_FIRST 0x0CF1
-#define GL_UNPACK_ROW_LENGTH 0x0CF2
-#define GL_UNPACK_SKIP_ROWS 0x0CF3
-#define GL_UNPACK_SKIP_PIXELS 0x0CF4
-#define GL_UNPACK_ALIGNMENT 0x0CF5
-#define GL_PACK_SWAP_BYTES 0x0D00
-#define GL_PACK_LSB_FIRST 0x0D01
-#define GL_PACK_ROW_LENGTH 0x0D02
-#define GL_PACK_SKIP_ROWS 0x0D03
-#define GL_PACK_SKIP_PIXELS 0x0D04
-#define GL_PACK_ALIGNMENT 0x0D05
-#define GL_MAX_TEXTURE_SIZE 0x0D33
-#define GL_MAX_VIEWPORT_DIMS 0x0D3A
-#define GL_SUBPIXEL_BITS 0x0D50
-#define GL_TEXTURE_1D 0x0DE0
-#define GL_TEXTURE_2D 0x0DE1
-#define GL_TEXTURE_WIDTH 0x1000
-#define GL_TEXTURE_HEIGHT 0x1001
-#define GL_TEXTURE_BORDER_COLOR 0x1004
-#define GL_DONT_CARE 0x1100
-#define GL_FASTEST 0x1101
-#define GL_NICEST 0x1102
-#define GL_BYTE 0x1400
-#define GL_UNSIGNED_BYTE 0x1401
-#define GL_SHORT 0x1402
-#define GL_UNSIGNED_SHORT 0x1403
-#define GL_INT 0x1404
-#define GL_UNSIGNED_INT 0x1405
-#define GL_FLOAT 0x1406
-#define GL_STACK_OVERFLOW 0x0503
-#define GL_STACK_UNDERFLOW 0x0504
-#define GL_CLEAR 0x1500
-#define GL_AND 0x1501
-#define GL_AND_REVERSE 0x1502
-#define GL_COPY 0x1503
-#define GL_AND_INVERTED 0x1504
-#define GL_NOOP 0x1505
-#define GL_XOR 0x1506
-#define GL_OR 0x1507
-#define GL_NOR 0x1508
-#define GL_EQUIV 0x1509
-#define GL_INVERT 0x150A
-#define GL_OR_REVERSE 0x150B
-#define GL_COPY_INVERTED 0x150C
-#define GL_OR_INVERTED 0x150D
-#define GL_NAND 0x150E
-#define GL_SET 0x150F
-#define GL_TEXTURE 0x1702
-#define GL_COLOR 0x1800
-#define GL_DEPTH 0x1801
-#define GL_STENCIL 0x1802
-#define GL_STENCIL_INDEX 0x1901
-#define GL_DEPTH_COMPONENT 0x1902
-#define GL_RED 0x1903
-#define GL_GREEN 0x1904
-#define GL_BLUE 0x1905
-#define GL_ALPHA 0x1906
-#define GL_RGB 0x1907
-#define GL_RGBA 0x1908
-#define GL_POINT 0x1B00
-#define GL_LINE 0x1B01
-#define GL_FILL 0x1B02
-#define GL_KEEP 0x1E00
-#define GL_REPLACE 0x1E01
-#define GL_INCR 0x1E02
-#define GL_DECR 0x1E03
-#define GL_VENDOR 0x1F00
-#define GL_RENDERER 0x1F01
-#define GL_VERSION 0x1F02
-#define GL_EXTENSIONS 0x1F03
-#define GL_NEAREST 0x2600
-#define GL_LINEAR 0x2601
-#define GL_NEAREST_MIPMAP_NEAREST 0x2700
-#define GL_LINEAR_MIPMAP_NEAREST 0x2701
-#define GL_NEAREST_MIPMAP_LINEAR 0x2702
-#define GL_LINEAR_MIPMAP_LINEAR 0x2703
-#define GL_TEXTURE_MAG_FILTER 0x2800
-#define GL_TEXTURE_MIN_FILTER 0x2801
-#define GL_TEXTURE_WRAP_S 0x2802
-#define GL_TEXTURE_WRAP_T 0x2803
-#define GL_REPEAT 0x2901
-typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
-typedef void (APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
-typedef void (APIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
-typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
-typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
-typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-typedef void (APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
-typedef void (APIENTRYP PFNGLCLEARDEPTHPROC) (GLdouble depth);
-typedef void (APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
-typedef void (APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-typedef void (APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
-typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
-typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
-typedef void (APIENTRYP PFNGLFINISHPROC) (void);
-typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
-typedef void (APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
-typedef void (APIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
-typedef void (APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
-typedef void (APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
-typedef void (APIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLREADBUFFERPROC) (GLenum src);
-typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *data);
-typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
-typedef void (APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
-typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
-typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
-typedef void (APIENTRYP PFNGLDEPTHRANGEPROC) (GLdouble n, GLdouble f);
-typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullFace (GLenum mode);
-GLAPI void APIENTRY glFrontFace (GLenum mode);
-GLAPI void APIENTRY glHint (GLenum target, GLenum mode);
-GLAPI void APIENTRY glLineWidth (GLfloat width);
-GLAPI void APIENTRY glPointSize (GLfloat size);
-GLAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
-GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glDrawBuffer (GLenum buf);
-GLAPI void APIENTRY glClear (GLbitfield mask);
-GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GLAPI void APIENTRY glClearStencil (GLint s);
-GLAPI void APIENTRY glClearDepth (GLdouble depth);
-GLAPI void APIENTRY glStencilMask (GLuint mask);
-GLAPI void APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GLAPI void APIENTRY glDepthMask (GLboolean flag);
-GLAPI void APIENTRY glDisable (GLenum cap);
-GLAPI void APIENTRY glEnable (GLenum cap);
-GLAPI void APIENTRY glFinish (void);
-GLAPI void APIENTRY glFlush (void);
-GLAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GLAPI void APIENTRY glLogicOp (GLenum opcode);
-GLAPI void APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GLAPI void APIENTRY glDepthFunc (GLenum func);
-GLAPI void APIENTRY glPixelStoref (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
-GLAPI void APIENTRY glReadBuffer (GLenum src);
-GLAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);
-GLAPI void APIENTRY glGetDoublev (GLenum pname, GLdouble *data);
-GLAPI GLenum APIENTRY glGetError (void);
-GLAPI void APIENTRY glGetFloatv (GLenum pname, GLfloat *data);
-GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *data);
-GLAPI const GLubyte *APIENTRY glGetString (GLenum name);
-GLAPI void APIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
-GLAPI void APIENTRY glDepthRange (GLdouble n, GLdouble f);
-GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_VERSION_1_0 */
-
-#ifndef GL_VERSION_1_1
-#define GL_VERSION_1_1 1
-typedef float GLclampf;
-typedef double GLclampd;
-#define GL_COLOR_LOGIC_OP 0x0BF2
-#define GL_POLYGON_OFFSET_UNITS 0x2A00
-#define GL_POLYGON_OFFSET_POINT 0x2A01
-#define GL_POLYGON_OFFSET_LINE 0x2A02
-#define GL_POLYGON_OFFSET_FILL 0x8037
-#define GL_POLYGON_OFFSET_FACTOR 0x8038
-#define GL_TEXTURE_BINDING_1D 0x8068
-#define GL_TEXTURE_BINDING_2D 0x8069
-#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
-#define GL_TEXTURE_RED_SIZE 0x805C
-#define GL_TEXTURE_GREEN_SIZE 0x805D
-#define GL_TEXTURE_BLUE_SIZE 0x805E
-#define GL_TEXTURE_ALPHA_SIZE 0x805F
-#define GL_DOUBLE 0x140A
-#define GL_PROXY_TEXTURE_1D 0x8063
-#define GL_PROXY_TEXTURE_2D 0x8064
-#define GL_R3_G3_B2 0x2A10
-#define GL_RGB4 0x804F
-#define GL_RGB5 0x8050
-#define GL_RGB8 0x8051
-#define GL_RGB10 0x8052
-#define GL_RGB12 0x8053
-#define GL_RGB16 0x8054
-#define GL_RGBA2 0x8055
-#define GL_RGBA4 0x8056
-#define GL_RGB5_A1 0x8057
-#define GL_RGBA8 0x8058
-#define GL_RGB10_A2 0x8059
-#define GL_RGBA12 0x805A
-#define GL_RGBA16 0x805B
-#define GL_VERTEX_ARRAY 0x8074
-typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
-typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
-typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
-GLAPI void APIENTRY glGetPointerv (GLenum pname, void **params);
-GLAPI void APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GLAPI void APIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
-GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
-GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
-GLAPI GLboolean APIENTRY glIsTexture (GLuint texture);
-#endif
-#endif /* GL_VERSION_1_1 */
-
-#ifndef GL_VERSION_1_2
-#define GL_VERSION_1_2 1
-#define GL_UNSIGNED_BYTE_3_3_2 0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
-#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-#define GL_UNSIGNED_INT_10_10_10_2 0x8036
-#define GL_TEXTURE_BINDING_3D 0x806A
-#define GL_PACK_SKIP_IMAGES 0x806B
-#define GL_PACK_IMAGE_HEIGHT 0x806C
-#define GL_UNPACK_SKIP_IMAGES 0x806D
-#define GL_UNPACK_IMAGE_HEIGHT 0x806E
-#define GL_TEXTURE_3D 0x806F
-#define GL_PROXY_TEXTURE_3D 0x8070
-#define GL_TEXTURE_DEPTH 0x8071
-#define GL_TEXTURE_WRAP_R 0x8072
-#define GL_MAX_3D_TEXTURE_SIZE 0x8073
-#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
-#define GL_UNSIGNED_SHORT_5_6_5 0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
-#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
-#define GL_BGR 0x80E0
-#define GL_BGRA 0x80E1
-#define GL_MAX_ELEMENTS_VERTICES 0x80E8
-#define GL_MAX_ELEMENTS_INDICES 0x80E9
-#define GL_CLAMP_TO_EDGE 0x812F
-#define GL_TEXTURE_MIN_LOD 0x813A
-#define GL_TEXTURE_MAX_LOD 0x813B
-#define GL_TEXTURE_BASE_LEVEL 0x813C
-#define GL_TEXTURE_MAX_LEVEL 0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
-#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_VERSION_1_2 */
-
-#ifndef GL_VERSION_1_3
-#define GL_VERSION_1_3 1
-#define GL_TEXTURE0 0x84C0
-#define GL_TEXTURE1 0x84C1
-#define GL_TEXTURE2 0x84C2
-#define GL_TEXTURE3 0x84C3
-#define GL_TEXTURE4 0x84C4
-#define GL_TEXTURE5 0x84C5
-#define GL_TEXTURE6 0x84C6
-#define GL_TEXTURE7 0x84C7
-#define GL_TEXTURE8 0x84C8
-#define GL_TEXTURE9 0x84C9
-#define GL_TEXTURE10 0x84CA
-#define GL_TEXTURE11 0x84CB
-#define GL_TEXTURE12 0x84CC
-#define GL_TEXTURE13 0x84CD
-#define GL_TEXTURE14 0x84CE
-#define GL_TEXTURE15 0x84CF
-#define GL_TEXTURE16 0x84D0
-#define GL_TEXTURE17 0x84D1
-#define GL_TEXTURE18 0x84D2
-#define GL_TEXTURE19 0x84D3
-#define GL_TEXTURE20 0x84D4
-#define GL_TEXTURE21 0x84D5
-#define GL_TEXTURE22 0x84D6
-#define GL_TEXTURE23 0x84D7
-#define GL_TEXTURE24 0x84D8
-#define GL_TEXTURE25 0x84D9
-#define GL_TEXTURE26 0x84DA
-#define GL_TEXTURE27 0x84DB
-#define GL_TEXTURE28 0x84DC
-#define GL_TEXTURE29 0x84DD
-#define GL_TEXTURE30 0x84DE
-#define GL_TEXTURE31 0x84DF
-#define GL_ACTIVE_TEXTURE 0x84E0
-#define GL_MULTISAMPLE 0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
-#define GL_SAMPLE_COVERAGE 0x80A0
-#define GL_SAMPLE_BUFFERS 0x80A8
-#define GL_SAMPLES 0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
-#define GL_TEXTURE_CUBE_MAP 0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
-#define GL_COMPRESSED_RGB 0x84ED
-#define GL_COMPRESSED_RGBA 0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
-#define GL_TEXTURE_COMPRESSED 0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
-#define GL_CLAMP_TO_BORDER 0x812D
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum texture);
-GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
-#endif
-#endif /* GL_VERSION_1_3 */
-
-#ifndef GL_VERSION_1_4
-#define GL_VERSION_1_4 1
-#define GL_BLEND_DST_RGB 0x80C8
-#define GL_BLEND_SRC_RGB 0x80C9
-#define GL_BLEND_DST_ALPHA 0x80CA
-#define GL_BLEND_SRC_ALPHA 0x80CB
-#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
-#define GL_DEPTH_COMPONENT16 0x81A5
-#define GL_DEPTH_COMPONENT24 0x81A6
-#define GL_DEPTH_COMPONENT32 0x81A7
-#define GL_MIRRORED_REPEAT 0x8370
-#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
-#define GL_TEXTURE_LOD_BIAS 0x8501
-#define GL_INCR_WRAP 0x8507
-#define GL_DECR_WRAP 0x8508
-#define GL_TEXTURE_DEPTH_SIZE 0x884A
-#define GL_TEXTURE_COMPARE_MODE 0x884C
-#define GL_TEXTURE_COMPARE_FUNC 0x884D
-#define GL_BLEND_COLOR 0x8005
-#define GL_BLEND_EQUATION 0x8009
-#define GL_CONSTANT_COLOR 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
-#define GL_CONSTANT_ALPHA 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
-#define GL_FUNC_ADD 0x8006
-#define GL_FUNC_REVERSE_SUBTRACT 0x800B
-#define GL_FUNC_SUBTRACT 0x800A
-#define GL_MIN 0x8007
-#define GL_MAX 0x8008
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GLAPI void APIENTRY glBlendEquation (GLenum mode);
-#endif
-#endif /* GL_VERSION_1_4 */
-
-#ifndef GL_VERSION_1_5
-#define GL_VERSION_1_5 1
-#include
-typedef ptrdiff_t GLsizeiptr;
-typedef ptrdiff_t GLintptr;
-#define GL_BUFFER_SIZE 0x8764
-#define GL_BUFFER_USAGE 0x8765
-#define GL_QUERY_COUNTER_BITS 0x8864
-#define GL_CURRENT_QUERY 0x8865
-#define GL_QUERY_RESULT 0x8866
-#define GL_QUERY_RESULT_AVAILABLE 0x8867
-#define GL_ARRAY_BUFFER 0x8892
-#define GL_ELEMENT_ARRAY_BUFFER 0x8893
-#define GL_ARRAY_BUFFER_BINDING 0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-#define GL_READ_ONLY 0x88B8
-#define GL_WRITE_ONLY 0x88B9
-#define GL_READ_WRITE 0x88BA
-#define GL_BUFFER_ACCESS 0x88BB
-#define GL_BUFFER_MAPPED 0x88BC
-#define GL_BUFFER_MAP_POINTER 0x88BD
-#define GL_STREAM_DRAW 0x88E0
-#define GL_STREAM_READ 0x88E1
-#define GL_STREAM_COPY 0x88E2
-#define GL_STATIC_DRAW 0x88E4
-#define GL_STATIC_READ 0x88E5
-#define GL_STATIC_COPY 0x88E6
-#define GL_DYNAMIC_DRAW 0x88E8
-#define GL_DYNAMIC_READ 0x88E9
-#define GL_DYNAMIC_COPY 0x88EA
-#define GL_SAMPLES_PASSED 0x8914
-#define GL_SRC1_ALPHA 0x8589
-typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
-GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQuery (GLenum target);
-GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
-GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_VERSION_1_5 */
-
-#ifndef GL_VERSION_2_0
-#define GL_VERSION_2_0 1
-typedef char GLchar;
-typedef short GLshort;
-typedef signed char GLbyte;
-typedef unsigned short GLushort;
-#define GL_BLEND_EQUATION_RGB 0x8009
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
-#define GL_CURRENT_VERTEX_ATTRIB 0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
-#define GL_STENCIL_BACK_FUNC 0x8800
-#define GL_STENCIL_BACK_FAIL 0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
-#define GL_MAX_DRAW_BUFFERS 0x8824
-#define GL_DRAW_BUFFER0 0x8825
-#define GL_DRAW_BUFFER1 0x8826
-#define GL_DRAW_BUFFER2 0x8827
-#define GL_DRAW_BUFFER3 0x8828
-#define GL_DRAW_BUFFER4 0x8829
-#define GL_DRAW_BUFFER5 0x882A
-#define GL_DRAW_BUFFER6 0x882B
-#define GL_DRAW_BUFFER7 0x882C
-#define GL_DRAW_BUFFER8 0x882D
-#define GL_DRAW_BUFFER9 0x882E
-#define GL_DRAW_BUFFER10 0x882F
-#define GL_DRAW_BUFFER11 0x8830
-#define GL_DRAW_BUFFER12 0x8831
-#define GL_DRAW_BUFFER13 0x8832
-#define GL_DRAW_BUFFER14 0x8833
-#define GL_DRAW_BUFFER15 0x8834
-#define GL_BLEND_EQUATION_ALPHA 0x883D
-#define GL_MAX_VERTEX_ATTRIBS 0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
-#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
-#define GL_FRAGMENT_SHADER 0x8B30
-#define GL_VERTEX_SHADER 0x8B31
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
-#define GL_MAX_VARYING_FLOATS 0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_SHADER_TYPE 0x8B4F
-#define GL_FLOAT_VEC2 0x8B50
-#define GL_FLOAT_VEC3 0x8B51
-#define GL_FLOAT_VEC4 0x8B52
-#define GL_INT_VEC2 0x8B53
-#define GL_INT_VEC3 0x8B54
-#define GL_INT_VEC4 0x8B55
-#define GL_BOOL 0x8B56
-#define GL_BOOL_VEC2 0x8B57
-#define GL_BOOL_VEC3 0x8B58
-#define GL_BOOL_VEC4 0x8B59
-#define GL_FLOAT_MAT2 0x8B5A
-#define GL_FLOAT_MAT3 0x8B5B
-#define GL_FLOAT_MAT4 0x8B5C
-#define GL_SAMPLER_1D 0x8B5D
-#define GL_SAMPLER_2D 0x8B5E
-#define GL_SAMPLER_3D 0x8B5F
-#define GL_SAMPLER_CUBE 0x8B60
-#define GL_SAMPLER_1D_SHADOW 0x8B61
-#define GL_SAMPLER_2D_SHADOW 0x8B62
-#define GL_DELETE_STATUS 0x8B80
-#define GL_COMPILE_STATUS 0x8B81
-#define GL_LINK_STATUS 0x8B82
-#define GL_VALIDATE_STATUS 0x8B83
-#define GL_INFO_LOG_LENGTH 0x8B84
-#define GL_ATTACHED_SHADERS 0x8B85
-#define GL_ACTIVE_UNIFORMS 0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
-#define GL_SHADER_SOURCE_LENGTH 0x8B88
-#define GL_ACTIVE_ATTRIBUTES 0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
-#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
-#define GL_CURRENT_PROGRAM 0x8B8D
-#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
-#define GL_LOWER_LEFT 0x8CA1
-#define GL_UPPER_LEFT 0x8CA2
-#define GL_STENCIL_BACK_REF 0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
-GLAPI void APIENTRY glCompileShader (GLuint shader);
-GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum type);
-GLAPI void APIENTRY glDeleteProgram (GLuint program);
-GLAPI void APIENTRY glDeleteShader (GLuint shader);
-GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
-GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
-GLAPI void APIENTRY glLinkProgram (GLuint program);
-GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-GLAPI void APIENTRY glUseProgram (GLuint program);
-GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glValidateProgram (GLuint program);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_VERSION_2_0 */
-
-#ifndef GL_VERSION_2_1
-#define GL_VERSION_2_1 1
-#define GL_PIXEL_PACK_BUFFER 0x88EB
-#define GL_PIXEL_UNPACK_BUFFER 0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
-#define GL_FLOAT_MAT2x3 0x8B65
-#define GL_FLOAT_MAT2x4 0x8B66
-#define GL_FLOAT_MAT3x2 0x8B67
-#define GL_FLOAT_MAT3x4 0x8B68
-#define GL_FLOAT_MAT4x2 0x8B69
-#define GL_FLOAT_MAT4x3 0x8B6A
-#define GL_SRGB 0x8C40
-#define GL_SRGB8 0x8C41
-#define GL_SRGB_ALPHA 0x8C42
-#define GL_SRGB8_ALPHA8 0x8C43
-#define GL_COMPRESSED_SRGB 0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#endif
-#endif /* GL_VERSION_2_1 */
-
-#ifndef GL_VERSION_3_0
-#define GL_VERSION_3_0 1
-typedef unsigned short GLhalf;
-#define GL_COMPARE_REF_TO_TEXTURE 0x884E
-#define GL_CLIP_DISTANCE0 0x3000
-#define GL_CLIP_DISTANCE1 0x3001
-#define GL_CLIP_DISTANCE2 0x3002
-#define GL_CLIP_DISTANCE3 0x3003
-#define GL_CLIP_DISTANCE4 0x3004
-#define GL_CLIP_DISTANCE5 0x3005
-#define GL_CLIP_DISTANCE6 0x3006
-#define GL_CLIP_DISTANCE7 0x3007
-#define GL_MAX_CLIP_DISTANCES 0x0D32
-#define GL_MAJOR_VERSION 0x821B
-#define GL_MINOR_VERSION 0x821C
-#define GL_NUM_EXTENSIONS 0x821D
-#define GL_CONTEXT_FLAGS 0x821E
-#define GL_COMPRESSED_RED 0x8225
-#define GL_COMPRESSED_RG 0x8226
-#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
-#define GL_RGBA32F 0x8814
-#define GL_RGB32F 0x8815
-#define GL_RGBA16F 0x881A
-#define GL_RGB16F 0x881B
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
-#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
-#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
-#define GL_CLAMP_READ_COLOR 0x891C
-#define GL_FIXED_ONLY 0x891D
-#define GL_MAX_VARYING_COMPONENTS 0x8B4B
-#define GL_TEXTURE_1D_ARRAY 0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
-#define GL_TEXTURE_2D_ARRAY 0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
-#define GL_R11F_G11F_B10F 0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
-#define GL_RGB9_E5 0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
-#define GL_TEXTURE_SHARED_SIZE 0x8C3F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
-#define GL_PRIMITIVES_GENERATED 0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
-#define GL_RASTERIZER_DISCARD 0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS 0x8C8C
-#define GL_SEPARATE_ATTRIBS 0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
-#define GL_RGBA32UI 0x8D70
-#define GL_RGB32UI 0x8D71
-#define GL_RGBA16UI 0x8D76
-#define GL_RGB16UI 0x8D77
-#define GL_RGBA8UI 0x8D7C
-#define GL_RGB8UI 0x8D7D
-#define GL_RGBA32I 0x8D82
-#define GL_RGB32I 0x8D83
-#define GL_RGBA16I 0x8D88
-#define GL_RGB16I 0x8D89
-#define GL_RGBA8I 0x8D8E
-#define GL_RGB8I 0x8D8F
-#define GL_RED_INTEGER 0x8D94
-#define GL_GREEN_INTEGER 0x8D95
-#define GL_BLUE_INTEGER 0x8D96
-#define GL_RGB_INTEGER 0x8D98
-#define GL_RGBA_INTEGER 0x8D99
-#define GL_BGR_INTEGER 0x8D9A
-#define GL_BGRA_INTEGER 0x8D9B
-#define GL_SAMPLER_1D_ARRAY 0x8DC0
-#define GL_SAMPLER_2D_ARRAY 0x8DC1
-#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
-#define GL_UNSIGNED_INT_VEC2 0x8DC6
-#define GL_UNSIGNED_INT_VEC3 0x8DC7
-#define GL_UNSIGNED_INT_VEC4 0x8DC8
-#define GL_INT_SAMPLER_1D 0x8DC9
-#define GL_INT_SAMPLER_2D 0x8DCA
-#define GL_INT_SAMPLER_3D 0x8DCB
-#define GL_INT_SAMPLER_CUBE 0x8DCC
-#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
-#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
-#define GL_QUERY_WAIT 0x8E13
-#define GL_QUERY_NO_WAIT 0x8E14
-#define GL_QUERY_BY_REGION_WAIT 0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
-#define GL_BUFFER_ACCESS_FLAGS 0x911F
-#define GL_BUFFER_MAP_LENGTH 0x9120
-#define GL_BUFFER_MAP_OFFSET 0x9121
-#define GL_DEPTH_COMPONENT32F 0x8CAC
-#define GL_DEPTH32F_STENCIL8 0x8CAD
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
-#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
-#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
-#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
-#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
-#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
-#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
-#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
-#define GL_FRAMEBUFFER_DEFAULT 0x8218
-#define GL_FRAMEBUFFER_UNDEFINED 0x8219
-#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
-#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
-#define GL_DEPTH_STENCIL 0x84F9
-#define GL_UNSIGNED_INT_24_8 0x84FA
-#define GL_DEPTH24_STENCIL8 0x88F0
-#define GL_TEXTURE_STENCIL_SIZE 0x88F1
-#define GL_TEXTURE_RED_TYPE 0x8C10
-#define GL_TEXTURE_GREEN_TYPE 0x8C11
-#define GL_TEXTURE_BLUE_TYPE 0x8C12
-#define GL_TEXTURE_ALPHA_TYPE 0x8C13
-#define GL_TEXTURE_DEPTH_TYPE 0x8C16
-#define GL_UNSIGNED_NORMALIZED 0x8C17
-#define GL_FRAMEBUFFER_BINDING 0x8CA6
-#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
-#define GL_RENDERBUFFER_BINDING 0x8CA7
-#define GL_READ_FRAMEBUFFER 0x8CA8
-#define GL_DRAW_FRAMEBUFFER 0x8CA9
-#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
-#define GL_RENDERBUFFER_SAMPLES 0x8CAB
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
-#define GL_COLOR_ATTACHMENT0 0x8CE0
-#define GL_COLOR_ATTACHMENT1 0x8CE1
-#define GL_COLOR_ATTACHMENT2 0x8CE2
-#define GL_COLOR_ATTACHMENT3 0x8CE3
-#define GL_COLOR_ATTACHMENT4 0x8CE4
-#define GL_COLOR_ATTACHMENT5 0x8CE5
-#define GL_COLOR_ATTACHMENT6 0x8CE6
-#define GL_COLOR_ATTACHMENT7 0x8CE7
-#define GL_COLOR_ATTACHMENT8 0x8CE8
-#define GL_COLOR_ATTACHMENT9 0x8CE9
-#define GL_COLOR_ATTACHMENT10 0x8CEA
-#define GL_COLOR_ATTACHMENT11 0x8CEB
-#define GL_COLOR_ATTACHMENT12 0x8CEC
-#define GL_COLOR_ATTACHMENT13 0x8CED
-#define GL_COLOR_ATTACHMENT14 0x8CEE
-#define GL_COLOR_ATTACHMENT15 0x8CEF
-#define GL_COLOR_ATTACHMENT16 0x8CF0
-#define GL_COLOR_ATTACHMENT17 0x8CF1
-#define GL_COLOR_ATTACHMENT18 0x8CF2
-#define GL_COLOR_ATTACHMENT19 0x8CF3
-#define GL_COLOR_ATTACHMENT20 0x8CF4
-#define GL_COLOR_ATTACHMENT21 0x8CF5
-#define GL_COLOR_ATTACHMENT22 0x8CF6
-#define GL_COLOR_ATTACHMENT23 0x8CF7
-#define GL_COLOR_ATTACHMENT24 0x8CF8
-#define GL_COLOR_ATTACHMENT25 0x8CF9
-#define GL_COLOR_ATTACHMENT26 0x8CFA
-#define GL_COLOR_ATTACHMENT27 0x8CFB
-#define GL_COLOR_ATTACHMENT28 0x8CFC
-#define GL_COLOR_ATTACHMENT29 0x8CFD
-#define GL_COLOR_ATTACHMENT30 0x8CFE
-#define GL_COLOR_ATTACHMENT31 0x8CFF
-#define GL_DEPTH_ATTACHMENT 0x8D00
-#define GL_STENCIL_ATTACHMENT 0x8D20
-#define GL_FRAMEBUFFER 0x8D40
-#define GL_RENDERBUFFER 0x8D41
-#define GL_RENDERBUFFER_WIDTH 0x8D42
-#define GL_RENDERBUFFER_HEIGHT 0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
-#define GL_STENCIL_INDEX1 0x8D46
-#define GL_STENCIL_INDEX4 0x8D47
-#define GL_STENCIL_INDEX8 0x8D48
-#define GL_STENCIL_INDEX16 0x8D49
-#define GL_RENDERBUFFER_RED_SIZE 0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
-#define GL_MAX_SAMPLES 0x8D57
-#define GL_FRAMEBUFFER_SRGB 0x8DB9
-#define GL_HALF_FLOAT 0x140B
-#define GL_MAP_READ_BIT 0x0001
-#define GL_MAP_WRITE_BIT 0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
-#define GL_COMPRESSED_RED_RGTC1 0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
-#define GL_COMPRESSED_RG_RGTC2 0x8DBD
-#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
-#define GL_RG 0x8227
-#define GL_RG_INTEGER 0x8228
-#define GL_R8 0x8229
-#define GL_R16 0x822A
-#define GL_RG8 0x822B
-#define GL_RG16 0x822C
-#define GL_R16F 0x822D
-#define GL_R32F 0x822E
-#define GL_RG16F 0x822F
-#define GL_RG32F 0x8230
-#define GL_R8I 0x8231
-#define GL_R8UI 0x8232
-#define GL_R16I 0x8233
-#define GL_R16UI 0x8234
-#define GL_R32I 0x8235
-#define GL_R32UI 0x8236
-#define GL_RG8I 0x8237
-#define GL_RG8UI 0x8238
-#define GL_RG16I 0x8239
-#define GL_RG16UI 0x823A
-#define GL_RG32I 0x823B
-#define GL_RG32UI 0x823C
-#define GL_VERTEX_ARRAY_BINDING 0x85B5
-typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
-GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
-GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmap (GLenum target);
-GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glBindVertexArray (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
-#endif
-#endif /* GL_VERSION_3_0 */
-
-#ifndef GL_VERSION_3_1
-#define GL_VERSION_3_1 1
-#define GL_SAMPLER_2D_RECT 0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
-#define GL_SAMPLER_BUFFER 0x8DC2
-#define GL_INT_SAMPLER_2D_RECT 0x8DCD
-#define GL_INT_SAMPLER_BUFFER 0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
-#define GL_TEXTURE_BUFFER 0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
-#define GL_TEXTURE_RECTANGLE 0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
-#define GL_R8_SNORM 0x8F94
-#define GL_RG8_SNORM 0x8F95
-#define GL_RGB8_SNORM 0x8F96
-#define GL_RGBA8_SNORM 0x8F97
-#define GL_R16_SNORM 0x8F98
-#define GL_RG16_SNORM 0x8F99
-#define GL_RGB16_SNORM 0x8F9A
-#define GL_RGBA16_SNORM 0x8F9B
-#define GL_SIGNED_NORMALIZED 0x8F9C
-#define GL_PRIMITIVE_RESTART 0x8F9D
-#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
-#define GL_COPY_READ_BUFFER 0x8F36
-#define GL_COPY_WRITE_BUFFER 0x8F37
-#define GL_UNIFORM_BUFFER 0x8A11
-#define GL_UNIFORM_BUFFER_BINDING 0x8A28
-#define GL_UNIFORM_BUFFER_START 0x8A29
-#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
-#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
-#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
-#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
-#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
-#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
-#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
-#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
-#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
-#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
-#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
-#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
-#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
-#define GL_UNIFORM_TYPE 0x8A37
-#define GL_UNIFORM_SIZE 0x8A38
-#define GL_UNIFORM_NAME_LENGTH 0x8A39
-#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
-#define GL_UNIFORM_OFFSET 0x8A3B
-#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
-#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
-#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
-#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
-#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
-#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
-#define GL_INVALID_INDEX 0xFFFFFFFFu
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
-GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#endif
-#endif /* GL_VERSION_3_1 */
-
-#ifndef GL_VERSION_3_2
-#define GL_VERSION_3_2 1
-typedef struct __GLsync *GLsync;
-#ifndef GLEXT_64_TYPES_DEFINED
-/* This code block is duplicated in glxext.h, so must be protected */
-#define GLEXT_64_TYPES_DEFINED
-/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-/* (as used in the GL_EXT_timer_query extension). */
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include
-#elif defined(__sun__) || defined(__digital__)
-#include
-#if defined(__STDC__)
-#if defined(__arch64__) || defined(_LP64)
-typedef long int int64_t;
-typedef unsigned long int uint64_t;
-#else
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#endif /* __arch64__ */
-#endif /* __STDC__ */
-#elif defined( __VMS ) || defined(__sgi)
-#include
-#elif defined(__SCO__) || defined(__USLC__)
-#include
-#elif defined(__UNIXOS2__) || defined(__SOL64__)
-typedef long int int32_t;
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#elif defined(_WIN32) && defined(__GNUC__)
-#include
-#elif defined(_WIN32)
-typedef __int32 int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-/* Fallback if nothing above works */
-#include
-#endif
-#endif
-typedef uint64_t GLuint64;
-typedef int64_t GLint64;
-#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
-#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define GL_LINES_ADJACENCY 0x000A
-#define GL_LINE_STRIP_ADJACENCY 0x000B
-#define GL_TRIANGLES_ADJACENCY 0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
-#define GL_PROGRAM_POINT_SIZE 0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
-#define GL_GEOMETRY_SHADER 0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT 0x8916
-#define GL_GEOMETRY_INPUT_TYPE 0x8917
-#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
-#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
-#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
-#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
-#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
-#define GL_CONTEXT_PROFILE_MASK 0x9126
-#define GL_DEPTH_CLAMP 0x864F
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
-#define GL_LAST_VERTEX_CONVENTION 0x8E4E
-#define GL_PROVOKING_VERTEX 0x8E4F
-#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
-#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
-#define GL_OBJECT_TYPE 0x9112
-#define GL_SYNC_CONDITION 0x9113
-#define GL_SYNC_STATUS 0x9114
-#define GL_SYNC_FLAGS 0x9115
-#define GL_SYNC_FENCE 0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
-#define GL_UNSIGNALED 0x9118
-#define GL_SIGNALED 0x9119
-#define GL_ALREADY_SIGNALED 0x911A
-#define GL_TIMEOUT_EXPIRED 0x911B
-#define GL_CONDITION_SATISFIED 0x911C
-#define GL_WAIT_FAILED 0x911D
-#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
-#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
-#define GL_SAMPLE_POSITION 0x8E50
-#define GL_SAMPLE_MASK 0x8E51
-#define GL_SAMPLE_MASK_VALUE 0x8E52
-#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
-#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
-#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
-#define GL_TEXTURE_SAMPLES 0x9106
-#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
-#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
-#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
-#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
-#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
-#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
-#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
-#define GL_MAX_INTEGER_SAMPLES 0x9110
-typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
-typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
-typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
-typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-GLAPI void APIENTRY glProvokingVertex (GLenum mode);
-GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
-GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
-GLAPI void APIENTRY glDeleteSync (GLsync sync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
-GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
-#endif
-#endif /* GL_VERSION_3_2 */
-
-#ifndef GL_VERSION_3_3
-#define GL_VERSION_3_3 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
-#define GL_SRC1_COLOR 0x88F9
-#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
-#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
-#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
-#define GL_ANY_SAMPLES_PASSED 0x8C2F
-#define GL_SAMPLER_BINDING 0x8919
-#define GL_RGB10_A2UI 0x906F
-#define GL_TEXTURE_SWIZZLE_R 0x8E42
-#define GL_TEXTURE_SWIZZLE_G 0x8E43
-#define GL_TEXTURE_SWIZZLE_B 0x8E44
-#define GL_TEXTURE_SWIZZLE_A 0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
-#define GL_TIME_ELAPSED 0x88BF
-#define GL_TIMESTAMP 0x8E28
-#define GL_INT_2_10_10_10_REV 0x8D9F
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
-typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
-typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
-typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
-GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
-GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
-GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
-GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
-GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
-GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
-GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
-GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
-GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-#endif
-#endif /* GL_VERSION_3_3 */
-
-#ifndef GL_VERSION_4_0
-#define GL_VERSION_4_0 1
-#define GL_SAMPLE_SHADING 0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
-#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
-#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
-#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
-#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
-#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
-#define GL_MAX_VERTEX_STREAMS 0x8E71
-#define GL_DOUBLE_VEC2 0x8FFC
-#define GL_DOUBLE_VEC3 0x8FFD
-#define GL_DOUBLE_VEC4 0x8FFE
-#define GL_DOUBLE_MAT2 0x8F46
-#define GL_DOUBLE_MAT3 0x8F47
-#define GL_DOUBLE_MAT4 0x8F48
-#define GL_DOUBLE_MAT2x3 0x8F49
-#define GL_DOUBLE_MAT2x4 0x8F4A
-#define GL_DOUBLE_MAT3x2 0x8F4B
-#define GL_DOUBLE_MAT3x4 0x8F4C
-#define GL_DOUBLE_MAT4x2 0x8F4D
-#define GL_DOUBLE_MAT4x3 0x8F4E
-#define GL_ACTIVE_SUBROUTINES 0x8DE5
-#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
-#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
-#define GL_MAX_SUBROUTINES 0x8DE7
-#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
-#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
-#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
-#define GL_PATCHES 0x000E
-#define GL_PATCH_VERTICES 0x8E72
-#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
-#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
-#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
-#define GL_TESS_GEN_MODE 0x8E76
-#define GL_TESS_GEN_SPACING 0x8E77
-#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
-#define GL_TESS_GEN_POINT_MODE 0x8E79
-#define GL_ISOLINES 0x8E7A
-#define GL_FRACTIONAL_ODD 0x8E7B
-#define GL_FRACTIONAL_EVEN 0x8E7C
-#define GL_MAX_PATCH_VERTICES 0x8E7D
-#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
-#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
-#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
-#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
-#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
-#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
-#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
-#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
-#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
-#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
-#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
-#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
-#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
-#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
-#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
-#define GL_TESS_EVALUATION_SHADER 0x8E87
-#define GL_TESS_CONTROL_SHADER 0x8E88
-#define GL_TRANSFORM_FEEDBACK 0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
-#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
-typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
-typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
-typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
-typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLfloat value);
-GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
-GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
-GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
-GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
-GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
-GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
-GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
-GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
-GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedback (void);
-GLAPI void APIENTRY glResumeTransformFeedback (void);
-GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
-GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
-GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
-GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_VERSION_4_0 */
-
-#ifndef GL_VERSION_4_1
-#define GL_VERSION_4_1 1
-#define GL_FIXED 0x140C
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-#define GL_LOW_FLOAT 0x8DF0
-#define GL_MEDIUM_FLOAT 0x8DF1
-#define GL_HIGH_FLOAT 0x8DF2
-#define GL_LOW_INT 0x8DF3
-#define GL_MEDIUM_INT 0x8DF4
-#define GL_HIGH_INT 0x8DF5
-#define GL_SHADER_COMPILER 0x8DFA
-#define GL_SHADER_BINARY_FORMATS 0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
-#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
-#define GL_MAX_VARYING_VECTORS 0x8DFC
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
-#define GL_RGB565 0x8D62
-#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
-#define GL_PROGRAM_BINARY_LENGTH 0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
-#define GL_PROGRAM_BINARY_FORMATS 0x87FF
-#define GL_VERTEX_SHADER_BIT 0x00000001
-#define GL_FRAGMENT_SHADER_BIT 0x00000002
-#define GL_GEOMETRY_SHADER_BIT 0x00000004
-#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
-#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
-#define GL_ALL_SHADER_BITS 0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE 0x8258
-#define GL_ACTIVE_PROGRAM 0x8259
-#define GL_PROGRAM_PIPELINE_BINDING 0x825A
-#define GL_MAX_VIEWPORTS 0x825B
-#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
-#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
-#define GL_LAYER_PROVOKING_VERTEX 0x825E
-#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
-#define GL_UNDEFINED_VERTEX 0x8260
-typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
-typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
-typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
-typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
-typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReleaseShaderCompiler (void);
-GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
-GLAPI void APIENTRY glClearDepthf (GLfloat d);
-GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
-GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
-GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
-GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
-GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
-GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
-GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
-GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
-#endif
-#endif /* GL_VERSION_4_1 */
-
-#ifndef GL_VERSION_4_2
-#define GL_VERSION_4_2 1
-#define GL_COPY_READ_BUFFER_BINDING 0x8F36
-#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
-#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
-#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
-#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
-#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
-#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
-#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
-#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
-#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
-#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
-#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
-#define GL_NUM_SAMPLE_COUNTS 0x9380
-#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
-#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
-#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
-#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
-#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
-#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
-#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
-#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
-#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
-#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
-#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
-#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
-#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
-#define GL_UNIFORM_BARRIER_BIT 0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
-#define GL_COMMAND_BARRIER_BIT 0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
-#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
-#define GL_MAX_IMAGE_UNITS 0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
-#define GL_IMAGE_BINDING_NAME 0x8F3A
-#define GL_IMAGE_BINDING_LEVEL 0x8F3B
-#define GL_IMAGE_BINDING_LAYERED 0x8F3C
-#define GL_IMAGE_BINDING_LAYER 0x8F3D
-#define GL_IMAGE_BINDING_ACCESS 0x8F3E
-#define GL_IMAGE_1D 0x904C
-#define GL_IMAGE_2D 0x904D
-#define GL_IMAGE_3D 0x904E
-#define GL_IMAGE_2D_RECT 0x904F
-#define GL_IMAGE_CUBE 0x9050
-#define GL_IMAGE_BUFFER 0x9051
-#define GL_IMAGE_1D_ARRAY 0x9052
-#define GL_IMAGE_2D_ARRAY 0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
-#define GL_IMAGE_2D_MULTISAMPLE 0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
-#define GL_INT_IMAGE_1D 0x9057
-#define GL_INT_IMAGE_2D 0x9058
-#define GL_INT_IMAGE_3D 0x9059
-#define GL_INT_IMAGE_2D_RECT 0x905A
-#define GL_INT_IMAGE_CUBE 0x905B
-#define GL_INT_IMAGE_BUFFER 0x905C
-#define GL_INT_IMAGE_1D_ARRAY 0x905D
-#define GL_INT_IMAGE_2D_ARRAY 0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
-#define GL_MAX_IMAGE_SAMPLES 0x906D
-#define GL_IMAGE_BINDING_FORMAT 0x906E
-#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
-#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
-#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
-#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
-#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
-#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
-#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
-#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
-#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
-GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
-GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#endif
-#endif /* GL_VERSION_4_2 */
-
-#ifndef GL_VERSION_4_3
-#define GL_VERSION_4_3 1
-typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
-#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
-#define GL_COMPRESSED_RGB8_ETC2 0x9274
-#define GL_COMPRESSED_SRGB8_ETC2 0x9275
-#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
-#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
-#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
-#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
-#define GL_COMPRESSED_R11_EAC 0x9270
-#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
-#define GL_COMPRESSED_RG11_EAC 0x9272
-#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
-#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
-#define GL_MAX_ELEMENT_INDEX 0x8D6B
-#define GL_COMPUTE_SHADER 0x91B9
-#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
-#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
-#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
-#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
-#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
-#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
-#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
-#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
-#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
-#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
-#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
-#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
-#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
-#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
-#define GL_COMPUTE_SHADER_BIT 0x00000020
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
-#define GL_DEBUG_SOURCE_API 0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
-#define GL_DEBUG_SOURCE_APPLICATION 0x824A
-#define GL_DEBUG_SOURCE_OTHER 0x824B
-#define GL_DEBUG_TYPE_ERROR 0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
-#define GL_DEBUG_TYPE_PORTABILITY 0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
-#define GL_DEBUG_TYPE_OTHER 0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
-#define GL_DEBUG_LOGGED_MESSAGES 0x9145
-#define GL_DEBUG_SEVERITY_HIGH 0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
-#define GL_DEBUG_SEVERITY_LOW 0x9148
-#define GL_DEBUG_TYPE_MARKER 0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
-#define GL_DEBUG_TYPE_POP_GROUP 0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
-#define GL_BUFFER 0x82E0
-#define GL_SHADER 0x82E1
-#define GL_PROGRAM 0x82E2
-#define GL_QUERY 0x82E3
-#define GL_PROGRAM_PIPELINE 0x82E4
-#define GL_SAMPLER 0x82E6
-#define GL_MAX_LABEL_LENGTH 0x82E8
-#define GL_DEBUG_OUTPUT 0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
-#define GL_MAX_UNIFORM_LOCATIONS 0x826E
-#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
-#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
-#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
-#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
-#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
-#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
-#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
-#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
-#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
-#define GL_INTERNALFORMAT_SUPPORTED 0x826F
-#define GL_INTERNALFORMAT_PREFERRED 0x8270
-#define GL_INTERNALFORMAT_RED_SIZE 0x8271
-#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
-#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
-#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
-#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
-#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
-#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
-#define GL_INTERNALFORMAT_RED_TYPE 0x8278
-#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
-#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
-#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
-#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
-#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
-#define GL_MAX_WIDTH 0x827E
-#define GL_MAX_HEIGHT 0x827F
-#define GL_MAX_DEPTH 0x8280
-#define GL_MAX_LAYERS 0x8281
-#define GL_MAX_COMBINED_DIMENSIONS 0x8282
-#define GL_COLOR_COMPONENTS 0x8283
-#define GL_DEPTH_COMPONENTS 0x8284
-#define GL_STENCIL_COMPONENTS 0x8285
-#define GL_COLOR_RENDERABLE 0x8286
-#define GL_DEPTH_RENDERABLE 0x8287
-#define GL_STENCIL_RENDERABLE 0x8288
-#define GL_FRAMEBUFFER_RENDERABLE 0x8289
-#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
-#define GL_FRAMEBUFFER_BLEND 0x828B
-#define GL_READ_PIXELS 0x828C
-#define GL_READ_PIXELS_FORMAT 0x828D
-#define GL_READ_PIXELS_TYPE 0x828E
-#define GL_TEXTURE_IMAGE_FORMAT 0x828F
-#define GL_TEXTURE_IMAGE_TYPE 0x8290
-#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
-#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
-#define GL_MIPMAP 0x8293
-#define GL_MANUAL_GENERATE_MIPMAP 0x8294
-#define GL_AUTO_GENERATE_MIPMAP 0x8295
-#define GL_COLOR_ENCODING 0x8296
-#define GL_SRGB_READ 0x8297
-#define GL_SRGB_WRITE 0x8298
-#define GL_FILTER 0x829A
-#define GL_VERTEX_TEXTURE 0x829B
-#define GL_TESS_CONTROL_TEXTURE 0x829C
-#define GL_TESS_EVALUATION_TEXTURE 0x829D
-#define GL_GEOMETRY_TEXTURE 0x829E
-#define GL_FRAGMENT_TEXTURE 0x829F
-#define GL_COMPUTE_TEXTURE 0x82A0
-#define GL_TEXTURE_SHADOW 0x82A1
-#define GL_TEXTURE_GATHER 0x82A2
-#define GL_TEXTURE_GATHER_SHADOW 0x82A3
-#define GL_SHADER_IMAGE_LOAD 0x82A4
-#define GL_SHADER_IMAGE_STORE 0x82A5
-#define GL_SHADER_IMAGE_ATOMIC 0x82A6
-#define GL_IMAGE_TEXEL_SIZE 0x82A7
-#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
-#define GL_IMAGE_PIXEL_FORMAT 0x82A9
-#define GL_IMAGE_PIXEL_TYPE 0x82AA
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
-#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
-#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
-#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
-#define GL_CLEAR_BUFFER 0x82B4
-#define GL_TEXTURE_VIEW 0x82B5
-#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
-#define GL_FULL_SUPPORT 0x82B7
-#define GL_CAVEAT_SUPPORT 0x82B8
-#define GL_IMAGE_CLASS_4_X_32 0x82B9
-#define GL_IMAGE_CLASS_2_X_32 0x82BA
-#define GL_IMAGE_CLASS_1_X_32 0x82BB
-#define GL_IMAGE_CLASS_4_X_16 0x82BC
-#define GL_IMAGE_CLASS_2_X_16 0x82BD
-#define GL_IMAGE_CLASS_1_X_16 0x82BE
-#define GL_IMAGE_CLASS_4_X_8 0x82BF
-#define GL_IMAGE_CLASS_2_X_8 0x82C0
-#define GL_IMAGE_CLASS_1_X_8 0x82C1
-#define GL_IMAGE_CLASS_11_11_10 0x82C2
-#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
-#define GL_VIEW_CLASS_128_BITS 0x82C4
-#define GL_VIEW_CLASS_96_BITS 0x82C5
-#define GL_VIEW_CLASS_64_BITS 0x82C6
-#define GL_VIEW_CLASS_48_BITS 0x82C7
-#define GL_VIEW_CLASS_32_BITS 0x82C8
-#define GL_VIEW_CLASS_24_BITS 0x82C9
-#define GL_VIEW_CLASS_16_BITS 0x82CA
-#define GL_VIEW_CLASS_8_BITS 0x82CB
-#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
-#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
-#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
-#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
-#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
-#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
-#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
-#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
-#define GL_UNIFORM 0x92E1
-#define GL_UNIFORM_BLOCK 0x92E2
-#define GL_PROGRAM_INPUT 0x92E3
-#define GL_PROGRAM_OUTPUT 0x92E4
-#define GL_BUFFER_VARIABLE 0x92E5
-#define GL_SHADER_STORAGE_BLOCK 0x92E6
-#define GL_VERTEX_SUBROUTINE 0x92E8
-#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
-#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
-#define GL_GEOMETRY_SUBROUTINE 0x92EB
-#define GL_FRAGMENT_SUBROUTINE 0x92EC
-#define GL_COMPUTE_SUBROUTINE 0x92ED
-#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
-#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
-#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
-#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
-#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
-#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
-#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
-#define GL_ACTIVE_RESOURCES 0x92F5
-#define GL_MAX_NAME_LENGTH 0x92F6
-#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
-#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
-#define GL_NAME_LENGTH 0x92F9
-#define GL_TYPE 0x92FA
-#define GL_ARRAY_SIZE 0x92FB
-#define GL_OFFSET 0x92FC
-#define GL_BLOCK_INDEX 0x92FD
-#define GL_ARRAY_STRIDE 0x92FE
-#define GL_MATRIX_STRIDE 0x92FF
-#define GL_IS_ROW_MAJOR 0x9300
-#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
-#define GL_BUFFER_BINDING 0x9302
-#define GL_BUFFER_DATA_SIZE 0x9303
-#define GL_NUM_ACTIVE_VARIABLES 0x9304
-#define GL_ACTIVE_VARIABLES 0x9305
-#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
-#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
-#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
-#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
-#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
-#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
-#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
-#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
-#define GL_LOCATION 0x930E
-#define GL_LOCATION_INDEX 0x930F
-#define GL_IS_PER_PATCH 0x92E7
-#define GL_SHADER_STORAGE_BUFFER 0x90D2
-#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
-#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
-#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
-#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
-#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
-#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
-#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
-#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
-#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
-#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
-#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
-#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
-#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
-#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
-#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
-#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
-#define GL_TEXTURE_BUFFER_OFFSET 0x919D
-#define GL_TEXTURE_BUFFER_SIZE 0x919E
-#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
-#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
-#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
-#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
-#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
-#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
-#define GL_VERTEX_ATTRIB_BINDING 0x82D4
-#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
-#define GL_VERTEX_BINDING_DIVISOR 0x82D6
-#define GL_VERTEX_BINDING_OFFSET 0x82D7
-#define GL_VERTEX_BINDING_STRIDE 0x82D8
-#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
-#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
-#define GL_VERTEX_BINDING_BUFFER 0x8F4F
-typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
-typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
-GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
-GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
-GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GLAPI void APIENTRY glPopDebugGroup (void);
-GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_VERSION_4_3 */
-
-#ifndef GL_VERSION_4_4
-#define GL_VERSION_4_4 1
-#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
-#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
-#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
-#define GL_MAP_PERSISTENT_BIT 0x0040
-#define GL_MAP_COHERENT_BIT 0x0080
-#define GL_DYNAMIC_STORAGE_BIT 0x0100
-#define GL_CLIENT_STORAGE_BIT 0x0200
-#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
-#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
-#define GL_BUFFER_STORAGE_FLAGS 0x8220
-#define GL_CLEAR_TEXTURE 0x9365
-#define GL_LOCATION_COMPONENT 0x934A
-#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
-#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
-#define GL_QUERY_BUFFER 0x9192
-#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
-#define GL_QUERY_BUFFER_BINDING 0x9193
-#define GL_QUERY_RESULT_NO_WAIT 0x9194
-#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
-typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
-GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#endif
-#endif /* GL_VERSION_4_4 */
-
-#ifndef GL_VERSION_4_5
-#define GL_VERSION_4_5 1
-#define GL_CONTEXT_LOST 0x0507
-#define GL_NEGATIVE_ONE_TO_ONE 0x935E
-#define GL_ZERO_TO_ONE 0x935F
-#define GL_CLIP_ORIGIN 0x935C
-#define GL_CLIP_DEPTH_MODE 0x935D
-#define GL_QUERY_WAIT_INVERTED 0x8E17
-#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
-#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
-#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
-#define GL_MAX_CULL_DISTANCES 0x82F9
-#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
-#define GL_TEXTURE_TARGET 0x1006
-#define GL_QUERY_TARGET 0x82EA
-#define GL_GUILTY_CONTEXT_RESET 0x8253
-#define GL_INNOCENT_CONTEXT_RESET 0x8254
-#define GL_UNKNOWN_CONTEXT_RESET 0x8255
-#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
-#define GL_LOSE_CONTEXT_ON_RESET 0x8252
-#define GL_NO_RESET_NOTIFICATION 0x8261
-#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
-#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
-#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
-typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
-typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
-typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src);
-typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
-typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
-typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
-typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers);
-typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
-typedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
-typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void);
-typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
-typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-typedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth);
-GLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param);
-GLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
-GLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers);
-GLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access);
-GLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer);
-GLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params);
-GLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers);
-GLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param);
-GLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf);
-GLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src);
-GLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
-GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
-GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
-GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
-GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target);
-GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures);
-GLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param);
-GLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture);
-GLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture);
-GLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-GLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
-GLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params);
-GLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays);
-GLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer);
-GLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-GLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
-GLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers);
-GLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines);
-GLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-GLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-GLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-GLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
-GLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers);
-GLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-GLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
-GLAPI GLenum APIENTRY glGetGraphicsResetStatus (void);
-GLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
-GLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
-GLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-GLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-GLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-GLAPI void APIENTRY glTextureBarrier (void);
-#endif
-#endif /* GL_VERSION_4_5 */
-
-#ifndef GL_VERSION_4_6
-#define GL_VERSION_4_6 1
-#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
-#define GL_SPIR_V_BINARY 0x9552
-#define GL_PARAMETER_BUFFER 0x80EE
-#define GL_PARAMETER_BUFFER_BINDING 0x80EF
-#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
-#define GL_VERTICES_SUBMITTED 0x82EE
-#define GL_PRIMITIVES_SUBMITTED 0x82EF
-#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
-#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
-#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
-#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
-#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
-#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
-#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
-#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
-#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
-#define GL_SPIR_V_EXTENSIONS 0x9553
-#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
-#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
-#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
-#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
-typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
-GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp);
-#endif
-#endif /* GL_VERSION_4_6 */
-
-#ifndef GL_ARB_ES2_compatibility
-#define GL_ARB_ES2_compatibility 1
-#endif /* GL_ARB_ES2_compatibility */
-
-#ifndef GL_ARB_ES3_1_compatibility
-#define GL_ARB_ES3_1_compatibility 1
-#endif /* GL_ARB_ES3_1_compatibility */
-
-#ifndef GL_ARB_ES3_2_compatibility
-#define GL_ARB_ES3_2_compatibility 1
-#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
-#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
-#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
-typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
-#endif
-#endif /* GL_ARB_ES3_2_compatibility */
-
-#ifndef GL_ARB_ES3_compatibility
-#define GL_ARB_ES3_compatibility 1
-#endif /* GL_ARB_ES3_compatibility */
-
-#ifndef GL_ARB_arrays_of_arrays
-#define GL_ARB_arrays_of_arrays 1
-#endif /* GL_ARB_arrays_of_arrays */
-
-#ifndef GL_ARB_base_instance
-#define GL_ARB_base_instance 1
-#endif /* GL_ARB_base_instance */
-
-#ifndef GL_ARB_bindless_texture
-#define GL_ARB_bindless_texture 1
-typedef uint64_t GLuint64EXT;
-#define GL_UNSIGNED_INT64_ARB 0x140F
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_ARB_bindless_texture */
-
-#ifndef GL_ARB_blend_func_extended
-#define GL_ARB_blend_func_extended 1
-#endif /* GL_ARB_blend_func_extended */
-
-#ifndef GL_ARB_buffer_storage
-#define GL_ARB_buffer_storage 1
-#endif /* GL_ARB_buffer_storage */
-
-#ifndef GL_ARB_cl_event
-#define GL_ARB_cl_event 1
-struct _cl_context;
-struct _cl_event;
-#define GL_SYNC_CL_EVENT_ARB 0x8240
-#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
-typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#endif
-#endif /* GL_ARB_cl_event */
-
-#ifndef GL_ARB_clear_buffer_object
-#define GL_ARB_clear_buffer_object 1
-#endif /* GL_ARB_clear_buffer_object */
-
-#ifndef GL_ARB_clear_texture
-#define GL_ARB_clear_texture 1
-#endif /* GL_ARB_clear_texture */
-
-#ifndef GL_ARB_clip_control
-#define GL_ARB_clip_control 1
-#endif /* GL_ARB_clip_control */
-
-#ifndef GL_ARB_compressed_texture_pixel_storage
-#define GL_ARB_compressed_texture_pixel_storage 1
-#endif /* GL_ARB_compressed_texture_pixel_storage */
-
-#ifndef GL_ARB_compute_shader
-#define GL_ARB_compute_shader 1
-#endif /* GL_ARB_compute_shader */
-
-#ifndef GL_ARB_compute_variable_group_size
-#define GL_ARB_compute_variable_group_size 1
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
-#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
-#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#endif
-#endif /* GL_ARB_compute_variable_group_size */
-
-#ifndef GL_ARB_conditional_render_inverted
-#define GL_ARB_conditional_render_inverted 1
-#endif /* GL_ARB_conditional_render_inverted */
-
-#ifndef GL_ARB_conservative_depth
-#define GL_ARB_conservative_depth 1
-#endif /* GL_ARB_conservative_depth */
-
-#ifndef GL_ARB_copy_buffer
-#define GL_ARB_copy_buffer 1
-#endif /* GL_ARB_copy_buffer */
-
-#ifndef GL_ARB_copy_image
-#define GL_ARB_copy_image 1
-#endif /* GL_ARB_copy_image */
-
-#ifndef GL_ARB_cull_distance
-#define GL_ARB_cull_distance 1
-#endif /* GL_ARB_cull_distance */
-
-#ifndef GL_ARB_debug_output
-#define GL_ARB_debug_output 1
-typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
-#define GL_DEBUG_SOURCE_API_ARB 0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
-#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
-#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
-#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
-#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
-#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#endif
-#endif /* GL_ARB_debug_output */
-
-#ifndef GL_ARB_depth_buffer_float
-#define GL_ARB_depth_buffer_float 1
-#endif /* GL_ARB_depth_buffer_float */
-
-#ifndef GL_ARB_depth_clamp
-#define GL_ARB_depth_clamp 1
-#endif /* GL_ARB_depth_clamp */
-
-#ifndef GL_ARB_derivative_control
-#define GL_ARB_derivative_control 1
-#endif /* GL_ARB_derivative_control */
-
-#ifndef GL_ARB_direct_state_access
-#define GL_ARB_direct_state_access 1
-#endif /* GL_ARB_direct_state_access */
-
-#ifndef GL_ARB_draw_buffers_blend
-#define GL_ARB_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-#endif /* GL_ARB_draw_buffers_blend */
-
-#ifndef GL_ARB_draw_elements_base_vertex
-#define GL_ARB_draw_elements_base_vertex 1
-#endif /* GL_ARB_draw_elements_base_vertex */
-
-#ifndef GL_ARB_draw_indirect
-#define GL_ARB_draw_indirect 1
-#endif /* GL_ARB_draw_indirect */
-
-#ifndef GL_ARB_draw_instanced
-#define GL_ARB_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_ARB_draw_instanced */
-
-#ifndef GL_ARB_enhanced_layouts
-#define GL_ARB_enhanced_layouts 1
-#endif /* GL_ARB_enhanced_layouts */
-
-#ifndef GL_ARB_explicit_attrib_location
-#define GL_ARB_explicit_attrib_location 1
-#endif /* GL_ARB_explicit_attrib_location */
-
-#ifndef GL_ARB_explicit_uniform_location
-#define GL_ARB_explicit_uniform_location 1
-#endif /* GL_ARB_explicit_uniform_location */
-
-#ifndef GL_ARB_fragment_coord_conventions
-#define GL_ARB_fragment_coord_conventions 1
-#endif /* GL_ARB_fragment_coord_conventions */
-
-#ifndef GL_ARB_fragment_layer_viewport
-#define GL_ARB_fragment_layer_viewport 1
-#endif /* GL_ARB_fragment_layer_viewport */
-
-#ifndef GL_ARB_fragment_shader_interlock
-#define GL_ARB_fragment_shader_interlock 1
-#endif /* GL_ARB_fragment_shader_interlock */
-
-#ifndef GL_ARB_framebuffer_no_attachments
-#define GL_ARB_framebuffer_no_attachments 1
-#endif /* GL_ARB_framebuffer_no_attachments */
-
-#ifndef GL_ARB_framebuffer_object
-#define GL_ARB_framebuffer_object 1
-#endif /* GL_ARB_framebuffer_object */
-
-#ifndef GL_ARB_framebuffer_sRGB
-#define GL_ARB_framebuffer_sRGB 1
-#endif /* GL_ARB_framebuffer_sRGB */
-
-#ifndef GL_ARB_geometry_shader4
-#define GL_ARB_geometry_shader4 1
-#define GL_LINES_ADJACENCY_ARB 0x000A
-#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
-#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
-#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
-#define GL_GEOMETRY_SHADER_ARB 0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_ARB_geometry_shader4 */
-
-#ifndef GL_ARB_get_program_binary
-#define GL_ARB_get_program_binary 1
-#endif /* GL_ARB_get_program_binary */
-
-#ifndef GL_ARB_get_texture_sub_image
-#define GL_ARB_get_texture_sub_image 1
-#endif /* GL_ARB_get_texture_sub_image */
-
-#ifndef GL_ARB_gl_spirv
-#define GL_ARB_gl_spirv 1
-#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
-#define GL_SPIR_V_BINARY_ARB 0x9552
-typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
-#endif
-#endif /* GL_ARB_gl_spirv */
-
-#ifndef GL_ARB_gpu_shader5
-#define GL_ARB_gpu_shader5 1
-#endif /* GL_ARB_gpu_shader5 */
-
-#ifndef GL_ARB_gpu_shader_fp64
-#define GL_ARB_gpu_shader_fp64 1
-#endif /* GL_ARB_gpu_shader_fp64 */
-
-#ifndef GL_ARB_gpu_shader_int64
-#define GL_ARB_gpu_shader_int64 1
-#define GL_INT64_ARB 0x140E
-#define GL_INT64_VEC2_ARB 0x8FE9
-#define GL_INT64_VEC3_ARB 0x8FEA
-#define GL_INT64_VEC4_ARB 0x8FEB
-#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
-#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
-#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
-typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);
-typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);
-typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);
-typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
-typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x);
-GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y);
-GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z);
-GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
-GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x);
-GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y);
-GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
-GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
-GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params);
-GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params);
-GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
-GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
-GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x);
-GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y);
-GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
-GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
-GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
-GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x);
-GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y);
-GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
-GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
-GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
-#endif
-#endif /* GL_ARB_gpu_shader_int64 */
-
-#ifndef GL_ARB_half_float_vertex
-#define GL_ARB_half_float_vertex 1
-#endif /* GL_ARB_half_float_vertex */
-
-#ifndef GL_ARB_imaging
-#define GL_ARB_imaging 1
-#endif /* GL_ARB_imaging */
-
-#ifndef GL_ARB_indirect_parameters
-#define GL_ARB_indirect_parameters 1
-#define GL_PARAMETER_BUFFER_ARB 0x80EE
-#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#endif
-#endif /* GL_ARB_indirect_parameters */
-
-#ifndef GL_ARB_instanced_arrays
-#define GL_ARB_instanced_arrays 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
-#endif
-#endif /* GL_ARB_instanced_arrays */
-
-#ifndef GL_ARB_internalformat_query
-#define GL_ARB_internalformat_query 1
-#endif /* GL_ARB_internalformat_query */
-
-#ifndef GL_ARB_internalformat_query2
-#define GL_ARB_internalformat_query2 1
-#define GL_SRGB_DECODE_ARB 0x8299
-#endif /* GL_ARB_internalformat_query2 */
-
-#ifndef GL_ARB_invalidate_subdata
-#define GL_ARB_invalidate_subdata 1
-#endif /* GL_ARB_invalidate_subdata */
-
-#ifndef GL_ARB_map_buffer_alignment
-#define GL_ARB_map_buffer_alignment 1
-#endif /* GL_ARB_map_buffer_alignment */
-
-#ifndef GL_ARB_map_buffer_range
-#define GL_ARB_map_buffer_range 1
-#endif /* GL_ARB_map_buffer_range */
-
-#ifndef GL_ARB_multi_bind
-#define GL_ARB_multi_bind 1
-#endif /* GL_ARB_multi_bind */
-
-#ifndef GL_ARB_multi_draw_indirect
-#define GL_ARB_multi_draw_indirect 1
-#endif /* GL_ARB_multi_draw_indirect */
-
-#ifndef GL_ARB_occlusion_query2
-#define GL_ARB_occlusion_query2 1
-#endif /* GL_ARB_occlusion_query2 */
-
-#ifndef GL_ARB_parallel_shader_compile
-#define GL_ARB_parallel_shader_compile 1
-#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
-#define GL_COMPLETION_STATUS_ARB 0x91B1
-typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count);
-#endif
-#endif /* GL_ARB_parallel_shader_compile */
-
-#ifndef GL_ARB_pipeline_statistics_query
-#define GL_ARB_pipeline_statistics_query 1
-#define GL_VERTICES_SUBMITTED_ARB 0x82EE
-#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
-#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
-#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
-#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
-#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
-#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
-#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
-#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
-#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
-#endif /* GL_ARB_pipeline_statistics_query */
-
-#ifndef GL_ARB_pixel_buffer_object
-#define GL_ARB_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
-#endif /* GL_ARB_pixel_buffer_object */
-
-#ifndef GL_ARB_polygon_offset_clamp
-#define GL_ARB_polygon_offset_clamp 1
-#endif /* GL_ARB_polygon_offset_clamp */
-
-#ifndef GL_ARB_post_depth_coverage
-#define GL_ARB_post_depth_coverage 1
-#endif /* GL_ARB_post_depth_coverage */
-
-#ifndef GL_ARB_program_interface_query
-#define GL_ARB_program_interface_query 1
-#endif /* GL_ARB_program_interface_query */
-
-#ifndef GL_ARB_provoking_vertex
-#define GL_ARB_provoking_vertex 1
-#endif /* GL_ARB_provoking_vertex */
-
-#ifndef GL_ARB_query_buffer_object
-#define GL_ARB_query_buffer_object 1
-#endif /* GL_ARB_query_buffer_object */
-
-#ifndef GL_ARB_robust_buffer_access_behavior
-#define GL_ARB_robust_buffer_access_behavior 1
-#endif /* GL_ARB_robust_buffer_access_behavior */
-
-#ifndef GL_ARB_robustness
-#define GL_ARB_robustness 1
-#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
-#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
-#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
-#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
-#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
-#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
-typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
-typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
-GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-#endif
-#endif /* GL_ARB_robustness */
-
-#ifndef GL_ARB_robustness_isolation
-#define GL_ARB_robustness_isolation 1
-#endif /* GL_ARB_robustness_isolation */
-
-#ifndef GL_ARB_sample_locations
-#define GL_ARB_sample_locations 1
-#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
-#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
-#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
-#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
-#define GL_SAMPLE_LOCATION_ARB 0x8E50
-#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
-#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
-#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
-typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glEvaluateDepthValuesARB (void);
-#endif
-#endif /* GL_ARB_sample_locations */
-
-#ifndef GL_ARB_sample_shading
-#define GL_ARB_sample_shading 1
-#define GL_SAMPLE_SHADING_ARB 0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
-#endif
-#endif /* GL_ARB_sample_shading */
-
-#ifndef GL_ARB_sampler_objects
-#define GL_ARB_sampler_objects 1
-#endif /* GL_ARB_sampler_objects */
-
-#ifndef GL_ARB_seamless_cube_map
-#define GL_ARB_seamless_cube_map 1
-#endif /* GL_ARB_seamless_cube_map */
-
-#ifndef GL_ARB_seamless_cubemap_per_texture
-#define GL_ARB_seamless_cubemap_per_texture 1
-#endif /* GL_ARB_seamless_cubemap_per_texture */
-
-#ifndef GL_ARB_separate_shader_objects
-#define GL_ARB_separate_shader_objects 1
-#endif /* GL_ARB_separate_shader_objects */
-
-#ifndef GL_ARB_shader_atomic_counter_ops
-#define GL_ARB_shader_atomic_counter_ops 1
-#endif /* GL_ARB_shader_atomic_counter_ops */
-
-#ifndef GL_ARB_shader_atomic_counters
-#define GL_ARB_shader_atomic_counters 1
-#endif /* GL_ARB_shader_atomic_counters */
-
-#ifndef GL_ARB_shader_ballot
-#define GL_ARB_shader_ballot 1
-#endif /* GL_ARB_shader_ballot */
-
-#ifndef GL_ARB_shader_bit_encoding
-#define GL_ARB_shader_bit_encoding 1
-#endif /* GL_ARB_shader_bit_encoding */
-
-#ifndef GL_ARB_shader_clock
-#define GL_ARB_shader_clock 1
-#endif /* GL_ARB_shader_clock */
-
-#ifndef GL_ARB_shader_draw_parameters
-#define GL_ARB_shader_draw_parameters 1
-#endif /* GL_ARB_shader_draw_parameters */
-
-#ifndef GL_ARB_shader_group_vote
-#define GL_ARB_shader_group_vote 1
-#endif /* GL_ARB_shader_group_vote */
-
-#ifndef GL_ARB_shader_image_load_store
-#define GL_ARB_shader_image_load_store 1
-#endif /* GL_ARB_shader_image_load_store */
-
-#ifndef GL_ARB_shader_image_size
-#define GL_ARB_shader_image_size 1
-#endif /* GL_ARB_shader_image_size */
-
-#ifndef GL_ARB_shader_precision
-#define GL_ARB_shader_precision 1
-#endif /* GL_ARB_shader_precision */
-
-#ifndef GL_ARB_shader_stencil_export
-#define GL_ARB_shader_stencil_export 1
-#endif /* GL_ARB_shader_stencil_export */
-
-#ifndef GL_ARB_shader_storage_buffer_object
-#define GL_ARB_shader_storage_buffer_object 1
-#endif /* GL_ARB_shader_storage_buffer_object */
-
-#ifndef GL_ARB_shader_subroutine
-#define GL_ARB_shader_subroutine 1
-#endif /* GL_ARB_shader_subroutine */
-
-#ifndef GL_ARB_shader_texture_image_samples
-#define GL_ARB_shader_texture_image_samples 1
-#endif /* GL_ARB_shader_texture_image_samples */
-
-#ifndef GL_ARB_shader_viewport_layer_array
-#define GL_ARB_shader_viewport_layer_array 1
-#endif /* GL_ARB_shader_viewport_layer_array */
-
-#ifndef GL_ARB_shading_language_420pack
-#define GL_ARB_shading_language_420pack 1
-#endif /* GL_ARB_shading_language_420pack */
-
-#ifndef GL_ARB_shading_language_include
-#define GL_ARB_shading_language_include 1
-#define GL_SHADER_INCLUDE_ARB 0x8DAE
-#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
-#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
-typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ARB_shading_language_include */
-
-#ifndef GL_ARB_shading_language_packing
-#define GL_ARB_shading_language_packing 1
-#endif /* GL_ARB_shading_language_packing */
-
-#ifndef GL_ARB_sparse_buffer
-#define GL_ARB_sparse_buffer 1
-#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
-#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
-typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
-GLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
-GLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
-#endif
-#endif /* GL_ARB_sparse_buffer */
-
-#ifndef GL_ARB_sparse_texture
-#define GL_ARB_sparse_texture 1
-#define GL_TEXTURE_SPARSE_ARB 0x91A6
-#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
-#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
-#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
-#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
-#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
-typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
-#endif
-#endif /* GL_ARB_sparse_texture */
-
-#ifndef GL_ARB_sparse_texture2
-#define GL_ARB_sparse_texture2 1
-#endif /* GL_ARB_sparse_texture2 */
-
-#ifndef GL_ARB_sparse_texture_clamp
-#define GL_ARB_sparse_texture_clamp 1
-#endif /* GL_ARB_sparse_texture_clamp */
-
-#ifndef GL_ARB_spirv_extensions
-#define GL_ARB_spirv_extensions 1
-#endif /* GL_ARB_spirv_extensions */
-
-#ifndef GL_ARB_stencil_texturing
-#define GL_ARB_stencil_texturing 1
-#endif /* GL_ARB_stencil_texturing */
-
-#ifndef GL_ARB_sync
-#define GL_ARB_sync 1
-#endif /* GL_ARB_sync */
-
-#ifndef GL_ARB_tessellation_shader
-#define GL_ARB_tessellation_shader 1
-#endif /* GL_ARB_tessellation_shader */
-
-#ifndef GL_ARB_texture_barrier
-#define GL_ARB_texture_barrier 1
-#endif /* GL_ARB_texture_barrier */
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_ARB_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_ARB 0x812D
-#endif /* GL_ARB_texture_border_clamp */
-
-#ifndef GL_ARB_texture_buffer_object
-#define GL_ARB_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_ARB 0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_ARB_texture_buffer_object */
-
-#ifndef GL_ARB_texture_buffer_object_rgb32
-#define GL_ARB_texture_buffer_object_rgb32 1
-#endif /* GL_ARB_texture_buffer_object_rgb32 */
-
-#ifndef GL_ARB_texture_buffer_range
-#define GL_ARB_texture_buffer_range 1
-#endif /* GL_ARB_texture_buffer_range */
-
-#ifndef GL_ARB_texture_compression_bptc
-#define GL_ARB_texture_compression_bptc 1
-#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
-#endif /* GL_ARB_texture_compression_bptc */
-
-#ifndef GL_ARB_texture_compression_rgtc
-#define GL_ARB_texture_compression_rgtc 1
-#endif /* GL_ARB_texture_compression_rgtc */
-
-#ifndef GL_ARB_texture_cube_map_array
-#define GL_ARB_texture_cube_map_array 1
-#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
-#endif /* GL_ARB_texture_cube_map_array */
-
-#ifndef GL_ARB_texture_filter_anisotropic
-#define GL_ARB_texture_filter_anisotropic 1
-#endif /* GL_ARB_texture_filter_anisotropic */
-
-#ifndef GL_ARB_texture_filter_minmax
-#define GL_ARB_texture_filter_minmax 1
-#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
-#define GL_WEIGHTED_AVERAGE_ARB 0x9367
-#endif /* GL_ARB_texture_filter_minmax */
-
-#ifndef GL_ARB_texture_gather
-#define GL_ARB_texture_gather 1
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
-#endif /* GL_ARB_texture_gather */
-
-#ifndef GL_ARB_texture_mirror_clamp_to_edge
-#define GL_ARB_texture_mirror_clamp_to_edge 1
-#endif /* GL_ARB_texture_mirror_clamp_to_edge */
-
-#ifndef GL_ARB_texture_mirrored_repeat
-#define GL_ARB_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_ARB 0x8370
-#endif /* GL_ARB_texture_mirrored_repeat */
-
-#ifndef GL_ARB_texture_multisample
-#define GL_ARB_texture_multisample 1
-#endif /* GL_ARB_texture_multisample */
-
-#ifndef GL_ARB_texture_non_power_of_two
-#define GL_ARB_texture_non_power_of_two 1
-#endif /* GL_ARB_texture_non_power_of_two */
-
-#ifndef GL_ARB_texture_query_levels
-#define GL_ARB_texture_query_levels 1
-#endif /* GL_ARB_texture_query_levels */
-
-#ifndef GL_ARB_texture_query_lod
-#define GL_ARB_texture_query_lod 1
-#endif /* GL_ARB_texture_query_lod */
-
-#ifndef GL_ARB_texture_rg
-#define GL_ARB_texture_rg 1
-#endif /* GL_ARB_texture_rg */
-
-#ifndef GL_ARB_texture_rgb10_a2ui
-#define GL_ARB_texture_rgb10_a2ui 1
-#endif /* GL_ARB_texture_rgb10_a2ui */
-
-#ifndef GL_ARB_texture_stencil8
-#define GL_ARB_texture_stencil8 1
-#endif /* GL_ARB_texture_stencil8 */
-
-#ifndef GL_ARB_texture_storage
-#define GL_ARB_texture_storage 1
-#endif /* GL_ARB_texture_storage */
-
-#ifndef GL_ARB_texture_storage_multisample
-#define GL_ARB_texture_storage_multisample 1
-#endif /* GL_ARB_texture_storage_multisample */
-
-#ifndef GL_ARB_texture_swizzle
-#define GL_ARB_texture_swizzle 1
-#endif /* GL_ARB_texture_swizzle */
-
-#ifndef GL_ARB_texture_view
-#define GL_ARB_texture_view 1
-#endif /* GL_ARB_texture_view */
-
-#ifndef GL_ARB_timer_query
-#define GL_ARB_timer_query 1
-#endif /* GL_ARB_timer_query */
-
-#ifndef GL_ARB_transform_feedback2
-#define GL_ARB_transform_feedback2 1
-#endif /* GL_ARB_transform_feedback2 */
-
-#ifndef GL_ARB_transform_feedback3
-#define GL_ARB_transform_feedback3 1
-#endif /* GL_ARB_transform_feedback3 */
-
-#ifndef GL_ARB_transform_feedback_instanced
-#define GL_ARB_transform_feedback_instanced 1
-#endif /* GL_ARB_transform_feedback_instanced */
-
-#ifndef GL_ARB_transform_feedback_overflow_query
-#define GL_ARB_transform_feedback_overflow_query 1
-#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
-#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
-#endif /* GL_ARB_transform_feedback_overflow_query */
-
-#ifndef GL_ARB_uniform_buffer_object
-#define GL_ARB_uniform_buffer_object 1
-#endif /* GL_ARB_uniform_buffer_object */
-
-#ifndef GL_ARB_vertex_array_bgra
-#define GL_ARB_vertex_array_bgra 1
-#endif /* GL_ARB_vertex_array_bgra */
-
-#ifndef GL_ARB_vertex_array_object
-#define GL_ARB_vertex_array_object 1
-#endif /* GL_ARB_vertex_array_object */
-
-#ifndef GL_ARB_vertex_attrib_64bit
-#define GL_ARB_vertex_attrib_64bit 1
-#endif /* GL_ARB_vertex_attrib_64bit */
-
-#ifndef GL_ARB_vertex_attrib_binding
-#define GL_ARB_vertex_attrib_binding 1
-#endif /* GL_ARB_vertex_attrib_binding */
-
-#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
-#define GL_ARB_vertex_type_10f_11f_11f_rev 1
-#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
-
-#ifndef GL_ARB_vertex_type_2_10_10_10_rev
-#define GL_ARB_vertex_type_2_10_10_10_rev 1
-#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
-
-#ifndef GL_ARB_viewport_array
-#define GL_ARB_viewport_array 1
-#endif /* GL_ARB_viewport_array */
-
-#ifndef GL_KHR_blend_equation_advanced
-#define GL_KHR_blend_equation_advanced 1
-#define GL_MULTIPLY_KHR 0x9294
-#define GL_SCREEN_KHR 0x9295
-#define GL_OVERLAY_KHR 0x9296
-#define GL_DARKEN_KHR 0x9297
-#define GL_LIGHTEN_KHR 0x9298
-#define GL_COLORDODGE_KHR 0x9299
-#define GL_COLORBURN_KHR 0x929A
-#define GL_HARDLIGHT_KHR 0x929B
-#define GL_SOFTLIGHT_KHR 0x929C
-#define GL_DIFFERENCE_KHR 0x929E
-#define GL_EXCLUSION_KHR 0x92A0
-#define GL_HSL_HUE_KHR 0x92AD
-#define GL_HSL_SATURATION_KHR 0x92AE
-#define GL_HSL_COLOR_KHR 0x92AF
-#define GL_HSL_LUMINOSITY_KHR 0x92B0
-typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendBarrierKHR (void);
-#endif
-#endif /* GL_KHR_blend_equation_advanced */
-
-#ifndef GL_KHR_blend_equation_advanced_coherent
-#define GL_KHR_blend_equation_advanced_coherent 1
-#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
-#endif /* GL_KHR_blend_equation_advanced_coherent */
-
-#ifndef GL_KHR_context_flush_control
-#define GL_KHR_context_flush_control 1
-#endif /* GL_KHR_context_flush_control */
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#endif /* GL_KHR_debug */
-
-#ifndef GL_KHR_no_error
-#define GL_KHR_no_error 1
-#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
-#endif /* GL_KHR_no_error */
-
-#ifndef GL_KHR_parallel_shader_compile
-#define GL_KHR_parallel_shader_compile 1
-#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
-#define GL_COMPLETION_STATUS_KHR 0x91B1
-typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);
-#endif
-#endif /* GL_KHR_parallel_shader_compile */
-
-#ifndef GL_KHR_robust_buffer_access_behavior
-#define GL_KHR_robust_buffer_access_behavior 1
-#endif /* GL_KHR_robust_buffer_access_behavior */
-
-#ifndef GL_KHR_robustness
-#define GL_KHR_robustness 1
-#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
-#endif /* GL_KHR_robustness */
-
-#ifndef GL_KHR_texture_compression_astc_hdr
-#define GL_KHR_texture_compression_astc_hdr 1
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
-#endif /* GL_KHR_texture_compression_astc_hdr */
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif /* GL_KHR_texture_compression_astc_ldr */
-
-#ifndef GL_KHR_texture_compression_astc_sliced_3d
-#define GL_KHR_texture_compression_astc_sliced_3d 1
-#endif /* GL_KHR_texture_compression_astc_sliced_3d */
-
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#define GL_COUNTER_TYPE_AMD 0x8BC0
-#define GL_COUNTER_RANGE_AMD 0x8BC1
-#define GL_UNSIGNED_INT64_AMD 0x8BC2
-#define GL_PERCENTAGE_AMD 0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
-#define GL_PERFMON_RESULT_AMD 0x8BC6
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
-typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-#endif /* GL_AMD_performance_monitor */
-
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#define GL_RGB_422_APPLE 0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
-#define GL_RGB_RAW_422_APPLE 0x8A51
-#endif /* GL_APPLE_rgb_422 */
-
-#ifndef GL_EXT_EGL_image_storage
-#define GL_EXT_EGL_image_storage 1
-typedef void *GLeglImageOES;
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);
-GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
-#endif
-#endif /* GL_EXT_EGL_image_storage */
-
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
-#define GL_PROGRAM_OBJECT_EXT 0x8B40
-#define GL_SHADER_OBJECT_EXT 0x8B48
-#define GL_BUFFER_OBJECT_EXT 0x9151
-#define GL_QUERY_OBJECT_EXT 0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
-typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_EXT_debug_label */
-
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPopGroupMarkerEXT (void);
-#endif
-#endif /* GL_EXT_debug_marker */
-
-#ifndef GL_EXT_direct_state_access
-#define GL_EXT_direct_state_access 1
-#define GL_PROGRAM_MATRIX_EXT 0x8E2D
-#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
-#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
-typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
-typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
-typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
-typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
-GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
-GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
-GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
-GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
-#endif
-#endif /* GL_EXT_direct_state_access */
-
-#ifndef GL_EXT_draw_instanced
-#define GL_EXT_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_draw_instanced */
-
-#ifndef GL_EXT_polygon_offset_clamp
-#define GL_EXT_polygon_offset_clamp 1
-#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
-#endif
-#endif /* GL_EXT_polygon_offset_clamp */
-
-#ifndef GL_EXT_post_depth_coverage
-#define GL_EXT_post_depth_coverage 1
-#endif /* GL_EXT_post_depth_coverage */
-
-#ifndef GL_EXT_raster_multisample
-#define GL_EXT_raster_multisample 1
-#define GL_RASTER_MULTISAMPLE_EXT 0x9327
-#define GL_RASTER_SAMPLES_EXT 0x9328
-#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
-#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
-#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
-#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
-typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);
-#endif
-#endif /* GL_EXT_raster_multisample */
-
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
-typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
-#endif
-#endif /* GL_EXT_separate_shader_objects */
-
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_EXT_shader_framebuffer_fetch 1
-#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
-#endif /* GL_EXT_shader_framebuffer_fetch */
-
-#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
-#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
-typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void);
-#endif
-#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
-
-#ifndef GL_EXT_shader_integer_mix
-#define GL_EXT_shader_integer_mix 1
-#endif /* GL_EXT_shader_integer_mix */
-
-#ifndef GL_EXT_texture_compression_s3tc
-#define GL_EXT_texture_compression_s3tc 1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
-#endif /* GL_EXT_texture_compression_s3tc */
-
-#ifndef GL_EXT_texture_filter_minmax
-#define GL_EXT_texture_filter_minmax 1
-#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
-#define GL_WEIGHTED_AVERAGE_EXT 0x9367
-#endif /* GL_EXT_texture_filter_minmax */
-
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
-#define GL_DECODE_EXT 0x8A49
-#define GL_SKIP_DECODE_EXT 0x8A4A
-#endif /* GL_EXT_texture_sRGB_decode */
-
-#ifndef GL_EXT_window_rectangles
-#define GL_EXT_window_rectangles 1
-#define GL_INCLUSIVE_EXT 0x8F10
-#define GL_EXCLUSIVE_EXT 0x8F11
-#define GL_WINDOW_RECTANGLE_EXT 0x8F12
-#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
-#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
-#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
-typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
-#endif
-#endif /* GL_EXT_window_rectangles */
-
-#ifndef GL_INTEL_blackhole_render
-#define GL_INTEL_blackhole_render 1
-#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
-#endif /* GL_INTEL_blackhole_render */
-
-#ifndef GL_INTEL_conservative_rasterization
-#define GL_INTEL_conservative_rasterization 1
-#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
-#endif /* GL_INTEL_conservative_rasterization */
-
-#ifndef GL_INTEL_framebuffer_CMAA
-#define GL_INTEL_framebuffer_CMAA 1
-typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);
-#endif
-#endif /* GL_INTEL_framebuffer_CMAA */
-
-#ifndef GL_INTEL_performance_query
-#define GL_INTEL_performance_query 1
-#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
-#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
-#define GL_PERFQUERY_WAIT_INTEL 0x83FB
-#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
-#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
-#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
-#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
-#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
-#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
-#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
-#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
-#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
-#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
-#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
-#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
-#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
-#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
-#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
-#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
-#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
-typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
-typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
-typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
-typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
-GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
-GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
-GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
-GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
-GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#endif
-#endif /* GL_INTEL_performance_query */
-
-#ifndef GL_NV_bindless_multi_draw_indirect
-#define GL_NV_bindless_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#endif
-#endif /* GL_NV_bindless_multi_draw_indirect */
-
-#ifndef GL_NV_bindless_multi_draw_indirect_count
-#define GL_NV_bindless_multi_draw_indirect_count 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
-GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
-#endif
-#endif /* GL_NV_bindless_multi_draw_indirect_count */
-
-#ifndef GL_NV_bindless_texture
-#define GL_NV_bindless_texture 1
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
-#endif
-#endif /* GL_NV_bindless_texture */
-
-#ifndef GL_NV_blend_equation_advanced
-#define GL_NV_blend_equation_advanced 1
-#define GL_BLEND_OVERLAP_NV 0x9281
-#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
-#define GL_BLUE_NV 0x1905
-#define GL_COLORBURN_NV 0x929A
-#define GL_COLORDODGE_NV 0x9299
-#define GL_CONJOINT_NV 0x9284
-#define GL_CONTRAST_NV 0x92A1
-#define GL_DARKEN_NV 0x9297
-#define GL_DIFFERENCE_NV 0x929E
-#define GL_DISJOINT_NV 0x9283
-#define GL_DST_ATOP_NV 0x928F
-#define GL_DST_IN_NV 0x928B
-#define GL_DST_NV 0x9287
-#define GL_DST_OUT_NV 0x928D
-#define GL_DST_OVER_NV 0x9289
-#define GL_EXCLUSION_NV 0x92A0
-#define GL_GREEN_NV 0x1904
-#define GL_HARDLIGHT_NV 0x929B
-#define GL_HARDMIX_NV 0x92A9
-#define GL_HSL_COLOR_NV 0x92AF
-#define GL_HSL_HUE_NV 0x92AD
-#define GL_HSL_LUMINOSITY_NV 0x92B0
-#define GL_HSL_SATURATION_NV 0x92AE
-#define GL_INVERT_OVG_NV 0x92B4
-#define GL_INVERT_RGB_NV 0x92A3
-#define GL_LIGHTEN_NV 0x9298
-#define GL_LINEARBURN_NV 0x92A5
-#define GL_LINEARDODGE_NV 0x92A4
-#define GL_LINEARLIGHT_NV 0x92A7
-#define GL_MINUS_CLAMPED_NV 0x92B3
-#define GL_MINUS_NV 0x929F
-#define GL_MULTIPLY_NV 0x9294
-#define GL_OVERLAY_NV 0x9296
-#define GL_PINLIGHT_NV 0x92A8
-#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
-#define GL_PLUS_CLAMPED_NV 0x92B1
-#define GL_PLUS_DARKER_NV 0x9292
-#define GL_PLUS_NV 0x9291
-#define GL_RED_NV 0x1903
-#define GL_SCREEN_NV 0x9295
-#define GL_SOFTLIGHT_NV 0x929C
-#define GL_SRC_ATOP_NV 0x928E
-#define GL_SRC_IN_NV 0x928A
-#define GL_SRC_NV 0x9286
-#define GL_SRC_OUT_NV 0x928C
-#define GL_SRC_OVER_NV 0x9288
-#define GL_UNCORRELATED_NV 0x9282
-#define GL_VIVIDLIGHT_NV 0x92A6
-#define GL_XOR_NV 0x1506
-typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
-GLAPI void APIENTRY glBlendBarrierNV (void);
-#endif
-#endif /* GL_NV_blend_equation_advanced */
-
-#ifndef GL_NV_blend_equation_advanced_coherent
-#define GL_NV_blend_equation_advanced_coherent 1
-#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
-#endif /* GL_NV_blend_equation_advanced_coherent */
-
-#ifndef GL_NV_blend_minmax_factor
-#define GL_NV_blend_minmax_factor 1
-#define GL_FACTOR_MIN_AMD 0x901C
-#define GL_FACTOR_MAX_AMD 0x901D
-#endif /* GL_NV_blend_minmax_factor */
-
-#ifndef GL_NV_clip_space_w_scaling
-#define GL_NV_clip_space_w_scaling 1
-#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
-#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
-#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
-typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
-#endif
-#endif /* GL_NV_clip_space_w_scaling */
-
-#ifndef GL_NV_command_list
-#define GL_NV_command_list 1
-#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
-#define GL_NOP_COMMAND_NV 0x0001
-#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
-#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
-#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
-#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
-#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
-#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
-#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
-#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
-#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A
-#define GL_BLEND_COLOR_COMMAND_NV 0x000B
-#define GL_STENCIL_REF_COMMAND_NV 0x000C
-#define GL_LINE_WIDTH_COMMAND_NV 0x000D
-#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E
-#define GL_ALPHA_REF_COMMAND_NV 0x000F
-#define GL_VIEWPORT_COMMAND_NV 0x0010
-#define GL_SCISSOR_COMMAND_NV 0x0011
-#define GL_FRONT_FACE_COMMAND_NV 0x0012
-typedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states);
-typedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states);
-typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state);
-typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);
-typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);
-typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);
-typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
-typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
-typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists);
-typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists);
-typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list);
-typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);
-typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);
-typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states);
-GLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states);
-GLAPI GLboolean APIENTRY glIsStateNV (GLuint state);
-GLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode);
-GLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size);
-GLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype);
-GLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
-GLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
-GLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-GLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-GLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists);
-GLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists);
-GLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list);
-GLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
-GLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments);
-GLAPI void APIENTRY glCompileCommandListNV (GLuint list);
-GLAPI void APIENTRY glCallCommandListNV (GLuint list);
-#endif
-#endif /* GL_NV_command_list */
-
-#ifndef GL_NV_conditional_render
-#define GL_NV_conditional_render 1
-#define GL_QUERY_WAIT_NV 0x8E13
-#define GL_QUERY_NO_WAIT_NV 0x8E14
-#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRenderNV (void);
-#endif
-#endif /* GL_NV_conditional_render */
-
-#ifndef GL_NV_conservative_raster
-#define GL_NV_conservative_raster 1
-#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
-#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
-#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
-#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
-typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);
-#endif
-#endif /* GL_NV_conservative_raster */
-
-#ifndef GL_NV_conservative_raster_dilate
-#define GL_NV_conservative_raster_dilate 1
-#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
-#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
-#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
-typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value);
-#endif
-#endif /* GL_NV_conservative_raster_dilate */
-
-#ifndef GL_NV_conservative_raster_pre_snap
-#define GL_NV_conservative_raster_pre_snap 1
-#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
-#endif /* GL_NV_conservative_raster_pre_snap */
-
-#ifndef GL_NV_conservative_raster_pre_snap_triangles
-#define GL_NV_conservative_raster_pre_snap_triangles 1
-#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
-#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
-#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
-typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
-#endif
-#endif /* GL_NV_conservative_raster_pre_snap_triangles */
-
-#ifndef GL_NV_conservative_raster_underestimation
-#define GL_NV_conservative_raster_underestimation 1
-#endif /* GL_NV_conservative_raster_underestimation */
-
-#ifndef GL_NV_draw_vulkan_image
-#define GL_NV_draw_vulkan_image 1
-typedef void (APIENTRY *GLVULKANPROCNV)(void);
-typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);
-typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
-typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
-typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name);
-GLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);
-GLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);
-GLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence);
-#endif
-#endif /* GL_NV_draw_vulkan_image */
-
-#ifndef GL_NV_fill_rectangle
-#define GL_NV_fill_rectangle 1
-#define GL_FILL_RECTANGLE_NV 0x933C
-#endif /* GL_NV_fill_rectangle */
-
-#ifndef GL_NV_fragment_coverage_to_color
-#define GL_NV_fragment_coverage_to_color 1
-#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
-#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
-typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color);
-#endif
-#endif /* GL_NV_fragment_coverage_to_color */
-
-#ifndef GL_NV_fragment_shader_interlock
-#define GL_NV_fragment_shader_interlock 1
-#endif /* GL_NV_fragment_shader_interlock */
-
-#ifndef GL_NV_framebuffer_mixed_samples
-#define GL_NV_framebuffer_mixed_samples 1
-#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
-#define GL_COLOR_SAMPLES_NV 0x8E20
-#define GL_DEPTH_SAMPLES_NV 0x932D
-#define GL_STENCIL_SAMPLES_NV 0x932E
-#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
-#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
-#define GL_COVERAGE_MODULATION_NV 0x9332
-#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
-typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat *v);
-typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);
-GLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat *v);
-GLAPI void APIENTRY glCoverageModulationNV (GLenum components);
-#endif
-#endif /* GL_NV_framebuffer_mixed_samples */
-
-#ifndef GL_NV_framebuffer_multisample_coverage
-#define GL_NV_framebuffer_multisample_coverage 1
-#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
-#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
-#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
-#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_NV_framebuffer_multisample_coverage */
-
-#ifndef GL_NV_geometry_shader_passthrough
-#define GL_NV_geometry_shader_passthrough 1
-#endif /* GL_NV_geometry_shader_passthrough */
-
-#ifndef GL_NV_gpu_shader5
-#define GL_NV_gpu_shader5 1
-typedef int64_t GLint64EXT;
-#define GL_INT64_NV 0x140E
-#define GL_UNSIGNED_INT64_NV 0x140F
-#define GL_INT8_NV 0x8FE0
-#define GL_INT8_VEC2_NV 0x8FE1
-#define GL_INT8_VEC3_NV 0x8FE2
-#define GL_INT8_VEC4_NV 0x8FE3
-#define GL_INT16_NV 0x8FE4
-#define GL_INT16_VEC2_NV 0x8FE5
-#define GL_INT16_VEC3_NV 0x8FE6
-#define GL_INT16_VEC4_NV 0x8FE7
-#define GL_INT64_VEC2_NV 0x8FE9
-#define GL_INT64_VEC3_NV 0x8FEA
-#define GL_INT64_VEC4_NV 0x8FEB
-#define GL_UNSIGNED_INT8_NV 0x8FEC
-#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
-#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
-#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
-#define GL_UNSIGNED_INT16_NV 0x8FF0
-#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
-#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
-#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
-#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
-#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
-#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
-#define GL_FLOAT16_NV 0x8FF8
-#define GL_FLOAT16_VEC2_NV 0x8FF9
-#define GL_FLOAT16_VEC3_NV 0x8FFA
-#define GL_FLOAT16_VEC4_NV 0x8FFB
-typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
-GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
-GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
-GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_NV_gpu_shader5 */
-
-#ifndef GL_NV_internalformat_sample_query
-#define GL_NV_internalformat_sample_query 1
-#define GL_MULTISAMPLES_NV 0x9371
-#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
-#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
-#define GL_CONFORMANT_NV 0x9374
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params);
-#endif
-#endif /* GL_NV_internalformat_sample_query */
-
-#ifndef GL_NV_path_rendering
-#define GL_NV_path_rendering 1
-#define GL_PATH_FORMAT_SVG_NV 0x9070
-#define GL_PATH_FORMAT_PS_NV 0x9071
-#define GL_STANDARD_FONT_NAME_NV 0x9072
-#define GL_SYSTEM_FONT_NAME_NV 0x9073
-#define GL_FILE_NAME_NV 0x9074
-#define GL_PATH_STROKE_WIDTH_NV 0x9075
-#define GL_PATH_END_CAPS_NV 0x9076
-#define GL_PATH_INITIAL_END_CAP_NV 0x9077
-#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
-#define GL_PATH_JOIN_STYLE_NV 0x9079
-#define GL_PATH_MITER_LIMIT_NV 0x907A
-#define GL_PATH_DASH_CAPS_NV 0x907B
-#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
-#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
-#define GL_PATH_DASH_OFFSET_NV 0x907E
-#define GL_PATH_CLIENT_LENGTH_NV 0x907F
-#define GL_PATH_FILL_MODE_NV 0x9080
-#define GL_PATH_FILL_MASK_NV 0x9081
-#define GL_PATH_FILL_COVER_MODE_NV 0x9082
-#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
-#define GL_PATH_STROKE_MASK_NV 0x9084
-#define GL_COUNT_UP_NV 0x9088
-#define GL_COUNT_DOWN_NV 0x9089
-#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
-#define GL_CONVEX_HULL_NV 0x908B
-#define GL_BOUNDING_BOX_NV 0x908D
-#define GL_TRANSLATE_X_NV 0x908E
-#define GL_TRANSLATE_Y_NV 0x908F
-#define GL_TRANSLATE_2D_NV 0x9090
-#define GL_TRANSLATE_3D_NV 0x9091
-#define GL_AFFINE_2D_NV 0x9092
-#define GL_AFFINE_3D_NV 0x9094
-#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
-#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
-#define GL_UTF8_NV 0x909A
-#define GL_UTF16_NV 0x909B
-#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
-#define GL_PATH_COMMAND_COUNT_NV 0x909D
-#define GL_PATH_COORD_COUNT_NV 0x909E
-#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
-#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
-#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
-#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
-#define GL_SQUARE_NV 0x90A3
-#define GL_ROUND_NV 0x90A4
-#define GL_TRIANGULAR_NV 0x90A5
-#define GL_BEVEL_NV 0x90A6
-#define GL_MITER_REVERT_NV 0x90A7
-#define GL_MITER_TRUNCATE_NV 0x90A8
-#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
-#define GL_USE_MISSING_GLYPH_NV 0x90AA
-#define GL_PATH_ERROR_POSITION_NV 0x90AB
-#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
-#define GL_ADJACENT_PAIRS_NV 0x90AE
-#define GL_FIRST_TO_REST_NV 0x90AF
-#define GL_PATH_GEN_MODE_NV 0x90B0
-#define GL_PATH_GEN_COEFF_NV 0x90B1
-#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
-#define GL_PATH_STENCIL_FUNC_NV 0x90B7
-#define GL_PATH_STENCIL_REF_NV 0x90B8
-#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
-#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
-#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
-#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
-#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
-#define GL_MOVE_TO_RESETS_NV 0x90B5
-#define GL_MOVE_TO_CONTINUES_NV 0x90B6
-#define GL_CLOSE_PATH_NV 0x00
-#define GL_MOVE_TO_NV 0x02
-#define GL_RELATIVE_MOVE_TO_NV 0x03
-#define GL_LINE_TO_NV 0x04
-#define GL_RELATIVE_LINE_TO_NV 0x05
-#define GL_HORIZONTAL_LINE_TO_NV 0x06
-#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
-#define GL_VERTICAL_LINE_TO_NV 0x08
-#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
-#define GL_QUADRATIC_CURVE_TO_NV 0x0A
-#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
-#define GL_CUBIC_CURVE_TO_NV 0x0C
-#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
-#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
-#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
-#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
-#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
-#define GL_SMALL_CCW_ARC_TO_NV 0x12
-#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
-#define GL_SMALL_CW_ARC_TO_NV 0x14
-#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
-#define GL_LARGE_CCW_ARC_TO_NV 0x16
-#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
-#define GL_LARGE_CW_ARC_TO_NV 0x18
-#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
-#define GL_RESTART_PATH_NV 0xF0
-#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
-#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
-#define GL_RECT_NV 0xF6
-#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
-#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
-#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
-#define GL_ARC_TO_NV 0xFE
-#define GL_RELATIVE_ARC_TO_NV 0xFF
-#define GL_BOLD_BIT_NV 0x01
-#define GL_ITALIC_BIT_NV 0x02
-#define GL_GLYPH_WIDTH_BIT_NV 0x01
-#define GL_GLYPH_HEIGHT_BIT_NV 0x02
-#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
-#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
-#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
-#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
-#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
-#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
-#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
-#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
-#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
-#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
-#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
-#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
-#define GL_FONT_ASCENDER_BIT_NV 0x00200000
-#define GL_FONT_DESCENDER_BIT_NV 0x00400000
-#define GL_FONT_HEIGHT_BIT_NV 0x00800000
-#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
-#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
-#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
-#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
-#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
-#define GL_ROUNDED_RECT_NV 0xE8
-#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
-#define GL_ROUNDED_RECT2_NV 0xEA
-#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
-#define GL_ROUNDED_RECT4_NV 0xEC
-#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
-#define GL_ROUNDED_RECT8_NV 0xEE
-#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
-#define GL_RELATIVE_RECT_NV 0xF7
-#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
-#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
-#define GL_FONT_UNAVAILABLE_NV 0x936A
-#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
-#define GL_CONIC_CURVE_TO_NV 0x1A
-#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
-#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
-#define GL_STANDARD_FONT_FORMAT_NV 0x936C
-#define GL_PATH_PROJECTION_NV 0x1701
-#define GL_PATH_MODELVIEW_NV 0x1700
-#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3
-#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6
-#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
-#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
-#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
-#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7
-#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
-#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
-#define GL_FRAGMENT_INPUT_NV 0x936D
-typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
-typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
-typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
-typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
-typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
-typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
-typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
-typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
-typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
-typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
-typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
-typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
-GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
-GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
-GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
-GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
-GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
-GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
-GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
-GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
-GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
-GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
-GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
-GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
-GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
-GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
-GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
-GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
-GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
-GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-GLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
-GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
-GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
-GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
-GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
-GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params);
-#endif
-#endif /* GL_NV_path_rendering */
-
-#ifndef GL_NV_path_rendering_shared_edge
-#define GL_NV_path_rendering_shared_edge 1
-#define GL_SHARED_EDGE_NV 0xC0
-#endif /* GL_NV_path_rendering_shared_edge */
-
-#ifndef GL_NV_sample_locations
-#define GL_NV_sample_locations 1
-#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
-#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
-#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
-#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
-#define GL_SAMPLE_LOCATION_NV 0x8E50
-#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
-#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
-#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
-typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glResolveDepthValuesNV (void);
-#endif
-#endif /* GL_NV_sample_locations */
-
-#ifndef GL_NV_sample_mask_override_coverage
-#define GL_NV_sample_mask_override_coverage 1
-#endif /* GL_NV_sample_mask_override_coverage */
-
-#ifndef GL_NV_shader_atomic_counters
-#define GL_NV_shader_atomic_counters 1
-#endif /* GL_NV_shader_atomic_counters */
-
-#ifndef GL_NV_shader_atomic_float
-#define GL_NV_shader_atomic_float 1
-#endif /* GL_NV_shader_atomic_float */
-
-#ifndef GL_NV_shader_atomic_float64
-#define GL_NV_shader_atomic_float64 1
-#endif /* GL_NV_shader_atomic_float64 */
-
-#ifndef GL_NV_shader_atomic_fp16_vector
-#define GL_NV_shader_atomic_fp16_vector 1
-#endif /* GL_NV_shader_atomic_fp16_vector */
-
-#ifndef GL_NV_shader_atomic_int64
-#define GL_NV_shader_atomic_int64 1
-#endif /* GL_NV_shader_atomic_int64 */
-
-#ifndef GL_NV_shader_buffer_load
-#define GL_NV_shader_buffer_load 1
-#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
-#define GL_GPU_ADDRESS_NV 0x8F34
-#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
-typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
-typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
-GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
-GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
-GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_NV_shader_buffer_load */
-
-#ifndef GL_NV_shader_buffer_store
-#define GL_NV_shader_buffer_store 1
-#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
-#endif /* GL_NV_shader_buffer_store */
-
-#ifndef GL_NV_shader_thread_group
-#define GL_NV_shader_thread_group 1
-#define GL_WARP_SIZE_NV 0x9339
-#define GL_WARPS_PER_SM_NV 0x933A
-#define GL_SM_COUNT_NV 0x933B
-#endif /* GL_NV_shader_thread_group */
-
-#ifndef GL_NV_shader_thread_shuffle
-#define GL_NV_shader_thread_shuffle 1
-#endif /* GL_NV_shader_thread_shuffle */
-
-#ifndef GL_NV_stereo_view_rendering
-#define GL_NV_stereo_view_rendering 1
-#endif /* GL_NV_stereo_view_rendering */
-
-#ifndef GL_NV_texture_barrier
-#define GL_NV_texture_barrier 1
-typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureBarrierNV (void);
-#endif
-#endif /* GL_NV_texture_barrier */
-
-#ifndef GL_NV_texture_rectangle_compressed
-#define GL_NV_texture_rectangle_compressed 1
-#endif /* GL_NV_texture_rectangle_compressed */
-
-#ifndef GL_NV_uniform_buffer_unified_memory
-#define GL_NV_uniform_buffer_unified_memory 1
-#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
-#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
-#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
-#endif /* GL_NV_uniform_buffer_unified_memory */
-
-#ifndef GL_NV_vertex_attrib_integer_64bit
-#define GL_NV_vertex_attrib_integer_64bit 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-#endif
-#endif /* GL_NV_vertex_attrib_integer_64bit */
-
-#ifndef GL_NV_vertex_buffer_unified_memory
-#define GL_NV_vertex_buffer_unified_memory 1
-#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
-#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
-#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
-#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
-#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
-#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
-#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
-#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
-#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
-#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
-#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
-#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
-#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
-#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
-#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
-#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
-#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
-#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
-#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
-#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
-#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
-#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
-#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
-#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
-#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
-typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
-#endif
-#endif /* GL_NV_vertex_buffer_unified_memory */
-
-#ifndef GL_NV_viewport_array2
-#define GL_NV_viewport_array2 1
-#endif /* GL_NV_viewport_array2 */
-
-#ifndef GL_NV_viewport_swizzle
-#define GL_NV_viewport_swizzle 1
-#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
-#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
-#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
-#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
-#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
-#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
-#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
-#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
-#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
-#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
-#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
-#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
-typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
-#endif
-#endif /* GL_NV_viewport_swizzle */
-
-#ifndef GL_OVR_multiview
-#define GL_OVR_multiview 1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
-#define GL_MAX_VIEWS_OVR 0x9631
-#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
-#endif
-#endif /* GL_OVR_multiview */
-
-#ifndef GL_OVR_multiview2
-#define GL_OVR_multiview2 1
-#endif /* GL_OVR_multiview2 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+#ifndef __gl_glcorearb_h_
+#define __gl_glcorearb_h_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2013-2017 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are 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 Materials.
+**
+** THE MATERIALS ARE 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
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+/*
+** This header is generated from the Khronos OpenGL / OpenGL ES XML
+** API Registry. The current version of the Registry, generator scripts
+** used to make the header, and the header can be found at
+** https://github.com/KhronosGroup/OpenGL-Registry
+*/
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN 1
+#endif
+#include
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/* glcorearb.h is for use with OpenGL core profile implementations.
+** It should should be placed in the same directory as gl.h and
+** included as .
+**
+** glcorearb.h includes only APIs in the latest OpenGL core profile
+** implementation together with APIs in newer ARB extensions which
+** can be supported by the core profile. It does not, and never will
+** include functionality removed from the core profile, such as
+** fixed-function vertex and fragment processing.
+**
+** Do not #include both and either of or
+** in the same source file.
+*/
+
+/* Generated C header for:
+ * API: gl
+ * Profile: core
+ * Versions considered: .*
+ * Versions emitted: .*
+ * Default extensions included: glcore
+ * Additional extensions included: _nomatch_^
+ * Extensions removed: _nomatch_^
+ */
+
+#ifndef GL_VERSION_1_0
+#define GL_VERSION_1_0 1
+typedef void GLvoid;
+typedef unsigned int GLenum;
+typedef float GLfloat;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned int GLbitfield;
+typedef double GLdouble;
+typedef unsigned int GLuint;
+typedef unsigned char GLboolean;
+typedef unsigned char GLubyte;
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_FALSE 0
+#define GL_TRUE 1
+#define GL_POINTS 0x0000
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_LINE_STRIP 0x0003
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_NEVER 0x0200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_ZERO 0
+#define GL_ONE 1
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_NONE 0
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_NO_ERROR 0
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_VIEWPORT 0x0BA2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_TEXTURE 0x1702
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_REPEAT 0x2901
+typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
+typedef void (APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
+typedef void (APIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
+typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
+typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
+typedef void (APIENTRYP PFNGLCLEARDEPTHPROC) (GLdouble depth);
+typedef void (APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
+typedef void (APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
+typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLFINISHPROC) (void);
+typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
+typedef void (APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
+typedef void (APIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
+typedef void (APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
+typedef void (APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
+typedef void (APIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLREADBUFFERPROC) (GLenum src);
+typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+typedef void (APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *data);
+typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
+typedef void (APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
+typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLDEPTHRANGEPROC) (GLdouble n, GLdouble f);
+typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCullFace (GLenum mode);
+GLAPI void APIENTRY glFrontFace (GLenum mode);
+GLAPI void APIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void APIENTRY glLineWidth (GLfloat width);
+GLAPI void APIENTRY glPointSize (GLfloat size);
+GLAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
+GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glDrawBuffer (GLenum buf);
+GLAPI void APIENTRY glClear (GLbitfield mask);
+GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void APIENTRY glClearStencil (GLint s);
+GLAPI void APIENTRY glClearDepth (GLdouble depth);
+GLAPI void APIENTRY glStencilMask (GLuint mask);
+GLAPI void APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void APIENTRY glDepthMask (GLboolean flag);
+GLAPI void APIENTRY glDisable (GLenum cap);
+GLAPI void APIENTRY glEnable (GLenum cap);
+GLAPI void APIENTRY glFinish (void);
+GLAPI void APIENTRY glFlush (void);
+GLAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void APIENTRY glLogicOp (GLenum opcode);
+GLAPI void APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void APIENTRY glDepthFunc (GLenum func);
+GLAPI void APIENTRY glPixelStoref (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void APIENTRY glReadBuffer (GLenum src);
+GLAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+GLAPI void APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);
+GLAPI void APIENTRY glGetDoublev (GLenum pname, GLdouble *data);
+GLAPI GLenum APIENTRY glGetError (void);
+GLAPI void APIENTRY glGetFloatv (GLenum pname, GLfloat *data);
+GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *data);
+GLAPI const GLubyte *APIENTRY glGetString (GLenum name);
+GLAPI void APIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
+GLAPI void APIENTRY glDepthRange (GLdouble n, GLdouble f);
+GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+#endif /* GL_VERSION_1_0 */
+
+#ifndef GL_VERSION_1_1
+#define GL_VERSION_1_1 1
+typedef float GLclampf;
+typedef double GLclampd;
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_DOUBLE 0x140A
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_R3_G3_B2 0x2A10
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_VERTEX_ARRAY 0x8074
+typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
+typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params);
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
+typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
+GLAPI void APIENTRY glGetPointerv (GLenum pname, void **params);
+GLAPI void APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void APIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI GLboolean APIENTRY glIsTexture (GLuint texture);
+#endif
+#endif /* GL_VERSION_1_1 */
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+#endif /* GL_VERSION_1_2 */
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_CLAMP_TO_BORDER 0x812D
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTexture (GLenum texture);
+GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
+#endif
+#endif /* GL_VERSION_1_3 */
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_INCR_WRAP 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#define GL_BLEND_COLOR 0x8005
+#define GL_BLEND_EQUATION 0x8009
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_FUNC_ADD 0x8006
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
+GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
+GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void APIENTRY glBlendEquation (GLenum mode);
+#endif
+#endif /* GL_VERSION_1_4 */
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+#include
+typedef ptrdiff_t GLsizeiptr;
+typedef ptrdiff_t GLintptr;
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_CURRENT_QUERY 0x8865
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_SAMPLES_PASSED 0x8914
+#define GL_SRC1_ALPHA 0x8589
+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
+typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
+GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQuery (GLenum target);
+GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
+GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
+GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
+GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
+#endif
+#endif /* GL_VERSION_1_5 */
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+typedef char GLchar;
+typedef short GLshort;
+typedef signed char GLbyte;
+typedef unsigned short GLushort;
+#define GL_BLEND_EQUATION_RGB 0x8009
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_DELETE_STATUS 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_STENCIL_BACK_REF 0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
+GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
+GLAPI void APIENTRY glCompileShader (GLuint shader);
+GLAPI GLuint APIENTRY glCreateProgram (void);
+GLAPI GLuint APIENTRY glCreateShader (GLenum type);
+GLAPI void APIENTRY glDeleteProgram (GLuint program);
+GLAPI void APIENTRY glDeleteShader (GLuint shader);
+GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
+GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
+GLAPI void APIENTRY glLinkProgram (GLuint program);
+GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
+GLAPI void APIENTRY glUseProgram (GLuint program);
+GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glValidateProgram (GLuint program);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
+#endif
+#endif /* GL_VERSION_2_0 */
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_SRGB 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+#endif
+#endif /* GL_VERSION_2_1 */
+
+#ifndef GL_VERSION_3_0
+#define GL_VERSION_3_0 1
+typedef unsigned short GLhalf;
+#define GL_COMPARE_REF_TO_TEXTURE 0x884E
+#define GL_CLIP_DISTANCE0 0x3000
+#define GL_CLIP_DISTANCE1 0x3001
+#define GL_CLIP_DISTANCE2 0x3002
+#define GL_CLIP_DISTANCE3 0x3003
+#define GL_CLIP_DISTANCE4 0x3004
+#define GL_CLIP_DISTANCE5 0x3005
+#define GL_CLIP_DISTANCE6 0x3006
+#define GL_CLIP_DISTANCE7 0x3007
+#define GL_MAX_CLIP_DISTANCES 0x0D32
+#define GL_MAJOR_VERSION 0x821B
+#define GL_MINOR_VERSION 0x821C
+#define GL_NUM_EXTENSIONS 0x821D
+#define GL_CONTEXT_FLAGS 0x821E
+#define GL_COMPRESSED_RED 0x8225
+#define GL_COMPRESSED_RG 0x8226
+#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
+#define GL_RGBA32F 0x8814
+#define GL_RGB32F 0x8815
+#define GL_RGBA16F 0x881A
+#define GL_RGB16F 0x881B
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
+#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
+#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
+#define GL_CLAMP_READ_COLOR 0x891C
+#define GL_FIXED_ONLY 0x891D
+#define GL_MAX_VARYING_COMPONENTS 0x8B4B
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+#define GL_RGB9_E5 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE 0x8C3F
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
+#define GL_PRIMITIVES_GENERATED 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
+#define GL_RASTERIZER_DISCARD 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS 0x8C8C
+#define GL_SEPARATE_ATTRIBS 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
+#define GL_RGBA32UI 0x8D70
+#define GL_RGB32UI 0x8D71
+#define GL_RGBA16UI 0x8D76
+#define GL_RGB16UI 0x8D77
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGB8UI 0x8D7D
+#define GL_RGBA32I 0x8D82
+#define GL_RGB32I 0x8D83
+#define GL_RGBA16I 0x8D88
+#define GL_RGB16I 0x8D89
+#define GL_RGBA8I 0x8D8E
+#define GL_RGB8I 0x8D8F
+#define GL_RED_INTEGER 0x8D94
+#define GL_GREEN_INTEGER 0x8D95
+#define GL_BLUE_INTEGER 0x8D96
+#define GL_RGB_INTEGER 0x8D98
+#define GL_RGBA_INTEGER 0x8D99
+#define GL_BGR_INTEGER 0x8D9A
+#define GL_BGRA_INTEGER 0x8D9B
+#define GL_SAMPLER_1D_ARRAY 0x8DC0
+#define GL_SAMPLER_2D_ARRAY 0x8DC1
+#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
+#define GL_UNSIGNED_INT_VEC2 0x8DC6
+#define GL_UNSIGNED_INT_VEC3 0x8DC7
+#define GL_UNSIGNED_INT_VEC4 0x8DC8
+#define GL_INT_SAMPLER_1D 0x8DC9
+#define GL_INT_SAMPLER_2D 0x8DCA
+#define GL_INT_SAMPLER_3D 0x8DCB
+#define GL_INT_SAMPLER_CUBE 0x8DCC
+#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
+#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
+#define GL_QUERY_WAIT 0x8E13
+#define GL_QUERY_NO_WAIT 0x8E14
+#define GL_QUERY_BY_REGION_WAIT 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+#define GL_FRAMEBUFFER_DEFAULT 0x8218
+#define GL_FRAMEBUFFER_UNDEFINED 0x8219
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
+#define GL_DEPTH_STENCIL 0x84F9
+#define GL_UNSIGNED_INT_24_8 0x84FA
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE 0x88F1
+#define GL_TEXTURE_RED_TYPE 0x8C10
+#define GL_TEXTURE_GREEN_TYPE 0x8C11
+#define GL_TEXTURE_BLUE_TYPE 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE 0x8C13
+#define GL_TEXTURE_DEPTH_TYPE 0x8C16
+#define GL_UNSIGNED_NORMALIZED 0x8C17
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#define GL_DRAW_FRAMEBUFFER 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES 0x8CAB
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#define GL_COLOR_ATTACHMENT3 0x8CE3
+#define GL_COLOR_ATTACHMENT4 0x8CE4
+#define GL_COLOR_ATTACHMENT5 0x8CE5
+#define GL_COLOR_ATTACHMENT6 0x8CE6
+#define GL_COLOR_ATTACHMENT7 0x8CE7
+#define GL_COLOR_ATTACHMENT8 0x8CE8
+#define GL_COLOR_ATTACHMENT9 0x8CE9
+#define GL_COLOR_ATTACHMENT10 0x8CEA
+#define GL_COLOR_ATTACHMENT11 0x8CEB
+#define GL_COLOR_ATTACHMENT12 0x8CEC
+#define GL_COLOR_ATTACHMENT13 0x8CED
+#define GL_COLOR_ATTACHMENT14 0x8CEE
+#define GL_COLOR_ATTACHMENT15 0x8CEF
+#define GL_COLOR_ATTACHMENT16 0x8CF0
+#define GL_COLOR_ATTACHMENT17 0x8CF1
+#define GL_COLOR_ATTACHMENT18 0x8CF2
+#define GL_COLOR_ATTACHMENT19 0x8CF3
+#define GL_COLOR_ATTACHMENT20 0x8CF4
+#define GL_COLOR_ATTACHMENT21 0x8CF5
+#define GL_COLOR_ATTACHMENT22 0x8CF6
+#define GL_COLOR_ATTACHMENT23 0x8CF7
+#define GL_COLOR_ATTACHMENT24 0x8CF8
+#define GL_COLOR_ATTACHMENT25 0x8CF9
+#define GL_COLOR_ATTACHMENT26 0x8CFA
+#define GL_COLOR_ATTACHMENT27 0x8CFB
+#define GL_COLOR_ATTACHMENT28 0x8CFC
+#define GL_COLOR_ATTACHMENT29 0x8CFD
+#define GL_COLOR_ATTACHMENT30 0x8CFE
+#define GL_COLOR_ATTACHMENT31 0x8CFF
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_WIDTH 0x8D42
+#define GL_RENDERBUFFER_HEIGHT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+#define GL_STENCIL_INDEX1 0x8D46
+#define GL_STENCIL_INDEX4 0x8D47
+#define GL_STENCIL_INDEX8 0x8D48
+#define GL_STENCIL_INDEX16 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+#define GL_MAX_SAMPLES 0x8D57
+#define GL_FRAMEBUFFER_SRGB 0x8DB9
+#define GL_HALF_FLOAT 0x140B
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+#define GL_RG 0x8227
+#define GL_RG_INTEGER 0x8228
+#define GL_R8 0x8229
+#define GL_R16 0x822A
+#define GL_RG8 0x822B
+#define GL_RG16 0x822C
+#define GL_R16F 0x822D
+#define GL_R32F 0x822E
+#define GL_RG16F 0x822F
+#define GL_RG32F 0x8230
+#define GL_R8I 0x8231
+#define GL_R8UI 0x8232
+#define GL_R16I 0x8233
+#define GL_R16UI 0x8234
+#define GL_R32I 0x8235
+#define GL_R32UI 0x8236
+#define GL_RG8I 0x8237
+#define GL_RG8UI 0x8238
+#define GL_RG16I 0x8239
+#define GL_RG16UI 0x823A
+#define GL_RG32I 0x823B
+#define GL_RG32UI 0x823C
+#define GL_VERTEX_ARRAY_BINDING 0x85B5
+typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
+GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
+GLAPI void APIENTRY glEndTransformFeedback (void);
+GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
+GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
+GLAPI void APIENTRY glEndConditionalRender (void);
+GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
+GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
+GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
+GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmap (GLenum target);
+GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
+GLAPI void APIENTRY glBindVertexArray (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
+#endif
+#endif /* GL_VERSION_3_0 */
+
+#ifndef GL_VERSION_3_1
+#define GL_VERSION_3_1 1
+#define GL_SAMPLER_2D_RECT 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
+#define GL_SAMPLER_BUFFER 0x8DC2
+#define GL_INT_SAMPLER_2D_RECT 0x8DCD
+#define GL_INT_SAMPLER_BUFFER 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
+#define GL_TEXTURE_BUFFER 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_PRIMITIVE_RESTART 0x8F9D
+#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+#define GL_COPY_READ_BUFFER 0x8F36
+#define GL_COPY_WRITE_BUFFER 0x8F37
+#define GL_UNIFORM_BUFFER 0x8A11
+#define GL_UNIFORM_BUFFER_BINDING 0x8A28
+#define GL_UNIFORM_BUFFER_START 0x8A29
+#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
+#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+#define GL_UNIFORM_TYPE 0x8A37
+#define GL_UNIFORM_SIZE 0x8A38
+#define GL_UNIFORM_NAME_LENGTH 0x8A39
+#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
+#define GL_UNIFORM_OFFSET 0x8A3B
+#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
+#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+#define GL_INVALID_INDEX 0xFFFFFFFFu
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
+typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
+GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
+GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
+GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
+GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
+GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+#endif
+#endif /* GL_VERSION_3_1 */
+
+#ifndef GL_VERSION_3_2
+#define GL_VERSION_3_2 1
+typedef struct __GLsync *GLsync;
+#ifndef GLEXT_64_TYPES_DEFINED
+/* This code block is duplicated in glxext.h, so must be protected */
+#define GLEXT_64_TYPES_DEFINED
+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+/* (as used in the GL_EXT_timer_query extension). */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#include
+#elif defined(__sun__) || defined(__digital__)
+#include
+#if defined(__STDC__)
+#if defined(__arch64__) || defined(_LP64)
+typedef long int int64_t;
+typedef unsigned long int uint64_t;
+#else
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#endif /* __arch64__ */
+#endif /* __STDC__ */
+#elif defined( __VMS ) || defined(__sgi)
+#include
+#elif defined(__SCO__) || defined(__USLC__)
+#include
+#elif defined(__UNIXOS2__) || defined(__SOL64__)
+typedef long int int32_t;
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#elif defined(_WIN32) && defined(__GNUC__)
+#include
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+/* Fallback if nothing above works */
+#include
+#endif
+#endif
+typedef uint64_t GLuint64;
+typedef int64_t GLint64;
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_LINES_ADJACENCY 0x000A
+#define GL_LINE_STRIP_ADJACENCY 0x000B
+#define GL_TRIANGLES_ADJACENCY 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
+#define GL_PROGRAM_POINT_SIZE 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT 0x8916
+#define GL_GEOMETRY_INPUT_TYPE 0x8917
+#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
+#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
+#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+#define GL_DEPTH_CLAMP 0x864F
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_WAIT_FAILED 0x911D
+#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
+typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
+typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
+typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
+typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
+typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
+typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
+typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
+GLAPI void APIENTRY glProvokingVertex (GLenum mode);
+GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
+GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
+GLAPI void APIENTRY glDeleteSync (GLsync sync);
+GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
+GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
+GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
+#endif
+#endif /* GL_VERSION_3_2 */
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+#define GL_SRC1_COLOR 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+#define GL_SAMPLER_BINDING 0x8919
+#define GL_RGB10_A2UI 0x906F
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+#define GL_INT_2_10_10_10_REV 0x8D9F
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
+typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
+typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
+GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
+GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
+GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
+GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
+GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
+GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
+GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
+GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
+GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif
+#endif /* GL_VERSION_3_3 */
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+#define GL_PATCHES 0x000E
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+#define GL_ISOLINES 0x8E7A
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
+typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
+typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
+typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
+typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
+typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMinSampleShading (GLfloat value);
+GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
+GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
+GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
+GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
+GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
+GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
+GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
+GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
+GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
+GLAPI void APIENTRY glPauseTransformFeedback (void);
+GLAPI void APIENTRY glResumeTransformFeedback (void);
+GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
+GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
+GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
+GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
+GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif
+#endif /* GL_VERSION_4_0 */
+
+#ifndef GL_VERSION_4_1
+#define GL_VERSION_4_1 1
+#define GL_FIXED 0x140C
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+#define GL_LOW_FLOAT 0x8DF0
+#define GL_MEDIUM_FLOAT 0x8DF1
+#define GL_HIGH_FLOAT 0x8DF2
+#define GL_LOW_INT 0x8DF3
+#define GL_MEDIUM_INT 0x8DF4
+#define GL_HIGH_INT 0x8DF5
+#define GL_SHADER_COMPILER 0x8DFA
+#define GL_SHADER_BINARY_FORMATS 0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+#define GL_MAX_VARYING_VECTORS 0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+#define GL_RGB565 0x8D62
+#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+#define GL_PROGRAM_BINARY_LENGTH 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS 0x87FF
+#define GL_VERTEX_SHADER_BIT 0x00000001
+#define GL_FRAGMENT_SHADER_BIT 0x00000002
+#define GL_GEOMETRY_SHADER_BIT 0x00000004
+#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
+#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+#define GL_ALL_SHADER_BITS 0xFFFFFFFF
+#define GL_PROGRAM_SEPARABLE 0x8258
+#define GL_ACTIVE_PROGRAM 0x8259
+#define GL_PROGRAM_PIPELINE_BINDING 0x825A
+#define GL_MAX_VIEWPORTS 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
+#define GL_LAYER_PROVOKING_VERTEX 0x825E
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+#define GL_UNDEFINED_VERTEX 0x8260
+typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
+typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
+typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
+typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
+typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
+typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
+typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
+typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
+typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
+typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
+typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReleaseShaderCompiler (void);
+GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
+GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
+GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
+GLAPI void APIENTRY glClearDepthf (GLfloat d);
+GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
+GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
+GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
+GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
+GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
+GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
+GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
+GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
+GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
+GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
+GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
+GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
+#endif
+#endif /* GL_VERSION_4_1 */
+
+#ifndef GL_VERSION_4_2
+#define GL_VERSION_4_2 1
+#define GL_COPY_READ_BUFFER_BINDING 0x8F36
+#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
+#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
+#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
+#define GL_NUM_SAMPLE_COUNTS 0x9380
+#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
+#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
+#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+#define GL_COMMAND_BARRIER_BIT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
+#define GL_MAX_IMAGE_UNITS 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+#define GL_IMAGE_BINDING_NAME 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED 0x8F3C
+#define GL_IMAGE_BINDING_LAYER 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS 0x8F3E
+#define GL_IMAGE_1D 0x904C
+#define GL_IMAGE_2D 0x904D
+#define GL_IMAGE_3D 0x904E
+#define GL_IMAGE_2D_RECT 0x904F
+#define GL_IMAGE_CUBE 0x9050
+#define GL_IMAGE_BUFFER 0x9051
+#define GL_IMAGE_1D_ARRAY 0x9052
+#define GL_IMAGE_2D_ARRAY 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+#define GL_INT_IMAGE_1D 0x9057
+#define GL_INT_IMAGE_2D 0x9058
+#define GL_INT_IMAGE_3D 0x9059
+#define GL_INT_IMAGE_2D_RECT 0x905A
+#define GL_INT_IMAGE_CUBE 0x905B
+#define GL_INT_IMAGE_BUFFER 0x905C
+#define GL_INT_IMAGE_1D_ARRAY 0x905D
+#define GL_INT_IMAGE_2D_ARRAY 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+#define GL_MAX_IMAGE_SAMPLES 0x906D
+#define GL_IMAGE_BINDING_FORMAT 0x906E
+#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
+typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
+GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
+GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
+GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
+GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
+#endif
+#endif /* GL_VERSION_4_2 */
+
+#ifndef GL_VERSION_4_3
+#define GL_VERSION_4_3 1
+typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
+#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
+#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
+#define GL_COMPRESSED_RGB8_ETC2 0x9274
+#define GL_COMPRESSED_SRGB8_ETC2 0x9275
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
+#define GL_COMPRESSED_R11_EAC 0x9270
+#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+#define GL_COMPRESSED_RG11_EAC 0x9272
+#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+#define GL_MAX_ELEMENT_INDEX 0x8D6B
+#define GL_COMPUTE_SHADER 0x91B9
+#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+#define GL_COMPUTE_SHADER_BIT 0x00000020
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+#define GL_DEBUG_SOURCE_API 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION 0x824A
+#define GL_DEBUG_SOURCE_OTHER 0x824B
+#define GL_DEBUG_TYPE_ERROR 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
+#define GL_DEBUG_TYPE_OTHER 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES 0x9145
+#define GL_DEBUG_SEVERITY_HIGH 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
+#define GL_DEBUG_SEVERITY_LOW 0x9148
+#define GL_DEBUG_TYPE_MARKER 0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+#define GL_DEBUG_TYPE_POP_GROUP 0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+#define GL_BUFFER 0x82E0
+#define GL_SHADER 0x82E1
+#define GL_PROGRAM 0x82E2
+#define GL_QUERY 0x82E3
+#define GL_PROGRAM_PIPELINE 0x82E4
+#define GL_SAMPLER 0x82E6
+#define GL_MAX_LABEL_LENGTH 0x82E8
+#define GL_DEBUG_OUTPUT 0x92E0
+#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+#define GL_MAX_UNIFORM_LOCATIONS 0x826E
+#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+#define GL_INTERNALFORMAT_SUPPORTED 0x826F
+#define GL_INTERNALFORMAT_PREFERRED 0x8270
+#define GL_INTERNALFORMAT_RED_SIZE 0x8271
+#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+#define GL_INTERNALFORMAT_RED_TYPE 0x8278
+#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+#define GL_MAX_WIDTH 0x827E
+#define GL_MAX_HEIGHT 0x827F
+#define GL_MAX_DEPTH 0x8280
+#define GL_MAX_LAYERS 0x8281
+#define GL_MAX_COMBINED_DIMENSIONS 0x8282
+#define GL_COLOR_COMPONENTS 0x8283
+#define GL_DEPTH_COMPONENTS 0x8284
+#define GL_STENCIL_COMPONENTS 0x8285
+#define GL_COLOR_RENDERABLE 0x8286
+#define GL_DEPTH_RENDERABLE 0x8287
+#define GL_STENCIL_RENDERABLE 0x8288
+#define GL_FRAMEBUFFER_RENDERABLE 0x8289
+#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+#define GL_FRAMEBUFFER_BLEND 0x828B
+#define GL_READ_PIXELS 0x828C
+#define GL_READ_PIXELS_FORMAT 0x828D
+#define GL_READ_PIXELS_TYPE 0x828E
+#define GL_TEXTURE_IMAGE_FORMAT 0x828F
+#define GL_TEXTURE_IMAGE_TYPE 0x8290
+#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+#define GL_MIPMAP 0x8293
+#define GL_MANUAL_GENERATE_MIPMAP 0x8294
+#define GL_AUTO_GENERATE_MIPMAP 0x8295
+#define GL_COLOR_ENCODING 0x8296
+#define GL_SRGB_READ 0x8297
+#define GL_SRGB_WRITE 0x8298
+#define GL_FILTER 0x829A
+#define GL_VERTEX_TEXTURE 0x829B
+#define GL_TESS_CONTROL_TEXTURE 0x829C
+#define GL_TESS_EVALUATION_TEXTURE 0x829D
+#define GL_GEOMETRY_TEXTURE 0x829E
+#define GL_FRAGMENT_TEXTURE 0x829F
+#define GL_COMPUTE_TEXTURE 0x82A0
+#define GL_TEXTURE_SHADOW 0x82A1
+#define GL_TEXTURE_GATHER 0x82A2
+#define GL_TEXTURE_GATHER_SHADOW 0x82A3
+#define GL_SHADER_IMAGE_LOAD 0x82A4
+#define GL_SHADER_IMAGE_STORE 0x82A5
+#define GL_SHADER_IMAGE_ATOMIC 0x82A6
+#define GL_IMAGE_TEXEL_SIZE 0x82A7
+#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+#define GL_IMAGE_PIXEL_FORMAT 0x82A9
+#define GL_IMAGE_PIXEL_TYPE 0x82AA
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+#define GL_CLEAR_BUFFER 0x82B4
+#define GL_TEXTURE_VIEW 0x82B5
+#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+#define GL_FULL_SUPPORT 0x82B7
+#define GL_CAVEAT_SUPPORT 0x82B8
+#define GL_IMAGE_CLASS_4_X_32 0x82B9
+#define GL_IMAGE_CLASS_2_X_32 0x82BA
+#define GL_IMAGE_CLASS_1_X_32 0x82BB
+#define GL_IMAGE_CLASS_4_X_16 0x82BC
+#define GL_IMAGE_CLASS_2_X_16 0x82BD
+#define GL_IMAGE_CLASS_1_X_16 0x82BE
+#define GL_IMAGE_CLASS_4_X_8 0x82BF
+#define GL_IMAGE_CLASS_2_X_8 0x82C0
+#define GL_IMAGE_CLASS_1_X_8 0x82C1
+#define GL_IMAGE_CLASS_11_11_10 0x82C2
+#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
+#define GL_VIEW_CLASS_128_BITS 0x82C4
+#define GL_VIEW_CLASS_96_BITS 0x82C5
+#define GL_VIEW_CLASS_64_BITS 0x82C6
+#define GL_VIEW_CLASS_48_BITS 0x82C7
+#define GL_VIEW_CLASS_32_BITS 0x82C8
+#define GL_VIEW_CLASS_24_BITS 0x82C9
+#define GL_VIEW_CLASS_16_BITS 0x82CA
+#define GL_VIEW_CLASS_8_BITS 0x82CB
+#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
+#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
+#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+#define GL_UNIFORM 0x92E1
+#define GL_UNIFORM_BLOCK 0x92E2
+#define GL_PROGRAM_INPUT 0x92E3
+#define GL_PROGRAM_OUTPUT 0x92E4
+#define GL_BUFFER_VARIABLE 0x92E5
+#define GL_SHADER_STORAGE_BLOCK 0x92E6
+#define GL_VERTEX_SUBROUTINE 0x92E8
+#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
+#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+#define GL_GEOMETRY_SUBROUTINE 0x92EB
+#define GL_FRAGMENT_SUBROUTINE 0x92EC
+#define GL_COMPUTE_SUBROUTINE 0x92ED
+#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+#define GL_ACTIVE_RESOURCES 0x92F5
+#define GL_MAX_NAME_LENGTH 0x92F6
+#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+#define GL_NAME_LENGTH 0x92F9
+#define GL_TYPE 0x92FA
+#define GL_ARRAY_SIZE 0x92FB
+#define GL_OFFSET 0x92FC
+#define GL_BLOCK_INDEX 0x92FD
+#define GL_ARRAY_STRIDE 0x92FE
+#define GL_MATRIX_STRIDE 0x92FF
+#define GL_IS_ROW_MAJOR 0x9300
+#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+#define GL_BUFFER_BINDING 0x9302
+#define GL_BUFFER_DATA_SIZE 0x9303
+#define GL_NUM_ACTIVE_VARIABLES 0x9304
+#define GL_ACTIVE_VARIABLES 0x9305
+#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+#define GL_LOCATION 0x930E
+#define GL_LOCATION_INDEX 0x930F
+#define GL_IS_PER_PATCH 0x92E7
+#define GL_SHADER_STORAGE_BUFFER 0x90D2
+#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
+#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
+#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
+#define GL_TEXTURE_BUFFER_OFFSET 0x919D
+#define GL_TEXTURE_BUFFER_SIZE 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+#define GL_VERTEX_ATTRIB_BINDING 0x82D4
+#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+#define GL_VERTEX_BINDING_DIVISOR 0x82D6
+#define GL_VERTEX_BINDING_OFFSET 0x82D7
+#define GL_VERTEX_BINDING_STRIDE 0x82D8
+#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+#define GL_VERTEX_BINDING_BUFFER 0x8F4F
+typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
+typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
+typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
+typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
+typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
+typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
+typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
+typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
+typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
+typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
+typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
+typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
+typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
+GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
+GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
+GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
+GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
+GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
+GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
+GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
+GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
+GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
+GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
+GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
+GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
+GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
+GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
+GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
+GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
+GLAPI void APIENTRY glPopDebugGroup (void);
+GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
+GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
+GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
+GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
+#endif
+#endif /* GL_VERSION_4_3 */
+
+#ifndef GL_VERSION_4_4
+#define GL_VERSION_4_4 1
+#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
+#define GL_MAP_PERSISTENT_BIT 0x0040
+#define GL_MAP_COHERENT_BIT 0x0080
+#define GL_DYNAMIC_STORAGE_BIT 0x0100
+#define GL_CLIENT_STORAGE_BIT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+#define GL_BUFFER_STORAGE_FLAGS 0x8220
+#define GL_CLEAR_TEXTURE 0x9365
+#define GL_LOCATION_COMPONENT 0x934A
+#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
+#define GL_QUERY_BUFFER 0x9192
+#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+#define GL_QUERY_BUFFER_BINDING 0x9193
+#define GL_QUERY_RESULT_NO_WAIT 0x9194
+#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
+typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
+typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
+typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
+typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
+typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
+GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
+GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
+GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
+GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
+GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+#endif
+#endif /* GL_VERSION_4_4 */
+
+#ifndef GL_VERSION_4_5
+#define GL_VERSION_4_5 1
+#define GL_CONTEXT_LOST 0x0507
+#define GL_NEGATIVE_ONE_TO_ONE 0x935E
+#define GL_ZERO_TO_ONE 0x935F
+#define GL_CLIP_ORIGIN 0x935C
+#define GL_CLIP_DEPTH_MODE 0x935D
+#define GL_QUERY_WAIT_INVERTED 0x8E17
+#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
+#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+#define GL_MAX_CULL_DISTANCES 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
+#define GL_TEXTURE_TARGET 0x1006
+#define GL_QUERY_TARGET 0x82EA
+#define GL_GUILTY_CONTEXT_RESET 0x8253
+#define GL_INNOCENT_CONTEXT_RESET 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
+#define GL_LOSE_CONTEXT_ON_RESET 0x8252
+#define GL_NO_RESET_NOTIFICATION 0x8261
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
+typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
+typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
+typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src);
+typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
+typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
+typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
+typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
+typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
+typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
+typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
+typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers);
+typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
+typedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
+typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
+typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void);
+typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+typedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth);
+GLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param);
+GLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
+GLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers);
+GLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+GLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+GLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+GLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+GLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+GLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access);
+GLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer);
+GLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length);
+GLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params);
+GLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+GLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers);
+GLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param);
+GLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf);
+GLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src);
+GLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
+GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
+GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
+GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
+GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target);
+GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures);
+GLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+GLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+GLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+GLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param);
+GLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture);
+GLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture);
+GLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+GLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
+GLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params);
+GLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays);
+GLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index);
+GLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index);
+GLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer);
+GLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+GLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+GLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+GLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+GLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
+GLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers);
+GLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines);
+GLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+GLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+GLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+GLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+GLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers);
+GLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+GLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
+GLAPI GLenum APIENTRY glGetGraphicsResetStatus (void);
+GLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
+GLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+GLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+GLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+GLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+GLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+GLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+GLAPI void APIENTRY glTextureBarrier (void);
+#endif
+#endif /* GL_VERSION_4_5 */
+
+#ifndef GL_VERSION_4_6
+#define GL_VERSION_4_6 1
+#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
+#define GL_SPIR_V_BINARY 0x9552
+#define GL_PARAMETER_BUFFER 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING 0x80EF
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
+#define GL_VERTICES_SUBMITTED 0x82EE
+#define GL_PRIMITIVES_SUBMITTED 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
+typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp);
+#endif
+#endif /* GL_VERSION_4_6 */
+
+#ifndef GL_ARB_ES2_compatibility
+#define GL_ARB_ES2_compatibility 1
+#endif /* GL_ARB_ES2_compatibility */
+
+#ifndef GL_ARB_ES3_1_compatibility
+#define GL_ARB_ES3_1_compatibility 1
+#endif /* GL_ARB_ES3_1_compatibility */
+
+#ifndef GL_ARB_ES3_2_compatibility
+#define GL_ARB_ES3_2_compatibility 1
+#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+#endif
+#endif /* GL_ARB_ES3_2_compatibility */
+
+#ifndef GL_ARB_ES3_compatibility
+#define GL_ARB_ES3_compatibility 1
+#endif /* GL_ARB_ES3_compatibility */
+
+#ifndef GL_ARB_arrays_of_arrays
+#define GL_ARB_arrays_of_arrays 1
+#endif /* GL_ARB_arrays_of_arrays */
+
+#ifndef GL_ARB_base_instance
+#define GL_ARB_base_instance 1
+#endif /* GL_ARB_base_instance */
+
+#ifndef GL_ARB_bindless_texture
+#define GL_ARB_bindless_texture 1
+typedef uint64_t GLuint64EXT;
+#define GL_UNSIGNED_INT64_ARB 0x140F
+typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
+typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
+typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
+typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
+typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
+GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
+GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
+GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
+GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
+GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
+GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
+GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
+GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
+GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
+GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
+GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
+GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
+#endif
+#endif /* GL_ARB_bindless_texture */
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+#endif /* GL_ARB_blend_func_extended */
+
+#ifndef GL_ARB_buffer_storage
+#define GL_ARB_buffer_storage 1
+#endif /* GL_ARB_buffer_storage */
+
+#ifndef GL_ARB_cl_event
+#define GL_ARB_cl_event 1
+struct _cl_context;
+struct _cl_event;
+#define GL_SYNC_CL_EVENT_ARB 0x8240
+#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
+#endif
+#endif /* GL_ARB_cl_event */
+
+#ifndef GL_ARB_clear_buffer_object
+#define GL_ARB_clear_buffer_object 1
+#endif /* GL_ARB_clear_buffer_object */
+
+#ifndef GL_ARB_clear_texture
+#define GL_ARB_clear_texture 1
+#endif /* GL_ARB_clear_texture */
+
+#ifndef GL_ARB_clip_control
+#define GL_ARB_clip_control 1
+#endif /* GL_ARB_clip_control */
+
+#ifndef GL_ARB_compressed_texture_pixel_storage
+#define GL_ARB_compressed_texture_pixel_storage 1
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+
+#ifndef GL_ARB_compute_shader
+#define GL_ARB_compute_shader 1
+#endif /* GL_ARB_compute_shader */
+
+#ifndef GL_ARB_compute_variable_group_size
+#define GL_ARB_compute_variable_group_size 1
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+#endif
+#endif /* GL_ARB_compute_variable_group_size */
+
+#ifndef GL_ARB_conditional_render_inverted
+#define GL_ARB_conditional_render_inverted 1
+#endif /* GL_ARB_conditional_render_inverted */
+
+#ifndef GL_ARB_conservative_depth
+#define GL_ARB_conservative_depth 1
+#endif /* GL_ARB_conservative_depth */
+
+#ifndef GL_ARB_copy_buffer
+#define GL_ARB_copy_buffer 1
+#endif /* GL_ARB_copy_buffer */
+
+#ifndef GL_ARB_copy_image
+#define GL_ARB_copy_image 1
+#endif /* GL_ARB_copy_image */
+
+#ifndef GL_ARB_cull_distance
+#define GL_ARB_cull_distance 1
+#endif /* GL_ARB_cull_distance */
+
+#ifndef GL_ARB_debug_output
+#define GL_ARB_debug_output 1
+typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+#define GL_DEBUG_SOURCE_API_ARB 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
+typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
+GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+#endif
+#endif /* GL_ARB_debug_output */
+
+#ifndef GL_ARB_depth_buffer_float
+#define GL_ARB_depth_buffer_float 1
+#endif /* GL_ARB_depth_buffer_float */
+
+#ifndef GL_ARB_depth_clamp
+#define GL_ARB_depth_clamp 1
+#endif /* GL_ARB_depth_clamp */
+
+#ifndef GL_ARB_derivative_control
+#define GL_ARB_derivative_control 1
+#endif /* GL_ARB_derivative_control */
+
+#ifndef GL_ARB_direct_state_access
+#define GL_ARB_direct_state_access 1
+#endif /* GL_ARB_direct_state_access */
+
+#ifndef GL_ARB_draw_buffers_blend
+#define GL_ARB_draw_buffers_blend 1
+typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#endif
+#endif /* GL_ARB_draw_buffers_blend */
+
+#ifndef GL_ARB_draw_elements_base_vertex
+#define GL_ARB_draw_elements_base_vertex 1
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+#endif /* GL_ARB_draw_indirect */
+
+#ifndef GL_ARB_draw_instanced
+#define GL_ARB_draw_instanced 1
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+#endif
+#endif /* GL_ARB_draw_instanced */
+
+#ifndef GL_ARB_enhanced_layouts
+#define GL_ARB_enhanced_layouts 1
+#endif /* GL_ARB_enhanced_layouts */
+
+#ifndef GL_ARB_explicit_attrib_location
+#define GL_ARB_explicit_attrib_location 1
+#endif /* GL_ARB_explicit_attrib_location */
+
+#ifndef GL_ARB_explicit_uniform_location
+#define GL_ARB_explicit_uniform_location 1
+#endif /* GL_ARB_explicit_uniform_location */
+
+#ifndef GL_ARB_fragment_coord_conventions
+#define GL_ARB_fragment_coord_conventions 1
+#endif /* GL_ARB_fragment_coord_conventions */
+
+#ifndef GL_ARB_fragment_layer_viewport
+#define GL_ARB_fragment_layer_viewport 1
+#endif /* GL_ARB_fragment_layer_viewport */
+
+#ifndef GL_ARB_fragment_shader_interlock
+#define GL_ARB_fragment_shader_interlock 1
+#endif /* GL_ARB_fragment_shader_interlock */
+
+#ifndef GL_ARB_framebuffer_no_attachments
+#define GL_ARB_framebuffer_no_attachments 1
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+#ifndef GL_ARB_framebuffer_object
+#define GL_ARB_framebuffer_object 1
+#endif /* GL_ARB_framebuffer_object */
+
+#ifndef GL_ARB_framebuffer_sRGB
+#define GL_ARB_framebuffer_sRGB 1
+#endif /* GL_ARB_framebuffer_sRGB */
+
+#ifndef GL_ARB_geometry_shader4
+#define GL_ARB_geometry_shader4 1
+#define GL_LINES_ADJACENCY_ARB 0x000A
+#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
+#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+#endif /* GL_ARB_geometry_shader4 */
+
+#ifndef GL_ARB_get_program_binary
+#define GL_ARB_get_program_binary 1
+#endif /* GL_ARB_get_program_binary */
+
+#ifndef GL_ARB_get_texture_sub_image
+#define GL_ARB_get_texture_sub_image 1
+#endif /* GL_ARB_get_texture_sub_image */
+
+#ifndef GL_ARB_gl_spirv
+#define GL_ARB_gl_spirv 1
+#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+#define GL_SPIR_V_BINARY_ARB 0x9552
+typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+#endif
+#endif /* GL_ARB_gl_spirv */
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_ARB_gpu_shader5 1
+#endif /* GL_ARB_gpu_shader5 */
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+#ifndef GL_ARB_gpu_shader_int64
+#define GL_ARB_gpu_shader_int64 1
+#define GL_INT64_ARB 0x140E
+#define GL_INT64_VEC2_ARB 0x8FE9
+#define GL_INT64_VEC3_ARB 0x8FEA
+#define GL_INT64_VEC4_ARB 0x8FEB
+#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);
+typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);
+typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x);
+GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y);
+GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z);
+GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x);
+GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y);
+GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params);
+GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params);
+GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
+GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
+GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x);
+GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y);
+GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
+GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x);
+GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y);
+GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
+#endif
+#endif /* GL_ARB_gpu_shader_int64 */
+
+#ifndef GL_ARB_half_float_vertex
+#define GL_ARB_half_float_vertex 1
+#endif /* GL_ARB_half_float_vertex */
+
+#ifndef GL_ARB_imaging
+#define GL_ARB_imaging 1
+#endif /* GL_ARB_imaging */
+
+#ifndef GL_ARB_indirect_parameters
+#define GL_ARB_indirect_parameters 1
+#define GL_PARAMETER_BUFFER_ARB 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+#endif
+#endif /* GL_ARB_indirect_parameters */
+
+#ifndef GL_ARB_instanced_arrays
+#define GL_ARB_instanced_arrays 1
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
+#endif
+#endif /* GL_ARB_instanced_arrays */
+
+#ifndef GL_ARB_internalformat_query
+#define GL_ARB_internalformat_query 1
+#endif /* GL_ARB_internalformat_query */
+
+#ifndef GL_ARB_internalformat_query2
+#define GL_ARB_internalformat_query2 1
+#define GL_SRGB_DECODE_ARB 0x8299
+#endif /* GL_ARB_internalformat_query2 */
+
+#ifndef GL_ARB_invalidate_subdata
+#define GL_ARB_invalidate_subdata 1
+#endif /* GL_ARB_invalidate_subdata */
+
+#ifndef GL_ARB_map_buffer_alignment
+#define GL_ARB_map_buffer_alignment 1
+#endif /* GL_ARB_map_buffer_alignment */
+
+#ifndef GL_ARB_map_buffer_range
+#define GL_ARB_map_buffer_range 1
+#endif /* GL_ARB_map_buffer_range */
+
+#ifndef GL_ARB_multi_bind
+#define GL_ARB_multi_bind 1
+#endif /* GL_ARB_multi_bind */
+
+#ifndef GL_ARB_multi_draw_indirect
+#define GL_ARB_multi_draw_indirect 1
+#endif /* GL_ARB_multi_draw_indirect */
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ARB_occlusion_query2 1
+#endif /* GL_ARB_occlusion_query2 */
+
+#ifndef GL_ARB_parallel_shader_compile
+#define GL_ARB_parallel_shader_compile 1
+#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+#define GL_COMPLETION_STATUS_ARB 0x91B1
+typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count);
+#endif
+#endif /* GL_ARB_parallel_shader_compile */
+
+#ifndef GL_ARB_pipeline_statistics_query
+#define GL_ARB_pipeline_statistics_query 1
+#define GL_VERTICES_SUBMITTED_ARB 0x82EE
+#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+#endif /* GL_ARB_pipeline_statistics_query */
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#endif /* GL_ARB_pixel_buffer_object */
+
+#ifndef GL_ARB_polygon_offset_clamp
+#define GL_ARB_polygon_offset_clamp 1
+#endif /* GL_ARB_polygon_offset_clamp */
+
+#ifndef GL_ARB_post_depth_coverage
+#define GL_ARB_post_depth_coverage 1
+#endif /* GL_ARB_post_depth_coverage */
+
+#ifndef GL_ARB_program_interface_query
+#define GL_ARB_program_interface_query 1
+#endif /* GL_ARB_program_interface_query */
+
+#ifndef GL_ARB_provoking_vertex
+#define GL_ARB_provoking_vertex 1
+#endif /* GL_ARB_provoking_vertex */
+
+#ifndef GL_ARB_query_buffer_object
+#define GL_ARB_query_buffer_object 1
+#endif /* GL_ARB_query_buffer_object */
+
+#ifndef GL_ARB_robust_buffer_access_behavior
+#define GL_ARB_robust_buffer_access_behavior 1
+#endif /* GL_ARB_robust_buffer_access_behavior */
+
+#ifndef GL_ARB_robustness
+#define GL_ARB_robustness 1
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
+typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
+typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
+typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
+typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
+GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
+GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
+GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+#endif
+#endif /* GL_ARB_robustness */
+
+#ifndef GL_ARB_robustness_isolation
+#define GL_ARB_robustness_isolation 1
+#endif /* GL_ARB_robustness_isolation */
+
+#ifndef GL_ARB_sample_locations
+#define GL_ARB_sample_locations 1
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+#define GL_SAMPLE_LOCATION_ARB 0x8E50
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glEvaluateDepthValuesARB (void);
+#endif
+#endif /* GL_ARB_sample_locations */
+
+#ifndef GL_ARB_sample_shading
+#define GL_ARB_sample_shading 1
+#define GL_SAMPLE_SHADING_ARB 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
+#endif
+#endif /* GL_ARB_sample_shading */
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+#endif /* GL_ARB_sampler_objects */
+
+#ifndef GL_ARB_seamless_cube_map
+#define GL_ARB_seamless_cube_map 1
+#endif /* GL_ARB_seamless_cube_map */
+
+#ifndef GL_ARB_seamless_cubemap_per_texture
+#define GL_ARB_seamless_cubemap_per_texture 1
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+
+#ifndef GL_ARB_separate_shader_objects
+#define GL_ARB_separate_shader_objects 1
+#endif /* GL_ARB_separate_shader_objects */
+
+#ifndef GL_ARB_shader_atomic_counter_ops
+#define GL_ARB_shader_atomic_counter_ops 1
+#endif /* GL_ARB_shader_atomic_counter_ops */
+
+#ifndef GL_ARB_shader_atomic_counters
+#define GL_ARB_shader_atomic_counters 1
+#endif /* GL_ARB_shader_atomic_counters */
+
+#ifndef GL_ARB_shader_ballot
+#define GL_ARB_shader_ballot 1
+#endif /* GL_ARB_shader_ballot */
+
+#ifndef GL_ARB_shader_bit_encoding
+#define GL_ARB_shader_bit_encoding 1
+#endif /* GL_ARB_shader_bit_encoding */
+
+#ifndef GL_ARB_shader_clock
+#define GL_ARB_shader_clock 1
+#endif /* GL_ARB_shader_clock */
+
+#ifndef GL_ARB_shader_draw_parameters
+#define GL_ARB_shader_draw_parameters 1
+#endif /* GL_ARB_shader_draw_parameters */
+
+#ifndef GL_ARB_shader_group_vote
+#define GL_ARB_shader_group_vote 1
+#endif /* GL_ARB_shader_group_vote */
+
+#ifndef GL_ARB_shader_image_load_store
+#define GL_ARB_shader_image_load_store 1
+#endif /* GL_ARB_shader_image_load_store */
+
+#ifndef GL_ARB_shader_image_size
+#define GL_ARB_shader_image_size 1
+#endif /* GL_ARB_shader_image_size */
+
+#ifndef GL_ARB_shader_precision
+#define GL_ARB_shader_precision 1
+#endif /* GL_ARB_shader_precision */
+
+#ifndef GL_ARB_shader_stencil_export
+#define GL_ARB_shader_stencil_export 1
+#endif /* GL_ARB_shader_stencil_export */
+
+#ifndef GL_ARB_shader_storage_buffer_object
+#define GL_ARB_shader_storage_buffer_object 1
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+#endif /* GL_ARB_shader_subroutine */
+
+#ifndef GL_ARB_shader_texture_image_samples
+#define GL_ARB_shader_texture_image_samples 1
+#endif /* GL_ARB_shader_texture_image_samples */
+
+#ifndef GL_ARB_shader_viewport_layer_array
+#define GL_ARB_shader_viewport_layer_array 1
+#endif /* GL_ARB_shader_viewport_layer_array */
+
+#ifndef GL_ARB_shading_language_420pack
+#define GL_ARB_shading_language_420pack 1
+#endif /* GL_ARB_shading_language_420pack */
+
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
+GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif
+#endif /* GL_ARB_shading_language_include */
+
+#ifndef GL_ARB_shading_language_packing
+#define GL_ARB_shading_language_packing 1
+#endif /* GL_ARB_shading_language_packing */
+
+#ifndef GL_ARB_sparse_buffer
+#define GL_ARB_sparse_buffer 1
+#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
+#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+GLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+GLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+#endif
+#endif /* GL_ARB_sparse_buffer */
+
+#ifndef GL_ARB_sparse_texture
+#define GL_ARB_sparse_texture 1
+#define GL_TEXTURE_SPARSE_ARB 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+#endif
+#endif /* GL_ARB_sparse_texture */
+
+#ifndef GL_ARB_sparse_texture2
+#define GL_ARB_sparse_texture2 1
+#endif /* GL_ARB_sparse_texture2 */
+
+#ifndef GL_ARB_sparse_texture_clamp
+#define GL_ARB_sparse_texture_clamp 1
+#endif /* GL_ARB_sparse_texture_clamp */
+
+#ifndef GL_ARB_spirv_extensions
+#define GL_ARB_spirv_extensions 1
+#endif /* GL_ARB_spirv_extensions */
+
+#ifndef GL_ARB_stencil_texturing
+#define GL_ARB_stencil_texturing 1
+#endif /* GL_ARB_stencil_texturing */
+
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+#endif /* GL_ARB_sync */
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+#endif /* GL_ARB_tessellation_shader */
+
+#ifndef GL_ARB_texture_barrier
+#define GL_ARB_texture_barrier 1
+#endif /* GL_ARB_texture_barrier */
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+#endif /* GL_ARB_texture_border_clamp */
+
+#ifndef GL_ARB_texture_buffer_object
+#define GL_ARB_texture_buffer_object 1
+#define GL_TEXTURE_BUFFER_ARB 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
+#endif
+#endif /* GL_ARB_texture_buffer_object */
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+#define GL_ARB_texture_buffer_object_rgb32 1
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
+#ifndef GL_ARB_texture_buffer_range
+#define GL_ARB_texture_buffer_range 1
+#endif /* GL_ARB_texture_buffer_range */
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_ARB_texture_compression_bptc 1
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+#endif /* GL_ARB_texture_compression_bptc */
+
+#ifndef GL_ARB_texture_compression_rgtc
+#define GL_ARB_texture_compression_rgtc 1
+#endif /* GL_ARB_texture_compression_rgtc */
+
+#ifndef GL_ARB_texture_cube_map_array
+#define GL_ARB_texture_cube_map_array 1
+#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
+#endif /* GL_ARB_texture_cube_map_array */
+
+#ifndef GL_ARB_texture_filter_anisotropic
+#define GL_ARB_texture_filter_anisotropic 1
+#endif /* GL_ARB_texture_filter_anisotropic */
+
+#ifndef GL_ARB_texture_filter_minmax
+#define GL_ARB_texture_filter_minmax 1
+#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+#define GL_WEIGHTED_AVERAGE_ARB 0x9367
+#endif /* GL_ARB_texture_filter_minmax */
+
+#ifndef GL_ARB_texture_gather
+#define GL_ARB_texture_gather 1
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
+#endif /* GL_ARB_texture_gather */
+
+#ifndef GL_ARB_texture_mirror_clamp_to_edge
+#define GL_ARB_texture_mirror_clamp_to_edge 1
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+#endif /* GL_ARB_texture_mirrored_repeat */
+
+#ifndef GL_ARB_texture_multisample
+#define GL_ARB_texture_multisample 1
+#endif /* GL_ARB_texture_multisample */
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+#endif /* GL_ARB_texture_non_power_of_two */
+
+#ifndef GL_ARB_texture_query_levels
+#define GL_ARB_texture_query_levels 1
+#endif /* GL_ARB_texture_query_levels */
+
+#ifndef GL_ARB_texture_query_lod
+#define GL_ARB_texture_query_lod 1
+#endif /* GL_ARB_texture_query_lod */
+
+#ifndef GL_ARB_texture_rg
+#define GL_ARB_texture_rg 1
+#endif /* GL_ARB_texture_rg */
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_ARB_texture_rgb10_a2ui 1
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+#ifndef GL_ARB_texture_stencil8
+#define GL_ARB_texture_stencil8 1
+#endif /* GL_ARB_texture_stencil8 */
+
+#ifndef GL_ARB_texture_storage
+#define GL_ARB_texture_storage 1
+#endif /* GL_ARB_texture_storage */
+
+#ifndef GL_ARB_texture_storage_multisample
+#define GL_ARB_texture_storage_multisample 1
+#endif /* GL_ARB_texture_storage_multisample */
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_ARB_texture_swizzle 1
+#endif /* GL_ARB_texture_swizzle */
+
+#ifndef GL_ARB_texture_view
+#define GL_ARB_texture_view 1
+#endif /* GL_ARB_texture_view */
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+#endif /* GL_ARB_timer_query */
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+#endif /* GL_ARB_transform_feedback3 */
+
+#ifndef GL_ARB_transform_feedback_instanced
+#define GL_ARB_transform_feedback_instanced 1
+#endif /* GL_ARB_transform_feedback_instanced */
+
+#ifndef GL_ARB_transform_feedback_overflow_query
+#define GL_ARB_transform_feedback_overflow_query 1
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
+#endif /* GL_ARB_transform_feedback_overflow_query */
+
+#ifndef GL_ARB_uniform_buffer_object
+#define GL_ARB_uniform_buffer_object 1
+#endif /* GL_ARB_uniform_buffer_object */
+
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_ARB_vertex_array_bgra 1
+#endif /* GL_ARB_vertex_array_bgra */
+
+#ifndef GL_ARB_vertex_array_object
+#define GL_ARB_vertex_array_object 1
+#endif /* GL_ARB_vertex_array_object */
+
+#ifndef GL_ARB_vertex_attrib_64bit
+#define GL_ARB_vertex_attrib_64bit 1
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+#ifndef GL_ARB_vertex_attrib_binding
+#define GL_ARB_vertex_attrib_binding 1
+#endif /* GL_ARB_vertex_attrib_binding */
+
+#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
+#define GL_ARB_vertex_type_10f_11f_11f_rev 1
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+#ifndef GL_ARB_viewport_array
+#define GL_ARB_viewport_array 1
+#endif /* GL_ARB_viewport_array */
+
+#ifndef GL_KHR_blend_equation_advanced
+#define GL_KHR_blend_equation_advanced 1
+#define GL_MULTIPLY_KHR 0x9294
+#define GL_SCREEN_KHR 0x9295
+#define GL_OVERLAY_KHR 0x9296
+#define GL_DARKEN_KHR 0x9297
+#define GL_LIGHTEN_KHR 0x9298
+#define GL_COLORDODGE_KHR 0x9299
+#define GL_COLORBURN_KHR 0x929A
+#define GL_HARDLIGHT_KHR 0x929B
+#define GL_SOFTLIGHT_KHR 0x929C
+#define GL_DIFFERENCE_KHR 0x929E
+#define GL_EXCLUSION_KHR 0x92A0
+#define GL_HSL_HUE_KHR 0x92AD
+#define GL_HSL_SATURATION_KHR 0x92AE
+#define GL_HSL_COLOR_KHR 0x92AF
+#define GL_HSL_LUMINOSITY_KHR 0x92B0
+typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendBarrierKHR (void);
+#endif
+#endif /* GL_KHR_blend_equation_advanced */
+
+#ifndef GL_KHR_blend_equation_advanced_coherent
+#define GL_KHR_blend_equation_advanced_coherent 1
+#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+
+#ifndef GL_KHR_context_flush_control
+#define GL_KHR_context_flush_control 1
+#endif /* GL_KHR_context_flush_control */
+
+#ifndef GL_KHR_debug
+#define GL_KHR_debug 1
+#endif /* GL_KHR_debug */
+
+#ifndef GL_KHR_no_error
+#define GL_KHR_no_error 1
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
+#endif /* GL_KHR_no_error */
+
+#ifndef GL_KHR_parallel_shader_compile
+#define GL_KHR_parallel_shader_compile 1
+#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+#define GL_COMPLETION_STATUS_KHR 0x91B1
+typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);
+#endif
+#endif /* GL_KHR_parallel_shader_compile */
+
+#ifndef GL_KHR_robust_buffer_access_behavior
+#define GL_KHR_robust_buffer_access_behavior 1
+#endif /* GL_KHR_robust_buffer_access_behavior */
+
+#ifndef GL_KHR_robustness
+#define GL_KHR_robustness 1
+#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
+#endif /* GL_KHR_robustness */
+
+#ifndef GL_KHR_texture_compression_astc_hdr
+#define GL_KHR_texture_compression_astc_hdr 1
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#endif /* GL_KHR_texture_compression_astc_hdr */
+
+#ifndef GL_KHR_texture_compression_astc_ldr
+#define GL_KHR_texture_compression_astc_ldr 1
+#endif /* GL_KHR_texture_compression_astc_ldr */
+
+#ifndef GL_KHR_texture_compression_astc_sliced_3d
+#define GL_KHR_texture_compression_astc_sliced_3d 1
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+
+#ifndef GL_AMD_performance_monitor
+#define GL_AMD_performance_monitor 1
+#define GL_COUNTER_TYPE_AMD 0x8BC0
+#define GL_COUNTER_RANGE_AMD 0x8BC1
+#define GL_UNSIGNED_INT64_AMD 0x8BC2
+#define GL_PERCENTAGE_AMD 0x8BC3
+#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+#define GL_PERFMON_RESULT_AMD 0x8BC6
+typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
+typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
+typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
+typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
+GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
+#endif
+#endif /* GL_AMD_performance_monitor */
+
+#ifndef GL_APPLE_rgb_422
+#define GL_APPLE_rgb_422 1
+#define GL_RGB_422_APPLE 0x8A1F
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#define GL_RGB_RAW_422_APPLE 0x8A51
+#endif /* GL_APPLE_rgb_422 */
+
+#ifndef GL_EXT_EGL_image_storage
+#define GL_EXT_EGL_image_storage 1
+typedef void *GLeglImageOES;
+typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
+typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);
+GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+#endif
+#endif /* GL_EXT_EGL_image_storage */
+
+#ifndef GL_EXT_debug_label
+#define GL_EXT_debug_label 1
+#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+#define GL_PROGRAM_OBJECT_EXT 0x8B40
+#define GL_SHADER_OBJECT_EXT 0x8B48
+#define GL_BUFFER_OBJECT_EXT 0x9151
+#define GL_QUERY_OBJECT_EXT 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
+typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
+GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
+#endif
+#endif /* GL_EXT_debug_label */
+
+#ifndef GL_EXT_debug_marker
+#define GL_EXT_debug_marker 1
+typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
+typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
+typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
+GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
+GLAPI void APIENTRY glPopGroupMarkerEXT (void);
+#endif
+#endif /* GL_EXT_debug_marker */
+
+#ifndef GL_EXT_direct_state_access
+#define GL_EXT_direct_state_access 1
+#define GL_PROGRAM_MATRIX_EXT 0x8E2D
+#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
+typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
+typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
+typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
+typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
+typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
+GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
+GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
+GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
+GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
+GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
+GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
+GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
+GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
+GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
+GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
+GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
+GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
+GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
+GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
+GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
+GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
+GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
+GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
+GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
+GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
+GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
+GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
+GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
+#endif
+#endif /* GL_EXT_direct_state_access */
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+#endif
+#endif /* GL_EXT_draw_instanced */
+
+#ifndef GL_EXT_polygon_offset_clamp
+#define GL_EXT_polygon_offset_clamp 1
+#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
+#endif
+#endif /* GL_EXT_polygon_offset_clamp */
+
+#ifndef GL_EXT_post_depth_coverage
+#define GL_EXT_post_depth_coverage 1
+#endif /* GL_EXT_post_depth_coverage */
+
+#ifndef GL_EXT_raster_multisample
+#define GL_EXT_raster_multisample 1
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);
+#endif
+#endif /* GL_EXT_raster_multisample */
+
+#ifndef GL_EXT_separate_shader_objects
+#define GL_EXT_separate_shader_objects 1
+#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
+typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
+typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
+GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
+#endif
+#endif /* GL_EXT_separate_shader_objects */
+
+#ifndef GL_EXT_shader_framebuffer_fetch
+#define GL_EXT_shader_framebuffer_fetch 1
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
+#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
+typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void);
+#endif
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+
+#ifndef GL_EXT_shader_integer_mix
+#define GL_EXT_shader_integer_mix 1
+#endif /* GL_EXT_shader_integer_mix */
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_EXT_texture_compression_s3tc 1
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+#endif /* GL_EXT_texture_compression_s3tc */
+
+#ifndef GL_EXT_texture_filter_minmax
+#define GL_EXT_texture_filter_minmax 1
+#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+#define GL_WEIGHTED_AVERAGE_EXT 0x9367
+#endif /* GL_EXT_texture_filter_minmax */
+
+#ifndef GL_EXT_texture_sRGB_decode
+#define GL_EXT_texture_sRGB_decode 1
+#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+#define GL_DECODE_EXT 0x8A49
+#define GL_SKIP_DECODE_EXT 0x8A4A
+#endif /* GL_EXT_texture_sRGB_decode */
+
+#ifndef GL_EXT_window_rectangles
+#define GL_EXT_window_rectangles 1
+#define GL_INCLUSIVE_EXT 0x8F10
+#define GL_EXCLUSIVE_EXT 0x8F11
+#define GL_WINDOW_RECTANGLE_EXT 0x8F12
+#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
+#endif
+#endif /* GL_EXT_window_rectangles */
+
+#ifndef GL_INTEL_blackhole_render
+#define GL_INTEL_blackhole_render 1
+#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
+#endif /* GL_INTEL_blackhole_render */
+
+#ifndef GL_INTEL_conservative_rasterization
+#define GL_INTEL_conservative_rasterization 1
+#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
+#endif /* GL_INTEL_conservative_rasterization */
+
+#ifndef GL_INTEL_framebuffer_CMAA
+#define GL_INTEL_framebuffer_CMAA 1
+typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);
+#endif
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+#ifndef GL_INTEL_performance_query
+#define GL_INTEL_performance_query 1
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
+typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
+typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
+typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
+GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
+GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
+GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
+GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
+GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#endif
+#endif /* GL_INTEL_performance_query */
+
+#ifndef GL_NV_bindless_multi_draw_indirect
+#define GL_NV_bindless_multi_draw_indirect 1
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+#endif
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+#ifndef GL_NV_bindless_multi_draw_indirect_count
+#define GL_NV_bindless_multi_draw_indirect_count 1
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+#endif
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+#ifndef GL_NV_bindless_texture
+#define GL_NV_bindless_texture 1
+typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
+typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
+typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
+typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
+typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
+GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
+GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
+GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
+GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
+GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
+GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
+GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
+GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
+GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
+GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
+GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
+#endif
+#endif /* GL_NV_bindless_texture */
+
+#ifndef GL_NV_blend_equation_advanced
+#define GL_NV_blend_equation_advanced 1
+#define GL_BLEND_OVERLAP_NV 0x9281
+#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+#define GL_BLUE_NV 0x1905
+#define GL_COLORBURN_NV 0x929A
+#define GL_COLORDODGE_NV 0x9299
+#define GL_CONJOINT_NV 0x9284
+#define GL_CONTRAST_NV 0x92A1
+#define GL_DARKEN_NV 0x9297
+#define GL_DIFFERENCE_NV 0x929E
+#define GL_DISJOINT_NV 0x9283
+#define GL_DST_ATOP_NV 0x928F
+#define GL_DST_IN_NV 0x928B
+#define GL_DST_NV 0x9287
+#define GL_DST_OUT_NV 0x928D
+#define GL_DST_OVER_NV 0x9289
+#define GL_EXCLUSION_NV 0x92A0
+#define GL_GREEN_NV 0x1904
+#define GL_HARDLIGHT_NV 0x929B
+#define GL_HARDMIX_NV 0x92A9
+#define GL_HSL_COLOR_NV 0x92AF
+#define GL_HSL_HUE_NV 0x92AD
+#define GL_HSL_LUMINOSITY_NV 0x92B0
+#define GL_HSL_SATURATION_NV 0x92AE
+#define GL_INVERT_OVG_NV 0x92B4
+#define GL_INVERT_RGB_NV 0x92A3
+#define GL_LIGHTEN_NV 0x9298
+#define GL_LINEARBURN_NV 0x92A5
+#define GL_LINEARDODGE_NV 0x92A4
+#define GL_LINEARLIGHT_NV 0x92A7
+#define GL_MINUS_CLAMPED_NV 0x92B3
+#define GL_MINUS_NV 0x929F
+#define GL_MULTIPLY_NV 0x9294
+#define GL_OVERLAY_NV 0x9296
+#define GL_PINLIGHT_NV 0x92A8
+#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+#define GL_PLUS_CLAMPED_NV 0x92B1
+#define GL_PLUS_DARKER_NV 0x9292
+#define GL_PLUS_NV 0x9291
+#define GL_RED_NV 0x1903
+#define GL_SCREEN_NV 0x9295
+#define GL_SOFTLIGHT_NV 0x929C
+#define GL_SRC_ATOP_NV 0x928E
+#define GL_SRC_IN_NV 0x928A
+#define GL_SRC_NV 0x9286
+#define GL_SRC_OUT_NV 0x928C
+#define GL_SRC_OVER_NV 0x9288
+#define GL_UNCORRELATED_NV 0x9282
+#define GL_VIVIDLIGHT_NV 0x92A6
+#define GL_XOR_NV 0x1506
+typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
+GLAPI void APIENTRY glBlendBarrierNV (void);
+#endif
+#endif /* GL_NV_blend_equation_advanced */
+
+#ifndef GL_NV_blend_equation_advanced_coherent
+#define GL_NV_blend_equation_advanced_coherent 1
+#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+#endif /* GL_NV_blend_equation_advanced_coherent */
+
+#ifndef GL_NV_blend_minmax_factor
+#define GL_NV_blend_minmax_factor 1
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+#endif /* GL_NV_blend_minmax_factor */
+
+#ifndef GL_NV_clip_space_w_scaling
+#define GL_NV_clip_space_w_scaling 1
+#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+#endif
+#endif /* GL_NV_clip_space_w_scaling */
+
+#ifndef GL_NV_command_list
+#define GL_NV_command_list 1
+#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+#define GL_NOP_COMMAND_NV 0x0001
+#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A
+#define GL_BLEND_COLOR_COMMAND_NV 0x000B
+#define GL_STENCIL_REF_COMMAND_NV 0x000C
+#define GL_LINE_WIDTH_COMMAND_NV 0x000D
+#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E
+#define GL_ALPHA_REF_COMMAND_NV 0x000F
+#define GL_VIEWPORT_COMMAND_NV 0x0010
+#define GL_SCISSOR_COMMAND_NV 0x0011
+#define GL_FRONT_FACE_COMMAND_NV 0x0012
+typedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states);
+typedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states);
+typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state);
+typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);
+typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);
+typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);
+typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
+typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
+typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists);
+typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists);
+typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list);
+typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);
+typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);
+typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states);
+GLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states);
+GLAPI GLboolean APIENTRY glIsStateNV (GLuint state);
+GLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode);
+GLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size);
+GLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype);
+GLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
+GLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
+GLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+GLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+GLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists);
+GLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists);
+GLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list);
+GLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
+GLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments);
+GLAPI void APIENTRY glCompileCommandListNV (GLuint list);
+GLAPI void APIENTRY glCallCommandListNV (GLuint list);
+#endif
+#endif /* GL_NV_command_list */
+
+#ifndef GL_NV_conditional_render
+#define GL_NV_conditional_render 1
+#define GL_QUERY_WAIT_NV 0x8E13
+#define GL_QUERY_NO_WAIT_NV 0x8E14
+#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
+GLAPI void APIENTRY glEndConditionalRenderNV (void);
+#endif
+#endif /* GL_NV_conditional_render */
+
+#ifndef GL_NV_conservative_raster
+#define GL_NV_conservative_raster 1
+#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);
+#endif
+#endif /* GL_NV_conservative_raster */
+
+#ifndef GL_NV_conservative_raster_dilate
+#define GL_NV_conservative_raster_dilate 1
+#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value);
+#endif
+#endif /* GL_NV_conservative_raster_dilate */
+
+#ifndef GL_NV_conservative_raster_pre_snap
+#define GL_NV_conservative_raster_pre_snap 1
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
+#endif /* GL_NV_conservative_raster_pre_snap */
+
+#ifndef GL_NV_conservative_raster_pre_snap_triangles
+#define GL_NV_conservative_raster_pre_snap_triangles 1
+#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
+#endif
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+#ifndef GL_NV_conservative_raster_underestimation
+#define GL_NV_conservative_raster_underestimation 1
+#endif /* GL_NV_conservative_raster_underestimation */
+
+#ifndef GL_NV_draw_vulkan_image
+#define GL_NV_draw_vulkan_image 1
+typedef void (APIENTRY *GLVULKANPROCNV)(void);
+typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);
+typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name);
+GLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);
+GLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);
+GLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence);
+#endif
+#endif /* GL_NV_draw_vulkan_image */
+
+#ifndef GL_NV_fill_rectangle
+#define GL_NV_fill_rectangle 1
+#define GL_FILL_RECTANGLE_NV 0x933C
+#endif /* GL_NV_fill_rectangle */
+
+#ifndef GL_NV_fragment_coverage_to_color
+#define GL_NV_fragment_coverage_to_color 1
+#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color);
+#endif
+#endif /* GL_NV_fragment_coverage_to_color */
+
+#ifndef GL_NV_fragment_shader_interlock
+#define GL_NV_fragment_shader_interlock 1
+#endif /* GL_NV_fragment_shader_interlock */
+
+#ifndef GL_NV_framebuffer_mixed_samples
+#define GL_NV_framebuffer_mixed_samples 1
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat *v);
+typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);
+GLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat *v);
+GLAPI void APIENTRY glCoverageModulationNV (GLenum components);
+#endif
+#endif /* GL_NV_framebuffer_mixed_samples */
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+#ifndef GL_NV_geometry_shader_passthrough
+#define GL_NV_geometry_shader_passthrough 1
+#endif /* GL_NV_geometry_shader_passthrough */
+
+#ifndef GL_NV_gpu_shader5
+#define GL_NV_gpu_shader5 1
+typedef int64_t GLint64EXT;
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
+typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
+GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
+GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
+GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
+GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
+GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif
+#endif /* GL_NV_gpu_shader5 */
+
+#ifndef GL_NV_internalformat_sample_query
+#define GL_NV_internalformat_sample_query 1
+#define GL_MULTISAMPLES_NV 0x9371
+#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+#define GL_CONFORMANT_NV 0x9374
+typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params);
+#endif
+#endif /* GL_NV_internalformat_sample_query */
+
+#ifndef GL_NV_path_rendering
+#define GL_NV_path_rendering 1
+#define GL_PATH_FORMAT_SVG_NV 0x9070
+#define GL_PATH_FORMAT_PS_NV 0x9071
+#define GL_STANDARD_FONT_NAME_NV 0x9072
+#define GL_SYSTEM_FONT_NAME_NV 0x9073
+#define GL_FILE_NAME_NV 0x9074
+#define GL_PATH_STROKE_WIDTH_NV 0x9075
+#define GL_PATH_END_CAPS_NV 0x9076
+#define GL_PATH_INITIAL_END_CAP_NV 0x9077
+#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
+#define GL_PATH_JOIN_STYLE_NV 0x9079
+#define GL_PATH_MITER_LIMIT_NV 0x907A
+#define GL_PATH_DASH_CAPS_NV 0x907B
+#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+#define GL_PATH_DASH_OFFSET_NV 0x907E
+#define GL_PATH_CLIENT_LENGTH_NV 0x907F
+#define GL_PATH_FILL_MODE_NV 0x9080
+#define GL_PATH_FILL_MASK_NV 0x9081
+#define GL_PATH_FILL_COVER_MODE_NV 0x9082
+#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
+#define GL_PATH_STROKE_MASK_NV 0x9084
+#define GL_COUNT_UP_NV 0x9088
+#define GL_COUNT_DOWN_NV 0x9089
+#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+#define GL_CONVEX_HULL_NV 0x908B
+#define GL_BOUNDING_BOX_NV 0x908D
+#define GL_TRANSLATE_X_NV 0x908E
+#define GL_TRANSLATE_Y_NV 0x908F
+#define GL_TRANSLATE_2D_NV 0x9090
+#define GL_TRANSLATE_3D_NV 0x9091
+#define GL_AFFINE_2D_NV 0x9092
+#define GL_AFFINE_3D_NV 0x9094
+#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+#define GL_UTF8_NV 0x909A
+#define GL_UTF16_NV 0x909B
+#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+#define GL_PATH_COMMAND_COUNT_NV 0x909D
+#define GL_PATH_COORD_COUNT_NV 0x909E
+#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+#define GL_SQUARE_NV 0x90A3
+#define GL_ROUND_NV 0x90A4
+#define GL_TRIANGULAR_NV 0x90A5
+#define GL_BEVEL_NV 0x90A6
+#define GL_MITER_REVERT_NV 0x90A7
+#define GL_MITER_TRUNCATE_NV 0x90A8
+#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
+#define GL_USE_MISSING_GLYPH_NV 0x90AA
+#define GL_PATH_ERROR_POSITION_NV 0x90AB
+#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+#define GL_ADJACENT_PAIRS_NV 0x90AE
+#define GL_FIRST_TO_REST_NV 0x90AF
+#define GL_PATH_GEN_MODE_NV 0x90B0
+#define GL_PATH_GEN_COEFF_NV 0x90B1
+#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
+#define GL_PATH_STENCIL_FUNC_NV 0x90B7
+#define GL_PATH_STENCIL_REF_NV 0x90B8
+#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+#define GL_MOVE_TO_RESETS_NV 0x90B5
+#define GL_MOVE_TO_CONTINUES_NV 0x90B6
+#define GL_CLOSE_PATH_NV 0x00
+#define GL_MOVE_TO_NV 0x02
+#define GL_RELATIVE_MOVE_TO_NV 0x03
+#define GL_LINE_TO_NV 0x04
+#define GL_RELATIVE_LINE_TO_NV 0x05
+#define GL_HORIZONTAL_LINE_TO_NV 0x06
+#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+#define GL_VERTICAL_LINE_TO_NV 0x08
+#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+#define GL_QUADRATIC_CURVE_TO_NV 0x0A
+#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+#define GL_CUBIC_CURVE_TO_NV 0x0C
+#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+#define GL_SMALL_CCW_ARC_TO_NV 0x12
+#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+#define GL_SMALL_CW_ARC_TO_NV 0x14
+#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+#define GL_LARGE_CCW_ARC_TO_NV 0x16
+#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+#define GL_LARGE_CW_ARC_TO_NV 0x18
+#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+#define GL_RESTART_PATH_NV 0xF0
+#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+#define GL_RECT_NV 0xF6
+#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+#define GL_ARC_TO_NV 0xFE
+#define GL_RELATIVE_ARC_TO_NV 0xFF
+#define GL_BOLD_BIT_NV 0x01
+#define GL_ITALIC_BIT_NV 0x02
+#define GL_GLYPH_WIDTH_BIT_NV 0x01
+#define GL_GLYPH_HEIGHT_BIT_NV 0x02
+#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+#define GL_FONT_ASCENDER_BIT_NV 0x00200000
+#define GL_FONT_DESCENDER_BIT_NV 0x00400000
+#define GL_FONT_HEIGHT_BIT_NV 0x00800000
+#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+#define GL_ROUNDED_RECT_NV 0xE8
+#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+#define GL_ROUNDED_RECT2_NV 0xEA
+#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+#define GL_ROUNDED_RECT4_NV 0xEC
+#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+#define GL_ROUNDED_RECT8_NV 0xEE
+#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+#define GL_RELATIVE_RECT_NV 0xF7
+#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+#define GL_FONT_UNAVAILABLE_NV 0x936A
+#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
+#define GL_CONIC_CURVE_TO_NV 0x1A
+#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+#define GL_STANDARD_FONT_FORMAT_NV 0x936C
+#define GL_PATH_PROJECTION_NV 0x1701
+#define GL_PATH_MODELVIEW_NV 0x1700
+#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3
+#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6
+#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
+#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
+#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
+#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7
+#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
+#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
+#define GL_FRAGMENT_INPUT_NV 0x936D
+typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
+typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
+typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
+typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
+typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
+typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
+typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
+typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
+typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
+typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
+typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
+typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
+typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
+typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
+typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
+typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
+typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
+typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
+typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
+typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
+typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
+typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
+typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
+typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
+typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
+typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
+GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
+GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
+GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
+GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
+GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
+GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
+GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
+GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
+GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
+GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
+GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
+GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
+GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
+GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
+GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
+GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
+GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
+GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
+GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
+GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
+GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
+GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
+GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
+GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
+GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
+GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
+GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
+GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
+GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
+GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
+GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
+GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
+GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
+GLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
+GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
+GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
+GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params);
+#endif
+#endif /* GL_NV_path_rendering */
+
+#ifndef GL_NV_path_rendering_shared_edge
+#define GL_NV_path_rendering_shared_edge 1
+#define GL_SHARED_EDGE_NV 0xC0
+#endif /* GL_NV_path_rendering_shared_edge */
+
+#ifndef GL_NV_sample_locations
+#define GL_NV_sample_locations 1
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+#define GL_SAMPLE_LOCATION_NV 0x8E50
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glResolveDepthValuesNV (void);
+#endif
+#endif /* GL_NV_sample_locations */
+
+#ifndef GL_NV_sample_mask_override_coverage
+#define GL_NV_sample_mask_override_coverage 1
+#endif /* GL_NV_sample_mask_override_coverage */
+
+#ifndef GL_NV_shader_atomic_counters
+#define GL_NV_shader_atomic_counters 1
+#endif /* GL_NV_shader_atomic_counters */
+
+#ifndef GL_NV_shader_atomic_float
+#define GL_NV_shader_atomic_float 1
+#endif /* GL_NV_shader_atomic_float */
+
+#ifndef GL_NV_shader_atomic_float64
+#define GL_NV_shader_atomic_float64 1
+#endif /* GL_NV_shader_atomic_float64 */
+
+#ifndef GL_NV_shader_atomic_fp16_vector
+#define GL_NV_shader_atomic_fp16_vector 1
+#endif /* GL_NV_shader_atomic_fp16_vector */
+
+#ifndef GL_NV_shader_atomic_int64
+#define GL_NV_shader_atomic_int64 1
+#endif /* GL_NV_shader_atomic_int64 */
+
+#ifndef GL_NV_shader_buffer_load
+#define GL_NV_shader_buffer_load 1
+#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+#define GL_GPU_ADDRESS_NV 0x8F34
+#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
+typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
+typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
+typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
+GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
+GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
+GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
+GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
+GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
+GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
+GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
+GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif
+#endif /* GL_NV_shader_buffer_load */
+
+#ifndef GL_NV_shader_buffer_store
+#define GL_NV_shader_buffer_store 1
+#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
+#endif /* GL_NV_shader_buffer_store */
+
+#ifndef GL_NV_shader_thread_group
+#define GL_NV_shader_thread_group 1
+#define GL_WARP_SIZE_NV 0x9339
+#define GL_WARPS_PER_SM_NV 0x933A
+#define GL_SM_COUNT_NV 0x933B
+#endif /* GL_NV_shader_thread_group */
+
+#ifndef GL_NV_shader_thread_shuffle
+#define GL_NV_shader_thread_shuffle 1
+#endif /* GL_NV_shader_thread_shuffle */
+
+#ifndef GL_NV_stereo_view_rendering
+#define GL_NV_stereo_view_rendering 1
+#endif /* GL_NV_stereo_view_rendering */
+
+#ifndef GL_NV_texture_barrier
+#define GL_NV_texture_barrier 1
+typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureBarrierNV (void);
+#endif
+#endif /* GL_NV_texture_barrier */
+
+#ifndef GL_NV_texture_rectangle_compressed
+#define GL_NV_texture_rectangle_compressed 1
+#endif /* GL_NV_texture_rectangle_compressed */
+
+#ifndef GL_NV_uniform_buffer_unified_memory
+#define GL_NV_uniform_buffer_unified_memory 1
+#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
+#endif /* GL_NV_uniform_buffer_unified_memory */
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+#define GL_NV_vertex_attrib_integer_64bit 1
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
+GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
+GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+#endif
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+#ifndef GL_NV_vertex_buffer_unified_memory
+#define GL_NV_vertex_buffer_unified_memory 1
+#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
+GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
+#endif
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+#ifndef GL_NV_viewport_array2
+#define GL_NV_viewport_array2 1
+#endif /* GL_NV_viewport_array2 */
+
+#ifndef GL_NV_viewport_swizzle
+#define GL_NV_viewport_swizzle 1
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+#endif
+#endif /* GL_NV_viewport_swizzle */
+
+#ifndef GL_OVR_multiview
+#define GL_OVR_multiview 1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+#define GL_MAX_VIEWS_OVR 0x9631
+#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+#endif
+#endif /* GL_OVR_multiview */
+
+#ifndef GL_OVR_multiview2
+#define GL_OVR_multiview2 1
+#endif /* GL_OVR_multiview2 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/simulation/gl3w/gl3w.c b/simulation/gl3w/gl3w.c
index 4e092ec..320587c 100644
--- a/simulation/gl3w/gl3w.c
+++ b/simulation/gl3w/gl3w.c
@@ -1,841 +1,841 @@
-/*
-
- This file was generated with gl3w_gen.py, part of gl3w
- (hosted at https://github.com/skaslev/gl3w)
-
- This is free and unencumbered software released into the public domain.
-
- Anyone is free to copy, modify, publish, use, compile, sell, or
- distribute this software, either in source code form or as a compiled
- binary, for any purpose, commercial or non-commercial, and by any
- means.
-
- In jurisdictions that recognize copyright laws, the author or authors
- of this software dedicate any and all copyright interest in the
- software to the public domain. We make this dedication for the benefit
- of the public at large and to the detriment of our heirs and
- successors. We intend this dedication to be an overt act of
- relinquishment in perpetuity of all present and future rights to this
- software under copyright law.
-
- 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 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.
-
-*/
-
-#include
-#include
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-#if defined(_WIN32)
-#define WIN32_LEAN_AND_MEAN 1
-#include
-
-static HMODULE libgl;
-static PROC (__stdcall *wgl_get_proc_address)(LPCSTR);
-
-static int open_libgl(void)
-{
- libgl = LoadLibraryA("opengl32.dll");
- if (!libgl)
- return GL3W_ERROR_LIBRARY_OPEN;
-
- *(void **)(&wgl_get_proc_address) = GetProcAddress(libgl, "wglGetProcAddress");
- return GL3W_OK;
-}
-
-static void close_libgl(void)
-{
- FreeLibrary(libgl);
-}
-
-static GL3WglProc get_proc(const char *proc)
-{
- GL3WglProc res;
-
- res = (GL3WglProc)wgl_get_proc_address(proc);
- if (!res)
- res = (GL3WglProc)GetProcAddress(libgl, proc);
- return res;
-}
-#elif defined(__APPLE__)
-#include
-
-static void *libgl;
-
-static int open_libgl(void)
-{
- libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
- if (!libgl)
- return GL3W_ERROR_LIBRARY_OPEN;
-
- return GL3W_OK;
-}
-
-static void close_libgl(void)
-{
- dlclose(libgl);
-}
-
-static GL3WglProc get_proc(const char *proc)
-{
- GL3WglProc res;
-
- *(void **)(&res) = dlsym(libgl, proc);
- return res;
-}
-#else
-#include
-
-static void *libgl;
-static GL3WglProc (*glx_get_proc_address)(const GLubyte *);
-
-static int open_libgl(void)
-{
- libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
- if (!libgl)
- return GL3W_ERROR_LIBRARY_OPEN;
-
- *(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
- return GL3W_OK;
-}
-
-static void close_libgl(void)
-{
- dlclose(libgl);
-}
-
-static GL3WglProc get_proc(const char *proc)
-{
- GL3WglProc res;
-
- res = glx_get_proc_address((const GLubyte *)proc);
- if (!res)
- *(void **)(&res) = dlsym(libgl, proc);
- return res;
-}
-#endif
-
-static struct {
- int major, minor;
-} version;
-
-static int parse_version(void)
-{
- if (!glGetIntegerv)
- return GL3W_ERROR_INIT;
-
- glGetIntegerv(GL_MAJOR_VERSION, &version.major);
- glGetIntegerv(GL_MINOR_VERSION, &version.minor);
-
- if (version.major < 3)
- return GL3W_ERROR_OPENGL_VERSION;
- return GL3W_OK;
-}
-
-static void load_procs(GL3WGetProcAddressProc proc);
-
-int gl3wInit(void)
-{
- return gl3wInit2(get_proc);
-}
-
-int gl3wInit2(GL3WGetProcAddressProc proc)
-{
- int res = open_libgl();
- if (res)
- return res;
-
- atexit(close_libgl);
- load_procs(proc);
- return parse_version();
-}
-
-int gl3wIsSupported(int major, int minor)
-{
- if (major < 3)
- return 0;
- if (version.major == major)
- return version.minor >= minor;
- return version.major >= major;
-}
-
-GL3WglProc gl3wGetProcAddress(const char *proc)
-{
- return get_proc(proc);
-}
-
-static const char *proc_names[] = {
- "glActiveShaderProgram",
- "glActiveTexture",
- "glAttachShader",
- "glBeginConditionalRender",
- "glBeginQuery",
- "glBeginQueryIndexed",
- "glBeginTransformFeedback",
- "glBindAttribLocation",
- "glBindBuffer",
- "glBindBufferBase",
- "glBindBufferRange",
- "glBindBuffersBase",
- "glBindBuffersRange",
- "glBindFragDataLocation",
- "glBindFragDataLocationIndexed",
- "glBindFramebuffer",
- "glBindImageTexture",
- "glBindImageTextures",
- "glBindProgramPipeline",
- "glBindRenderbuffer",
- "glBindSampler",
- "glBindSamplers",
- "glBindTexture",
- "glBindTextureUnit",
- "glBindTextures",
- "glBindTransformFeedback",
- "glBindVertexArray",
- "glBindVertexBuffer",
- "glBindVertexBuffers",
- "glBlendColor",
- "glBlendEquation",
- "glBlendEquationSeparate",
- "glBlendEquationSeparatei",
- "glBlendEquationi",
- "glBlendFunc",
- "glBlendFuncSeparate",
- "glBlendFuncSeparatei",
- "glBlendFunci",
- "glBlitFramebuffer",
- "glBlitNamedFramebuffer",
- "glBufferData",
- "glBufferStorage",
- "glBufferSubData",
- "glCheckFramebufferStatus",
- "glCheckNamedFramebufferStatus",
- "glClampColor",
- "glClear",
- "glClearBufferData",
- "glClearBufferSubData",
- "glClearBufferfi",
- "glClearBufferfv",
- "glClearBufferiv",
- "glClearBufferuiv",
- "glClearColor",
- "glClearDepth",
- "glClearDepthf",
- "glClearNamedBufferData",
- "glClearNamedBufferSubData",
- "glClearNamedFramebufferfi",
- "glClearNamedFramebufferfv",
- "glClearNamedFramebufferiv",
- "glClearNamedFramebufferuiv",
- "glClearStencil",
- "glClearTexImage",
- "glClearTexSubImage",
- "glClientWaitSync",
- "glClipControl",
- "glColorMask",
- "glColorMaski",
- "glCompileShader",
- "glCompressedTexImage1D",
- "glCompressedTexImage2D",
- "glCompressedTexImage3D",
- "glCompressedTexSubImage1D",
- "glCompressedTexSubImage2D",
- "glCompressedTexSubImage3D",
- "glCompressedTextureSubImage1D",
- "glCompressedTextureSubImage2D",
- "glCompressedTextureSubImage3D",
- "glCopyBufferSubData",
- "glCopyImageSubData",
- "glCopyNamedBufferSubData",
- "glCopyTexImage1D",
- "glCopyTexImage2D",
- "glCopyTexSubImage1D",
- "glCopyTexSubImage2D",
- "glCopyTexSubImage3D",
- "glCopyTextureSubImage1D",
- "glCopyTextureSubImage2D",
- "glCopyTextureSubImage3D",
- "glCreateBuffers",
- "glCreateFramebuffers",
- "glCreateProgram",
- "glCreateProgramPipelines",
- "glCreateQueries",
- "glCreateRenderbuffers",
- "glCreateSamplers",
- "glCreateShader",
- "glCreateShaderProgramv",
- "glCreateTextures",
- "glCreateTransformFeedbacks",
- "glCreateVertexArrays",
- "glCullFace",
- "glDebugMessageCallback",
- "glDebugMessageControl",
- "glDebugMessageInsert",
- "glDeleteBuffers",
- "glDeleteFramebuffers",
- "glDeleteProgram",
- "glDeleteProgramPipelines",
- "glDeleteQueries",
- "glDeleteRenderbuffers",
- "glDeleteSamplers",
- "glDeleteShader",
- "glDeleteSync",
- "glDeleteTextures",
- "glDeleteTransformFeedbacks",
- "glDeleteVertexArrays",
- "glDepthFunc",
- "glDepthMask",
- "glDepthRange",
- "glDepthRangeArrayv",
- "glDepthRangeIndexed",
- "glDepthRangef",
- "glDetachShader",
- "glDisable",
- "glDisableVertexArrayAttrib",
- "glDisableVertexAttribArray",
- "glDisablei",
- "glDispatchCompute",
- "glDispatchComputeIndirect",
- "glDrawArrays",
- "glDrawArraysIndirect",
- "glDrawArraysInstanced",
- "glDrawArraysInstancedBaseInstance",
- "glDrawBuffer",
- "glDrawBuffers",
- "glDrawElements",
- "glDrawElementsBaseVertex",
- "glDrawElementsIndirect",
- "glDrawElementsInstanced",
- "glDrawElementsInstancedBaseInstance",
- "glDrawElementsInstancedBaseVertex",
- "glDrawElementsInstancedBaseVertexBaseInstance",
- "glDrawRangeElements",
- "glDrawRangeElementsBaseVertex",
- "glDrawTransformFeedback",
- "glDrawTransformFeedbackInstanced",
- "glDrawTransformFeedbackStream",
- "glDrawTransformFeedbackStreamInstanced",
- "glEnable",
- "glEnableVertexArrayAttrib",
- "glEnableVertexAttribArray",
- "glEnablei",
- "glEndConditionalRender",
- "glEndQuery",
- "glEndQueryIndexed",
- "glEndTransformFeedback",
- "glFenceSync",
- "glFinish",
- "glFlush",
- "glFlushMappedBufferRange",
- "glFlushMappedNamedBufferRange",
- "glFramebufferParameteri",
- "glFramebufferRenderbuffer",
- "glFramebufferTexture",
- "glFramebufferTexture1D",
- "glFramebufferTexture2D",
- "glFramebufferTexture3D",
- "glFramebufferTextureLayer",
- "glFrontFace",
- "glGenBuffers",
- "glGenFramebuffers",
- "glGenProgramPipelines",
- "glGenQueries",
- "glGenRenderbuffers",
- "glGenSamplers",
- "glGenTextures",
- "glGenTransformFeedbacks",
- "glGenVertexArrays",
- "glGenerateMipmap",
- "glGenerateTextureMipmap",
- "glGetActiveAtomicCounterBufferiv",
- "glGetActiveAttrib",
- "glGetActiveSubroutineName",
- "glGetActiveSubroutineUniformName",
- "glGetActiveSubroutineUniformiv",
- "glGetActiveUniform",
- "glGetActiveUniformBlockName",
- "glGetActiveUniformBlockiv",
- "glGetActiveUniformName",
- "glGetActiveUniformsiv",
- "glGetAttachedShaders",
- "glGetAttribLocation",
- "glGetBooleani_v",
- "glGetBooleanv",
- "glGetBufferParameteri64v",
- "glGetBufferParameteriv",
- "glGetBufferPointerv",
- "glGetBufferSubData",
- "glGetCompressedTexImage",
- "glGetCompressedTextureImage",
- "glGetCompressedTextureSubImage",
- "glGetDebugMessageLog",
- "glGetDoublei_v",
- "glGetDoublev",
- "glGetError",
- "glGetFloati_v",
- "glGetFloatv",
- "glGetFragDataIndex",
- "glGetFragDataLocation",
- "glGetFramebufferAttachmentParameteriv",
- "glGetFramebufferParameteriv",
- "glGetGraphicsResetStatus",
- "glGetInteger64i_v",
- "glGetInteger64v",
- "glGetIntegeri_v",
- "glGetIntegerv",
- "glGetInternalformati64v",
- "glGetInternalformativ",
- "glGetMultisamplefv",
- "glGetNamedBufferParameteri64v",
- "glGetNamedBufferParameteriv",
- "glGetNamedBufferPointerv",
- "glGetNamedBufferSubData",
- "glGetNamedFramebufferAttachmentParameteriv",
- "glGetNamedFramebufferParameteriv",
- "glGetNamedRenderbufferParameteriv",
- "glGetObjectLabel",
- "glGetObjectPtrLabel",
- "glGetPointerv",
- "glGetProgramBinary",
- "glGetProgramInfoLog",
- "glGetProgramInterfaceiv",
- "glGetProgramPipelineInfoLog",
- "glGetProgramPipelineiv",
- "glGetProgramResourceIndex",
- "glGetProgramResourceLocation",
- "glGetProgramResourceLocationIndex",
- "glGetProgramResourceName",
- "glGetProgramResourceiv",
- "glGetProgramStageiv",
- "glGetProgramiv",
- "glGetQueryBufferObjecti64v",
- "glGetQueryBufferObjectiv",
- "glGetQueryBufferObjectui64v",
- "glGetQueryBufferObjectuiv",
- "glGetQueryIndexediv",
- "glGetQueryObjecti64v",
- "glGetQueryObjectiv",
- "glGetQueryObjectui64v",
- "glGetQueryObjectuiv",
- "glGetQueryiv",
- "glGetRenderbufferParameteriv",
- "glGetSamplerParameterIiv",
- "glGetSamplerParameterIuiv",
- "glGetSamplerParameterfv",
- "glGetSamplerParameteriv",
- "glGetShaderInfoLog",
- "glGetShaderPrecisionFormat",
- "glGetShaderSource",
- "glGetShaderiv",
- "glGetString",
- "glGetStringi",
- "glGetSubroutineIndex",
- "glGetSubroutineUniformLocation",
- "glGetSynciv",
- "glGetTexImage",
- "glGetTexLevelParameterfv",
- "glGetTexLevelParameteriv",
- "glGetTexParameterIiv",
- "glGetTexParameterIuiv",
- "glGetTexParameterfv",
- "glGetTexParameteriv",
- "glGetTextureImage",
- "glGetTextureLevelParameterfv",
- "glGetTextureLevelParameteriv",
- "glGetTextureParameterIiv",
- "glGetTextureParameterIuiv",
- "glGetTextureParameterfv",
- "glGetTextureParameteriv",
- "glGetTextureSubImage",
- "glGetTransformFeedbackVarying",
- "glGetTransformFeedbacki64_v",
- "glGetTransformFeedbacki_v",
- "glGetTransformFeedbackiv",
- "glGetUniformBlockIndex",
- "glGetUniformIndices",
- "glGetUniformLocation",
- "glGetUniformSubroutineuiv",
- "glGetUniformdv",
- "glGetUniformfv",
- "glGetUniformiv",
- "glGetUniformuiv",
- "glGetVertexArrayIndexed64iv",
- "glGetVertexArrayIndexediv",
- "glGetVertexArrayiv",
- "glGetVertexAttribIiv",
- "glGetVertexAttribIuiv",
- "glGetVertexAttribLdv",
- "glGetVertexAttribPointerv",
- "glGetVertexAttribdv",
- "glGetVertexAttribfv",
- "glGetVertexAttribiv",
- "glGetnCompressedTexImage",
- "glGetnTexImage",
- "glGetnUniformdv",
- "glGetnUniformfv",
- "glGetnUniformiv",
- "glGetnUniformuiv",
- "glHint",
- "glInvalidateBufferData",
- "glInvalidateBufferSubData",
- "glInvalidateFramebuffer",
- "glInvalidateNamedFramebufferData",
- "glInvalidateNamedFramebufferSubData",
- "glInvalidateSubFramebuffer",
- "glInvalidateTexImage",
- "glInvalidateTexSubImage",
- "glIsBuffer",
- "glIsEnabled",
- "glIsEnabledi",
- "glIsFramebuffer",
- "glIsProgram",
- "glIsProgramPipeline",
- "glIsQuery",
- "glIsRenderbuffer",
- "glIsSampler",
- "glIsShader",
- "glIsSync",
- "glIsTexture",
- "glIsTransformFeedback",
- "glIsVertexArray",
- "glLineWidth",
- "glLinkProgram",
- "glLogicOp",
- "glMapBuffer",
- "glMapBufferRange",
- "glMapNamedBuffer",
- "glMapNamedBufferRange",
- "glMemoryBarrier",
- "glMemoryBarrierByRegion",
- "glMinSampleShading",
- "glMultiDrawArrays",
- "glMultiDrawArraysIndirect",
- "glMultiDrawArraysIndirectCount",
- "glMultiDrawElements",
- "glMultiDrawElementsBaseVertex",
- "glMultiDrawElementsIndirect",
- "glMultiDrawElementsIndirectCount",
- "glNamedBufferData",
- "glNamedBufferStorage",
- "glNamedBufferSubData",
- "glNamedFramebufferDrawBuffer",
- "glNamedFramebufferDrawBuffers",
- "glNamedFramebufferParameteri",
- "glNamedFramebufferReadBuffer",
- "glNamedFramebufferRenderbuffer",
- "glNamedFramebufferTexture",
- "glNamedFramebufferTextureLayer",
- "glNamedRenderbufferStorage",
- "glNamedRenderbufferStorageMultisample",
- "glObjectLabel",
- "glObjectPtrLabel",
- "glPatchParameterfv",
- "glPatchParameteri",
- "glPauseTransformFeedback",
- "glPixelStoref",
- "glPixelStorei",
- "glPointParameterf",
- "glPointParameterfv",
- "glPointParameteri",
- "glPointParameteriv",
- "glPointSize",
- "glPolygonMode",
- "glPolygonOffset",
- "glPolygonOffsetClamp",
- "glPopDebugGroup",
- "glPrimitiveRestartIndex",
- "glProgramBinary",
- "glProgramParameteri",
- "glProgramUniform1d",
- "glProgramUniform1dv",
- "glProgramUniform1f",
- "glProgramUniform1fv",
- "glProgramUniform1i",
- "glProgramUniform1iv",
- "glProgramUniform1ui",
- "glProgramUniform1uiv",
- "glProgramUniform2d",
- "glProgramUniform2dv",
- "glProgramUniform2f",
- "glProgramUniform2fv",
- "glProgramUniform2i",
- "glProgramUniform2iv",
- "glProgramUniform2ui",
- "glProgramUniform2uiv",
- "glProgramUniform3d",
- "glProgramUniform3dv",
- "glProgramUniform3f",
- "glProgramUniform3fv",
- "glProgramUniform3i",
- "glProgramUniform3iv",
- "glProgramUniform3ui",
- "glProgramUniform3uiv",
- "glProgramUniform4d",
- "glProgramUniform4dv",
- "glProgramUniform4f",
- "glProgramUniform4fv",
- "glProgramUniform4i",
- "glProgramUniform4iv",
- "glProgramUniform4ui",
- "glProgramUniform4uiv",
- "glProgramUniformMatrix2dv",
- "glProgramUniformMatrix2fv",
- "glProgramUniformMatrix2x3dv",
- "glProgramUniformMatrix2x3fv",
- "glProgramUniformMatrix2x4dv",
- "glProgramUniformMatrix2x4fv",
- "glProgramUniformMatrix3dv",
- "glProgramUniformMatrix3fv",
- "glProgramUniformMatrix3x2dv",
- "glProgramUniformMatrix3x2fv",
- "glProgramUniformMatrix3x4dv",
- "glProgramUniformMatrix3x4fv",
- "glProgramUniformMatrix4dv",
- "glProgramUniformMatrix4fv",
- "glProgramUniformMatrix4x2dv",
- "glProgramUniformMatrix4x2fv",
- "glProgramUniformMatrix4x3dv",
- "glProgramUniformMatrix4x3fv",
- "glProvokingVertex",
- "glPushDebugGroup",
- "glQueryCounter",
- "glReadBuffer",
- "glReadPixels",
- "glReadnPixels",
- "glReleaseShaderCompiler",
- "glRenderbufferStorage",
- "glRenderbufferStorageMultisample",
- "glResumeTransformFeedback",
- "glSampleCoverage",
- "glSampleMaski",
- "glSamplerParameterIiv",
- "glSamplerParameterIuiv",
- "glSamplerParameterf",
- "glSamplerParameterfv",
- "glSamplerParameteri",
- "glSamplerParameteriv",
- "glScissor",
- "glScissorArrayv",
- "glScissorIndexed",
- "glScissorIndexedv",
- "glShaderBinary",
- "glShaderSource",
- "glShaderStorageBlockBinding",
- "glSpecializeShader",
- "glStencilFunc",
- "glStencilFuncSeparate",
- "glStencilMask",
- "glStencilMaskSeparate",
- "glStencilOp",
- "glStencilOpSeparate",
- "glTexBuffer",
- "glTexBufferRange",
- "glTexImage1D",
- "glTexImage2D",
- "glTexImage2DMultisample",
- "glTexImage3D",
- "glTexImage3DMultisample",
- "glTexParameterIiv",
- "glTexParameterIuiv",
- "glTexParameterf",
- "glTexParameterfv",
- "glTexParameteri",
- "glTexParameteriv",
- "glTexStorage1D",
- "glTexStorage2D",
- "glTexStorage2DMultisample",
- "glTexStorage3D",
- "glTexStorage3DMultisample",
- "glTexSubImage1D",
- "glTexSubImage2D",
- "glTexSubImage3D",
- "glTextureBarrier",
- "glTextureBuffer",
- "glTextureBufferRange",
- "glTextureParameterIiv",
- "glTextureParameterIuiv",
- "glTextureParameterf",
- "glTextureParameterfv",
- "glTextureParameteri",
- "glTextureParameteriv",
- "glTextureStorage1D",
- "glTextureStorage2D",
- "glTextureStorage2DMultisample",
- "glTextureStorage3D",
- "glTextureStorage3DMultisample",
- "glTextureSubImage1D",
- "glTextureSubImage2D",
- "glTextureSubImage3D",
- "glTextureView",
- "glTransformFeedbackBufferBase",
- "glTransformFeedbackBufferRange",
- "glTransformFeedbackVaryings",
- "glUniform1d",
- "glUniform1dv",
- "glUniform1f",
- "glUniform1fv",
- "glUniform1i",
- "glUniform1iv",
- "glUniform1ui",
- "glUniform1uiv",
- "glUniform2d",
- "glUniform2dv",
- "glUniform2f",
- "glUniform2fv",
- "glUniform2i",
- "glUniform2iv",
- "glUniform2ui",
- "glUniform2uiv",
- "glUniform3d",
- "glUniform3dv",
- "glUniform3f",
- "glUniform3fv",
- "glUniform3i",
- "glUniform3iv",
- "glUniform3ui",
- "glUniform3uiv",
- "glUniform4d",
- "glUniform4dv",
- "glUniform4f",
- "glUniform4fv",
- "glUniform4i",
- "glUniform4iv",
- "glUniform4ui",
- "glUniform4uiv",
- "glUniformBlockBinding",
- "glUniformMatrix2dv",
- "glUniformMatrix2fv",
- "glUniformMatrix2x3dv",
- "glUniformMatrix2x3fv",
- "glUniformMatrix2x4dv",
- "glUniformMatrix2x4fv",
- "glUniformMatrix3dv",
- "glUniformMatrix3fv",
- "glUniformMatrix3x2dv",
- "glUniformMatrix3x2fv",
- "glUniformMatrix3x4dv",
- "glUniformMatrix3x4fv",
- "glUniformMatrix4dv",
- "glUniformMatrix4fv",
- "glUniformMatrix4x2dv",
- "glUniformMatrix4x2fv",
- "glUniformMatrix4x3dv",
- "glUniformMatrix4x3fv",
- "glUniformSubroutinesuiv",
- "glUnmapBuffer",
- "glUnmapNamedBuffer",
- "glUseProgram",
- "glUseProgramStages",
- "glValidateProgram",
- "glValidateProgramPipeline",
- "glVertexArrayAttribBinding",
- "glVertexArrayAttribFormat",
- "glVertexArrayAttribIFormat",
- "glVertexArrayAttribLFormat",
- "glVertexArrayBindingDivisor",
- "glVertexArrayElementBuffer",
- "glVertexArrayVertexBuffer",
- "glVertexArrayVertexBuffers",
- "glVertexAttrib1d",
- "glVertexAttrib1dv",
- "glVertexAttrib1f",
- "glVertexAttrib1fv",
- "glVertexAttrib1s",
- "glVertexAttrib1sv",
- "glVertexAttrib2d",
- "glVertexAttrib2dv",
- "glVertexAttrib2f",
- "glVertexAttrib2fv",
- "glVertexAttrib2s",
- "glVertexAttrib2sv",
- "glVertexAttrib3d",
- "glVertexAttrib3dv",
- "glVertexAttrib3f",
- "glVertexAttrib3fv",
- "glVertexAttrib3s",
- "glVertexAttrib3sv",
- "glVertexAttrib4Nbv",
- "glVertexAttrib4Niv",
- "glVertexAttrib4Nsv",
- "glVertexAttrib4Nub",
- "glVertexAttrib4Nubv",
- "glVertexAttrib4Nuiv",
- "glVertexAttrib4Nusv",
- "glVertexAttrib4bv",
- "glVertexAttrib4d",
- "glVertexAttrib4dv",
- "glVertexAttrib4f",
- "glVertexAttrib4fv",
- "glVertexAttrib4iv",
- "glVertexAttrib4s",
- "glVertexAttrib4sv",
- "glVertexAttrib4ubv",
- "glVertexAttrib4uiv",
- "glVertexAttrib4usv",
- "glVertexAttribBinding",
- "glVertexAttribDivisor",
- "glVertexAttribFormat",
- "glVertexAttribI1i",
- "glVertexAttribI1iv",
- "glVertexAttribI1ui",
- "glVertexAttribI1uiv",
- "glVertexAttribI2i",
- "glVertexAttribI2iv",
- "glVertexAttribI2ui",
- "glVertexAttribI2uiv",
- "glVertexAttribI3i",
- "glVertexAttribI3iv",
- "glVertexAttribI3ui",
- "glVertexAttribI3uiv",
- "glVertexAttribI4bv",
- "glVertexAttribI4i",
- "glVertexAttribI4iv",
- "glVertexAttribI4sv",
- "glVertexAttribI4ubv",
- "glVertexAttribI4ui",
- "glVertexAttribI4uiv",
- "glVertexAttribI4usv",
- "glVertexAttribIFormat",
- "glVertexAttribIPointer",
- "glVertexAttribL1d",
- "glVertexAttribL1dv",
- "glVertexAttribL2d",
- "glVertexAttribL2dv",
- "glVertexAttribL3d",
- "glVertexAttribL3dv",
- "glVertexAttribL4d",
- "glVertexAttribL4dv",
- "glVertexAttribLFormat",
- "glVertexAttribLPointer",
- "glVertexAttribP1ui",
- "glVertexAttribP1uiv",
- "glVertexAttribP2ui",
- "glVertexAttribP2uiv",
- "glVertexAttribP3ui",
- "glVertexAttribP3uiv",
- "glVertexAttribP4ui",
- "glVertexAttribP4uiv",
- "glVertexAttribPointer",
- "glVertexBindingDivisor",
- "glViewport",
- "glViewportArrayv",
- "glViewportIndexedf",
- "glViewportIndexedfv",
- "glWaitSync",
-};
-
-union GL3WProcs gl3wProcs;
-
-static void load_procs(GL3WGetProcAddressProc proc)
-{
- size_t i;
- for (i = 0; i < ARRAY_SIZE(proc_names); i++)
- gl3wProcs.ptr[i] = proc(proc_names[i]);
-}
+/*
+
+ This file was generated with gl3w_gen.py, part of gl3w
+ (hosted at https://github.com/skaslev/gl3w)
+
+ This is free and unencumbered software released into the public domain.
+
+ Anyone is free to copy, modify, publish, use, compile, sell, or
+ distribute this software, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any
+ means.
+
+ In jurisdictions that recognize copyright laws, the author or authors
+ of this software dedicate any and all copyright interest in the
+ software to the public domain. We make this dedication for the benefit
+ of the public at large and to the detriment of our heirs and
+ successors. We intend this dedication to be an overt act of
+ relinquishment in perpetuity of all present and future rights to this
+ software under copyright law.
+
+ 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 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.
+
+*/
+
+#include
+#include
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+#if defined(_WIN32)
+#define WIN32_LEAN_AND_MEAN 1
+#include
+
+static HMODULE libgl;
+static PROC (__stdcall *wgl_get_proc_address)(LPCSTR);
+
+static int open_libgl(void)
+{
+ libgl = LoadLibraryA("opengl32.dll");
+ if (!libgl)
+ return GL3W_ERROR_LIBRARY_OPEN;
+
+ *(void **)(&wgl_get_proc_address) = GetProcAddress(libgl, "wglGetProcAddress");
+ return GL3W_OK;
+}
+
+static void close_libgl(void)
+{
+ FreeLibrary(libgl);
+}
+
+static GL3WglProc get_proc(const char *proc)
+{
+ GL3WglProc res;
+
+ res = (GL3WglProc)wgl_get_proc_address(proc);
+ if (!res)
+ res = (GL3WglProc)GetProcAddress(libgl, proc);
+ return res;
+}
+#elif defined(__APPLE__)
+#include
+
+static void *libgl;
+
+static int open_libgl(void)
+{
+ libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
+ if (!libgl)
+ return GL3W_ERROR_LIBRARY_OPEN;
+
+ return GL3W_OK;
+}
+
+static void close_libgl(void)
+{
+ dlclose(libgl);
+}
+
+static GL3WglProc get_proc(const char *proc)
+{
+ GL3WglProc res;
+
+ *(void **)(&res) = dlsym(libgl, proc);
+ return res;
+}
+#else
+#include
+
+static void *libgl;
+static GL3WglProc (*glx_get_proc_address)(const GLubyte *);
+
+static int open_libgl(void)
+{
+ libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
+ if (!libgl)
+ return GL3W_ERROR_LIBRARY_OPEN;
+
+ *(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
+ return GL3W_OK;
+}
+
+static void close_libgl(void)
+{
+ dlclose(libgl);
+}
+
+static GL3WglProc get_proc(const char *proc)
+{
+ GL3WglProc res;
+
+ res = glx_get_proc_address((const GLubyte *)proc);
+ if (!res)
+ *(void **)(&res) = dlsym(libgl, proc);
+ return res;
+}
+#endif
+
+static struct {
+ int major, minor;
+} version;
+
+static int parse_version(void)
+{
+ if (!glGetIntegerv)
+ return GL3W_ERROR_INIT;
+
+ glGetIntegerv(GL_MAJOR_VERSION, &version.major);
+ glGetIntegerv(GL_MINOR_VERSION, &version.minor);
+
+ if (version.major < 3)
+ return GL3W_ERROR_OPENGL_VERSION;
+ return GL3W_OK;
+}
+
+static void load_procs(GL3WGetProcAddressProc proc);
+
+int gl3wInit(void)
+{
+ return gl3wInit2(get_proc);
+}
+
+int gl3wInit2(GL3WGetProcAddressProc proc)
+{
+ int res = open_libgl();
+ if (res)
+ return res;
+
+ atexit(close_libgl);
+ load_procs(proc);
+ return parse_version();
+}
+
+int gl3wIsSupported(int major, int minor)
+{
+ if (major < 3)
+ return 0;
+ if (version.major == major)
+ return version.minor >= minor;
+ return version.major >= major;
+}
+
+GL3WglProc gl3wGetProcAddress(const char *proc)
+{
+ return get_proc(proc);
+}
+
+static const char *proc_names[] = {
+ "glActiveShaderProgram",
+ "glActiveTexture",
+ "glAttachShader",
+ "glBeginConditionalRender",
+ "glBeginQuery",
+ "glBeginQueryIndexed",
+ "glBeginTransformFeedback",
+ "glBindAttribLocation",
+ "glBindBuffer",
+ "glBindBufferBase",
+ "glBindBufferRange",
+ "glBindBuffersBase",
+ "glBindBuffersRange",
+ "glBindFragDataLocation",
+ "glBindFragDataLocationIndexed",
+ "glBindFramebuffer",
+ "glBindImageTexture",
+ "glBindImageTextures",
+ "glBindProgramPipeline",
+ "glBindRenderbuffer",
+ "glBindSampler",
+ "glBindSamplers",
+ "glBindTexture",
+ "glBindTextureUnit",
+ "glBindTextures",
+ "glBindTransformFeedback",
+ "glBindVertexArray",
+ "glBindVertexBuffer",
+ "glBindVertexBuffers",
+ "glBlendColor",
+ "glBlendEquation",
+ "glBlendEquationSeparate",
+ "glBlendEquationSeparatei",
+ "glBlendEquationi",
+ "glBlendFunc",
+ "glBlendFuncSeparate",
+ "glBlendFuncSeparatei",
+ "glBlendFunci",
+ "glBlitFramebuffer",
+ "glBlitNamedFramebuffer",
+ "glBufferData",
+ "glBufferStorage",
+ "glBufferSubData",
+ "glCheckFramebufferStatus",
+ "glCheckNamedFramebufferStatus",
+ "glClampColor",
+ "glClear",
+ "glClearBufferData",
+ "glClearBufferSubData",
+ "glClearBufferfi",
+ "glClearBufferfv",
+ "glClearBufferiv",
+ "glClearBufferuiv",
+ "glClearColor",
+ "glClearDepth",
+ "glClearDepthf",
+ "glClearNamedBufferData",
+ "glClearNamedBufferSubData",
+ "glClearNamedFramebufferfi",
+ "glClearNamedFramebufferfv",
+ "glClearNamedFramebufferiv",
+ "glClearNamedFramebufferuiv",
+ "glClearStencil",
+ "glClearTexImage",
+ "glClearTexSubImage",
+ "glClientWaitSync",
+ "glClipControl",
+ "glColorMask",
+ "glColorMaski",
+ "glCompileShader",
+ "glCompressedTexImage1D",
+ "glCompressedTexImage2D",
+ "glCompressedTexImage3D",
+ "glCompressedTexSubImage1D",
+ "glCompressedTexSubImage2D",
+ "glCompressedTexSubImage3D",
+ "glCompressedTextureSubImage1D",
+ "glCompressedTextureSubImage2D",
+ "glCompressedTextureSubImage3D",
+ "glCopyBufferSubData",
+ "glCopyImageSubData",
+ "glCopyNamedBufferSubData",
+ "glCopyTexImage1D",
+ "glCopyTexImage2D",
+ "glCopyTexSubImage1D",
+ "glCopyTexSubImage2D",
+ "glCopyTexSubImage3D",
+ "glCopyTextureSubImage1D",
+ "glCopyTextureSubImage2D",
+ "glCopyTextureSubImage3D",
+ "glCreateBuffers",
+ "glCreateFramebuffers",
+ "glCreateProgram",
+ "glCreateProgramPipelines",
+ "glCreateQueries",
+ "glCreateRenderbuffers",
+ "glCreateSamplers",
+ "glCreateShader",
+ "glCreateShaderProgramv",
+ "glCreateTextures",
+ "glCreateTransformFeedbacks",
+ "glCreateVertexArrays",
+ "glCullFace",
+ "glDebugMessageCallback",
+ "glDebugMessageControl",
+ "glDebugMessageInsert",
+ "glDeleteBuffers",
+ "glDeleteFramebuffers",
+ "glDeleteProgram",
+ "glDeleteProgramPipelines",
+ "glDeleteQueries",
+ "glDeleteRenderbuffers",
+ "glDeleteSamplers",
+ "glDeleteShader",
+ "glDeleteSync",
+ "glDeleteTextures",
+ "glDeleteTransformFeedbacks",
+ "glDeleteVertexArrays",
+ "glDepthFunc",
+ "glDepthMask",
+ "glDepthRange",
+ "glDepthRangeArrayv",
+ "glDepthRangeIndexed",
+ "glDepthRangef",
+ "glDetachShader",
+ "glDisable",
+ "glDisableVertexArrayAttrib",
+ "glDisableVertexAttribArray",
+ "glDisablei",
+ "glDispatchCompute",
+ "glDispatchComputeIndirect",
+ "glDrawArrays",
+ "glDrawArraysIndirect",
+ "glDrawArraysInstanced",
+ "glDrawArraysInstancedBaseInstance",
+ "glDrawBuffer",
+ "glDrawBuffers",
+ "glDrawElements",
+ "glDrawElementsBaseVertex",
+ "glDrawElementsIndirect",
+ "glDrawElementsInstanced",
+ "glDrawElementsInstancedBaseInstance",
+ "glDrawElementsInstancedBaseVertex",
+ "glDrawElementsInstancedBaseVertexBaseInstance",
+ "glDrawRangeElements",
+ "glDrawRangeElementsBaseVertex",
+ "glDrawTransformFeedback",
+ "glDrawTransformFeedbackInstanced",
+ "glDrawTransformFeedbackStream",
+ "glDrawTransformFeedbackStreamInstanced",
+ "glEnable",
+ "glEnableVertexArrayAttrib",
+ "glEnableVertexAttribArray",
+ "glEnablei",
+ "glEndConditionalRender",
+ "glEndQuery",
+ "glEndQueryIndexed",
+ "glEndTransformFeedback",
+ "glFenceSync",
+ "glFinish",
+ "glFlush",
+ "glFlushMappedBufferRange",
+ "glFlushMappedNamedBufferRange",
+ "glFramebufferParameteri",
+ "glFramebufferRenderbuffer",
+ "glFramebufferTexture",
+ "glFramebufferTexture1D",
+ "glFramebufferTexture2D",
+ "glFramebufferTexture3D",
+ "glFramebufferTextureLayer",
+ "glFrontFace",
+ "glGenBuffers",
+ "glGenFramebuffers",
+ "glGenProgramPipelines",
+ "glGenQueries",
+ "glGenRenderbuffers",
+ "glGenSamplers",
+ "glGenTextures",
+ "glGenTransformFeedbacks",
+ "glGenVertexArrays",
+ "glGenerateMipmap",
+ "glGenerateTextureMipmap",
+ "glGetActiveAtomicCounterBufferiv",
+ "glGetActiveAttrib",
+ "glGetActiveSubroutineName",
+ "glGetActiveSubroutineUniformName",
+ "glGetActiveSubroutineUniformiv",
+ "glGetActiveUniform",
+ "glGetActiveUniformBlockName",
+ "glGetActiveUniformBlockiv",
+ "glGetActiveUniformName",
+ "glGetActiveUniformsiv",
+ "glGetAttachedShaders",
+ "glGetAttribLocation",
+ "glGetBooleani_v",
+ "glGetBooleanv",
+ "glGetBufferParameteri64v",
+ "glGetBufferParameteriv",
+ "glGetBufferPointerv",
+ "glGetBufferSubData",
+ "glGetCompressedTexImage",
+ "glGetCompressedTextureImage",
+ "glGetCompressedTextureSubImage",
+ "glGetDebugMessageLog",
+ "glGetDoublei_v",
+ "glGetDoublev",
+ "glGetError",
+ "glGetFloati_v",
+ "glGetFloatv",
+ "glGetFragDataIndex",
+ "glGetFragDataLocation",
+ "glGetFramebufferAttachmentParameteriv",
+ "glGetFramebufferParameteriv",
+ "glGetGraphicsResetStatus",
+ "glGetInteger64i_v",
+ "glGetInteger64v",
+ "glGetIntegeri_v",
+ "glGetIntegerv",
+ "glGetInternalformati64v",
+ "glGetInternalformativ",
+ "glGetMultisamplefv",
+ "glGetNamedBufferParameteri64v",
+ "glGetNamedBufferParameteriv",
+ "glGetNamedBufferPointerv",
+ "glGetNamedBufferSubData",
+ "glGetNamedFramebufferAttachmentParameteriv",
+ "glGetNamedFramebufferParameteriv",
+ "glGetNamedRenderbufferParameteriv",
+ "glGetObjectLabel",
+ "glGetObjectPtrLabel",
+ "glGetPointerv",
+ "glGetProgramBinary",
+ "glGetProgramInfoLog",
+ "glGetProgramInterfaceiv",
+ "glGetProgramPipelineInfoLog",
+ "glGetProgramPipelineiv",
+ "glGetProgramResourceIndex",
+ "glGetProgramResourceLocation",
+ "glGetProgramResourceLocationIndex",
+ "glGetProgramResourceName",
+ "glGetProgramResourceiv",
+ "glGetProgramStageiv",
+ "glGetProgramiv",
+ "glGetQueryBufferObjecti64v",
+ "glGetQueryBufferObjectiv",
+ "glGetQueryBufferObjectui64v",
+ "glGetQueryBufferObjectuiv",
+ "glGetQueryIndexediv",
+ "glGetQueryObjecti64v",
+ "glGetQueryObjectiv",
+ "glGetQueryObjectui64v",
+ "glGetQueryObjectuiv",
+ "glGetQueryiv",
+ "glGetRenderbufferParameteriv",
+ "glGetSamplerParameterIiv",
+ "glGetSamplerParameterIuiv",
+ "glGetSamplerParameterfv",
+ "glGetSamplerParameteriv",
+ "glGetShaderInfoLog",
+ "glGetShaderPrecisionFormat",
+ "glGetShaderSource",
+ "glGetShaderiv",
+ "glGetString",
+ "glGetStringi",
+ "glGetSubroutineIndex",
+ "glGetSubroutineUniformLocation",
+ "glGetSynciv",
+ "glGetTexImage",
+ "glGetTexLevelParameterfv",
+ "glGetTexLevelParameteriv",
+ "glGetTexParameterIiv",
+ "glGetTexParameterIuiv",
+ "glGetTexParameterfv",
+ "glGetTexParameteriv",
+ "glGetTextureImage",
+ "glGetTextureLevelParameterfv",
+ "glGetTextureLevelParameteriv",
+ "glGetTextureParameterIiv",
+ "glGetTextureParameterIuiv",
+ "glGetTextureParameterfv",
+ "glGetTextureParameteriv",
+ "glGetTextureSubImage",
+ "glGetTransformFeedbackVarying",
+ "glGetTransformFeedbacki64_v",
+ "glGetTransformFeedbacki_v",
+ "glGetTransformFeedbackiv",
+ "glGetUniformBlockIndex",
+ "glGetUniformIndices",
+ "glGetUniformLocation",
+ "glGetUniformSubroutineuiv",
+ "glGetUniformdv",
+ "glGetUniformfv",
+ "glGetUniformiv",
+ "glGetUniformuiv",
+ "glGetVertexArrayIndexed64iv",
+ "glGetVertexArrayIndexediv",
+ "glGetVertexArrayiv",
+ "glGetVertexAttribIiv",
+ "glGetVertexAttribIuiv",
+ "glGetVertexAttribLdv",
+ "glGetVertexAttribPointerv",
+ "glGetVertexAttribdv",
+ "glGetVertexAttribfv",
+ "glGetVertexAttribiv",
+ "glGetnCompressedTexImage",
+ "glGetnTexImage",
+ "glGetnUniformdv",
+ "glGetnUniformfv",
+ "glGetnUniformiv",
+ "glGetnUniformuiv",
+ "glHint",
+ "glInvalidateBufferData",
+ "glInvalidateBufferSubData",
+ "glInvalidateFramebuffer",
+ "glInvalidateNamedFramebufferData",
+ "glInvalidateNamedFramebufferSubData",
+ "glInvalidateSubFramebuffer",
+ "glInvalidateTexImage",
+ "glInvalidateTexSubImage",
+ "glIsBuffer",
+ "glIsEnabled",
+ "glIsEnabledi",
+ "glIsFramebuffer",
+ "glIsProgram",
+ "glIsProgramPipeline",
+ "glIsQuery",
+ "glIsRenderbuffer",
+ "glIsSampler",
+ "glIsShader",
+ "glIsSync",
+ "glIsTexture",
+ "glIsTransformFeedback",
+ "glIsVertexArray",
+ "glLineWidth",
+ "glLinkProgram",
+ "glLogicOp",
+ "glMapBuffer",
+ "glMapBufferRange",
+ "glMapNamedBuffer",
+ "glMapNamedBufferRange",
+ "glMemoryBarrier",
+ "glMemoryBarrierByRegion",
+ "glMinSampleShading",
+ "glMultiDrawArrays",
+ "glMultiDrawArraysIndirect",
+ "glMultiDrawArraysIndirectCount",
+ "glMultiDrawElements",
+ "glMultiDrawElementsBaseVertex",
+ "glMultiDrawElementsIndirect",
+ "glMultiDrawElementsIndirectCount",
+ "glNamedBufferData",
+ "glNamedBufferStorage",
+ "glNamedBufferSubData",
+ "glNamedFramebufferDrawBuffer",
+ "glNamedFramebufferDrawBuffers",
+ "glNamedFramebufferParameteri",
+ "glNamedFramebufferReadBuffer",
+ "glNamedFramebufferRenderbuffer",
+ "glNamedFramebufferTexture",
+ "glNamedFramebufferTextureLayer",
+ "glNamedRenderbufferStorage",
+ "glNamedRenderbufferStorageMultisample",
+ "glObjectLabel",
+ "glObjectPtrLabel",
+ "glPatchParameterfv",
+ "glPatchParameteri",
+ "glPauseTransformFeedback",
+ "glPixelStoref",
+ "glPixelStorei",
+ "glPointParameterf",
+ "glPointParameterfv",
+ "glPointParameteri",
+ "glPointParameteriv",
+ "glPointSize",
+ "glPolygonMode",
+ "glPolygonOffset",
+ "glPolygonOffsetClamp",
+ "glPopDebugGroup",
+ "glPrimitiveRestartIndex",
+ "glProgramBinary",
+ "glProgramParameteri",
+ "glProgramUniform1d",
+ "glProgramUniform1dv",
+ "glProgramUniform1f",
+ "glProgramUniform1fv",
+ "glProgramUniform1i",
+ "glProgramUniform1iv",
+ "glProgramUniform1ui",
+ "glProgramUniform1uiv",
+ "glProgramUniform2d",
+ "glProgramUniform2dv",
+ "glProgramUniform2f",
+ "glProgramUniform2fv",
+ "glProgramUniform2i",
+ "glProgramUniform2iv",
+ "glProgramUniform2ui",
+ "glProgramUniform2uiv",
+ "glProgramUniform3d",
+ "glProgramUniform3dv",
+ "glProgramUniform3f",
+ "glProgramUniform3fv",
+ "glProgramUniform3i",
+ "glProgramUniform3iv",
+ "glProgramUniform3ui",
+ "glProgramUniform3uiv",
+ "glProgramUniform4d",
+ "glProgramUniform4dv",
+ "glProgramUniform4f",
+ "glProgramUniform4fv",
+ "glProgramUniform4i",
+ "glProgramUniform4iv",
+ "glProgramUniform4ui",
+ "glProgramUniform4uiv",
+ "glProgramUniformMatrix2dv",
+ "glProgramUniformMatrix2fv",
+ "glProgramUniformMatrix2x3dv",
+ "glProgramUniformMatrix2x3fv",
+ "glProgramUniformMatrix2x4dv",
+ "glProgramUniformMatrix2x4fv",
+ "glProgramUniformMatrix3dv",
+ "glProgramUniformMatrix3fv",
+ "glProgramUniformMatrix3x2dv",
+ "glProgramUniformMatrix3x2fv",
+ "glProgramUniformMatrix3x4dv",
+ "glProgramUniformMatrix3x4fv",
+ "glProgramUniformMatrix4dv",
+ "glProgramUniformMatrix4fv",
+ "glProgramUniformMatrix4x2dv",
+ "glProgramUniformMatrix4x2fv",
+ "glProgramUniformMatrix4x3dv",
+ "glProgramUniformMatrix4x3fv",
+ "glProvokingVertex",
+ "glPushDebugGroup",
+ "glQueryCounter",
+ "glReadBuffer",
+ "glReadPixels",
+ "glReadnPixels",
+ "glReleaseShaderCompiler",
+ "glRenderbufferStorage",
+ "glRenderbufferStorageMultisample",
+ "glResumeTransformFeedback",
+ "glSampleCoverage",
+ "glSampleMaski",
+ "glSamplerParameterIiv",
+ "glSamplerParameterIuiv",
+ "glSamplerParameterf",
+ "glSamplerParameterfv",
+ "glSamplerParameteri",
+ "glSamplerParameteriv",
+ "glScissor",
+ "glScissorArrayv",
+ "glScissorIndexed",
+ "glScissorIndexedv",
+ "glShaderBinary",
+ "glShaderSource",
+ "glShaderStorageBlockBinding",
+ "glSpecializeShader",
+ "glStencilFunc",
+ "glStencilFuncSeparate",
+ "glStencilMask",
+ "glStencilMaskSeparate",
+ "glStencilOp",
+ "glStencilOpSeparate",
+ "glTexBuffer",
+ "glTexBufferRange",
+ "glTexImage1D",
+ "glTexImage2D",
+ "glTexImage2DMultisample",
+ "glTexImage3D",
+ "glTexImage3DMultisample",
+ "glTexParameterIiv",
+ "glTexParameterIuiv",
+ "glTexParameterf",
+ "glTexParameterfv",
+ "glTexParameteri",
+ "glTexParameteriv",
+ "glTexStorage1D",
+ "glTexStorage2D",
+ "glTexStorage2DMultisample",
+ "glTexStorage3D",
+ "glTexStorage3DMultisample",
+ "glTexSubImage1D",
+ "glTexSubImage2D",
+ "glTexSubImage3D",
+ "glTextureBarrier",
+ "glTextureBuffer",
+ "glTextureBufferRange",
+ "glTextureParameterIiv",
+ "glTextureParameterIuiv",
+ "glTextureParameterf",
+ "glTextureParameterfv",
+ "glTextureParameteri",
+ "glTextureParameteriv",
+ "glTextureStorage1D",
+ "glTextureStorage2D",
+ "glTextureStorage2DMultisample",
+ "glTextureStorage3D",
+ "glTextureStorage3DMultisample",
+ "glTextureSubImage1D",
+ "glTextureSubImage2D",
+ "glTextureSubImage3D",
+ "glTextureView",
+ "glTransformFeedbackBufferBase",
+ "glTransformFeedbackBufferRange",
+ "glTransformFeedbackVaryings",
+ "glUniform1d",
+ "glUniform1dv",
+ "glUniform1f",
+ "glUniform1fv",
+ "glUniform1i",
+ "glUniform1iv",
+ "glUniform1ui",
+ "glUniform1uiv",
+ "glUniform2d",
+ "glUniform2dv",
+ "glUniform2f",
+ "glUniform2fv",
+ "glUniform2i",
+ "glUniform2iv",
+ "glUniform2ui",
+ "glUniform2uiv",
+ "glUniform3d",
+ "glUniform3dv",
+ "glUniform3f",
+ "glUniform3fv",
+ "glUniform3i",
+ "glUniform3iv",
+ "glUniform3ui",
+ "glUniform3uiv",
+ "glUniform4d",
+ "glUniform4dv",
+ "glUniform4f",
+ "glUniform4fv",
+ "glUniform4i",
+ "glUniform4iv",
+ "glUniform4ui",
+ "glUniform4uiv",
+ "glUniformBlockBinding",
+ "glUniformMatrix2dv",
+ "glUniformMatrix2fv",
+ "glUniformMatrix2x3dv",
+ "glUniformMatrix2x3fv",
+ "glUniformMatrix2x4dv",
+ "glUniformMatrix2x4fv",
+ "glUniformMatrix3dv",
+ "glUniformMatrix3fv",
+ "glUniformMatrix3x2dv",
+ "glUniformMatrix3x2fv",
+ "glUniformMatrix3x4dv",
+ "glUniformMatrix3x4fv",
+ "glUniformMatrix4dv",
+ "glUniformMatrix4fv",
+ "glUniformMatrix4x2dv",
+ "glUniformMatrix4x2fv",
+ "glUniformMatrix4x3dv",
+ "glUniformMatrix4x3fv",
+ "glUniformSubroutinesuiv",
+ "glUnmapBuffer",
+ "glUnmapNamedBuffer",
+ "glUseProgram",
+ "glUseProgramStages",
+ "glValidateProgram",
+ "glValidateProgramPipeline",
+ "glVertexArrayAttribBinding",
+ "glVertexArrayAttribFormat",
+ "glVertexArrayAttribIFormat",
+ "glVertexArrayAttribLFormat",
+ "glVertexArrayBindingDivisor",
+ "glVertexArrayElementBuffer",
+ "glVertexArrayVertexBuffer",
+ "glVertexArrayVertexBuffers",
+ "glVertexAttrib1d",
+ "glVertexAttrib1dv",
+ "glVertexAttrib1f",
+ "glVertexAttrib1fv",
+ "glVertexAttrib1s",
+ "glVertexAttrib1sv",
+ "glVertexAttrib2d",
+ "glVertexAttrib2dv",
+ "glVertexAttrib2f",
+ "glVertexAttrib2fv",
+ "glVertexAttrib2s",
+ "glVertexAttrib2sv",
+ "glVertexAttrib3d",
+ "glVertexAttrib3dv",
+ "glVertexAttrib3f",
+ "glVertexAttrib3fv",
+ "glVertexAttrib3s",
+ "glVertexAttrib3sv",
+ "glVertexAttrib4Nbv",
+ "glVertexAttrib4Niv",
+ "glVertexAttrib4Nsv",
+ "glVertexAttrib4Nub",
+ "glVertexAttrib4Nubv",
+ "glVertexAttrib4Nuiv",
+ "glVertexAttrib4Nusv",
+ "glVertexAttrib4bv",
+ "glVertexAttrib4d",
+ "glVertexAttrib4dv",
+ "glVertexAttrib4f",
+ "glVertexAttrib4fv",
+ "glVertexAttrib4iv",
+ "glVertexAttrib4s",
+ "glVertexAttrib4sv",
+ "glVertexAttrib4ubv",
+ "glVertexAttrib4uiv",
+ "glVertexAttrib4usv",
+ "glVertexAttribBinding",
+ "glVertexAttribDivisor",
+ "glVertexAttribFormat",
+ "glVertexAttribI1i",
+ "glVertexAttribI1iv",
+ "glVertexAttribI1ui",
+ "glVertexAttribI1uiv",
+ "glVertexAttribI2i",
+ "glVertexAttribI2iv",
+ "glVertexAttribI2ui",
+ "glVertexAttribI2uiv",
+ "glVertexAttribI3i",
+ "glVertexAttribI3iv",
+ "glVertexAttribI3ui",
+ "glVertexAttribI3uiv",
+ "glVertexAttribI4bv",
+ "glVertexAttribI4i",
+ "glVertexAttribI4iv",
+ "glVertexAttribI4sv",
+ "glVertexAttribI4ubv",
+ "glVertexAttribI4ui",
+ "glVertexAttribI4uiv",
+ "glVertexAttribI4usv",
+ "glVertexAttribIFormat",
+ "glVertexAttribIPointer",
+ "glVertexAttribL1d",
+ "glVertexAttribL1dv",
+ "glVertexAttribL2d",
+ "glVertexAttribL2dv",
+ "glVertexAttribL3d",
+ "glVertexAttribL3dv",
+ "glVertexAttribL4d",
+ "glVertexAttribL4dv",
+ "glVertexAttribLFormat",
+ "glVertexAttribLPointer",
+ "glVertexAttribP1ui",
+ "glVertexAttribP1uiv",
+ "glVertexAttribP2ui",
+ "glVertexAttribP2uiv",
+ "glVertexAttribP3ui",
+ "glVertexAttribP3uiv",
+ "glVertexAttribP4ui",
+ "glVertexAttribP4uiv",
+ "glVertexAttribPointer",
+ "glVertexBindingDivisor",
+ "glViewport",
+ "glViewportArrayv",
+ "glViewportIndexedf",
+ "glViewportIndexedfv",
+ "glWaitSync",
+};
+
+union GL3WProcs gl3wProcs;
+
+static void load_procs(GL3WGetProcAddressProc proc)
+{
+ size_t i;
+ for (i = 0; i < ARRAY_SIZE(proc_names); i++)
+ gl3wProcs.ptr[i] = proc(proc_names[i]);
+}
diff --git a/simulation/include/Adafruit_GFX.h b/simulation/include/Adafruit_GFX.h
index 3d97b52..5d40be0 100644
--- a/simulation/include/Adafruit_GFX.h
+++ b/simulation/include/Adafruit_GFX.h
@@ -1,233 +1,233 @@
-#ifndef _ADAFRUIT_GFX_H
-#define _ADAFRUIT_GFX_H
-
-#if ARDUINO >= 100
- #include "Arduino.h"
- #include "Print.h"
-#else
- #include "WProgram.h"
-#endif
-#include "gfxfont.h"
-
-/// A generic graphics superclass that can handle all sorts of drawing. At a minimum you can subclass and provide drawPixel(). At a maximum you can do a ton of overriding to optimize. Used for any/all Adafruit displays!
-class Adafruit_GFX : public Print {
-
-public: // Exposed simulation variables...
- bool dimmed_;
- bool enabled_;
- bool inverted_;
- bool dirty_;
-
- public:
-
- Adafruit_GFX(int16_t w, int16_t h); // Constructor
-
- // This MUST be defined by the subclass:
- virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; ///< Virtual drawPixel() function to draw to the screen/framebuffer/etc, must be overridden in subclass. @param x X coordinate. @param y Y coordinate. @param color 16-bit pixel color.
-
- // TRANSACTION API / CORE DRAW API
- // These MAY be overridden by the subclass to provide device-specific
- // optimized code. Otherwise 'generic' versions are used.
- virtual void startWrite(void);
- virtual void writePixel(int16_t x, int16_t y, uint16_t color);
- virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
- virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
- virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
- virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
- virtual void endWrite(void);
-
- // CONTROL API
- // These MAY be overridden by the subclass to provide device-specific
- // optimized code. Otherwise 'generic' versions are used.
- virtual void setRotation(uint8_t r);
- virtual void invertDisplay(boolean i);
-
- // BASIC DRAW API
- // These MAY be overridden by the subclass to provide device-specific
- // optimized code. Otherwise 'generic' versions are used.
- virtual void
- // It's good to implement those, even if using transaction API
- drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
- drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
- fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
- fillScreen(uint16_t color),
- // Optional and probably not necessary to change
- drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
- drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
-
- // These exist only with Adafruit_GFX (no subclass overrides)
- void
- drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
- drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
- uint16_t color),
- fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
- fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
- int16_t delta, uint16_t color),
- drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
- int16_t x2, int16_t y2, uint16_t color),
- fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
- int16_t x2, int16_t y2, uint16_t color),
- drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
- int16_t radius, uint16_t color),
- fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
- int16_t radius, uint16_t color),
- drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
- int16_t w, int16_t h, uint16_t color),
- drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
- int16_t w, int16_t h, uint16_t color, uint16_t bg),
- drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
- int16_t w, int16_t h, uint16_t color),
- drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
- int16_t w, int16_t h, uint16_t color, uint16_t bg),
- drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
- int16_t w, int16_t h, uint16_t color),
- drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
- int16_t w, int16_t h),
- drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap,
- int16_t w, int16_t h),
- drawGrayscaleBitmap(int16_t x, int16_t y,
- const uint8_t bitmap[], const uint8_t mask[],
- int16_t w, int16_t h),
- drawGrayscaleBitmap(int16_t x, int16_t y,
- uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
- drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[],
- int16_t w, int16_t h),
- drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap,
- int16_t w, int16_t h),
- drawRGBBitmap(int16_t x, int16_t y,
- const uint16_t bitmap[], const uint8_t mask[],
- int16_t w, int16_t h),
- drawRGBBitmap(int16_t x, int16_t y,
- uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
- drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
- uint16_t bg, uint8_t size),
- setCursor(int16_t x, int16_t y),
- setTextColor(uint16_t c),
- setTextColor(uint16_t c, uint16_t bg),
- setTextSize(uint8_t s),
- setTextWrap(boolean w),
- cp437(boolean x=true),
- setFont(const GFXfont *f = NULL),
- getTextBounds(const char *string, int16_t x, int16_t y,
- int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
- getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y,
- int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
- getTextBounds(const String &str, int16_t x, int16_t y,
- int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
-
-
-#if ARDUINO >= 100
- virtual size_t write(uint8_t);
-#else
- virtual void write(uint8_t);
-#endif
-
- int16_t height(void) const;
- int16_t width(void) const;
-
- uint8_t getRotation(void) const;
-
- // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
- int16_t getCursorX(void) const;
- int16_t getCursorY(void) const;
-
- protected:
- void
- charBounds(char c, int16_t *x, int16_t *y,
- int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy);
- const int16_t
- WIDTH, ///< This is the 'raw' display width - never changes
- HEIGHT; ///< This is the 'raw' display height - never changes
- int16_t
- _width, ///< Display width as modified by current rotation
- _height, ///< Display height as modified by current rotation
- cursor_x, ///< x location to start print()ing text
- cursor_y; ///< y location to start print()ing text
- uint16_t
- textcolor, ///< 16-bit background color for print()
- textbgcolor; ///< 16-bit text color for print()
- uint8_t
- textsize, ///< Desired magnification of text to print()
- rotation; ///< Display rotation (0 thru 3)
- boolean
- wrap, ///< If set, 'wrap' text at right edge of display
- _cp437; ///< If set, use correct CP437 charset (default is off)
- GFXfont
- *gfxFont; ///< Pointer to special font
-};
-
-
-/// A simple drawn button UI element
-class Adafruit_GFX_Button {
-
- public:
- Adafruit_GFX_Button(void);
- // "Classic" initButton() uses center & size
- void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y,
- uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
- uint16_t textcolor, char *label, uint8_t textsize);
- // New/alt initButton() uses upper-left corner & size
- void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1,
- uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
- uint16_t textcolor, char *label, uint8_t textsize);
- void drawButton(boolean inverted = false);
- boolean contains(int16_t x, int16_t y);
-
- void press(boolean p);
- boolean isPressed();
- boolean justPressed();
- boolean justReleased();
-
- private:
- Adafruit_GFX *_gfx;
- int16_t _x1, _y1; // Coordinates of top-left corner
- uint16_t _w, _h;
- uint8_t _textsize;
- uint16_t _outlinecolor, _fillcolor, _textcolor;
- char _label[10];
-
- boolean currstate, laststate;
-};
-
-
-/// A GFX 1-bit canvas context for graphics
-class GFXcanvas1 : public Adafruit_GFX {
- public:
- GFXcanvas1(uint16_t w, uint16_t h);
- ~GFXcanvas1(void);
- void drawPixel(int16_t x, int16_t y, uint16_t color),
- fillScreen(uint16_t color);
- uint8_t *getBuffer(void);
- private:
- uint8_t *buffer;
-};
-
-
-/// A GFX 8-bit canvas context for graphics
-class GFXcanvas8 : public Adafruit_GFX {
- public:
- GFXcanvas8(uint16_t w, uint16_t h);
- ~GFXcanvas8(void);
- void drawPixel(int16_t x, int16_t y, uint16_t color),
- fillScreen(uint16_t color),
- writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
-
- uint8_t *getBuffer(void);
- private:
- uint8_t *buffer;
-};
-
-
-/// A GFX 16-bit canvas context for graphics
-class GFXcanvas16 : public Adafruit_GFX {
- public:
- GFXcanvas16(uint16_t w, uint16_t h);
- ~GFXcanvas16(void);
- void drawPixel(int16_t x, int16_t y, uint16_t color),
- fillScreen(uint16_t color);
- uint16_t *getBuffer(void);
- private:
- uint16_t *buffer;
-};
-
-#endif // _ADAFRUIT_GFX_H
+#ifndef _ADAFRUIT_GFX_H
+#define _ADAFRUIT_GFX_H
+
+#if ARDUINO >= 100
+ #include "Arduino.h"
+ #include "Print.h"
+#else
+ #include "WProgram.h"
+#endif
+#include "gfxfont.h"
+
+/// A generic graphics superclass that can handle all sorts of drawing. At a minimum you can subclass and provide drawPixel(). At a maximum you can do a ton of overriding to optimize. Used for any/all Adafruit displays!
+class Adafruit_GFX : public Print {
+
+public: // Exposed simulation variables...
+ bool dimmed_;
+ bool enabled_;
+ bool inverted_;
+ bool dirty_;
+
+ public:
+
+ Adafruit_GFX(int16_t w, int16_t h); // Constructor
+
+ // This MUST be defined by the subclass:
+ virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; ///< Virtual drawPixel() function to draw to the screen/framebuffer/etc, must be overridden in subclass. @param x X coordinate. @param y Y coordinate. @param color 16-bit pixel color.
+
+ // TRANSACTION API / CORE DRAW API
+ // These MAY be overridden by the subclass to provide device-specific
+ // optimized code. Otherwise 'generic' versions are used.
+ virtual void startWrite(void);
+ virtual void writePixel(int16_t x, int16_t y, uint16_t color);
+ virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
+ virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
+ virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
+ virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
+ virtual void endWrite(void);
+
+ // CONTROL API
+ // These MAY be overridden by the subclass to provide device-specific
+ // optimized code. Otherwise 'generic' versions are used.
+ virtual void setRotation(uint8_t r);
+ virtual void invertDisplay(boolean i);
+
+ // BASIC DRAW API
+ // These MAY be overridden by the subclass to provide device-specific
+ // optimized code. Otherwise 'generic' versions are used.
+ virtual void
+ // It's good to implement those, even if using transaction API
+ drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
+ drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
+ fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
+ fillScreen(uint16_t color),
+ // Optional and probably not necessary to change
+ drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
+ drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
+
+ // These exist only with Adafruit_GFX (no subclass overrides)
+ void
+ drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
+ drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
+ uint16_t color),
+ fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
+ fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
+ int16_t delta, uint16_t color),
+ drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+ int16_t x2, int16_t y2, uint16_t color),
+ fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+ int16_t x2, int16_t y2, uint16_t color),
+ drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
+ int16_t radius, uint16_t color),
+ fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
+ int16_t radius, uint16_t color),
+ drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
+ int16_t w, int16_t h, uint16_t color),
+ drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
+ int16_t w, int16_t h, uint16_t color, uint16_t bg),
+ drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
+ int16_t w, int16_t h, uint16_t color),
+ drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
+ int16_t w, int16_t h, uint16_t color, uint16_t bg),
+ drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
+ int16_t w, int16_t h, uint16_t color),
+ drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
+ int16_t w, int16_t h),
+ drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap,
+ int16_t w, int16_t h),
+ drawGrayscaleBitmap(int16_t x, int16_t y,
+ const uint8_t bitmap[], const uint8_t mask[],
+ int16_t w, int16_t h),
+ drawGrayscaleBitmap(int16_t x, int16_t y,
+ uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
+ drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[],
+ int16_t w, int16_t h),
+ drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap,
+ int16_t w, int16_t h),
+ drawRGBBitmap(int16_t x, int16_t y,
+ const uint16_t bitmap[], const uint8_t mask[],
+ int16_t w, int16_t h),
+ drawRGBBitmap(int16_t x, int16_t y,
+ uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
+ drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
+ uint16_t bg, uint8_t size),
+ setCursor(int16_t x, int16_t y),
+ setTextColor(uint16_t c),
+ setTextColor(uint16_t c, uint16_t bg),
+ setTextSize(uint8_t s),
+ setTextWrap(boolean w),
+ cp437(boolean x=true),
+ setFont(const GFXfont *f = NULL),
+ getTextBounds(const char *string, int16_t x, int16_t y,
+ int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
+ getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y,
+ int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
+ getTextBounds(const String &str, int16_t x, int16_t y,
+ int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
+
+
+#if ARDUINO >= 100
+ virtual size_t write(uint8_t);
+#else
+ virtual void write(uint8_t);
+#endif
+
+ int16_t height(void) const;
+ int16_t width(void) const;
+
+ uint8_t getRotation(void) const;
+
+ // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
+ int16_t getCursorX(void) const;
+ int16_t getCursorY(void) const;
+
+ protected:
+ void
+ charBounds(char c, int16_t *x, int16_t *y,
+ int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy);
+ const int16_t
+ WIDTH, ///< This is the 'raw' display width - never changes
+ HEIGHT; ///< This is the 'raw' display height - never changes
+ int16_t
+ _width, ///< Display width as modified by current rotation
+ _height, ///< Display height as modified by current rotation
+ cursor_x, ///< x location to start print()ing text
+ cursor_y; ///< y location to start print()ing text
+ uint16_t
+ textcolor, ///< 16-bit background color for print()
+ textbgcolor; ///< 16-bit text color for print()
+ uint8_t
+ textsize, ///< Desired magnification of text to print()
+ rotation; ///< Display rotation (0 thru 3)
+ boolean
+ wrap, ///< If set, 'wrap' text at right edge of display
+ _cp437; ///< If set, use correct CP437 charset (default is off)
+ GFXfont
+ *gfxFont; ///< Pointer to special font
+};
+
+
+/// A simple drawn button UI element
+class Adafruit_GFX_Button {
+
+ public:
+ Adafruit_GFX_Button(void);
+ // "Classic" initButton() uses center & size
+ void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y,
+ uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
+ uint16_t textcolor, char *label, uint8_t textsize);
+ // New/alt initButton() uses upper-left corner & size
+ void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1,
+ uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
+ uint16_t textcolor, char *label, uint8_t textsize);
+ void drawButton(boolean inverted = false);
+ boolean contains(int16_t x, int16_t y);
+
+ void press(boolean p);
+ boolean isPressed();
+ boolean justPressed();
+ boolean justReleased();
+
+ private:
+ Adafruit_GFX *_gfx;
+ int16_t _x1, _y1; // Coordinates of top-left corner
+ uint16_t _w, _h;
+ uint8_t _textsize;
+ uint16_t _outlinecolor, _fillcolor, _textcolor;
+ char _label[10];
+
+ boolean currstate, laststate;
+};
+
+
+/// A GFX 1-bit canvas context for graphics
+class GFXcanvas1 : public Adafruit_GFX {
+ public:
+ GFXcanvas1(uint16_t w, uint16_t h);
+ ~GFXcanvas1(void);
+ void drawPixel(int16_t x, int16_t y, uint16_t color),
+ fillScreen(uint16_t color);
+ uint8_t *getBuffer(void);
+ private:
+ uint8_t *buffer;
+};
+
+
+/// A GFX 8-bit canvas context for graphics
+class GFXcanvas8 : public Adafruit_GFX {
+ public:
+ GFXcanvas8(uint16_t w, uint16_t h);
+ ~GFXcanvas8(void);
+ void drawPixel(int16_t x, int16_t y, uint16_t color),
+ fillScreen(uint16_t color),
+ writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
+
+ uint8_t *getBuffer(void);
+ private:
+ uint8_t *buffer;
+};
+
+
+/// A GFX 16-bit canvas context for graphics
+class GFXcanvas16 : public Adafruit_GFX {
+ public:
+ GFXcanvas16(uint16_t w, uint16_t h);
+ ~GFXcanvas16(void);
+ void drawPixel(int16_t x, int16_t y, uint16_t color),
+ fillScreen(uint16_t color);
+ uint16_t *getBuffer(void);
+ private:
+ uint16_t *buffer;
+};
+
+#endif // _ADAFRUIT_GFX_H
diff --git a/simulation/include/Adafruit_MPR121.h b/simulation/include/Adafruit_MPR121.h
index ac32a08..521594d 100644
--- a/simulation/include/Adafruit_MPR121.h
+++ b/simulation/include/Adafruit_MPR121.h
@@ -1,114 +1,114 @@
-/*!
- * @file Adafruit_MPR121.h
- *
- This is a library for the MPR121 12-Channel Capacitive Sensor
-
- Designed specifically to work with the MPR121 breakout from Adafruit
- ----> https://www.adafruit.com/products/1982
-
- These sensors use I2C to communicate, 2+ pins are required to
- interface
- Adafruit invests time and resources providing this open source code,
- please support Adafruit and open-source hardware by purchasing
- products from Adafruit!
-
- Written by Limor Fried/Ladyada for Adafruit Industries.
- BSD license, all text above must be included in any redistribution
- *
- */
-
-#ifndef ADAFRUIT_MPR121_H
-#define ADAFRUIT_MPR121_H
-
-// #if (ARDUINO >= 100)
- #include "Arduino.h"
-// #else
-// #include "WProgram.h"
-// #endif
-#include
-
-// The default I2C address
-#define MPR121_I2CADDR_DEFAULT 0x5A ///< default I2C address
-
-/**
- *****************************************************************************************
- * @brief Device register map
- ****************************************************************************************/
-enum {
- MPR121_TOUCHSTATUS_L = 0x00,
- MPR121_TOUCHSTATUS_H = 0x01,
- MPR121_FILTDATA_0L = 0x04,
- MPR121_FILTDATA_0H = 0x05,
- MPR121_BASELINE_0 = 0x1E,
- MPR121_MHDR = 0x2B,
- MPR121_NHDR = 0x2C,
- MPR121_NCLR = 0x2D,
- MPR121_FDLR = 0x2E,
- MPR121_MHDF = 0x2F,
- MPR121_NHDF = 0x30,
- MPR121_NCLF = 0x31,
- MPR121_FDLF = 0x32,
- MPR121_NHDT = 0x33,
- MPR121_NCLT = 0x34,
- MPR121_FDLT = 0x35,
-
- MPR121_TOUCHTH_0 = 0x41,
- MPR121_RELEASETH_0 = 0x42,
- MPR121_DEBOUNCE = 0x5B,
- MPR121_CONFIG1 = 0x5C,
- MPR121_CONFIG2 = 0x5D,
- MPR121_CHARGECURR_0 = 0x5F,
- MPR121_CHARGETIME_1 = 0x6C,
- MPR121_ECR = 0x5E,
- MPR121_AUTOCONFIG0 = 0x7B,
- MPR121_AUTOCONFIG1 = 0x7C,
- MPR121_UPLIMIT = 0x7D,
- MPR121_LOWLIMIT = 0x7E,
- MPR121_TARGETLIMIT = 0x7F,
-
- MPR121_GPIODIR = 0x76,
- MPR121_GPIOEN = 0x77,
- MPR121_GPIOSET = 0x78,
- MPR121_GPIOCLR = 0x79,
- MPR121_GPIOTOGGLE = 0x7A,
-
- MPR121_SOFTRESET = 0x80,
-};
-
-//.. thru to 0x1C/0x1D
-
-/**************************************************************************/
-/*!
- @brief Class that stores state and functions for interacting with MPR121
- proximity capacitive touch sensor controller.
-*/
-/**************************************************************************/
-class Adafruit_MPR121 {
- public:
- // Hardware I2C
- Adafruit_MPR121(void);
-
- boolean begin(uint8_t i2caddr = MPR121_I2CADDR_DEFAULT);
-
- uint16_t filteredData(uint8_t t);
- uint16_t baselineData(uint8_t t);
-
- uint8_t readRegister8(uint8_t reg);
- uint16_t readRegister16(uint8_t reg);
- void writeRegister(uint8_t reg, uint8_t value);
- uint16_t touched(void);
- // Add deprecated attribute so that the compiler shows a warning
- void setThreshholds(uint8_t touch, uint8_t release) __attribute__((deprecated));
- void setThresholds(uint8_t touch, uint8_t release);
-
- uint8_t _registers[48];
-
-
- // Simulator specific stuff
- void mockFilteredData(int register, uint16_t value);
-
- private:
- int8_t _i2caddr;
-};
-
-#endif // ADAFRUIT_MPR121_H
+/*!
+ * @file Adafruit_MPR121.h
+ *
+ This is a library for the MPR121 12-Channel Capacitive Sensor
+
+ Designed specifically to work with the MPR121 breakout from Adafruit
+ ----> https://www.adafruit.com/products/1982
+
+ These sensors use I2C to communicate, 2+ pins are required to
+ interface
+ Adafruit invests time and resources providing this open source code,
+ please support Adafruit and open-source hardware by purchasing
+ products from Adafruit!
+
+ Written by Limor Fried/Ladyada for Adafruit Industries.
+ BSD license, all text above must be included in any redistribution
+ *
+ */
+
+#ifndef ADAFRUIT_MPR121_H
+#define ADAFRUIT_MPR121_H
+
+// #if (ARDUINO >= 100)
+ #include "Arduino.h"
+// #else
+// #include "WProgram.h"
+// #endif
+#include
+
+// The default I2C address
+#define MPR121_I2CADDR_DEFAULT 0x5A ///< default I2C address
+
+/**
+ *****************************************************************************************
+ * @brief Device register map
+ ****************************************************************************************/
+enum {
+ MPR121_TOUCHSTATUS_L = 0x00,
+ MPR121_TOUCHSTATUS_H = 0x01,
+ MPR121_FILTDATA_0L = 0x04,
+ MPR121_FILTDATA_0H = 0x05,
+ MPR121_BASELINE_0 = 0x1E,
+ MPR121_MHDR = 0x2B,
+ MPR121_NHDR = 0x2C,
+ MPR121_NCLR = 0x2D,
+ MPR121_FDLR = 0x2E,
+ MPR121_MHDF = 0x2F,
+ MPR121_NHDF = 0x30,
+ MPR121_NCLF = 0x31,
+ MPR121_FDLF = 0x32,
+ MPR121_NHDT = 0x33,
+ MPR121_NCLT = 0x34,
+ MPR121_FDLT = 0x35,
+
+ MPR121_TOUCHTH_0 = 0x41,
+ MPR121_RELEASETH_0 = 0x42,
+ MPR121_DEBOUNCE = 0x5B,
+ MPR121_CONFIG1 = 0x5C,
+ MPR121_CONFIG2 = 0x5D,
+ MPR121_CHARGECURR_0 = 0x5F,
+ MPR121_CHARGETIME_1 = 0x6C,
+ MPR121_ECR = 0x5E,
+ MPR121_AUTOCONFIG0 = 0x7B,
+ MPR121_AUTOCONFIG1 = 0x7C,
+ MPR121_UPLIMIT = 0x7D,
+ MPR121_LOWLIMIT = 0x7E,
+ MPR121_TARGETLIMIT = 0x7F,
+
+ MPR121_GPIODIR = 0x76,
+ MPR121_GPIOEN = 0x77,
+ MPR121_GPIOSET = 0x78,
+ MPR121_GPIOCLR = 0x79,
+ MPR121_GPIOTOGGLE = 0x7A,
+
+ MPR121_SOFTRESET = 0x80,
+};
+
+//.. thru to 0x1C/0x1D
+
+/**************************************************************************/
+/*!
+ @brief Class that stores state and functions for interacting with MPR121
+ proximity capacitive touch sensor controller.
+*/
+/**************************************************************************/
+class Adafruit_MPR121 {
+ public:
+ // Hardware I2C
+ Adafruit_MPR121(void);
+
+ boolean begin(uint8_t i2caddr = MPR121_I2CADDR_DEFAULT);
+
+ uint16_t filteredData(uint8_t t);
+ uint16_t baselineData(uint8_t t);
+
+ uint8_t readRegister8(uint8_t reg);
+ uint16_t readRegister16(uint8_t reg);
+ void writeRegister(uint8_t reg, uint8_t value);
+ uint16_t touched(void);
+ // Add deprecated attribute so that the compiler shows a warning
+ void setThreshholds(uint8_t touch, uint8_t release) __attribute__((deprecated));
+ void setThresholds(uint8_t touch, uint8_t release);
+
+ uint8_t _registers[48];
+
+
+ // Simulator specific stuff
+ void mockFilteredData(int register, uint16_t value);
+
+ private:
+ int8_t _i2caddr;
+};
+
+#endif // ADAFRUIT_MPR121_H
diff --git a/simulation/include/Adafruit_SSD1306.h b/simulation/include/Adafruit_SSD1306.h
index 9d48800..512c75b 100644
--- a/simulation/include/Adafruit_SSD1306.h
+++ b/simulation/include/Adafruit_SSD1306.h
@@ -1,169 +1,169 @@
-/*!
- * @file Adafruit_SSD1306.h
- *
- * This is part of for Adafruit's SSD1306 library for monochrome
- * OLED displays: http://www.adafruit.com/category/63_98
- *
- * These displays use I2C or SPI to communicate. I2C requires 2 pins
- * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK,
- * select, data/command) and optionally a reset pin. Hardware SPI or
- * 'bitbang' software SPI are both supported.
- *
- * Adafruit invests time and resources providing this open source code,
- * please support Adafruit and open-source hardware by purchasing
- * products from Adafruit!
- *
- * Written by Limor Fried/Ladyada for Adafruit Industries, with
- * contributions from the open source community.
- *
- * BSD license, all text above, and the splash screen header file,
- * must be included in any redistribution.
- *
- */
-
-#ifndef _Adafruit_SSD1306_H_
-#define _Adafruit_SSD1306_H_
-
-#include
-
-#include
-
-typedef void* SPIClass;
-
-// #if defined(__AVR__)
-// typedef volatile uint8_t PortReg;
-// typedef uint8_t PortMask;
-// #define HAVE_PORTREG
-// #elif defined(__SAM3X8E__)
-// typedef volatile RwReg PortReg;
-// typedef uint32_t PortMask;
-// #define HAVE_PORTREG
-// #elif defined(__arm__) || defined(ARDUINO_FEATHER52)
-// typedef volatile uint32_t PortReg;
-// typedef uint32_t PortMask;
-// #define HAVE_PORTREG
-// #endif
-
-#define BLACK 0 ///< Draw 'off' pixels
-#define WHITE 1 ///< Draw 'on' pixels
-#define INVERSE 2 ///< Invert pixels
-
-#define SSD1306_MEMORYMODE 0x20 ///< See datasheet
-#define SSD1306_COLUMNADDR 0x21 ///< See datasheet
-#define SSD1306_PAGEADDR 0x22 ///< See datasheet
-#define SSD1306_SETCONTRAST 0x81 ///< See datasheet
-#define SSD1306_CHARGEPUMP 0x8D ///< See datasheet
-#define SSD1306_SEGREMAP 0xA0 ///< See datasheet
-#define SSD1306_DISPLAYALLON_RESUME 0xA4 ///< See datasheet
-#define SSD1306_DISPLAYALLON 0xA5 ///< Not currently used
-#define SSD1306_NORMALDISPLAY 0xA6 ///< See datasheet
-#define SSD1306_INVERTDISPLAY 0xA7 ///< See datasheet
-#define SSD1306_SETMULTIPLEX 0xA8 ///< See datasheet
-#define SSD1306_DISPLAYOFF 0xAE ///< See datasheet
-#define SSD1306_DISPLAYON 0xAF ///< See datasheet
-#define SSD1306_COMSCANINC 0xC0 ///< Not currently used
-#define SSD1306_COMSCANDEC 0xC8 ///< See datasheet
-#define SSD1306_SETDISPLAYOFFSET 0xD3 ///< See datasheet
-#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet
-#define SSD1306_SETPRECHARGE 0xD9 ///< See datasheet
-#define SSD1306_SETCOMPINS 0xDA ///< See datasheet
-#define SSD1306_SETVCOMDETECT 0xDB ///< See datasheet
-
-#define SSD1306_SETLOWCOLUMN 0x00 ///< Not currently used
-#define SSD1306_SETHIGHCOLUMN 0x10 ///< Not currently used
-#define SSD1306_SETSTARTLINE 0x40 ///< See datasheet
-
-#define SSD1306_EXTERNALVCC 0x01 ///< External display voltage source
-#define SSD1306_SWITCHCAPVCC 0x02 ///< Gen. display voltage from 3.3V
-
-#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 ///< Init rt scroll
-#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 ///< Init left scroll
-#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 ///< Init diag scroll
-#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A ///< Init diag scroll
-#define SSD1306_DEACTIVATE_SCROLL 0x2E ///< Stop scroll
-#define SSD1306_ACTIVATE_SCROLL 0x2F ///< Start scroll
-#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 ///< Set scroll range
-
-// Deprecated size stuff for backwards compatibility with old sketches
-#if defined SSD1306_128_64
- #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_64 defined
- #define SSD1306_LCDHEIGHT 64 ///< DEPRECATED: height w/SSD1306_128_64 defined
-#endif
-#if defined SSD1306_128_32
- #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_32 defined
- #define SSD1306_LCDHEIGHT 32 ///< DEPRECATED: height w/SSD1306_128_32 defined
-#endif
-#if defined SSD1306_96_16
- #define SSD1306_LCDWIDTH 96 ///< DEPRECATED: width w/SSD1306_96_16 defined
- #define SSD1306_LCDHEIGHT 16 ///< DEPRECATED: height w/SSD1306_96_16 defined
-#endif
-
-/*!
- @brief Class that stores state and functions for interacting with
- SSD1306 OLED displays.
-*/
-class Adafruit_SSD1306 : public Adafruit_GFX {
- public:
- // NEW CONSTRUCTORS -- recommended for new projects
- Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire, int8_t rst_pin=-1,
- uint32_t clkDuring=400000UL, uint32_t clkAfter=100000UL);
- Adafruit_SSD1306(uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin,
- int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
- Adafruit_SSD1306(uint8_t w, uint8_t h, SPIClass *spi,
- int8_t dc_pin, int8_t rst_pin, int8_t cs_pin, uint32_t bitrate=8000000UL);
-
- // DEPRECATED CONSTRUCTORS - for back compatibility, avoid in new projects
- Adafruit_SSD1306(int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin,
- int8_t rst_pin, int8_t cs_pin);
- Adafruit_SSD1306(int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
- Adafruit_SSD1306(int8_t rst_pin = -1);
-
- ~Adafruit_SSD1306(void);
-
- boolean begin(uint8_t switchvcc=SSD1306_SWITCHCAPVCC,
- uint8_t i2caddr=0, boolean reset=true,
- boolean periphBegin=true);
- void display(void);
- void clearDisplay(void);
- void invertDisplay(boolean i);
- void dim(boolean dim);
- void drawPixel(int16_t x, int16_t y, uint16_t color);
- virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
- virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
- void startscrollright(uint8_t start, uint8_t stop);
- void startscrollleft(uint8_t start, uint8_t stop);
- void startscrolldiagright(uint8_t start, uint8_t stop);
- void startscrolldiagleft(uint8_t start, uint8_t stop);
- void stopscroll(void);
- void ssd1306_command(uint8_t c);
- boolean getPixel(int16_t x, int16_t y);
- uint8_t *getBuffer(void);
-
- private:
- inline void SPIwrite(uint8_t d) __attribute__((always_inline));
- void drawFastHLineInternal(int16_t x, int16_t y, int16_t w,
- uint16_t color);
- void drawFastVLineInternal(int16_t x, int16_t y, int16_t h,
- uint16_t color);
- void ssd1306_command1(uint8_t c);
- void ssd1306_commandList(const uint8_t *c, uint8_t n);
-
- SPIClass *spi;
- TwoWire *wire;
- uint8_t *buffer;
- int8_t i2caddr, vccstate, page_end;
- int8_t mosiPin , clkPin , dcPin , csPin, rstPin;
-#ifdef HAVE_PORTREG
- PortReg *mosiPort , *clkPort , *dcPort , *csPort;
- PortMask mosiPinMask, clkPinMask, dcPinMask, csPinMask;
-#endif
-#if defined(SPI_HAS_TRANSACTION)
- SPISettings spiSettings;
-#endif
-#if ARDUINO >= 157
- uint32_t wireClk; // Wire speed for SSD1306 transfers
- uint32_t restoreClk; // Wire speed following SSD1306 transfers
-#endif
-};
-
-#endif // _Adafruit_SSD1306_H_
+/*!
+ * @file Adafruit_SSD1306.h
+ *
+ * This is part of for Adafruit's SSD1306 library for monochrome
+ * OLED displays: http://www.adafruit.com/category/63_98
+ *
+ * These displays use I2C or SPI to communicate. I2C requires 2 pins
+ * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK,
+ * select, data/command) and optionally a reset pin. Hardware SPI or
+ * 'bitbang' software SPI are both supported.
+ *
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+ *
+ * Written by Limor Fried/Ladyada for Adafruit Industries, with
+ * contributions from the open source community.
+ *
+ * BSD license, all text above, and the splash screen header file,
+ * must be included in any redistribution.
+ *
+ */
+
+#ifndef _Adafruit_SSD1306_H_
+#define _Adafruit_SSD1306_H_
+
+#include
+
+#include
+
+typedef void* SPIClass;
+
+// #if defined(__AVR__)
+// typedef volatile uint8_t PortReg;
+// typedef uint8_t PortMask;
+// #define HAVE_PORTREG
+// #elif defined(__SAM3X8E__)
+// typedef volatile RwReg PortReg;
+// typedef uint32_t PortMask;
+// #define HAVE_PORTREG
+// #elif defined(__arm__) || defined(ARDUINO_FEATHER52)
+// typedef volatile uint32_t PortReg;
+// typedef uint32_t PortMask;
+// #define HAVE_PORTREG
+// #endif
+
+#define BLACK 0 ///< Draw 'off' pixels
+#define WHITE 1 ///< Draw 'on' pixels
+#define INVERSE 2 ///< Invert pixels
+
+#define SSD1306_MEMORYMODE 0x20 ///< See datasheet
+#define SSD1306_COLUMNADDR 0x21 ///< See datasheet
+#define SSD1306_PAGEADDR 0x22 ///< See datasheet
+#define SSD1306_SETCONTRAST 0x81 ///< See datasheet
+#define SSD1306_CHARGEPUMP 0x8D ///< See datasheet
+#define SSD1306_SEGREMAP 0xA0 ///< See datasheet
+#define SSD1306_DISPLAYALLON_RESUME 0xA4 ///< See datasheet
+#define SSD1306_DISPLAYALLON 0xA5 ///< Not currently used
+#define SSD1306_NORMALDISPLAY 0xA6 ///< See datasheet
+#define SSD1306_INVERTDISPLAY 0xA7 ///< See datasheet
+#define SSD1306_SETMULTIPLEX 0xA8 ///< See datasheet
+#define SSD1306_DISPLAYOFF 0xAE ///< See datasheet
+#define SSD1306_DISPLAYON 0xAF ///< See datasheet
+#define SSD1306_COMSCANINC 0xC0 ///< Not currently used
+#define SSD1306_COMSCANDEC 0xC8 ///< See datasheet
+#define SSD1306_SETDISPLAYOFFSET 0xD3 ///< See datasheet
+#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet
+#define SSD1306_SETPRECHARGE 0xD9 ///< See datasheet
+#define SSD1306_SETCOMPINS 0xDA ///< See datasheet
+#define SSD1306_SETVCOMDETECT 0xDB ///< See datasheet
+
+#define SSD1306_SETLOWCOLUMN 0x00 ///< Not currently used
+#define SSD1306_SETHIGHCOLUMN 0x10 ///< Not currently used
+#define SSD1306_SETSTARTLINE 0x40 ///< See datasheet
+
+#define SSD1306_EXTERNALVCC 0x01 ///< External display voltage source
+#define SSD1306_SWITCHCAPVCC 0x02 ///< Gen. display voltage from 3.3V
+
+#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 ///< Init rt scroll
+#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 ///< Init left scroll
+#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 ///< Init diag scroll
+#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A ///< Init diag scroll
+#define SSD1306_DEACTIVATE_SCROLL 0x2E ///< Stop scroll
+#define SSD1306_ACTIVATE_SCROLL 0x2F ///< Start scroll
+#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 ///< Set scroll range
+
+// Deprecated size stuff for backwards compatibility with old sketches
+#if defined SSD1306_128_64
+ #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_64 defined
+ #define SSD1306_LCDHEIGHT 64 ///< DEPRECATED: height w/SSD1306_128_64 defined
+#endif
+#if defined SSD1306_128_32
+ #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_32 defined
+ #define SSD1306_LCDHEIGHT 32 ///< DEPRECATED: height w/SSD1306_128_32 defined
+#endif
+#if defined SSD1306_96_16
+ #define SSD1306_LCDWIDTH 96 ///< DEPRECATED: width w/SSD1306_96_16 defined
+ #define SSD1306_LCDHEIGHT 16 ///< DEPRECATED: height w/SSD1306_96_16 defined
+#endif
+
+/*!
+ @brief Class that stores state and functions for interacting with
+ SSD1306 OLED displays.
+*/
+class Adafruit_SSD1306 : public Adafruit_GFX {
+ public:
+ // NEW CONSTRUCTORS -- recommended for new projects
+ Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire, int8_t rst_pin=-1,
+ uint32_t clkDuring=400000UL, uint32_t clkAfter=100000UL);
+ Adafruit_SSD1306(uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin,
+ int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
+ Adafruit_SSD1306(uint8_t w, uint8_t h, SPIClass *spi,
+ int8_t dc_pin, int8_t rst_pin, int8_t cs_pin, uint32_t bitrate=8000000UL);
+
+ // DEPRECATED CONSTRUCTORS - for back compatibility, avoid in new projects
+ Adafruit_SSD1306(int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin,
+ int8_t rst_pin, int8_t cs_pin);
+ Adafruit_SSD1306(int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
+ Adafruit_SSD1306(int8_t rst_pin = -1);
+
+ ~Adafruit_SSD1306(void);
+
+ boolean begin(uint8_t switchvcc=SSD1306_SWITCHCAPVCC,
+ uint8_t i2caddr=0, boolean reset=true,
+ boolean periphBegin=true);
+ void display(void);
+ void clearDisplay(void);
+ void invertDisplay(boolean i);
+ void dim(boolean dim);
+ void drawPixel(int16_t x, int16_t y, uint16_t color);
+ virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
+ virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
+ void startscrollright(uint8_t start, uint8_t stop);
+ void startscrollleft(uint8_t start, uint8_t stop);
+ void startscrolldiagright(uint8_t start, uint8_t stop);
+ void startscrolldiagleft(uint8_t start, uint8_t stop);
+ void stopscroll(void);
+ void ssd1306_command(uint8_t c);
+ boolean getPixel(int16_t x, int16_t y);
+ uint8_t *getBuffer(void);
+
+ private:
+ inline void SPIwrite(uint8_t d) __attribute__((always_inline));
+ void drawFastHLineInternal(int16_t x, int16_t y, int16_t w,
+ uint16_t color);
+ void drawFastVLineInternal(int16_t x, int16_t y, int16_t h,
+ uint16_t color);
+ void ssd1306_command1(uint8_t c);
+ void ssd1306_commandList(const uint8_t *c, uint8_t n);
+
+ SPIClass *spi;
+ TwoWire *wire;
+ uint8_t *buffer;
+ int8_t i2caddr, vccstate, page_end;
+ int8_t mosiPin , clkPin , dcPin , csPin, rstPin;
+#ifdef HAVE_PORTREG
+ PortReg *mosiPort , *clkPort , *dcPort , *csPort;
+ PortMask mosiPinMask, clkPinMask, dcPinMask, csPinMask;
+#endif
+#if defined(SPI_HAS_TRANSACTION)
+ SPISettings spiSettings;
+#endif
+#if ARDUINO >= 157
+ uint32_t wireClk; // Wire speed for SSD1306 transfers
+ uint32_t restoreClk; // Wire speed following SSD1306 transfers
+#endif
+};
+
+#endif // _Adafruit_SSD1306_H_
diff --git a/simulation/include/Arduino.h b/simulation/include/Arduino.h
index a8bced0..73aaa98 100644
--- a/simulation/include/Arduino.h
+++ b/simulation/include/Arduino.h
@@ -1,105 +1,105 @@
-#ifndef __ARDUINO_H__
-#define __ARDUINO_H__
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Wiring.h"
-#include "simusbmidi.h"
-
-#include "core_pins.h"
-
-#define PROGMEM
-
-#ifndef _BV
-#define _BV(x) (1u<<(x))
-#endif
-
-// SPI CTRL REG BITS
-#define SPIE 7
-#define SPE 6
-#define DORD 5
-#define MSTR 4
-#define CPOL 3
-#define CPHA 2
-#define SPR1 1
-#define SPR0 0
-
-
-#define A11 (0xa1)
-
-/*
-SPCR
-| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
-| SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |
-
-SPIE - Enables the SPI interrupt when 1
-SPE - Enables the SPI when 1
-DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0
-MSTR - Sets the Arduino in master mode when 1, slave mode when 0
-CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0
-CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0
-SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)
-*/
-
-
-
-#define LSBFIRST 0
-#define MSBFIRST 1
-
-typedef bool boolean;
-typedef uint8_t byte;
-
-// class Print
-// {
-// public:
-// };
-
-
-class SimSerial
-{
-public:
- void begin(uint32_t speed);
- void println(uint32_t value);
- void println();
- void println(const char* str);
- void print(const char* str);
- void print(uint32_t intValue);
- void write(const uint8_t str);
- void flush();
-
-};
-
-
-extern SimSerial Serial;
-extern SimSerial Serial3; //Used for MIDI serial putput with default hardware
-extern SimUsbMidi usbMIDI;
-
-//extern void putString(int row, int col, int color, const char* msg, const FONT_INFO fontInfo);
-
-uint32_t micros();
-uint32_t millis();
-void delay(uint32_t millis);
-void delayMicroseconds(uint32_t micros);
-
-
-void pinMode(uint8_t, uint8_t);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-//void digitalWrite(uint8_t, uint8_t);
-//int digitalRead(uint8_t);
-
-#ifdef __cplusplus
-}
-#endif
-
-int analogRead(uint8_t);
-void analogReference(uint8_t mode);
-void analogWrite(uint8_t, int);
-
-#endif
+#ifndef __ARDUINO_H__
+#define __ARDUINO_H__
+
+#include
+#include
+#include
+#include
+#include
+
+#include "Wiring.h"
+#include "simusbmidi.h"
+
+#include "core_pins.h"
+
+#define PROGMEM
+
+#ifndef _BV
+#define _BV(x) (1u<<(x))
+#endif
+
+// SPI CTRL REG BITS
+#define SPIE 7
+#define SPE 6
+#define DORD 5
+#define MSTR 4
+#define CPOL 3
+#define CPHA 2
+#define SPR1 1
+#define SPR0 0
+
+
+#define A11 (0xa1)
+
+/*
+SPCR
+| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+| SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |
+
+SPIE - Enables the SPI interrupt when 1
+SPE - Enables the SPI when 1
+DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0
+MSTR - Sets the Arduino in master mode when 1, slave mode when 0
+CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0
+CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0
+SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)
+*/
+
+
+
+#define LSBFIRST 0
+#define MSBFIRST 1
+
+typedef bool boolean;
+typedef uint8_t byte;
+
+// class Print
+// {
+// public:
+// };
+
+
+class SimSerial
+{
+public:
+ void begin(uint32_t speed);
+ void println(uint32_t value);
+ void println();
+ void println(const char* str);
+ void print(const char* str);
+ void print(uint32_t intValue);
+ void write(const uint8_t str);
+ void flush();
+
+};
+
+
+extern SimSerial Serial;
+extern SimSerial Serial3; //Used for MIDI serial putput with default hardware
+extern SimUsbMidi usbMIDI;
+
+//extern void putString(int row, int col, int color, const char* msg, const FONT_INFO fontInfo);
+
+uint32_t micros();
+uint32_t millis();
+void delay(uint32_t millis);
+void delayMicroseconds(uint32_t micros);
+
+
+void pinMode(uint8_t, uint8_t);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+//void digitalWrite(uint8_t, uint8_t);
+//int digitalRead(uint8_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+int analogRead(uint8_t);
+void analogReference(uint8_t mode);
+void analogWrite(uint8_t, int);
+
+#endif
diff --git a/simulation/include/EEPROM.h b/simulation/include/EEPROM.h
index 4faa955..4620759 100644
--- a/simulation/include/EEPROM.h
+++ b/simulation/include/EEPROM.h
@@ -1,55 +1,55 @@
-#ifndef __EEPROM_H
-#define __EEPROM_H
-
-#include
-#include
-
-struct EEPROMClass
-{
- EEPROMClass();
- //Basic user access methods.
- // EERef operator[]( const int idx ) { return idx; }
- uint8_t read( int idx ); // { return EERef( idx ); }
- void write( int idx, uint8_t val ); // { (EERef( idx )) = val; }
- void update( int idx, uint8_t val ); // { EERef( idx ).update( val ); }
-
- //STL and C++11 iteration capability.
- // EEPtr begin() { return 0x00; }
- // EEPtr end() { return length(); } //Standards requires this to be the item after the last valid entry. The returned pointer is invalid.
- uint16_t length(); // { return E2END + 1; }
-
- //Functionality to 'get' and 'put' objects to and from EEPROM.
-// template< typename T > T &get( int idx, T &t ){
-// EEPtr e = idx;
-// uint8_t *ptr = (uint8_t*) &t;
-// for( int count = sizeof(T) ; count ; --count, ++e ) *ptr++ = *e;
-// return t;
-// }
-
-// template< typename T > const T &put( int idx, const T &t ){
-// const uint8_t *ptr = (const uint8_t*) &t;
-// #ifdef __arm__
-// eeprom_write_block(ptr, (void *)idx, sizeof(T));
-// #else
-// EEPtr e = idx;
-// for( int count = sizeof(T) ; count ; --count, ++e ) (*e).update( *ptr++ );
-// #endif
-// return t;
-// }
-
- //Make EEPROM persistent by storing to a file
- int16_t setStorage(const char* filename, bool write);
- void closeStorage();
-
-private:
- uint8_t someFakeEEPROM_memory[2048]; //Teensy 3.2 size
- FILE *storage;
- bool autoUpdate;
-
-
-};
-
-extern EEPROMClass EEPROM __unused;
-
-
-#endif
+#ifndef __EEPROM_H
+#define __EEPROM_H
+
+#include
+#include
+
+struct EEPROMClass
+{
+ EEPROMClass();
+ //Basic user access methods.
+ // EERef operator[]( const int idx ) { return idx; }
+ uint8_t read( int idx ); // { return EERef( idx ); }
+ void write( int idx, uint8_t val ); // { (EERef( idx )) = val; }
+ void update( int idx, uint8_t val ); // { EERef( idx ).update( val ); }
+
+ //STL and C++11 iteration capability.
+ // EEPtr begin() { return 0x00; }
+ // EEPtr end() { return length(); } //Standards requires this to be the item after the last valid entry. The returned pointer is invalid.
+ uint16_t length(); // { return E2END + 1; }
+
+ //Functionality to 'get' and 'put' objects to and from EEPROM.
+// template< typename T > T &get( int idx, T &t ){
+// EEPtr e = idx;
+// uint8_t *ptr = (uint8_t*) &t;
+// for( int count = sizeof(T) ; count ; --count, ++e ) *ptr++ = *e;
+// return t;
+// }
+
+// template< typename T > const T &put( int idx, const T &t ){
+// const uint8_t *ptr = (const uint8_t*) &t;
+// #ifdef __arm__
+// eeprom_write_block(ptr, (void *)idx, sizeof(T));
+// #else
+// EEPtr e = idx;
+// for( int count = sizeof(T) ; count ; --count, ++e ) (*e).update( *ptr++ );
+// #endif
+// return t;
+// }
+
+ //Make EEPROM persistent by storing to a file
+ int16_t setStorage(const char* filename, bool write);
+ void closeStorage();
+
+private:
+ uint8_t someFakeEEPROM_memory[2048]; //Teensy 3.2 size
+ FILE *storage;
+ bool autoUpdate;
+
+
+};
+
+extern EEPROMClass EEPROM __unused;
+
+
+#endif
diff --git a/simulation/include/Print.h b/simulation/include/Print.h
index 65b89e9..0e43c20 100644
--- a/simulation/include/Print.h
+++ b/simulation/include/Print.h
@@ -1,136 +1,136 @@
-/* Teensyduino Core Library
- * http://www.pjrc.com/teensy/
- * Copyright (c) 2017 PJRC.COM, LLC.
- *
- * 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:
- *
- * 1. The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * 2. If the Software is incorporated into a build system that allows
- * selection among a list of target devices, then similar target
- * devices manufactured by PJRC.COM must be included in the list of
- * target devices and selectable in the same manner.
- *
- * 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.
- */
-
-#ifndef Print_h
-#define Print_h
-
-#include
-#include // for size_t - gives sprintf and other stuff to all sketches & libs
-#include
-#include "core_id.h"
-#include "WString.h"
-#include "Printable.h"
-
-#define DEC 10
-#define HEX 16
-#define OCT 8
-#define BIN 2
-
-
-#ifndef isnan
-#define isnan(__x) (__builtin_isnan (__x))
-#endif
-
-#ifndef isinf
-#define isinf(__x) (__builtin_isinf (__x))
-#endif
-
-
-class __FlashStringHelper;
-
-class Print
-{
- public:
- constexpr Print() : write_error(0) {}
- virtual size_t write(uint8_t b) = 0;
- size_t write(const char *str) { return write((const uint8_t *)str, strlen(str)); }
- virtual size_t write(const uint8_t *buffer, size_t size);
- virtual int availableForWrite(void) { return 0; }
- virtual void flush() { }
- size_t write(const char *buffer, size_t size) { return write((const uint8_t *)buffer, size); }
-// size_t print(const String &s);
- size_t print(char c) { return write((uint8_t)c); }
- size_t print(const char s[]) { return write(s); }
- size_t print(const __FlashStringHelper *f) { return write((const char *)f); }
-
- size_t print(uint8_t b) { return printNumber(b, 10, 0); }
- size_t print(int n) { return print((long)n); }
- size_t print(unsigned int n) { return printNumber(n, 10, 0); }
- size_t print(long n);
- size_t print(unsigned long n) { return printNumber(n, 10, 0); }
-
- size_t print(unsigned char n, int base) { return printNumber(n, base, 0); }
- size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); }
- size_t print(unsigned int n, int base) { return printNumber(n, base, 0); }
- size_t print(long n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); }
- size_t print(unsigned long n, int base) { return printNumber(n, base, 0); }
-
- size_t print(double n, int digits = 2) { return printFloat(n, digits); }
- size_t print(const Printable &obj) { return obj.printTo(*this); }
- size_t println(void);
-// size_t println(const String &s) { return print(s) + println(); }
- size_t println(char c) { return print(c) + println(); }
- size_t println(const char s[]) { return print(s) + println(); }
- size_t println(const __FlashStringHelper *f) { return print(f) + println(); }
-
- size_t println(uint8_t b) { return print(b) + println(); }
- size_t println(int n) { return print(n) + println(); }
- size_t println(unsigned int n) { return print(n) + println(); }
- size_t println(long n) { return print(n) + println(); }
- size_t println(unsigned long n) { return print(n) + println(); }
-
- size_t println(unsigned char n, int base) { return print(n, base) + println(); }
- size_t println(int n, int base) { return print(n, base) + println(); }
- size_t println(unsigned int n, int base) { return print(n, base) + println(); }
- size_t println(long n, int base) { return print(n, base) + println(); }
- size_t println(unsigned long n, int base) { return print(n, base) + println(); }
-
- size_t println(double n, int digits = 2) { return print(n, digits) + println(); }
- size_t println(const Printable &obj) { return obj.printTo(*this) + println(); }
- int getWriteError() { return write_error; }
- void clearWriteError() { setWriteError(0); }
- int printf(const char *format, ...);
- int printf(const __FlashStringHelper *format, ...);
- protected:
- void setWriteError(int err = 1) { write_error = err; }
- private:
- char write_error;
- size_t printFloat(double n, uint8_t digits);
-#ifdef __MKL26Z64__
- size_t printNumberDec(unsigned long n, uint8_t sign);
- size_t printNumberHex(unsigned long n);
- size_t printNumberBin(unsigned long n);
- size_t printNumberAny(unsigned long n, uint8_t base);
- inline size_t printNumber(unsigned long n, uint8_t base, uint8_t sign) __attribute__((always_inline)) {
- // when "base" is a constant (pretty much always), the
- // compiler optimizes this to a single function call.
- if (base == 0) return write((uint8_t)n);
- if (base == 10 || base < 2) return printNumberDec(n, sign);
- if (base == 16) return printNumberHex(n);
- if (base == 2) return printNumberBin(n);
- return printNumberAny(n, base);
- }
-#else
- size_t printNumber(unsigned long n, uint8_t base, uint8_t sign);
-#endif
-};
-
-
-#endif
+/* Teensyduino Core Library
+ * http://www.pjrc.com/teensy/
+ * Copyright (c) 2017 PJRC.COM, LLC.
+ *
+ * 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:
+ *
+ * 1. The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 2. If the Software is incorporated into a build system that allows
+ * selection among a list of target devices, then similar target
+ * devices manufactured by PJRC.COM must be included in the list of
+ * target devices and selectable in the same manner.
+ *
+ * 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.
+ */
+
+#ifndef Print_h
+#define Print_h
+
+#include
+#include // for size_t - gives sprintf and other stuff to all sketches & libs
+#include
+#include "core_id.h"
+#include "WString.h"
+#include "Printable.h"
+
+#define DEC 10
+#define HEX 16
+#define OCT 8
+#define BIN 2
+
+
+#ifndef isnan
+#define isnan(__x) (__builtin_isnan (__x))
+#endif
+
+#ifndef isinf
+#define isinf(__x) (__builtin_isinf (__x))
+#endif
+
+
+class __FlashStringHelper;
+
+class Print
+{
+ public:
+ constexpr Print() : write_error(0) {}
+ virtual size_t write(uint8_t b) = 0;
+ size_t write(const char *str) { return write((const uint8_t *)str, strlen(str)); }
+ virtual size_t write(const uint8_t *buffer, size_t size);
+ virtual int availableForWrite(void) { return 0; }
+ virtual void flush() { }
+ size_t write(const char *buffer, size_t size) { return write((const uint8_t *)buffer, size); }
+// size_t print(const String &s);
+ size_t print(char c) { return write((uint8_t)c); }
+ size_t print(const char s[]) { return write(s); }
+ size_t print(const __FlashStringHelper *f) { return write((const char *)f); }
+
+ size_t print(uint8_t b) { return printNumber(b, 10, 0); }
+ size_t print(int n) { return print((long)n); }
+ size_t print(unsigned int n) { return printNumber(n, 10, 0); }
+ size_t print(long n);
+ size_t print(unsigned long n) { return printNumber(n, 10, 0); }
+
+ size_t print(unsigned char n, int base) { return printNumber(n, base, 0); }
+ size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); }
+ size_t print(unsigned int n, int base) { return printNumber(n, base, 0); }
+ size_t print(long n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); }
+ size_t print(unsigned long n, int base) { return printNumber(n, base, 0); }
+
+ size_t print(double n, int digits = 2) { return printFloat(n, digits); }
+ size_t print(const Printable &obj) { return obj.printTo(*this); }
+ size_t println(void);
+// size_t println(const String &s) { return print(s) + println(); }
+ size_t println(char c) { return print(c) + println(); }
+ size_t println(const char s[]) { return print(s) + println(); }
+ size_t println(const __FlashStringHelper *f) { return print(f) + println(); }
+
+ size_t println(uint8_t b) { return print(b) + println(); }
+ size_t println(int n) { return print(n) + println(); }
+ size_t println(unsigned int n) { return print(n) + println(); }
+ size_t println(long n) { return print(n) + println(); }
+ size_t println(unsigned long n) { return print(n) + println(); }
+
+ size_t println(unsigned char n, int base) { return print(n, base) + println(); }
+ size_t println(int n, int base) { return print(n, base) + println(); }
+ size_t println(unsigned int n, int base) { return print(n, base) + println(); }
+ size_t println(long n, int base) { return print(n, base) + println(); }
+ size_t println(unsigned long n, int base) { return print(n, base) + println(); }
+
+ size_t println(double n, int digits = 2) { return print(n, digits) + println(); }
+ size_t println(const Printable &obj) { return obj.printTo(*this) + println(); }
+ int getWriteError() { return write_error; }
+ void clearWriteError() { setWriteError(0); }
+ int printf(const char *format, ...);
+ int printf(const __FlashStringHelper *format, ...);
+ protected:
+ void setWriteError(int err = 1) { write_error = err; }
+ private:
+ char write_error;
+ size_t printFloat(double n, uint8_t digits);
+#ifdef __MKL26Z64__
+ size_t printNumberDec(unsigned long n, uint8_t sign);
+ size_t printNumberHex(unsigned long n);
+ size_t printNumberBin(unsigned long n);
+ size_t printNumberAny(unsigned long n, uint8_t base);
+ inline size_t printNumber(unsigned long n, uint8_t base, uint8_t sign) __attribute__((always_inline)) {
+ // when "base" is a constant (pretty much always), the
+ // compiler optimizes this to a single function call.
+ if (base == 0) return write((uint8_t)n);
+ if (base == 10 || base < 2) return printNumberDec(n, sign);
+ if (base == 16) return printNumberHex(n);
+ if (base == 2) return printNumberBin(n);
+ return printNumberAny(n, base);
+ }
+#else
+ size_t printNumber(unsigned long n, uint8_t base, uint8_t sign);
+#endif
+};
+
+
+#endif
diff --git a/simulation/include/Printable.h b/simulation/include/Printable.h
index 0e96cdc..0c2cc41 100644
--- a/simulation/include/Printable.h
+++ b/simulation/include/Printable.h
@@ -1,42 +1,42 @@
-/*
- Printable.h - Interface class that allows printing of complex types
- Copyright (c) 2011 Adrian McEwen. All right reserved.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#ifndef Printable_h
-#define Printable_h
-
-#ifdef __cplusplus
-
-// #include "new.h"
-
-class Print;
-
-/** The Printable class provides a way for new classes to allow themselves to be printed.
- By deriving from Printable and implementing the printTo method, it will then be possible
- for users to print out instances of this class by passing them into the usual
- Print::print and Print::println methods.
-*/
-class Printable
-{
- public:
- virtual size_t printTo(Print& p) const = 0;
-};
-
-
-#endif
-#endif
+/*
+ Printable.h - Interface class that allows printing of complex types
+ Copyright (c) 2011 Adrian McEwen. All right reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef Printable_h
+#define Printable_h
+
+#ifdef __cplusplus
+
+// #include "new.h"
+
+class Print;
+
+/** The Printable class provides a way for new classes to allow themselves to be printed.
+ By deriving from Printable and implementing the printTo method, it will then be possible
+ for users to print out instances of this class by passing them into the usual
+ Print::print and Print::println methods.
+*/
+class Printable
+{
+ public:
+ virtual size_t printTo(Print& p) const = 0;
+};
+
+
+#endif
+#endif
diff --git a/simulation/include/SDL.h b/simulation/include/SDL.h
index f06dbce..c46b005 100644
--- a/simulation/include/SDL.h
+++ b/simulation/include/SDL.h
@@ -1,6 +1,6 @@
-#if defined(__APPLE__)
-
-#include
-#else
-#error "Platform not supported, fix include paths and stuff.."
-#endif
+#if defined(__APPLE__)
+
+#include
+#else
+#error "Platform not supported, fix include paths and stuff.."
+#endif
diff --git a/simulation/include/SDL_syswm.h b/simulation/include/SDL_syswm.h
index 9624c8f..5ed87a5 100644
--- a/simulation/include/SDL_syswm.h
+++ b/simulation/include/SDL_syswm.h
@@ -1 +1 @@
-#include
+#include
diff --git a/simulation/include/SPI.h b/simulation/include/SPI.h
index b0a1cc8..6b28095 100644
--- a/simulation/include/SPI.h
+++ b/simulation/include/SPI.h
@@ -1,165 +1,165 @@
-#ifndef __SPI_H__
-#define __SPI_H__
-
-#include
-
-
-#define SPIClass SimSPI
-
-
-#ifndef SPI_MODE0
- #define SPI_MODE0 0
-#endif
-
-#ifndef SPI_CLOCK_DIV2
- #define SPI_CLOCK_DIV2 0
-#endif
-
-#define SPDR *SPI.SPI_dataReg
-#define SPCR *SPI.SPI_ctrlReg
-#define SPSR *SPI.SPI_statusReg
-
-//#define SPSR 0xff
-#define SPIF (SPI.SPI_IF)
-
-
-// Forward declare
-class SimSPI;
-class DataRegister;
-class SPICtrlRegister;
-class SPIStatusRegister;
-
-
-extern SimSPI SPI;
-
-
-class ISPIDevice
-{
-public:
- virtual uint8_t spiSlaveWrite( uint8_t ) = 0;
-};
-
-
-
-class SimSPI
-{
-public:
- SimSPI();
-
- void AddDevice( ISPIDevice* device );
-
- void begin();
-
- void transfer( uint8_t something );
-
- void setDataMode( uint8_t mode );
- void setClockDivider( uint32_t divider );
- void writeReg( DataRegister *reg, uint8_t data);
-
- // Members
- DataRegister* SPI_dataReg;
- SPICtrlRegister* SPI_ctrlReg;
- SPIStatusRegister* SPI_statusReg;
-
-
- uint8_t SPI_IF;
-
-private:
- ISPIDevice** devices;
- uint32_t devicesArraySize;
-
- ISPIDevice* currentSlave;
-
-};
-
-
-class HWRegister
-{
-public:
- HWRegister( SimSPI& owner) : spi_( owner ) {}
-protected:
- SimSPI& spi_;
-};
-
-
-class DataRegister : HWRegister
-{
-public:
- DataRegister( SimSPI& owner) : HWRegister( owner ) {}
- void operator=(uint8_t data)
- {
- spi_.writeReg( this, data );
- }
-
- operator uint8_t()
- {
- // TODO: Get last read byte
- return 0xffu;
- }
-};
-
-
-class SPIStatusRegister : HWRegister
-{
-public:
- SPIStatusRegister( SimSPI& owner) : HWRegister( owner ) {}
- void operator =(uint8_t value)
- {
- reg_ = value;
- }
-
- void operator |=(uint8_t value)
- {
- reg_ |= value;
- }
-
- void operator &=(uint8_t value)
- {
- reg_ &= value;
- }
-/*
- operator uint8_t()
- {
- return reg_|0xff;
- }
-*/
- operator uint32_t()
- {
- return reg_|0xff;
- }
-
- uint8_t reg_;
-};
-
-class SPICtrlRegister : HWRegister
-{
-public:
- SPICtrlRegister( SimSPI& owner) : HWRegister( owner ) {}
-
- void operator =(uint8_t value)
- {
- reg_ = value;
- }
-
- void operator |=(uint8_t value)
- {
- reg_ |= value;
- }
-
- void operator &=(uint8_t value)
- {
- reg_ &= value;
- }
-
-
- operator uint8_t()
- {
- return reg_;
- }
-
-
- uint8_t reg_;
-};
-
-
-#endif
+#ifndef __SPI_H__
+#define __SPI_H__
+
+#include
+
+
+#define SPIClass SimSPI
+
+
+#ifndef SPI_MODE0
+ #define SPI_MODE0 0
+#endif
+
+#ifndef SPI_CLOCK_DIV2
+ #define SPI_CLOCK_DIV2 0
+#endif
+
+#define SPDR *SPI.SPI_dataReg
+#define SPCR *SPI.SPI_ctrlReg
+#define SPSR *SPI.SPI_statusReg
+
+//#define SPSR 0xff
+#define SPIF (SPI.SPI_IF)
+
+
+// Forward declare
+class SimSPI;
+class DataRegister;
+class SPICtrlRegister;
+class SPIStatusRegister;
+
+
+extern SimSPI SPI;
+
+
+class ISPIDevice
+{
+public:
+ virtual uint8_t spiSlaveWrite( uint8_t ) = 0;
+};
+
+
+
+class SimSPI
+{
+public:
+ SimSPI();
+
+ void AddDevice( ISPIDevice* device );
+
+ void begin();
+
+ void transfer( uint8_t something );
+
+ void setDataMode( uint8_t mode );
+ void setClockDivider( uint32_t divider );
+ void writeReg( DataRegister *reg, uint8_t data);
+
+ // Members
+ DataRegister* SPI_dataReg;
+ SPICtrlRegister* SPI_ctrlReg;
+ SPIStatusRegister* SPI_statusReg;
+
+
+ uint8_t SPI_IF;
+
+private:
+ ISPIDevice** devices;
+ uint32_t devicesArraySize;
+
+ ISPIDevice* currentSlave;
+
+};
+
+
+class HWRegister
+{
+public:
+ HWRegister( SimSPI& owner) : spi_( owner ) {}
+protected:
+ SimSPI& spi_;
+};
+
+
+class DataRegister : HWRegister
+{
+public:
+ DataRegister( SimSPI& owner) : HWRegister( owner ) {}
+ void operator=(uint8_t data)
+ {
+ spi_.writeReg( this, data );
+ }
+
+ operator uint8_t()
+ {
+ // TODO: Get last read byte
+ return 0xffu;
+ }
+};
+
+
+class SPIStatusRegister : HWRegister
+{
+public:
+ SPIStatusRegister( SimSPI& owner) : HWRegister( owner ) {}
+ void operator =(uint8_t value)
+ {
+ reg_ = value;
+ }
+
+ void operator |=(uint8_t value)
+ {
+ reg_ |= value;
+ }
+
+ void operator &=(uint8_t value)
+ {
+ reg_ &= value;
+ }
+/*
+ operator uint8_t()
+ {
+ return reg_|0xff;
+ }
+*/
+ operator uint32_t()
+ {
+ return reg_|0xff;
+ }
+
+ uint8_t reg_;
+};
+
+class SPICtrlRegister : HWRegister
+{
+public:
+ SPICtrlRegister( SimSPI& owner) : HWRegister( owner ) {}
+
+ void operator =(uint8_t value)
+ {
+ reg_ = value;
+ }
+
+ void operator |=(uint8_t value)
+ {
+ reg_ |= value;
+ }
+
+ void operator &=(uint8_t value)
+ {
+ reg_ &= value;
+ }
+
+
+ operator uint8_t()
+ {
+ return reg_;
+ }
+
+
+ uint8_t reg_;
+};
+
+
+#endif
diff --git a/simulation/include/WString.h b/simulation/include/WString.h
index 608cd9e..e360199 100644
--- a/simulation/include/WString.h
+++ b/simulation/include/WString.h
@@ -1,227 +1,227 @@
-/*
- WString.h - String library for Wiring & Arduino
- ...mostly rewritten by Paul Stoffregen...
- Copyright (c) 2009-10 Hernando Barragan. All right reserved.
- Copyright 2011, Paul Stoffregen, paul@pjrc.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#ifndef String_class_h
-#define String_class_h
-#ifdef __cplusplus
-
-#include
-#include
-#include
-//#include "avr_functions.h"
-
-// Not needed here, but some libs assume WString.h or Print.h
-// gives them PROGMEM and other AVR stuff.
-//#include "avr/pgmspace.h"
-
-// When compiling programs with this class, the following gcc parameters
-// dramatically increase performance and memory (RAM) efficiency, typically
-// with little or no increase in code size.
-// -felide-constructors
-// -std=c++0x
-
-// Brian Cook's "no overhead" Flash String type (message on Dec 14, 2010)
-// modified by Mikal Hart for his FlashString library
-class __FlashStringHelper;
-#ifndef F
-#define F(string_literal) ((const __FlashStringHelper *)(string_literal))
-#endif
-
-// An inherited class for holding the result of a concatenation. These
-// result objects are assumed to be writable by subsequent concatenations.
-class StringSumHelper;
-
-// The string class
-class String
-{
-public:
- // constructors
- String(const char *cstr = (const char *)NULL);
- String(const __FlashStringHelper *pgmstr);
- String(const String &str);
- #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
- String(String &&rval);
- String(StringSumHelper &&rval);
- #endif
- String(char c);
- String(unsigned char c);
- String(int, unsigned char base=10);
- String(unsigned int, unsigned char base=10);
- String(long, unsigned char base=10);
- String(unsigned long, unsigned char base=10);
- String(float num, unsigned char digits=2);
- String(double num, unsigned char digits=2) : String((float)num, digits) {}
- ~String(void);
-
- // memory management
- unsigned char reserve(unsigned int size);
- inline unsigned int length(void) const {return len;}
-
- // copy and move
- String & copy(const char *cstr, unsigned int length);
- String & copy(const __FlashStringHelper *s) { return copy((const char *)s, strlen((const char *)s)); }
- void move(String &rhs);
- String & operator = (const String &rhs);
- String & operator = (const char *cstr);
- String & operator = (const __FlashStringHelper *pgmstr);
- #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
- String & operator = (String &&rval);
- String & operator = (StringSumHelper &&rval);
- #endif
- String & operator = (char c);
-
- // append
- String & append(const String &str);
- String & append(const char *cstr);
- String & append(const __FlashStringHelper *s) {return append((const char *)s, strlen((const char *)s)); }
- String & append(char c);
- String & append(unsigned char c) {return append((int)c);}
- String & append(int num);
- String & append(unsigned int num);
- String & append(long num);
- String & append(unsigned long num);
- String & append(float num);
- String & append(double num) {return append((float)num);}
- String & operator += (const String &rhs) {return append(rhs);}
- String & operator += (const char *cstr) {return append(cstr);}
- String & operator += (const __FlashStringHelper *pgmstr) {return append(pgmstr);}
- String & operator += (char c) {return append(c);}
- String & operator += (unsigned char c) {return append((int)c);}
- String & operator += (int num) {return append(num);}
- String & operator += (unsigned int num) {return append(num);}
- String & operator += (long num) {return append(num);}
- String & operator += (unsigned long num) {return append(num);}
- String & operator += (float num) {return append(num);}
- String & operator += (double num) {return append(num);}
-
- // concatenate
- friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *pgmstr);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char c);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, float num);
- friend StringSumHelper & operator + (const StringSumHelper &lhs, double num);
- String & concat(const String &str) {return append(str);}
- String & concat(const char *cstr) {return append(cstr);}
- String & concat(const __FlashStringHelper *pgmstr) {return append(pgmstr);}
- String & concat(char c) {return append(c);}
- String & concat(unsigned char c) {return append((int)c);}
- String & concat(int num) {return append(num);}
- String & concat(unsigned int num) {return append(num);}
- String & concat(long num) {return append(num);}
- String & concat(unsigned long num) {return append(num);}
- String & concat(float num) {return append(num);}
- String & concat(double num) {return append(num);}
-
- // comparison
- int compareTo(const String &s) const;
- unsigned char equals(const String &s) const;
- unsigned char equals(const char *cstr) const;
- //unsigned char equals(const __FlashStringHelper *pgmstr) const;
- unsigned char operator == (const String &rhs) const {return equals(rhs);}
- unsigned char operator == (const char *cstr) const {return equals(cstr);}
- unsigned char operator == (const __FlashStringHelper *s) const {return equals((const char *)s);}
- unsigned char operator != (const String &rhs) const {return !equals(rhs);}
- unsigned char operator != (const char *cstr) const {return !equals(cstr);}
- unsigned char operator != (const __FlashStringHelper *s) const {return !equals(s);}
- unsigned char operator < (const String &rhs) const;
- unsigned char operator > (const String &rhs) const;
- unsigned char operator <= (const String &rhs) const;
- unsigned char operator >= (const String &rhs) const;
- unsigned char equalsIgnoreCase(const String &s) const;
- unsigned char startsWith( const String &prefix) const;
- unsigned char startsWith(const String &prefix, unsigned int offset) const;
- unsigned char endsWith(const String &suffix) const;
-
- // character acccess
- char charAt(unsigned int index) const;
- void setCharAt(unsigned int index, char c);
- char operator [] (unsigned int index) const;
- char& operator [] (unsigned int index);
- void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;
- void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const
- {getBytes((unsigned char *)buf, bufsize, index);}
- const char * c_str() const { return buffer; }
-
- // search
- int indexOf( char ch ) const;
- int indexOf( char ch, unsigned int fromIndex ) const;
- int indexOf( const String &str ) const;
- int indexOf( const String &str, unsigned int fromIndex ) const;
- int lastIndexOf( char ch ) const;
- int lastIndexOf( char ch, unsigned int fromIndex ) const;
- int lastIndexOf( const String &str ) const;
- int lastIndexOf( const String &str, unsigned int fromIndex ) const;
- String substring( unsigned int beginIndex ) const;
- String substring( unsigned int beginIndex, unsigned int endIndex ) const;
-
- // modification
- String & replace(char find, char replace);
- String & replace(const String& find, const String& replace);
- String & remove(unsigned int index);
- String & remove(unsigned int index, unsigned int count);
- String & toLowerCase(void);
- String & toUpperCase(void);
- String & trim(void);
-
- // parsing/conversion
- long toInt(void) const;
- float toFloat(void) const;
-
-protected:
- char *buffer; // the actual char array
- unsigned int capacity; // the array length minus one (for the '\0')
- unsigned int len; // the String length (not counting the '\0')
- unsigned char flags; // unused, for future features
-protected:
- void init(void);
- unsigned char changeBuffer(unsigned int maxStrLen);
- String & append(const char *cstr, unsigned int length);
-private:
- // allow for "if (s)" without the complications of an operator bool().
- // for more information http://www.artima.com/cppsource/safebool.html
- typedef void (String::*StringIfHelperType)() const;
- void StringIfHelper() const {}
-public:
- operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
-};
-
-class StringSumHelper : public String
-{
-public:
- StringSumHelper(const String &s) : String(s) {}
- StringSumHelper(const char *p) : String(p) {}
- StringSumHelper(const __FlashStringHelper *pgmstr) : String(pgmstr) {}
- StringSumHelper(char c) : String(c) {}
- StringSumHelper(unsigned char c) : String(c) {}
- StringSumHelper(int num) : String(num, 10) {}
- StringSumHelper(unsigned int num) : String(num, 10) {}
- StringSumHelper(long num) : String(num, 10) {}
- StringSumHelper(unsigned long num) : String(num, 10) {}
-};
-
-#endif // __cplusplus
-#endif // String_class_h
+/*
+ WString.h - String library for Wiring & Arduino
+ ...mostly rewritten by Paul Stoffregen...
+ Copyright (c) 2009-10 Hernando Barragan. All right reserved.
+ Copyright 2011, Paul Stoffregen, paul@pjrc.com
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef String_class_h
+#define String_class_h
+#ifdef __cplusplus
+
+#include
+#include
+#include
+//#include "avr_functions.h"
+
+// Not needed here, but some libs assume WString.h or Print.h
+// gives them PROGMEM and other AVR stuff.
+//#include "avr/pgmspace.h"
+
+// When compiling programs with this class, the following gcc parameters
+// dramatically increase performance and memory (RAM) efficiency, typically
+// with little or no increase in code size.
+// -felide-constructors
+// -std=c++0x
+
+// Brian Cook's "no overhead" Flash String type (message on Dec 14, 2010)
+// modified by Mikal Hart for his FlashString library
+class __FlashStringHelper;
+#ifndef F
+#define F(string_literal) ((const __FlashStringHelper *)(string_literal))
+#endif
+
+// An inherited class for holding the result of a concatenation. These
+// result objects are assumed to be writable by subsequent concatenations.
+class StringSumHelper;
+
+// The string class
+class String
+{
+public:
+ // constructors
+ String(const char *cstr = (const char *)NULL);
+ String(const __FlashStringHelper *pgmstr);
+ String(const String &str);
+ #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
+ String(String &&rval);
+ String(StringSumHelper &&rval);
+ #endif
+ String(char c);
+ String(unsigned char c);
+ String(int, unsigned char base=10);
+ String(unsigned int, unsigned char base=10);
+ String(long, unsigned char base=10);
+ String(unsigned long, unsigned char base=10);
+ String(float num, unsigned char digits=2);
+ String(double num, unsigned char digits=2) : String((float)num, digits) {}
+ ~String(void);
+
+ // memory management
+ unsigned char reserve(unsigned int size);
+ inline unsigned int length(void) const {return len;}
+
+ // copy and move
+ String & copy(const char *cstr, unsigned int length);
+ String & copy(const __FlashStringHelper *s) { return copy((const char *)s, strlen((const char *)s)); }
+ void move(String &rhs);
+ String & operator = (const String &rhs);
+ String & operator = (const char *cstr);
+ String & operator = (const __FlashStringHelper *pgmstr);
+ #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
+ String & operator = (String &&rval);
+ String & operator = (StringSumHelper &&rval);
+ #endif
+ String & operator = (char c);
+
+ // append
+ String & append(const String &str);
+ String & append(const char *cstr);
+ String & append(const __FlashStringHelper *s) {return append((const char *)s, strlen((const char *)s)); }
+ String & append(char c);
+ String & append(unsigned char c) {return append((int)c);}
+ String & append(int num);
+ String & append(unsigned int num);
+ String & append(long num);
+ String & append(unsigned long num);
+ String & append(float num);
+ String & append(double num) {return append((float)num);}
+ String & operator += (const String &rhs) {return append(rhs);}
+ String & operator += (const char *cstr) {return append(cstr);}
+ String & operator += (const __FlashStringHelper *pgmstr) {return append(pgmstr);}
+ String & operator += (char c) {return append(c);}
+ String & operator += (unsigned char c) {return append((int)c);}
+ String & operator += (int num) {return append(num);}
+ String & operator += (unsigned int num) {return append(num);}
+ String & operator += (long num) {return append(num);}
+ String & operator += (unsigned long num) {return append(num);}
+ String & operator += (float num) {return append(num);}
+ String & operator += (double num) {return append(num);}
+
+ // concatenate
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *pgmstr);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char c);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, float num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, double num);
+ String & concat(const String &str) {return append(str);}
+ String & concat(const char *cstr) {return append(cstr);}
+ String & concat(const __FlashStringHelper *pgmstr) {return append(pgmstr);}
+ String & concat(char c) {return append(c);}
+ String & concat(unsigned char c) {return append((int)c);}
+ String & concat(int num) {return append(num);}
+ String & concat(unsigned int num) {return append(num);}
+ String & concat(long num) {return append(num);}
+ String & concat(unsigned long num) {return append(num);}
+ String & concat(float num) {return append(num);}
+ String & concat(double num) {return append(num);}
+
+ // comparison
+ int compareTo(const String &s) const;
+ unsigned char equals(const String &s) const;
+ unsigned char equals(const char *cstr) const;
+ //unsigned char equals(const __FlashStringHelper *pgmstr) const;
+ unsigned char operator == (const String &rhs) const {return equals(rhs);}
+ unsigned char operator == (const char *cstr) const {return equals(cstr);}
+ unsigned char operator == (const __FlashStringHelper *s) const {return equals((const char *)s);}
+ unsigned char operator != (const String &rhs) const {return !equals(rhs);}
+ unsigned char operator != (const char *cstr) const {return !equals(cstr);}
+ unsigned char operator != (const __FlashStringHelper *s) const {return !equals(s);}
+ unsigned char operator < (const String &rhs) const;
+ unsigned char operator > (const String &rhs) const;
+ unsigned char operator <= (const String &rhs) const;
+ unsigned char operator >= (const String &rhs) const;
+ unsigned char equalsIgnoreCase(const String &s) const;
+ unsigned char startsWith( const String &prefix) const;
+ unsigned char startsWith(const String &prefix, unsigned int offset) const;
+ unsigned char endsWith(const String &suffix) const;
+
+ // character acccess
+ char charAt(unsigned int index) const;
+ void setCharAt(unsigned int index, char c);
+ char operator [] (unsigned int index) const;
+ char& operator [] (unsigned int index);
+ void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;
+ void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const
+ {getBytes((unsigned char *)buf, bufsize, index);}
+ const char * c_str() const { return buffer; }
+
+ // search
+ int indexOf( char ch ) const;
+ int indexOf( char ch, unsigned int fromIndex ) const;
+ int indexOf( const String &str ) const;
+ int indexOf( const String &str, unsigned int fromIndex ) const;
+ int lastIndexOf( char ch ) const;
+ int lastIndexOf( char ch, unsigned int fromIndex ) const;
+ int lastIndexOf( const String &str ) const;
+ int lastIndexOf( const String &str, unsigned int fromIndex ) const;
+ String substring( unsigned int beginIndex ) const;
+ String substring( unsigned int beginIndex, unsigned int endIndex ) const;
+
+ // modification
+ String & replace(char find, char replace);
+ String & replace(const String& find, const String& replace);
+ String & remove(unsigned int index);
+ String & remove(unsigned int index, unsigned int count);
+ String & toLowerCase(void);
+ String & toUpperCase(void);
+ String & trim(void);
+
+ // parsing/conversion
+ long toInt(void) const;
+ float toFloat(void) const;
+
+protected:
+ char *buffer; // the actual char array
+ unsigned int capacity; // the array length minus one (for the '\0')
+ unsigned int len; // the String length (not counting the '\0')
+ unsigned char flags; // unused, for future features
+protected:
+ void init(void);
+ unsigned char changeBuffer(unsigned int maxStrLen);
+ String & append(const char *cstr, unsigned int length);
+private:
+ // allow for "if (s)" without the complications of an operator bool().
+ // for more information http://www.artima.com/cppsource/safebool.html
+ typedef void (String::*StringIfHelperType)() const;
+ void StringIfHelper() const {}
+public:
+ operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
+};
+
+class StringSumHelper : public String
+{
+public:
+ StringSumHelper(const String &s) : String(s) {}
+ StringSumHelper(const char *p) : String(p) {}
+ StringSumHelper(const __FlashStringHelper *pgmstr) : String(pgmstr) {}
+ StringSumHelper(char c) : String(c) {}
+ StringSumHelper(unsigned char c) : String(c) {}
+ StringSumHelper(int num) : String(num, 10) {}
+ StringSumHelper(unsigned int num) : String(num, 10) {}
+ StringSumHelper(long num) : String(num, 10) {}
+ StringSumHelper(unsigned long num) : String(num, 10) {}
+};
+
+#endif // __cplusplus
+#endif // String_class_h
diff --git a/simulation/include/Wire.h b/simulation/include/Wire.h
index 6b258a5..7aad515 100644
--- a/simulation/include/Wire.h
+++ b/simulation/include/Wire.h
@@ -1,38 +1,38 @@
-#ifndef __WIRE_H__
-#define __WIRE_H__
-
-#include
-#define TwoWire SimWire
-
-class SimWire
-{
-public:
- SimWire(bool verbose = false);
-
- void begin();
- void begin( uint8_t address ); // For slaves.
- void end();
- void setClock(uint32_t);
- void beginTransmission(uint8_t address);
- void beginTransmission(int);
- uint8_t endTransmission();
- uint8_t endTransmission(uint8_t);
- uint8_t requestFrom(uint8_t address, uint8_t count);
- uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
- uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t);
- size_t write(uint8_t);
- size_t write(const uint8_t *, size_t);
- int available();
- int read();
- int peek();
- void flush();
- void onReceive( void (*)(int) );
- void onRequest( void (*)(void) );
-private:
- bool verbose_;
-};
-
-extern SimWire Wire;
-
-
-#endif
+#ifndef __WIRE_H__
+#define __WIRE_H__
+
+#include
+#define TwoWire SimWire
+
+class SimWire
+{
+public:
+ SimWire(bool verbose = false);
+
+ void begin();
+ void begin( uint8_t address ); // For slaves.
+ void end();
+ void setClock(uint32_t);
+ void beginTransmission(uint8_t address);
+ void beginTransmission(int);
+ uint8_t endTransmission();
+ uint8_t endTransmission(uint8_t);
+ uint8_t requestFrom(uint8_t address, uint8_t count);
+ uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
+ uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t);
+ size_t write(uint8_t);
+ size_t write(const uint8_t *, size_t);
+ int available();
+ int read();
+ int peek();
+ void flush();
+ void onReceive( void (*)(int) );
+ void onRequest( void (*)(void) );
+private:
+ bool verbose_;
+};
+
+extern SimWire Wire;
+
+
+#endif
diff --git a/simulation/include/binary.h b/simulation/include/binary.h
index 68e747a..33fa486 100644
--- a/simulation/include/binary.h
+++ b/simulation/include/binary.h
@@ -1,517 +1,517 @@
-// This header file is in the public domain.
-
-#ifndef Binary_h
-#define Binary_h
-
-#define B0 0
-#define B00 0
-#define B000 0
-#define B0000 0
-#define B00000 0
-#define B000000 0
-#define B0000000 0
-#define B00000000 0
-#define B1 1
-#define B01 1
-#define B001 1
-#define B0001 1
-#define B00001 1
-#define B000001 1
-#define B0000001 1
-#define B00000001 1
-#define B10 2
-#define B010 2
-#define B0010 2
-#define B00010 2
-#define B000010 2
-#define B0000010 2
-#define B00000010 2
-#define B11 3
-#define B011 3
-#define B0011 3
-#define B00011 3
-#define B000011 3
-#define B0000011 3
-#define B00000011 3
-#define B100 4
-#define B0100 4
-#define B00100 4
-#define B000100 4
-#define B0000100 4
-#define B00000100 4
-#define B101 5
-#define B0101 5
-#define B00101 5
-#define B000101 5
-#define B0000101 5
-#define B00000101 5
-#define B110 6
-#define B0110 6
-#define B00110 6
-#define B000110 6
-#define B0000110 6
-#define B00000110 6
-#define B111 7
-#define B0111 7
-#define B00111 7
-#define B000111 7
-#define B0000111 7
-#define B00000111 7
-#define B1000 8
-#define B01000 8
-#define B001000 8
-#define B0001000 8
-#define B00001000 8
-#define B1001 9
-#define B01001 9
-#define B001001 9
-#define B0001001 9
-#define B00001001 9
-#define B1010 10
-#define B01010 10
-#define B001010 10
-#define B0001010 10
-#define B00001010 10
-#define B1011 11
-#define B01011 11
-#define B001011 11
-#define B0001011 11
-#define B00001011 11
-#define B1100 12
-#define B01100 12
-#define B001100 12
-#define B0001100 12
-#define B00001100 12
-#define B1101 13
-#define B01101 13
-#define B001101 13
-#define B0001101 13
-#define B00001101 13
-#define B1110 14
-#define B01110 14
-#define B001110 14
-#define B0001110 14
-#define B00001110 14
-#define B1111 15
-#define B01111 15
-#define B001111 15
-#define B0001111 15
-#define B00001111 15
-#define B10000 16
-#define B010000 16
-#define B0010000 16
-#define B00010000 16
-#define B10001 17
-#define B010001 17
-#define B0010001 17
-#define B00010001 17
-#define B10010 18
-#define B010010 18
-#define B0010010 18
-#define B00010010 18
-#define B10011 19
-#define B010011 19
-#define B0010011 19
-#define B00010011 19
-#define B10100 20
-#define B010100 20
-#define B0010100 20
-#define B00010100 20
-#define B10101 21
-#define B010101 21
-#define B0010101 21
-#define B00010101 21
-#define B10110 22
-#define B010110 22
-#define B0010110 22
-#define B00010110 22
-#define B10111 23
-#define B010111 23
-#define B0010111 23
-#define B00010111 23
-#define B11000 24
-#define B011000 24
-#define B0011000 24
-#define B00011000 24
-#define B11001 25
-#define B011001 25
-#define B0011001 25
-#define B00011001 25
-#define B11010 26
-#define B011010 26
-#define B0011010 26
-#define B00011010 26
-#define B11011 27
-#define B011011 27
-#define B0011011 27
-#define B00011011 27
-#define B11100 28
-#define B011100 28
-#define B0011100 28
-#define B00011100 28
-#define B11101 29
-#define B011101 29
-#define B0011101 29
-#define B00011101 29
-#define B11110 30
-#define B011110 30
-#define B0011110 30
-#define B00011110 30
-#define B11111 31
-#define B011111 31
-#define B0011111 31
-#define B00011111 31
-#define B100000 32
-#define B0100000 32
-#define B00100000 32
-#define B100001 33
-#define B0100001 33
-#define B00100001 33
-#define B100010 34
-#define B0100010 34
-#define B00100010 34
-#define B100011 35
-#define B0100011 35
-#define B00100011 35
-#define B100100 36
-#define B0100100 36
-#define B00100100 36
-#define B100101 37
-#define B0100101 37
-#define B00100101 37
-#define B100110 38
-#define B0100110 38
-#define B00100110 38
-#define B100111 39
-#define B0100111 39
-#define B00100111 39
-#define B101000 40
-#define B0101000 40
-#define B00101000 40
-#define B101001 41
-#define B0101001 41
-#define B00101001 41
-#define B101010 42
-#define B0101010 42
-#define B00101010 42
-#define B101011 43
-#define B0101011 43
-#define B00101011 43
-#define B101100 44
-#define B0101100 44
-#define B00101100 44
-#define B101101 45
-#define B0101101 45
-#define B00101101 45
-#define B101110 46
-#define B0101110 46
-#define B00101110 46
-#define B101111 47
-#define B0101111 47
-#define B00101111 47
-#define B110000 48
-#define B0110000 48
-#define B00110000 48
-#define B110001 49
-#define B0110001 49
-#define B00110001 49
-#define B110010 50
-#define B0110010 50
-#define B00110010 50
-#define B110011 51
-#define B0110011 51
-#define B00110011 51
-#define B110100 52
-#define B0110100 52
-#define B00110100 52
-#define B110101 53
-#define B0110101 53
-#define B00110101 53
-#define B110110 54
-#define B0110110 54
-#define B00110110 54
-#define B110111 55
-#define B0110111 55
-#define B00110111 55
-#define B111000 56
-#define B0111000 56
-#define B00111000 56
-#define B111001 57
-#define B0111001 57
-#define B00111001 57
-#define B111010 58
-#define B0111010 58
-#define B00111010 58
-#define B111011 59
-#define B0111011 59
-#define B00111011 59
-#define B111100 60
-#define B0111100 60
-#define B00111100 60
-#define B111101 61
-#define B0111101 61
-#define B00111101 61
-#define B111110 62
-#define B0111110 62
-#define B00111110 62
-#define B111111 63
-#define B0111111 63
-#define B00111111 63
-#define B1000000 64
-#define B01000000 64
-#define B1000001 65
-#define B01000001 65
-#define B1000010 66
-#define B01000010 66
-#define B1000011 67
-#define B01000011 67
-#define B1000100 68
-#define B01000100 68
-#define B1000101 69
-#define B01000101 69
-#define B1000110 70
-#define B01000110 70
-#define B1000111 71
-#define B01000111 71
-#define B1001000 72
-#define B01001000 72
-#define B1001001 73
-#define B01001001 73
-#define B1001010 74
-#define B01001010 74
-#define B1001011 75
-#define B01001011 75
-#define B1001100 76
-#define B01001100 76
-#define B1001101 77
-#define B01001101 77
-#define B1001110 78
-#define B01001110 78
-#define B1001111 79
-#define B01001111 79
-#define B1010000 80
-#define B01010000 80
-#define B1010001 81
-#define B01010001 81
-#define B1010010 82
-#define B01010010 82
-#define B1010011 83
-#define B01010011 83
-#define B1010100 84
-#define B01010100 84
-#define B1010101 85
-#define B01010101 85
-#define B1010110 86
-#define B01010110 86
-#define B1010111 87
-#define B01010111 87
-#define B1011000 88
-#define B01011000 88
-#define B1011001 89
-#define B01011001 89
-#define B1011010 90
-#define B01011010 90
-#define B1011011 91
-#define B01011011 91
-#define B1011100 92
-#define B01011100 92
-#define B1011101 93
-#define B01011101 93
-#define B1011110 94
-#define B01011110 94
-#define B1011111 95
-#define B01011111 95
-#define B1100000 96
-#define B01100000 96
-#define B1100001 97
-#define B01100001 97
-#define B1100010 98
-#define B01100010 98
-#define B1100011 99
-#define B01100011 99
-#define B1100100 100
-#define B01100100 100
-#define B1100101 101
-#define B01100101 101
-#define B1100110 102
-#define B01100110 102
-#define B1100111 103
-#define B01100111 103
-#define B1101000 104
-#define B01101000 104
-#define B1101001 105
-#define B01101001 105
-#define B1101010 106
-#define B01101010 106
-#define B1101011 107
-#define B01101011 107
-#define B1101100 108
-#define B01101100 108
-#define B1101101 109
-#define B01101101 109
-#define B1101110 110
-#define B01101110 110
-#define B1101111 111
-#define B01101111 111
-#define B1110000 112
-#define B01110000 112
-#define B1110001 113
-#define B01110001 113
-#define B1110010 114
-#define B01110010 114
-#define B1110011 115
-#define B01110011 115
-#define B1110100 116
-#define B01110100 116
-#define B1110101 117
-#define B01110101 117
-#define B1110110 118
-#define B01110110 118
-#define B1110111 119
-#define B01110111 119
-#define B1111000 120
-#define B01111000 120
-#define B1111001 121
-#define B01111001 121
-#define B1111010 122
-#define B01111010 122
-#define B1111011 123
-#define B01111011 123
-#define B1111100 124
-#define B01111100 124
-#define B1111101 125
-#define B01111101 125
-#define B1111110 126
-#define B01111110 126
-#define B1111111 127
-#define B01111111 127
-#define B10000000 128
-#define B10000001 129
-#define B10000010 130
-#define B10000011 131
-#define B10000100 132
-#define B10000101 133
-#define B10000110 134
-#define B10000111 135
-#define B10001000 136
-#define B10001001 137
-#define B10001010 138
-#define B10001011 139
-#define B10001100 140
-#define B10001101 141
-#define B10001110 142
-#define B10001111 143
-#define B10010000 144
-#define B10010001 145
-#define B10010010 146
-#define B10010011 147
-#define B10010100 148
-#define B10010101 149
-#define B10010110 150
-#define B10010111 151
-#define B10011000 152
-#define B10011001 153
-#define B10011010 154
-#define B10011011 155
-#define B10011100 156
-#define B10011101 157
-#define B10011110 158
-#define B10011111 159
-#define B10100000 160
-#define B10100001 161
-#define B10100010 162
-#define B10100011 163
-#define B10100100 164
-#define B10100101 165
-#define B10100110 166
-#define B10100111 167
-#define B10101000 168
-#define B10101001 169
-#define B10101010 170
-#define B10101011 171
-#define B10101100 172
-#define B10101101 173
-#define B10101110 174
-#define B10101111 175
-#define B10110000 176
-#define B10110001 177
-#define B10110010 178
-#define B10110011 179
-#define B10110100 180
-#define B10110101 181
-#define B10110110 182
-#define B10110111 183
-#define B10111000 184
-#define B10111001 185
-#define B10111010 186
-#define B10111011 187
-#define B10111100 188
-#define B10111101 189
-#define B10111110 190
-#define B10111111 191
-#define B11000000 192
-#define B11000001 193
-#define B11000010 194
-#define B11000011 195
-#define B11000100 196
-#define B11000101 197
-#define B11000110 198
-#define B11000111 199
-#define B11001000 200
-#define B11001001 201
-#define B11001010 202
-#define B11001011 203
-#define B11001100 204
-#define B11001101 205
-#define B11001110 206
-#define B11001111 207
-#define B11010000 208
-#define B11010001 209
-#define B11010010 210
-#define B11010011 211
-#define B11010100 212
-#define B11010101 213
-#define B11010110 214
-#define B11010111 215
-#define B11011000 216
-#define B11011001 217
-#define B11011010 218
-#define B11011011 219
-#define B11011100 220
-#define B11011101 221
-#define B11011110 222
-#define B11011111 223
-#define B11100000 224
-#define B11100001 225
-#define B11100010 226
-#define B11100011 227
-#define B11100100 228
-#define B11100101 229
-#define B11100110 230
-#define B11100111 231
-#define B11101000 232
-#define B11101001 233
-#define B11101010 234
-#define B11101011 235
-#define B11101100 236
-#define B11101101 237
-#define B11101110 238
-#define B11101111 239
-#define B11110000 240
-#define B11110001 241
-#define B11110010 242
-#define B11110011 243
-#define B11110100 244
-#define B11110101 245
-#define B11110110 246
-#define B11110111 247
-#define B11111000 248
-#define B11111001 249
-#define B11111010 250
-#define B11111011 251
-#define B11111100 252
-#define B11111101 253
-#define B11111110 254
-#define B11111111 255
-
-#endif
+// This header file is in the public domain.
+
+#ifndef Binary_h
+#define Binary_h
+
+#define B0 0
+#define B00 0
+#define B000 0
+#define B0000 0
+#define B00000 0
+#define B000000 0
+#define B0000000 0
+#define B00000000 0
+#define B1 1
+#define B01 1
+#define B001 1
+#define B0001 1
+#define B00001 1
+#define B000001 1
+#define B0000001 1
+#define B00000001 1
+#define B10 2
+#define B010 2
+#define B0010 2
+#define B00010 2
+#define B000010 2
+#define B0000010 2
+#define B00000010 2
+#define B11 3
+#define B011 3
+#define B0011 3
+#define B00011 3
+#define B000011 3
+#define B0000011 3
+#define B00000011 3
+#define B100 4
+#define B0100 4
+#define B00100 4
+#define B000100 4
+#define B0000100 4
+#define B00000100 4
+#define B101 5
+#define B0101 5
+#define B00101 5
+#define B000101 5
+#define B0000101 5
+#define B00000101 5
+#define B110 6
+#define B0110 6
+#define B00110 6
+#define B000110 6
+#define B0000110 6
+#define B00000110 6
+#define B111 7
+#define B0111 7
+#define B00111 7
+#define B000111 7
+#define B0000111 7
+#define B00000111 7
+#define B1000 8
+#define B01000 8
+#define B001000 8
+#define B0001000 8
+#define B00001000 8
+#define B1001 9
+#define B01001 9
+#define B001001 9
+#define B0001001 9
+#define B00001001 9
+#define B1010 10
+#define B01010 10
+#define B001010 10
+#define B0001010 10
+#define B00001010 10
+#define B1011 11
+#define B01011 11
+#define B001011 11
+#define B0001011 11
+#define B00001011 11
+#define B1100 12
+#define B01100 12
+#define B001100 12
+#define B0001100 12
+#define B00001100 12
+#define B1101 13
+#define B01101 13
+#define B001101 13
+#define B0001101 13
+#define B00001101 13
+#define B1110 14
+#define B01110 14
+#define B001110 14
+#define B0001110 14
+#define B00001110 14
+#define B1111 15
+#define B01111 15
+#define B001111 15
+#define B0001111 15
+#define B00001111 15
+#define B10000 16
+#define B010000 16
+#define B0010000 16
+#define B00010000 16
+#define B10001 17
+#define B010001 17
+#define B0010001 17
+#define B00010001 17
+#define B10010 18
+#define B010010 18
+#define B0010010 18
+#define B00010010 18
+#define B10011 19
+#define B010011 19
+#define B0010011 19
+#define B00010011 19
+#define B10100 20
+#define B010100 20
+#define B0010100 20
+#define B00010100 20
+#define B10101 21
+#define B010101 21
+#define B0010101 21
+#define B00010101 21
+#define B10110 22
+#define B010110 22
+#define B0010110 22
+#define B00010110 22
+#define B10111 23
+#define B010111 23
+#define B0010111 23
+#define B00010111 23
+#define B11000 24
+#define B011000 24
+#define B0011000 24
+#define B00011000 24
+#define B11001 25
+#define B011001 25
+#define B0011001 25
+#define B00011001 25
+#define B11010 26
+#define B011010 26
+#define B0011010 26
+#define B00011010 26
+#define B11011 27
+#define B011011 27
+#define B0011011 27
+#define B00011011 27
+#define B11100 28
+#define B011100 28
+#define B0011100 28
+#define B00011100 28
+#define B11101 29
+#define B011101 29
+#define B0011101 29
+#define B00011101 29
+#define B11110 30
+#define B011110 30
+#define B0011110 30
+#define B00011110 30
+#define B11111 31
+#define B011111 31
+#define B0011111 31
+#define B00011111 31
+#define B100000 32
+#define B0100000 32
+#define B00100000 32
+#define B100001 33
+#define B0100001 33
+#define B00100001 33
+#define B100010 34
+#define B0100010 34
+#define B00100010 34
+#define B100011 35
+#define B0100011 35
+#define B00100011 35
+#define B100100 36
+#define B0100100 36
+#define B00100100 36
+#define B100101 37
+#define B0100101 37
+#define B00100101 37
+#define B100110 38
+#define B0100110 38
+#define B00100110 38
+#define B100111 39
+#define B0100111 39
+#define B00100111 39
+#define B101000 40
+#define B0101000 40
+#define B00101000 40
+#define B101001 41
+#define B0101001 41
+#define B00101001 41
+#define B101010 42
+#define B0101010 42
+#define B00101010 42
+#define B101011 43
+#define B0101011 43
+#define B00101011 43
+#define B101100 44
+#define B0101100 44
+#define B00101100 44
+#define B101101 45
+#define B0101101 45
+#define B00101101 45
+#define B101110 46
+#define B0101110 46
+#define B00101110 46
+#define B101111 47
+#define B0101111 47
+#define B00101111 47
+#define B110000 48
+#define B0110000 48
+#define B00110000 48
+#define B110001 49
+#define B0110001 49
+#define B00110001 49
+#define B110010 50
+#define B0110010 50
+#define B00110010 50
+#define B110011 51
+#define B0110011 51
+#define B00110011 51
+#define B110100 52
+#define B0110100 52
+#define B00110100 52
+#define B110101 53
+#define B0110101 53
+#define B00110101 53
+#define B110110 54
+#define B0110110 54
+#define B00110110 54
+#define B110111 55
+#define B0110111 55
+#define B00110111 55
+#define B111000 56
+#define B0111000 56
+#define B00111000 56
+#define B111001 57
+#define B0111001 57
+#define B00111001 57
+#define B111010 58
+#define B0111010 58
+#define B00111010 58
+#define B111011 59
+#define B0111011 59
+#define B00111011 59
+#define B111100 60
+#define B0111100 60
+#define B00111100 60
+#define B111101 61
+#define B0111101 61
+#define B00111101 61
+#define B111110 62
+#define B0111110 62
+#define B00111110 62
+#define B111111 63
+#define B0111111 63
+#define B00111111 63
+#define B1000000 64
+#define B01000000 64
+#define B1000001 65
+#define B01000001 65
+#define B1000010 66
+#define B01000010 66
+#define B1000011 67
+#define B01000011 67
+#define B1000100 68
+#define B01000100 68
+#define B1000101 69
+#define B01000101 69
+#define B1000110 70
+#define B01000110 70
+#define B1000111 71
+#define B01000111 71
+#define B1001000 72
+#define B01001000 72
+#define B1001001 73
+#define B01001001 73
+#define B1001010 74
+#define B01001010 74
+#define B1001011 75
+#define B01001011 75
+#define B1001100 76
+#define B01001100 76
+#define B1001101 77
+#define B01001101 77
+#define B1001110 78
+#define B01001110 78
+#define B1001111 79
+#define B01001111 79
+#define B1010000 80
+#define B01010000 80
+#define B1010001 81
+#define B01010001 81
+#define B1010010 82
+#define B01010010 82
+#define B1010011 83
+#define B01010011 83
+#define B1010100 84
+#define B01010100 84
+#define B1010101 85
+#define B01010101 85
+#define B1010110 86
+#define B01010110 86
+#define B1010111 87
+#define B01010111 87
+#define B1011000 88
+#define B01011000 88
+#define B1011001 89
+#define B01011001 89
+#define B1011010 90
+#define B01011010 90
+#define B1011011 91
+#define B01011011 91
+#define B1011100 92
+#define B01011100 92
+#define B1011101 93
+#define B01011101 93
+#define B1011110 94
+#define B01011110 94
+#define B1011111 95
+#define B01011111 95
+#define B1100000 96
+#define B01100000 96
+#define B1100001 97
+#define B01100001 97
+#define B1100010 98
+#define B01100010 98
+#define B1100011 99
+#define B01100011 99
+#define B1100100 100
+#define B01100100 100
+#define B1100101 101
+#define B01100101 101
+#define B1100110 102
+#define B01100110 102
+#define B1100111 103
+#define B01100111 103
+#define B1101000 104
+#define B01101000 104
+#define B1101001 105
+#define B01101001 105
+#define B1101010 106
+#define B01101010 106
+#define B1101011 107
+#define B01101011 107
+#define B1101100 108
+#define B01101100 108
+#define B1101101 109
+#define B01101101 109
+#define B1101110 110
+#define B01101110 110
+#define B1101111 111
+#define B01101111 111
+#define B1110000 112
+#define B01110000 112
+#define B1110001 113
+#define B01110001 113
+#define B1110010 114
+#define B01110010 114
+#define B1110011 115
+#define B01110011 115
+#define B1110100 116
+#define B01110100 116
+#define B1110101 117
+#define B01110101 117
+#define B1110110 118
+#define B01110110 118
+#define B1110111 119
+#define B01110111 119
+#define B1111000 120
+#define B01111000 120
+#define B1111001 121
+#define B01111001 121
+#define B1111010 122
+#define B01111010 122
+#define B1111011 123
+#define B01111011 123
+#define B1111100 124
+#define B01111100 124
+#define B1111101 125
+#define B01111101 125
+#define B1111110 126
+#define B01111110 126
+#define B1111111 127
+#define B01111111 127
+#define B10000000 128
+#define B10000001 129
+#define B10000010 130
+#define B10000011 131
+#define B10000100 132
+#define B10000101 133
+#define B10000110 134
+#define B10000111 135
+#define B10001000 136
+#define B10001001 137
+#define B10001010 138
+#define B10001011 139
+#define B10001100 140
+#define B10001101 141
+#define B10001110 142
+#define B10001111 143
+#define B10010000 144
+#define B10010001 145
+#define B10010010 146
+#define B10010011 147
+#define B10010100 148
+#define B10010101 149
+#define B10010110 150
+#define B10010111 151
+#define B10011000 152
+#define B10011001 153
+#define B10011010 154
+#define B10011011 155
+#define B10011100 156
+#define B10011101 157
+#define B10011110 158
+#define B10011111 159
+#define B10100000 160
+#define B10100001 161
+#define B10100010 162
+#define B10100011 163
+#define B10100100 164
+#define B10100101 165
+#define B10100110 166
+#define B10100111 167
+#define B10101000 168
+#define B10101001 169
+#define B10101010 170
+#define B10101011 171
+#define B10101100 172
+#define B10101101 173
+#define B10101110 174
+#define B10101111 175
+#define B10110000 176
+#define B10110001 177
+#define B10110010 178
+#define B10110011 179
+#define B10110100 180
+#define B10110101 181
+#define B10110110 182
+#define B10110111 183
+#define B10111000 184
+#define B10111001 185
+#define B10111010 186
+#define B10111011 187
+#define B10111100 188
+#define B10111101 189
+#define B10111110 190
+#define B10111111 191
+#define B11000000 192
+#define B11000001 193
+#define B11000010 194
+#define B11000011 195
+#define B11000100 196
+#define B11000101 197
+#define B11000110 198
+#define B11000111 199
+#define B11001000 200
+#define B11001001 201
+#define B11001010 202
+#define B11001011 203
+#define B11001100 204
+#define B11001101 205
+#define B11001110 206
+#define B11001111 207
+#define B11010000 208
+#define B11010001 209
+#define B11010010 210
+#define B11010011 211
+#define B11010100 212
+#define B11010101 213
+#define B11010110 214
+#define B11010111 215
+#define B11011000 216
+#define B11011001 217
+#define B11011010 218
+#define B11011011 219
+#define B11011100 220
+#define B11011101 221
+#define B11011110 222
+#define B11011111 223
+#define B11100000 224
+#define B11100001 225
+#define B11100010 226
+#define B11100011 227
+#define B11100100 228
+#define B11100101 229
+#define B11100110 230
+#define B11100111 231
+#define B11101000 232
+#define B11101001 233
+#define B11101010 234
+#define B11101011 235
+#define B11101100 236
+#define B11101101 237
+#define B11101110 238
+#define B11101111 239
+#define B11110000 240
+#define B11110001 241
+#define B11110010 242
+#define B11110011 243
+#define B11110100 244
+#define B11110101 245
+#define B11110110 246
+#define B11110111 247
+#define B11111000 248
+#define B11111001 249
+#define B11111010 250
+#define B11111011 251
+#define B11111100 252
+#define B11111101 253
+#define B11111110 254
+#define B11111111 255
+
+#endif
diff --git a/simulation/include/core_id.h b/simulation/include/core_id.h
index 9a8881e..6a40d61 100644
--- a/simulation/include/core_id.h
+++ b/simulation/include/core_id.h
@@ -1,5 +1,5 @@
-// This header file is in the public domain.
-
-#ifndef CORE_TEENSY
-#define CORE_TEENSY
-#endif
+// This header file is in the public domain.
+
+#ifndef CORE_TEENSY
+#define CORE_TEENSY
+#endif
diff --git a/simulation/include/core_pins.h b/simulation/include/core_pins.h
index 94afb53..ce94596 100644
--- a/simulation/include/core_pins.h
+++ b/simulation/include/core_pins.h
@@ -1,2115 +1,2115 @@
-/* Teensyduino Core Library
- * http://www.pjrc.com/teensy/
- * Copyright (c) 2017 PJRC.COM, LLC.
- *
- * 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:
- *
- * 1. The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * 2. If the Software is incorporated into a build system that allows
- * selection among a list of target devices, then similar target
- * devices manufactured by PJRC.COM must be included in the list of
- * target devices and selectable in the same manner.
- *
- * 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.
- */
-
-#ifndef _core_pins_h_
-#define _core_pins_h_
-
-// #include "kinetis.h"
-#include "pins_arduino.h"
-
-#define HIGH 1
-#define LOW 0
-#define INPUT 0
-#define OUTPUT 1
-#define INPUT_PULLUP 2
-#define INPUT_PULLDOWN 3
-#define OUTPUT_OPENDRAIN 4
-#define INPUT_DISABLE 5
-#define LSBFIRST 0
-#define MSBFIRST 1
-
-#ifndef _BV
-#define _BV(n) (1<<(n))
-#endif
-
-#define CHANGE 4
-#define FALLING 2
-#define RISING 3
-
-// Pin Arduino
-// 0 B16 RXD
-// 1 B17 TXD
-// 2 D0
-// 3 A12 FTM1_CH0
-// 4 A13 FTM1_CH1
-// 5 D7 FTM0_CH7 OC0B/T1
-// 6 D4 FTM0_CH4 OC0A
-// 7 D2
-// 8 D3 ICP1
-// 9 C3 FTM0_CH2 OC1A
-// 10 C4 FTM0_CH3 SS/OC1B
-// 11 C6 MOSI/OC2A
-// 12 C7 MISO
-// 13 C5 SCK
-// 14 D1
-// 15 C0
-// 16 B0 (FTM1_CH0)
-// 17 B1 (FTM1_CH1)
-// 18 B3 SDA
-// 19 B2 SCL
-// 20 D5 FTM0_CH5
-// 21 D6 FTM0_CH6
-// 22 C1 FTM0_CH0
-// 23 C2 FTM0_CH1
-// 24 A5 (FTM0_CH2)
-// 25 B19
-// 26 E1
-// 27 C9
-// 28 C8
-// 29 C10
-// 30 C11
-// 31 E0
-// 32 B18
-// 33 A4 (FTM0_CH1)
-// (34) analog only
-// (35) analog only
-// (36) analog only
-// (37) analog only
-
-// not available to user:
-// A0 FTM0_CH5 SWD Clock
-// A1 FTM0_CH6 USB ID
-// A2 FTM0_CH7 SWD Trace
-// A3 FTM0_CH0 SWD Data
-
-#if defined(__MK20DX128__)
-#define CORE_NUM_TOTAL_PINS 34
-#define CORE_NUM_DIGITAL 34
-#define CORE_NUM_INTERRUPT 34
-#define CORE_NUM_ANALOG 14
-#define CORE_NUM_PWM 10
-#elif defined(__MK20DX256__)
-#define CORE_NUM_TOTAL_PINS 34
-#define CORE_NUM_DIGITAL 34
-#define CORE_NUM_INTERRUPT 34
-#define CORE_NUM_ANALOG 21
-#define CORE_NUM_PWM 12
-#elif defined(__MKL26Z64__)
-#define CORE_NUM_TOTAL_PINS 27
-#define CORE_NUM_DIGITAL 27
-#define CORE_NUM_INTERRUPT 24 // really only 18, but 6 "holes"
-#define CORE_NUM_ANALOG 13
-#define CORE_NUM_PWM 10
-#elif defined(__MK64FX512__)
-#define CORE_NUM_TOTAL_PINS 64
-#define CORE_NUM_DIGITAL 64
-#define CORE_NUM_INTERRUPT 64
-#define CORE_NUM_ANALOG 27
-#define CORE_NUM_PWM 20
-#elif defined(__MK66FX1M0__)
-#define CORE_NUM_TOTAL_PINS 64
-#define CORE_NUM_DIGITAL 64
-#define CORE_NUM_INTERRUPT 64
-#define CORE_NUM_ANALOG 25
-#define CORE_NUM_PWM 22
-#endif
-
-// These MAX_PIN_PORTx values have the highest Kinetis pin index
-// that is used for a given port.
-#if defined(__MK20DX128__) || defined(__MK20DX256__)
-#define CORE_MAX_PIN_PORTA 13
-#define CORE_MAX_PIN_PORTB 19
-#define CORE_MAX_PIN_PORTC 11
-#define CORE_MAX_PIN_PORTD 7
-#define CORE_MAX_PIN_PORTE 1
-#elif defined(__MKL26Z64__)
-#define CORE_MAX_PIN_PORTA 2
-#define CORE_MAX_PIN_PORTB 17
-#define CORE_MAX_PIN_PORTC 7
-#define CORE_MAX_PIN_PORTD 7
-#define CORE_MAX_PIN_PORTE 30
-#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
-#define CORE_MAX_PIN_PORTA 29
-#define CORE_MAX_PIN_PORTB 23
-#define CORE_MAX_PIN_PORTC 11
-#define CORE_MAX_PIN_PORTD 15
-#define CORE_MAX_PIN_PORTE 26
-#endif
-
-
-#if defined(__MK20DX128__) || defined(__MK20DX256__)
-
-#define CORE_PIN0_BIT 16
-#define CORE_PIN1_BIT 17
-#define CORE_PIN2_BIT 0
-#define CORE_PIN3_BIT 12
-#define CORE_PIN4_BIT 13
-#define CORE_PIN5_BIT 7
-#define CORE_PIN6_BIT 4
-#define CORE_PIN7_BIT 2
-#define CORE_PIN8_BIT 3
-#define CORE_PIN9_BIT 3
-#define CORE_PIN10_BIT 4
-#define CORE_PIN11_BIT 6
-#define CORE_PIN12_BIT 7
-#define CORE_PIN13_BIT 5
-#define CORE_PIN14_BIT 1
-#define CORE_PIN15_BIT 0
-#define CORE_PIN16_BIT 0
-#define CORE_PIN17_BIT 1
-#define CORE_PIN18_BIT 3
-#define CORE_PIN19_BIT 2
-#define CORE_PIN20_BIT 5
-#define CORE_PIN21_BIT 6
-#define CORE_PIN22_BIT 1
-#define CORE_PIN23_BIT 2
-#define CORE_PIN24_BIT 5
-#define CORE_PIN25_BIT 19
-#define CORE_PIN26_BIT 1
-#define CORE_PIN27_BIT 9
-#define CORE_PIN28_BIT 8
-#define CORE_PIN29_BIT 10
-#define CORE_PIN30_BIT 11
-#define CORE_PIN31_BIT 0
-#define CORE_PIN32_BIT 18
-#define CORE_PIN33_BIT 4
-
-#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
-#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
-#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
-#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
-#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
-#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
-#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
-#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
-#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
-#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
-#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
-#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
-#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
-#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
-#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
-#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
-#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
-#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
-#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
-#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
-#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
-#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
-#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
-#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
-#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
-#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
-#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
-#define CORE_PIN27_BITMASK (1<<(CORE_PIN27_BIT))
-#define CORE_PIN28_BITMASK (1<<(CORE_PIN28_BIT))
-#define CORE_PIN29_BITMASK (1<<(CORE_PIN29_BIT))
-#define CORE_PIN30_BITMASK (1<<(CORE_PIN30_BIT))
-#define CORE_PIN31_BITMASK (1<<(CORE_PIN31_BIT))
-#define CORE_PIN32_BITMASK (1<<(CORE_PIN32_BIT))
-#define CORE_PIN33_BITMASK (1<<(CORE_PIN33_BIT))
-
-#define CORE_PIN0_PORTREG GPIOB_PDOR
-#define CORE_PIN1_PORTREG GPIOB_PDOR
-#define CORE_PIN2_PORTREG GPIOD_PDOR
-#define CORE_PIN3_PORTREG GPIOA_PDOR
-#define CORE_PIN4_PORTREG GPIOA_PDOR
-#define CORE_PIN5_PORTREG GPIOD_PDOR
-#define CORE_PIN6_PORTREG GPIOD_PDOR
-#define CORE_PIN7_PORTREG GPIOD_PDOR
-#define CORE_PIN8_PORTREG GPIOD_PDOR
-#define CORE_PIN9_PORTREG GPIOC_PDOR
-#define CORE_PIN10_PORTREG GPIOC_PDOR
-#define CORE_PIN11_PORTREG GPIOC_PDOR
-#define CORE_PIN12_PORTREG GPIOC_PDOR
-#define CORE_PIN13_PORTREG GPIOC_PDOR
-#define CORE_PIN14_PORTREG GPIOD_PDOR
-#define CORE_PIN15_PORTREG GPIOC_PDOR
-#define CORE_PIN16_PORTREG GPIOB_PDOR
-#define CORE_PIN17_PORTREG GPIOB_PDOR
-#define CORE_PIN18_PORTREG GPIOB_PDOR
-#define CORE_PIN19_PORTREG GPIOB_PDOR
-#define CORE_PIN20_PORTREG GPIOD_PDOR
-#define CORE_PIN21_PORTREG GPIOD_PDOR
-#define CORE_PIN22_PORTREG GPIOC_PDOR
-#define CORE_PIN23_PORTREG GPIOC_PDOR
-#define CORE_PIN24_PORTREG GPIOA_PDOR
-#define CORE_PIN25_PORTREG GPIOB_PDOR
-#define CORE_PIN26_PORTREG GPIOE_PDOR
-#define CORE_PIN27_PORTREG GPIOC_PDOR
-#define CORE_PIN28_PORTREG GPIOC_PDOR
-#define CORE_PIN29_PORTREG GPIOC_PDOR
-#define CORE_PIN30_PORTREG GPIOC_PDOR
-#define CORE_PIN31_PORTREG GPIOE_PDOR
-#define CORE_PIN32_PORTREG GPIOB_PDOR
-#define CORE_PIN33_PORTREG GPIOA_PDOR
-
-#define CORE_PIN0_PORTSET GPIOB_PSOR
-#define CORE_PIN1_PORTSET GPIOB_PSOR
-#define CORE_PIN2_PORTSET GPIOD_PSOR
-#define CORE_PIN3_PORTSET GPIOA_PSOR
-#define CORE_PIN4_PORTSET GPIOA_PSOR
-#define CORE_PIN5_PORTSET GPIOD_PSOR
-#define CORE_PIN6_PORTSET GPIOD_PSOR
-#define CORE_PIN7_PORTSET GPIOD_PSOR
-#define CORE_PIN8_PORTSET GPIOD_PSOR
-#define CORE_PIN9_PORTSET GPIOC_PSOR
-#define CORE_PIN10_PORTSET GPIOC_PSOR
-#define CORE_PIN11_PORTSET GPIOC_PSOR
-#define CORE_PIN12_PORTSET GPIOC_PSOR
-#define CORE_PIN13_PORTSET GPIOC_PSOR
-#define CORE_PIN14_PORTSET GPIOD_PSOR
-#define CORE_PIN15_PORTSET GPIOC_PSOR
-#define CORE_PIN16_PORTSET GPIOB_PSOR
-#define CORE_PIN17_PORTSET GPIOB_PSOR
-#define CORE_PIN18_PORTSET GPIOB_PSOR
-#define CORE_PIN19_PORTSET GPIOB_PSOR
-#define CORE_PIN20_PORTSET GPIOD_PSOR
-#define CORE_PIN21_PORTSET GPIOD_PSOR
-#define CORE_PIN22_PORTSET GPIOC_PSOR
-#define CORE_PIN23_PORTSET GPIOC_PSOR
-#define CORE_PIN24_PORTSET GPIOA_PSOR
-#define CORE_PIN25_PORTSET GPIOB_PSOR
-#define CORE_PIN26_PORTSET GPIOE_PSOR
-#define CORE_PIN27_PORTSET GPIOC_PSOR
-#define CORE_PIN28_PORTSET GPIOC_PSOR
-#define CORE_PIN29_PORTSET GPIOC_PSOR
-#define CORE_PIN30_PORTSET GPIOC_PSOR
-#define CORE_PIN31_PORTSET GPIOE_PSOR
-#define CORE_PIN32_PORTSET GPIOB_PSOR
-#define CORE_PIN33_PORTSET GPIOA_PSOR
-
-#define CORE_PIN0_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN1_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN2_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN3_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN4_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN5_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN6_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN7_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN8_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN9_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN10_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN11_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN12_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN13_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN14_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN15_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN16_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN17_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN18_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN19_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN20_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN21_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN22_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN23_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN24_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN25_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN26_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN27_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN28_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN29_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN30_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN31_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN32_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN33_PORTCLEAR GPIOA_PCOR
-
-#define CORE_PIN0_DDRREG GPIOB_PDDR
-#define CORE_PIN1_DDRREG GPIOB_PDDR
-#define CORE_PIN2_DDRREG GPIOD_PDDR
-#define CORE_PIN3_DDRREG GPIOA_PDDR
-#define CORE_PIN4_DDRREG GPIOA_PDDR
-#define CORE_PIN5_DDRREG GPIOD_PDDR
-#define CORE_PIN6_DDRREG GPIOD_PDDR
-#define CORE_PIN7_DDRREG GPIOD_PDDR
-#define CORE_PIN8_DDRREG GPIOD_PDDR
-#define CORE_PIN9_DDRREG GPIOC_PDDR
-#define CORE_PIN10_DDRREG GPIOC_PDDR
-#define CORE_PIN11_DDRREG GPIOC_PDDR
-#define CORE_PIN12_DDRREG GPIOC_PDDR
-#define CORE_PIN13_DDRREG GPIOC_PDDR
-#define CORE_PIN14_DDRREG GPIOD_PDDR
-#define CORE_PIN15_DDRREG GPIOC_PDDR
-#define CORE_PIN16_DDRREG GPIOB_PDDR
-#define CORE_PIN17_DDRREG GPIOB_PDDR
-#define CORE_PIN18_DDRREG GPIOB_PDDR
-#define CORE_PIN19_DDRREG GPIOB_PDDR
-#define CORE_PIN20_DDRREG GPIOD_PDDR
-#define CORE_PIN21_DDRREG GPIOD_PDDR
-#define CORE_PIN22_DDRREG GPIOC_PDDR
-#define CORE_PIN23_DDRREG GPIOC_PDDR
-#define CORE_PIN24_DDRREG GPIOA_PDDR
-#define CORE_PIN25_DDRREG GPIOB_PDDR
-#define CORE_PIN26_DDRREG GPIOE_PDDR
-#define CORE_PIN27_DDRREG GPIOC_PDDR
-#define CORE_PIN28_DDRREG GPIOC_PDDR
-#define CORE_PIN29_DDRREG GPIOC_PDDR
-#define CORE_PIN30_DDRREG GPIOC_PDDR
-#define CORE_PIN31_DDRREG GPIOE_PDDR
-#define CORE_PIN32_DDRREG GPIOB_PDDR
-#define CORE_PIN33_DDRREG GPIOA_PDDR
-
-#define CORE_PIN0_PINREG GPIOB_PDIR
-#define CORE_PIN1_PINREG GPIOB_PDIR
-#define CORE_PIN2_PINREG GPIOD_PDIR
-#define CORE_PIN3_PINREG GPIOA_PDIR
-#define CORE_PIN4_PINREG GPIOA_PDIR
-#define CORE_PIN5_PINREG GPIOD_PDIR
-#define CORE_PIN6_PINREG GPIOD_PDIR
-#define CORE_PIN7_PINREG GPIOD_PDIR
-#define CORE_PIN8_PINREG GPIOD_PDIR
-#define CORE_PIN9_PINREG GPIOC_PDIR
-#define CORE_PIN10_PINREG GPIOC_PDIR
-#define CORE_PIN11_PINREG GPIOC_PDIR
-#define CORE_PIN12_PINREG GPIOC_PDIR
-#define CORE_PIN13_PINREG GPIOC_PDIR
-#define CORE_PIN14_PINREG GPIOD_PDIR
-#define CORE_PIN15_PINREG GPIOC_PDIR
-#define CORE_PIN16_PINREG GPIOB_PDIR
-#define CORE_PIN17_PINREG GPIOB_PDIR
-#define CORE_PIN18_PINREG GPIOB_PDIR
-#define CORE_PIN19_PINREG GPIOB_PDIR
-#define CORE_PIN20_PINREG GPIOD_PDIR
-#define CORE_PIN21_PINREG GPIOD_PDIR
-#define CORE_PIN22_PINREG GPIOC_PDIR
-#define CORE_PIN23_PINREG GPIOC_PDIR
-#define CORE_PIN24_PINREG GPIOA_PDIR
-#define CORE_PIN25_PINREG GPIOB_PDIR
-#define CORE_PIN26_PINREG GPIOE_PDIR
-#define CORE_PIN27_PINREG GPIOC_PDIR
-#define CORE_PIN28_PINREG GPIOC_PDIR
-#define CORE_PIN29_PINREG GPIOC_PDIR
-#define CORE_PIN30_PINREG GPIOC_PDIR
-#define CORE_PIN31_PINREG GPIOE_PDIR
-#define CORE_PIN32_PINREG GPIOB_PDIR
-#define CORE_PIN33_PINREG GPIOA_PDIR
-
-#define CORE_PIN0_CONFIG PORTB_PCR16
-#define CORE_PIN1_CONFIG PORTB_PCR17
-#define CORE_PIN2_CONFIG PORTD_PCR0
-#define CORE_PIN3_CONFIG PORTA_PCR12
-#define CORE_PIN4_CONFIG PORTA_PCR13
-#define CORE_PIN5_CONFIG PORTD_PCR7
-#define CORE_PIN6_CONFIG PORTD_PCR4
-#define CORE_PIN7_CONFIG PORTD_PCR2
-#define CORE_PIN8_CONFIG PORTD_PCR3
-#define CORE_PIN9_CONFIG PORTC_PCR3
-#define CORE_PIN10_CONFIG PORTC_PCR4
-#define CORE_PIN11_CONFIG PORTC_PCR6
-#define CORE_PIN12_CONFIG PORTC_PCR7
-#define CORE_PIN13_CONFIG PORTC_PCR5
-#define CORE_PIN14_CONFIG PORTD_PCR1
-#define CORE_PIN15_CONFIG PORTC_PCR0
-#define CORE_PIN16_CONFIG PORTB_PCR0
-#define CORE_PIN17_CONFIG PORTB_PCR1
-#define CORE_PIN18_CONFIG PORTB_PCR3
-#define CORE_PIN19_CONFIG PORTB_PCR2
-#define CORE_PIN20_CONFIG PORTD_PCR5
-#define CORE_PIN21_CONFIG PORTD_PCR6
-#define CORE_PIN22_CONFIG PORTC_PCR1
-#define CORE_PIN23_CONFIG PORTC_PCR2
-#define CORE_PIN24_CONFIG PORTA_PCR5
-#define CORE_PIN25_CONFIG PORTB_PCR19
-#define CORE_PIN26_CONFIG PORTE_PCR1
-#define CORE_PIN27_CONFIG PORTC_PCR9
-#define CORE_PIN28_CONFIG PORTC_PCR8
-#define CORE_PIN29_CONFIG PORTC_PCR10
-#define CORE_PIN30_CONFIG PORTC_PCR11
-#define CORE_PIN31_CONFIG PORTE_PCR0
-#define CORE_PIN32_CONFIG PORTB_PCR18
-#define CORE_PIN33_CONFIG PORTA_PCR4
-
-#define CORE_ADC0_PIN 14
-#define CORE_ADC1_PIN 15
-#define CORE_ADC2_PIN 16
-#define CORE_ADC3_PIN 17
-#define CORE_ADC4_PIN 18
-#define CORE_ADC5_PIN 19
-#define CORE_ADC6_PIN 20
-#define CORE_ADC7_PIN 21
-#define CORE_ADC8_PIN 22
-#define CORE_ADC9_PIN 23
-#define CORE_ADC10_PIN 34
-#define CORE_ADC11_PIN 35
-#define CORE_ADC12_PIN 36
-#define CORE_ADC13_PIN 37
-
-#define CORE_RXD0_PIN 0
-#define CORE_TXD0_PIN 1
-#define CORE_RXD1_PIN 9
-#define CORE_TXD1_PIN 10
-#define CORE_RXD2_PIN 7
-#define CORE_TXD2_PIN 8
-
-#define CORE_INT0_PIN 0
-#define CORE_INT1_PIN 1
-#define CORE_INT2_PIN 2
-#define CORE_INT3_PIN 3
-#define CORE_INT4_PIN 4
-#define CORE_INT5_PIN 5
-#define CORE_INT6_PIN 6
-#define CORE_INT7_PIN 7
-#define CORE_INT8_PIN 8
-#define CORE_INT9_PIN 9
-#define CORE_INT10_PIN 10
-#define CORE_INT11_PIN 11
-#define CORE_INT12_PIN 12
-#define CORE_INT13_PIN 13
-#define CORE_INT14_PIN 14
-#define CORE_INT15_PIN 15
-#define CORE_INT16_PIN 16
-#define CORE_INT17_PIN 17
-#define CORE_INT18_PIN 18
-#define CORE_INT19_PIN 19
-#define CORE_INT20_PIN 20
-#define CORE_INT21_PIN 21
-#define CORE_INT22_PIN 22
-#define CORE_INT23_PIN 23
-#define CORE_INT24_PIN 24
-#define CORE_INT25_PIN 25
-#define CORE_INT26_PIN 26
-#define CORE_INT27_PIN 27
-#define CORE_INT28_PIN 28
-#define CORE_INT29_PIN 29
-#define CORE_INT30_PIN 30
-#define CORE_INT31_PIN 31
-#define CORE_INT32_PIN 32
-#define CORE_INT33_PIN 33
-#define CORE_INT_EVERY_PIN 1
-
-
-#elif defined(__MKL26Z64__)
-
-#define CORE_PIN0_BIT 16
-#define CORE_PIN1_BIT 17
-#define CORE_PIN2_BIT 0
-#define CORE_PIN3_BIT 1
-#define CORE_PIN4_BIT 2
-#define CORE_PIN5_BIT 7
-#define CORE_PIN6_BIT 4
-#define CORE_PIN7_BIT 2
-#define CORE_PIN8_BIT 3
-#define CORE_PIN9_BIT 3
-#define CORE_PIN10_BIT 4
-#define CORE_PIN11_BIT 6
-#define CORE_PIN12_BIT 7
-#define CORE_PIN13_BIT 5
-#define CORE_PIN14_BIT 1
-#define CORE_PIN15_BIT 0
-#define CORE_PIN16_BIT 0
-#define CORE_PIN17_BIT 1
-#define CORE_PIN18_BIT 3
-#define CORE_PIN19_BIT 2
-#define CORE_PIN20_BIT 5
-#define CORE_PIN21_BIT 6
-#define CORE_PIN22_BIT 1
-#define CORE_PIN23_BIT 2
-#define CORE_PIN24_BIT 20
-#define CORE_PIN25_BIT 21
-#define CORE_PIN26_BIT 30
-
-#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
-#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
-#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
-#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
-#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
-#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
-#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
-#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
-#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
-#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
-#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
-#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
-#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
-#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
-#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
-#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
-#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
-#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
-#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
-#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
-#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
-#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
-#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
-#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
-#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
-#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
-#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
-
-#define CORE_PIN0_PORTREG FGPIOB_PDOR
-#define CORE_PIN1_PORTREG FGPIOB_PDOR
-#define CORE_PIN2_PORTREG FGPIOD_PDOR
-#define CORE_PIN3_PORTREG FGPIOA_PDOR
-#define CORE_PIN4_PORTREG FGPIOA_PDOR
-#define CORE_PIN5_PORTREG FGPIOD_PDOR
-#define CORE_PIN6_PORTREG FGPIOD_PDOR
-#define CORE_PIN7_PORTREG FGPIOD_PDOR
-#define CORE_PIN8_PORTREG FGPIOD_PDOR
-#define CORE_PIN9_PORTREG FGPIOC_PDOR
-#define CORE_PIN10_PORTREG FGPIOC_PDOR
-#define CORE_PIN11_PORTREG FGPIOC_PDOR
-#define CORE_PIN12_PORTREG FGPIOC_PDOR
-#define CORE_PIN13_PORTREG FGPIOC_PDOR
-#define CORE_PIN14_PORTREG FGPIOD_PDOR
-#define CORE_PIN15_PORTREG FGPIOC_PDOR
-#define CORE_PIN16_PORTREG FGPIOB_PDOR
-#define CORE_PIN17_PORTREG FGPIOB_PDOR
-#define CORE_PIN18_PORTREG FGPIOB_PDOR
-#define CORE_PIN19_PORTREG FGPIOB_PDOR
-#define CORE_PIN20_PORTREG FGPIOD_PDOR
-#define CORE_PIN21_PORTREG FGPIOD_PDOR
-#define CORE_PIN22_PORTREG FGPIOC_PDOR
-#define CORE_PIN23_PORTREG FGPIOC_PDOR
-#define CORE_PIN24_PORTREG FGPIOE_PDOR
-#define CORE_PIN25_PORTREG FGPIOE_PDOR
-#define CORE_PIN26_PORTREG FGPIOE_PDOR
-
-#define CORE_PIN0_PORTSET FGPIOB_PSOR
-#define CORE_PIN1_PORTSET FGPIOB_PSOR
-#define CORE_PIN2_PORTSET FGPIOD_PSOR
-#define CORE_PIN3_PORTSET FGPIOA_PSOR
-#define CORE_PIN4_PORTSET FGPIOA_PSOR
-#define CORE_PIN5_PORTSET FGPIOD_PSOR
-#define CORE_PIN6_PORTSET FGPIOD_PSOR
-#define CORE_PIN7_PORTSET FGPIOD_PSOR
-#define CORE_PIN8_PORTSET FGPIOD_PSOR
-#define CORE_PIN9_PORTSET FGPIOC_PSOR
-#define CORE_PIN10_PORTSET FGPIOC_PSOR
-#define CORE_PIN11_PORTSET FGPIOC_PSOR
-#define CORE_PIN12_PORTSET FGPIOC_PSOR
-#define CORE_PIN13_PORTSET FGPIOC_PSOR
-#define CORE_PIN14_PORTSET FGPIOD_PSOR
-#define CORE_PIN15_PORTSET FGPIOC_PSOR
-#define CORE_PIN16_PORTSET FGPIOB_PSOR
-#define CORE_PIN17_PORTSET FGPIOB_PSOR
-#define CORE_PIN18_PORTSET FGPIOB_PSOR
-#define CORE_PIN19_PORTSET FGPIOB_PSOR
-#define CORE_PIN20_PORTSET FGPIOD_PSOR
-#define CORE_PIN21_PORTSET FGPIOD_PSOR
-#define CORE_PIN22_PORTSET FGPIOC_PSOR
-#define CORE_PIN23_PORTSET FGPIOC_PSOR
-#define CORE_PIN24_PORTSET FGPIOE_PSOR
-#define CORE_PIN25_PORTSET FGPIOE_PSOR
-#define CORE_PIN26_PORTSET FGPIOE_PSOR
-
-#define CORE_PIN0_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN1_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN2_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN3_PORTCLEAR FGPIOA_PCOR
-#define CORE_PIN4_PORTCLEAR FGPIOA_PCOR
-#define CORE_PIN5_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN6_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN7_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN8_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN9_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN10_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN11_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN12_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN13_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN14_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN15_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN16_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN17_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN18_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN19_PORTCLEAR FGPIOB_PCOR
-#define CORE_PIN20_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN21_PORTCLEAR FGPIOD_PCOR
-#define CORE_PIN22_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN23_PORTCLEAR FGPIOC_PCOR
-#define CORE_PIN24_PORTCLEAR FGPIOE_PCOR
-#define CORE_PIN25_PORTCLEAR FGPIOE_PCOR
-#define CORE_PIN26_PORTCLEAR FGPIOE_PCOR
-
-#define CORE_PIN0_DDRREG FGPIOB_PDDR
-#define CORE_PIN1_DDRREG FGPIOB_PDDR
-#define CORE_PIN2_DDRREG FGPIOD_PDDR
-#define CORE_PIN3_DDRREG FGPIOA_PDDR
-#define CORE_PIN4_DDRREG FGPIOA_PDDR
-#define CORE_PIN5_DDRREG FGPIOD_PDDR
-#define CORE_PIN6_DDRREG FGPIOD_PDDR
-#define CORE_PIN7_DDRREG FGPIOD_PDDR
-#define CORE_PIN8_DDRREG FGPIOD_PDDR
-#define CORE_PIN9_DDRREG FGPIOC_PDDR
-#define CORE_PIN10_DDRREG FGPIOC_PDDR
-#define CORE_PIN11_DDRREG FGPIOC_PDDR
-#define CORE_PIN12_DDRREG FGPIOC_PDDR
-#define CORE_PIN13_DDRREG FGPIOC_PDDR
-#define CORE_PIN14_DDRREG FGPIOD_PDDR
-#define CORE_PIN15_DDRREG FGPIOC_PDDR
-#define CORE_PIN16_DDRREG FGPIOB_PDDR
-#define CORE_PIN17_DDRREG FGPIOB_PDDR
-#define CORE_PIN18_DDRREG FGPIOB_PDDR
-#define CORE_PIN19_DDRREG FGPIOB_PDDR
-#define CORE_PIN20_DDRREG FGPIOD_PDDR
-#define CORE_PIN21_DDRREG FGPIOD_PDDR
-#define CORE_PIN22_DDRREG FGPIOC_PDDR
-#define CORE_PIN23_DDRREG FGPIOC_PDDR
-#define CORE_PIN24_DDRREG FGPIOE_PDDR
-#define CORE_PIN25_DDRREG FGPIOE_PDDR
-#define CORE_PIN26_DDRREG FGPIOE_PDDR
-
-#define CORE_PIN0_PINREG FGPIOB_PDIR
-#define CORE_PIN1_PINREG FGPIOB_PDIR
-#define CORE_PIN2_PINREG FGPIOD_PDIR
-#define CORE_PIN3_PINREG FGPIOA_PDIR
-#define CORE_PIN4_PINREG FGPIOA_PDIR
-#define CORE_PIN5_PINREG FGPIOD_PDIR
-#define CORE_PIN6_PINREG FGPIOD_PDIR
-#define CORE_PIN7_PINREG FGPIOD_PDIR
-#define CORE_PIN8_PINREG FGPIOD_PDIR
-#define CORE_PIN9_PINREG FGPIOC_PDIR
-#define CORE_PIN10_PINREG FGPIOC_PDIR
-#define CORE_PIN11_PINREG FGPIOC_PDIR
-#define CORE_PIN12_PINREG FGPIOC_PDIR
-#define CORE_PIN13_PINREG FGPIOC_PDIR
-#define CORE_PIN14_PINREG FGPIOD_PDIR
-#define CORE_PIN15_PINREG FGPIOC_PDIR
-#define CORE_PIN16_PINREG FGPIOB_PDIR
-#define CORE_PIN17_PINREG FGPIOB_PDIR
-#define CORE_PIN18_PINREG FGPIOB_PDIR
-#define CORE_PIN19_PINREG FGPIOB_PDIR
-#define CORE_PIN20_PINREG FGPIOD_PDIR
-#define CORE_PIN21_PINREG FGPIOD_PDIR
-#define CORE_PIN22_PINREG FGPIOC_PDIR
-#define CORE_PIN23_PINREG FGPIOC_PDIR
-#define CORE_PIN24_PINREG FGPIOE_PDIR
-#define CORE_PIN25_PINREG FGPIOE_PDIR
-#define CORE_PIN26_PINREG FGPIOE_PDIR
-
-#define CORE_PIN0_CONFIG PORTB_PCR16
-#define CORE_PIN1_CONFIG PORTB_PCR17
-#define CORE_PIN2_CONFIG PORTD_PCR0
-#define CORE_PIN3_CONFIG PORTA_PCR1
-#define CORE_PIN4_CONFIG PORTA_PCR2
-#define CORE_PIN5_CONFIG PORTD_PCR7
-#define CORE_PIN6_CONFIG PORTD_PCR4
-#define CORE_PIN7_CONFIG PORTD_PCR2
-#define CORE_PIN8_CONFIG PORTD_PCR3
-#define CORE_PIN9_CONFIG PORTC_PCR3
-#define CORE_PIN10_CONFIG PORTC_PCR4
-#define CORE_PIN11_CONFIG PORTC_PCR6
-#define CORE_PIN12_CONFIG PORTC_PCR7
-#define CORE_PIN13_CONFIG PORTC_PCR5
-#define CORE_PIN14_CONFIG PORTD_PCR1
-#define CORE_PIN15_CONFIG PORTC_PCR0
-#define CORE_PIN16_CONFIG PORTB_PCR0
-#define CORE_PIN17_CONFIG PORTB_PCR1
-#define CORE_PIN18_CONFIG PORTB_PCR3
-#define CORE_PIN19_CONFIG PORTB_PCR2
-#define CORE_PIN20_CONFIG PORTD_PCR5
-#define CORE_PIN21_CONFIG PORTD_PCR6
-#define CORE_PIN22_CONFIG PORTC_PCR1
-#define CORE_PIN23_CONFIG PORTC_PCR2
-#define CORE_PIN24_CONFIG PORTE_PCR20
-#define CORE_PIN25_CONFIG PORTE_PCR21
-#define CORE_PIN26_CONFIG PORTE_PCR30
-
-#define CORE_ADC0_PIN 14
-#define CORE_ADC1_PIN 15
-#define CORE_ADC2_PIN 16
-#define CORE_ADC3_PIN 17
-#define CORE_ADC4_PIN 18
-#define CORE_ADC5_PIN 19
-#define CORE_ADC6_PIN 20
-#define CORE_ADC7_PIN 21
-#define CORE_ADC8_PIN 22
-#define CORE_ADC9_PIN 23
-#define CORE_ADC10_PIN 24
-#define CORE_ADC11_PIN 25
-#define CORE_ADC12_PIN 26
-
-#define CORE_RXD0_PIN 0
-#define CORE_TXD0_PIN 1
-#define CORE_RXD1_PIN 9
-#define CORE_TXD1_PIN 10
-#define CORE_RXD2_PIN 7
-#define CORE_TXD2_PIN 8
-
-#define CORE_INT2_PIN 2
-#define CORE_INT3_PIN 3
-#define CORE_INT4_PIN 4
-#define CORE_INT5_PIN 5
-#define CORE_INT6_PIN 6
-#define CORE_INT7_PIN 7
-#define CORE_INT8_PIN 8
-#define CORE_INT9_PIN 9
-#define CORE_INT10_PIN 10
-#define CORE_INT11_PIN 11
-#define CORE_INT12_PIN 12
-#define CORE_INT13_PIN 13
-#define CORE_INT14_PIN 14
-#define CORE_INT15_PIN 15
-#define CORE_INT20_PIN 20
-#define CORE_INT21_PIN 21
-#define CORE_INT22_PIN 22
-#define CORE_INT23_PIN 23
-
-
-#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
-
-#define CORE_PIN0_BIT 16
-#define CORE_PIN1_BIT 17
-#define CORE_PIN2_BIT 0
-#define CORE_PIN3_BIT 12
-#define CORE_PIN4_BIT 13
-#define CORE_PIN5_BIT 7
-#define CORE_PIN6_BIT 4
-#define CORE_PIN7_BIT 2
-#define CORE_PIN8_BIT 3
-#define CORE_PIN9_BIT 3
-#define CORE_PIN10_BIT 4
-#define CORE_PIN11_BIT 6
-#define CORE_PIN12_BIT 7
-#define CORE_PIN13_BIT 5
-#define CORE_PIN14_BIT 1
-#define CORE_PIN15_BIT 0
-#define CORE_PIN16_BIT 0
-#define CORE_PIN17_BIT 1
-#define CORE_PIN18_BIT 3
-#define CORE_PIN19_BIT 2
-#define CORE_PIN20_BIT 5
-#define CORE_PIN21_BIT 6
-#define CORE_PIN22_BIT 1
-#define CORE_PIN23_BIT 2
-#define CORE_PIN24_BIT 26
-#define CORE_PIN25_BIT 5
-#define CORE_PIN26_BIT 14
-#define CORE_PIN27_BIT 15
-#define CORE_PIN28_BIT 16
-#define CORE_PIN29_BIT 18
-#define CORE_PIN30_BIT 19
-#define CORE_PIN31_BIT 10
-#define CORE_PIN32_BIT 11
-#define CORE_PIN33_BIT 24
-#define CORE_PIN34_BIT 25
-#define CORE_PIN35_BIT 8
-#define CORE_PIN36_BIT 9
-#define CORE_PIN37_BIT 10
-#define CORE_PIN38_BIT 11
-#define CORE_PIN39_BIT 17
-#define CORE_PIN40_BIT 28
-#define CORE_PIN41_BIT 29
-#define CORE_PIN42_BIT 26
-#define CORE_PIN43_BIT 20
-#define CORE_PIN44_BIT 22
-#define CORE_PIN45_BIT 23
-#define CORE_PIN46_BIT 21
-#define CORE_PIN47_BIT 8
-#define CORE_PIN48_BIT 9
-#define CORE_PIN49_BIT 4
-#define CORE_PIN50_BIT 5
-#define CORE_PIN51_BIT 14
-#define CORE_PIN52_BIT 13
-#define CORE_PIN53_BIT 12
-#define CORE_PIN54_BIT 15
-#define CORE_PIN55_BIT 11
-#define CORE_PIN56_BIT 10
-#define CORE_PIN57_BIT 11
-#define CORE_PIN58_BIT 0
-#define CORE_PIN59_BIT 1
-#define CORE_PIN60_BIT 2
-#define CORE_PIN61_BIT 3
-#define CORE_PIN62_BIT 4
-#define CORE_PIN63_BIT 5
-
-#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
-#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
-#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
-#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
-#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
-#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
-#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
-#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
-#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
-#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
-#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
-#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
-#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
-#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
-#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
-#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
-#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
-#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
-#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
-#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
-#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
-#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
-#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
-#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
-#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
-#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
-#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
-#define CORE_PIN27_BITMASK (1<<(CORE_PIN27_BIT))
-#define CORE_PIN28_BITMASK (1<<(CORE_PIN28_BIT))
-#define CORE_PIN29_BITMASK (1<<(CORE_PIN29_BIT))
-#define CORE_PIN30_BITMASK (1<<(CORE_PIN30_BIT))
-#define CORE_PIN31_BITMASK (1<<(CORE_PIN31_BIT))
-#define CORE_PIN32_BITMASK (1<<(CORE_PIN32_BIT))
-#define CORE_PIN33_BITMASK (1<<(CORE_PIN33_BIT))
-#define CORE_PIN34_BITMASK (1<<(CORE_PIN34_BIT))
-#define CORE_PIN35_BITMASK (1<<(CORE_PIN35_BIT))
-#define CORE_PIN36_BITMASK (1<<(CORE_PIN36_BIT))
-#define CORE_PIN37_BITMASK (1<<(CORE_PIN37_BIT))
-#define CORE_PIN38_BITMASK (1<<(CORE_PIN38_BIT))
-#define CORE_PIN39_BITMASK (1<<(CORE_PIN39_BIT))
-#define CORE_PIN40_BITMASK (1<<(CORE_PIN40_BIT))
-#define CORE_PIN41_BITMASK (1<<(CORE_PIN41_BIT))
-#define CORE_PIN42_BITMASK (1<<(CORE_PIN42_BIT))
-#define CORE_PIN43_BITMASK (1<<(CORE_PIN43_BIT))
-#define CORE_PIN44_BITMASK (1<<(CORE_PIN44_BIT))
-#define CORE_PIN45_BITMASK (1<<(CORE_PIN45_BIT))
-#define CORE_PIN46_BITMASK (1<<(CORE_PIN46_BIT))
-#define CORE_PIN47_BITMASK (1<<(CORE_PIN47_BIT))
-#define CORE_PIN48_BITMASK (1<<(CORE_PIN48_BIT))
-#define CORE_PIN49_BITMASK (1<<(CORE_PIN49_BIT))
-#define CORE_PIN50_BITMASK (1<<(CORE_PIN50_BIT))
-#define CORE_PIN51_BITMASK (1<<(CORE_PIN51_BIT))
-#define CORE_PIN52_BITMASK (1<<(CORE_PIN52_BIT))
-#define CORE_PIN53_BITMASK (1<<(CORE_PIN53_BIT))
-#define CORE_PIN54_BITMASK (1<<(CORE_PIN54_BIT))
-#define CORE_PIN55_BITMASK (1<<(CORE_PIN55_BIT))
-#define CORE_PIN56_BITMASK (1<<(CORE_PIN56_BIT))
-#define CORE_PIN57_BITMASK (1<<(CORE_PIN57_BIT))
-#define CORE_PIN58_BITMASK (1<<(CORE_PIN58_BIT))
-#define CORE_PIN59_BITMASK (1<<(CORE_PIN59_BIT))
-#define CORE_PIN60_BITMASK (1<<(CORE_PIN60_BIT))
-#define CORE_PIN61_BITMASK (1<<(CORE_PIN61_BIT))
-#define CORE_PIN62_BITMASK (1<<(CORE_PIN62_BIT))
-#define CORE_PIN63_BITMASK (1<<(CORE_PIN63_BIT))
-
-
-#define CORE_PIN0_PORTREG GPIOB_PDOR
-#define CORE_PIN1_PORTREG GPIOB_PDOR
-#define CORE_PIN2_PORTREG GPIOD_PDOR
-#define CORE_PIN3_PORTREG GPIOA_PDOR
-#define CORE_PIN4_PORTREG GPIOA_PDOR
-#define CORE_PIN5_PORTREG GPIOD_PDOR
-#define CORE_PIN6_PORTREG GPIOD_PDOR
-#define CORE_PIN7_PORTREG GPIOD_PDOR
-#define CORE_PIN8_PORTREG GPIOD_PDOR
-#define CORE_PIN9_PORTREG GPIOC_PDOR
-#define CORE_PIN10_PORTREG GPIOC_PDOR
-#define CORE_PIN11_PORTREG GPIOC_PDOR
-#define CORE_PIN12_PORTREG GPIOC_PDOR
-#define CORE_PIN13_PORTREG GPIOC_PDOR
-#define CORE_PIN14_PORTREG GPIOD_PDOR
-#define CORE_PIN15_PORTREG GPIOC_PDOR
-#define CORE_PIN16_PORTREG GPIOB_PDOR
-#define CORE_PIN17_PORTREG GPIOB_PDOR
-#define CORE_PIN18_PORTREG GPIOB_PDOR
-#define CORE_PIN19_PORTREG GPIOB_PDOR
-#define CORE_PIN20_PORTREG GPIOD_PDOR
-#define CORE_PIN21_PORTREG GPIOD_PDOR
-#define CORE_PIN22_PORTREG GPIOC_PDOR
-#define CORE_PIN23_PORTREG GPIOC_PDOR
-#define CORE_PIN24_PORTREG GPIOE_PDOR
-#define CORE_PIN25_PORTREG GPIOA_PDOR
-#define CORE_PIN26_PORTREG GPIOA_PDOR
-#define CORE_PIN27_PORTREG GPIOA_PDOR
-#define CORE_PIN28_PORTREG GPIOA_PDOR
-#define CORE_PIN29_PORTREG GPIOB_PDOR
-#define CORE_PIN30_PORTREG GPIOB_PDOR
-#define CORE_PIN31_PORTREG GPIOB_PDOR
-#define CORE_PIN32_PORTREG GPIOB_PDOR
-#define CORE_PIN33_PORTREG GPIOE_PDOR
-#define CORE_PIN34_PORTREG GPIOE_PDOR
-#define CORE_PIN35_PORTREG GPIOC_PDOR
-#define CORE_PIN36_PORTREG GPIOC_PDOR
-#define CORE_PIN37_PORTREG GPIOC_PDOR
-#define CORE_PIN38_PORTREG GPIOC_PDOR
-#define CORE_PIN39_PORTREG GPIOA_PDOR
-#define CORE_PIN40_PORTREG GPIOA_PDOR
-#define CORE_PIN41_PORTREG GPIOA_PDOR
-#define CORE_PIN42_PORTREG GPIOA_PDOR
-#define CORE_PIN43_PORTREG GPIOB_PDOR
-#define CORE_PIN44_PORTREG GPIOB_PDOR
-#define CORE_PIN45_PORTREG GPIOB_PDOR
-#define CORE_PIN46_PORTREG GPIOB_PDOR
-#define CORE_PIN47_PORTREG GPIOD_PDOR
-#define CORE_PIN48_PORTREG GPIOD_PDOR
-#define CORE_PIN49_PORTREG GPIOB_PDOR
-#define CORE_PIN50_PORTREG GPIOB_PDOR
-#define CORE_PIN51_PORTREG GPIOD_PDOR
-#define CORE_PIN52_PORTREG GPIOD_PDOR
-#define CORE_PIN53_PORTREG GPIOD_PDOR
-#define CORE_PIN54_PORTREG GPIOD_PDOR
-#define CORE_PIN55_PORTREG GPIOD_PDOR
-#define CORE_PIN56_PORTREG GPIOE_PDOR
-#define CORE_PIN57_PORTREG GPIOE_PDOR
-#define CORE_PIN58_PORTREG GPIOE_PDOR
-#define CORE_PIN59_PORTREG GPIOE_PDOR
-#define CORE_PIN60_PORTREG GPIOE_PDOR
-#define CORE_PIN61_PORTREG GPIOE_PDOR
-#define CORE_PIN62_PORTREG GPIOE_PDOR
-#define CORE_PIN63_PORTREG GPIOE_PDOR
-
-#define CORE_PIN0_PORTSET GPIOB_PSOR
-#define CORE_PIN1_PORTSET GPIOB_PSOR
-#define CORE_PIN2_PORTSET GPIOD_PSOR
-#define CORE_PIN3_PORTSET GPIOA_PSOR
-#define CORE_PIN4_PORTSET GPIOA_PSOR
-#define CORE_PIN5_PORTSET GPIOD_PSOR
-#define CORE_PIN6_PORTSET GPIOD_PSOR
-#define CORE_PIN7_PORTSET GPIOD_PSOR
-#define CORE_PIN8_PORTSET GPIOD_PSOR
-#define CORE_PIN9_PORTSET GPIOC_PSOR
-#define CORE_PIN10_PORTSET GPIOC_PSOR
-#define CORE_PIN11_PORTSET GPIOC_PSOR
-#define CORE_PIN12_PORTSET GPIOC_PSOR
-#define CORE_PIN13_PORTSET GPIOC_PSOR
-#define CORE_PIN14_PORTSET GPIOD_PSOR
-#define CORE_PIN15_PORTSET GPIOC_PSOR
-#define CORE_PIN16_PORTSET GPIOB_PSOR
-#define CORE_PIN17_PORTSET GPIOB_PSOR
-#define CORE_PIN18_PORTSET GPIOB_PSOR
-#define CORE_PIN19_PORTSET GPIOB_PSOR
-#define CORE_PIN20_PORTSET GPIOD_PSOR
-#define CORE_PIN21_PORTSET GPIOD_PSOR
-#define CORE_PIN22_PORTSET GPIOC_PSOR
-#define CORE_PIN23_PORTSET GPIOC_PSOR
-#define CORE_PIN24_PORTSET GPIOE_PSOR
-#define CORE_PIN25_PORTSET GPIOA_PSOR
-#define CORE_PIN26_PORTSET GPIOA_PSOR
-#define CORE_PIN27_PORTSET GPIOA_PSOR
-#define CORE_PIN28_PORTSET GPIOA_PSOR
-#define CORE_PIN29_PORTSET GPIOB_PSOR
-#define CORE_PIN30_PORTSET GPIOB_PSOR
-#define CORE_PIN31_PORTSET GPIOB_PSOR
-#define CORE_PIN32_PORTSET GPIOB_PSOR
-#define CORE_PIN33_PORTSET GPIOE_PSOR
-#define CORE_PIN34_PORTSET GPIOE_PSOR
-#define CORE_PIN35_PORTSET GPIOC_PSOR
-#define CORE_PIN36_PORTSET GPIOC_PSOR
-#define CORE_PIN37_PORTSET GPIOC_PSOR
-#define CORE_PIN38_PORTSET GPIOC_PSOR
-#define CORE_PIN39_PORTSET GPIOA_PSOR
-#define CORE_PIN40_PORTSET GPIOA_PSOR
-#define CORE_PIN41_PORTSET GPIOA_PSOR
-#define CORE_PIN42_PORTSET GPIOA_PSOR
-#define CORE_PIN43_PORTSET GPIOB_PSOR
-#define CORE_PIN44_PORTSET GPIOB_PSOR
-#define CORE_PIN45_PORTSET GPIOB_PSOR
-#define CORE_PIN46_PORTSET GPIOB_PSOR
-#define CORE_PIN47_PORTSET GPIOD_PSOR
-#define CORE_PIN48_PORTSET GPIOD_PSOR
-#define CORE_PIN49_PORTSET GPIOB_PSOR
-#define CORE_PIN50_PORTSET GPIOB_PSOR
-#define CORE_PIN51_PORTSET GPIOD_PSOR
-#define CORE_PIN52_PORTSET GPIOD_PSOR
-#define CORE_PIN53_PORTSET GPIOD_PSOR
-#define CORE_PIN54_PORTSET GPIOD_PSOR
-#define CORE_PIN55_PORTSET GPIOD_PSOR
-#define CORE_PIN56_PORTSET GPIOE_PSOR
-#define CORE_PIN57_PORTSET GPIOE_PSOR
-#define CORE_PIN58_PORTSET GPIOE_PSOR
-#define CORE_PIN59_PORTSET GPIOE_PSOR
-#define CORE_PIN60_PORTSET GPIOE_PSOR
-#define CORE_PIN61_PORTSET GPIOE_PSOR
-#define CORE_PIN62_PORTSET GPIOE_PSOR
-#define CORE_PIN63_PORTSET GPIOE_PSOR
-
-#define CORE_PIN0_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN1_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN2_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN3_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN4_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN5_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN6_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN7_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN8_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN9_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN10_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN11_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN12_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN13_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN14_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN15_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN16_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN17_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN18_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN19_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN20_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN21_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN22_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN23_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN24_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN25_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN26_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN27_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN28_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN29_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN30_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN31_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN32_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN33_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN34_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN35_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN36_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN37_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN38_PORTCLEAR GPIOC_PCOR
-#define CORE_PIN39_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN40_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN41_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN42_PORTCLEAR GPIOA_PCOR
-#define CORE_PIN43_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN44_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN45_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN46_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN47_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN48_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN49_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN50_PORTCLEAR GPIOB_PCOR
-#define CORE_PIN51_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN52_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN53_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN54_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN55_PORTCLEAR GPIOD_PCOR
-#define CORE_PIN56_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN57_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN58_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN59_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN60_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN61_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN62_PORTCLEAR GPIOE_PCOR
-#define CORE_PIN63_PORTCLEAR GPIOE_PCOR
-
-#define CORE_PIN0_DDRREG GPIOB_PDDR
-#define CORE_PIN1_DDRREG GPIOB_PDDR
-#define CORE_PIN2_DDRREG GPIOD_PDDR
-#define CORE_PIN3_DDRREG GPIOA_PDDR
-#define CORE_PIN4_DDRREG GPIOA_PDDR
-#define CORE_PIN5_DDRREG GPIOD_PDDR
-#define CORE_PIN6_DDRREG GPIOD_PDDR
-#define CORE_PIN7_DDRREG GPIOD_PDDR
-#define CORE_PIN8_DDRREG GPIOD_PDDR
-#define CORE_PIN9_DDRREG GPIOC_PDDR
-#define CORE_PIN10_DDRREG GPIOC_PDDR
-#define CORE_PIN11_DDRREG GPIOC_PDDR
-#define CORE_PIN12_DDRREG GPIOC_PDDR
-#define CORE_PIN13_DDRREG GPIOC_PDDR
-#define CORE_PIN14_DDRREG GPIOD_PDDR
-#define CORE_PIN15_DDRREG GPIOC_PDDR
-#define CORE_PIN16_DDRREG GPIOB_PDDR
-#define CORE_PIN17_DDRREG GPIOB_PDDR
-#define CORE_PIN18_DDRREG GPIOB_PDDR
-#define CORE_PIN19_DDRREG GPIOB_PDDR
-#define CORE_PIN20_DDRREG GPIOD_PDDR
-#define CORE_PIN21_DDRREG GPIOD_PDDR
-#define CORE_PIN22_DDRREG GPIOC_PDDR
-#define CORE_PIN23_DDRREG GPIOC_PDDR
-#define CORE_PIN24_DDRREG GPIOE_PDDR
-#define CORE_PIN25_DDRREG GPIOA_PDDR
-#define CORE_PIN26_DDRREG GPIOA_PDDR
-#define CORE_PIN27_DDRREG GPIOA_PDDR
-#define CORE_PIN28_DDRREG GPIOA_PDDR
-#define CORE_PIN29_DDRREG GPIOB_PDDR
-#define CORE_PIN30_DDRREG GPIOB_PDDR
-#define CORE_PIN31_DDRREG GPIOB_PDDR
-#define CORE_PIN32_DDRREG GPIOB_PDDR
-#define CORE_PIN33_DDRREG GPIOE_PDDR
-#define CORE_PIN34_DDRREG GPIOE_PDDR
-#define CORE_PIN35_DDRREG GPIOC_PDDR
-#define CORE_PIN36_DDRREG GPIOC_PDDR
-#define CORE_PIN37_DDRREG GPIOC_PDDR
-#define CORE_PIN38_DDRREG GPIOC_PDDR
-#define CORE_PIN39_DDRREG GPIOA_PDDR
-#define CORE_PIN40_DDRREG GPIOA_PDDR
-#define CORE_PIN41_DDRREG GPIOA_PDDR
-#define CORE_PIN42_DDRREG GPIOA_PDDR
-#define CORE_PIN43_DDRREG GPIOB_PDDR
-#define CORE_PIN44_DDRREG GPIOB_PDDR
-#define CORE_PIN45_DDRREG GPIOB_PDDR
-#define CORE_PIN46_DDRREG GPIOB_PDDR
-#define CORE_PIN47_DDRREG GPIOD_PDDR
-#define CORE_PIN48_DDRREG GPIOD_PDDR
-#define CORE_PIN49_DDRREG GPIOB_PDDR
-#define CORE_PIN50_DDRREG GPIOB_PDDR
-#define CORE_PIN51_DDRREG GPIOD_PDDR
-#define CORE_PIN52_DDRREG GPIOD_PDDR
-#define CORE_PIN53_DDRREG GPIOD_PDDR
-#define CORE_PIN54_DDRREG GPIOD_PDDR
-#define CORE_PIN55_DDRREG GPIOD_PDDR
-#define CORE_PIN56_DDRREG GPIOE_PDDR
-#define CORE_PIN57_DDRREG GPIOE_PDDR
-#define CORE_PIN58_DDRREG GPIOE_PDDR
-#define CORE_PIN59_DDRREG GPIOE_PDDR
-#define CORE_PIN60_DDRREG GPIOE_PDDR
-#define CORE_PIN61_DDRREG GPIOE_PDDR
-#define CORE_PIN62_DDRREG GPIOE_PDDR
-#define CORE_PIN63_DDRREG GPIOE_PDDR
-
-#define CORE_PIN0_PINREG GPIOB_PDIR
-#define CORE_PIN1_PINREG GPIOB_PDIR
-#define CORE_PIN2_PINREG GPIOD_PDIR
-#define CORE_PIN3_PINREG GPIOA_PDIR
-#define CORE_PIN4_PINREG GPIOA_PDIR
-#define CORE_PIN5_PINREG GPIOD_PDIR
-#define CORE_PIN6_PINREG GPIOD_PDIR
-#define CORE_PIN7_PINREG GPIOD_PDIR
-#define CORE_PIN8_PINREG GPIOD_PDIR
-#define CORE_PIN9_PINREG GPIOC_PDIR
-#define CORE_PIN10_PINREG GPIOC_PDIR
-#define CORE_PIN11_PINREG GPIOC_PDIR
-#define CORE_PIN12_PINREG GPIOC_PDIR
-#define CORE_PIN13_PINREG GPIOC_PDIR
-#define CORE_PIN14_PINREG GPIOD_PDIR
-#define CORE_PIN15_PINREG GPIOC_PDIR
-#define CORE_PIN16_PINREG GPIOB_PDIR
-#define CORE_PIN17_PINREG GPIOB_PDIR
-#define CORE_PIN18_PINREG GPIOB_PDIR
-#define CORE_PIN19_PINREG GPIOB_PDIR
-#define CORE_PIN20_PINREG GPIOD_PDIR
-#define CORE_PIN21_PINREG GPIOD_PDIR
-#define CORE_PIN22_PINREG GPIOC_PDIR
-#define CORE_PIN23_PINREG GPIOC_PDIR
-#define CORE_PIN24_PINREG GPIOE_PDIR
-#define CORE_PIN25_PINREG GPIOA_PDIR
-#define CORE_PIN26_PINREG GPIOA_PDIR
-#define CORE_PIN27_PINREG GPIOA_PDIR
-#define CORE_PIN28_PINREG GPIOA_PDIR
-#define CORE_PIN29_PINREG GPIOB_PDIR
-#define CORE_PIN30_PINREG GPIOB_PDIR
-#define CORE_PIN31_PINREG GPIOB_PDIR
-#define CORE_PIN32_PINREG GPIOB_PDIR
-#define CORE_PIN33_PINREG GPIOE_PDIR
-#define CORE_PIN34_PINREG GPIOE_PDIR
-#define CORE_PIN35_PINREG GPIOC_PDIR
-#define CORE_PIN36_PINREG GPIOC_PDIR
-#define CORE_PIN37_PINREG GPIOC_PDIR
-#define CORE_PIN38_PINREG GPIOC_PDIR
-#define CORE_PIN39_PINREG GPIOA_PDIR
-#define CORE_PIN40_PINREG GPIOA_PDIR
-#define CORE_PIN41_PINREG GPIOA_PDIR
-#define CORE_PIN42_PINREG GPIOA_PDIR
-#define CORE_PIN43_PINREG GPIOB_PDIR
-#define CORE_PIN44_PINREG GPIOB_PDIR
-#define CORE_PIN45_PINREG GPIOB_PDIR
-#define CORE_PIN46_PINREG GPIOB_PDIR
-#define CORE_PIN47_PINREG GPIOD_PDIR
-#define CORE_PIN48_PINREG GPIOD_PDIR
-#define CORE_PIN49_PINREG GPIOB_PDIR
-#define CORE_PIN50_PINREG GPIOB_PDIR
-#define CORE_PIN51_PINREG GPIOD_PDIR
-#define CORE_PIN52_PINREG GPIOD_PDIR
-#define CORE_PIN53_PINREG GPIOD_PDIR
-#define CORE_PIN54_PINREG GPIOD_PDIR
-#define CORE_PIN55_PINREG GPIOD_PDIR
-#define CORE_PIN56_PINREG GPIOE_PDIR
-#define CORE_PIN57_PINREG GPIOE_PDIR
-#define CORE_PIN58_PINREG GPIOE_PDIR
-#define CORE_PIN59_PINREG GPIOE_PDIR
-#define CORE_PIN60_PINREG GPIOE_PDIR
-#define CORE_PIN61_PINREG GPIOE_PDIR
-#define CORE_PIN62_PINREG GPIOE_PDIR
-#define CORE_PIN63_PINREG GPIOE_PDIR
-
-#define CORE_PIN0_CONFIG PORTB_PCR16
-#define CORE_PIN1_CONFIG PORTB_PCR17
-#define CORE_PIN2_CONFIG PORTD_PCR0
-#define CORE_PIN3_CONFIG PORTA_PCR12
-#define CORE_PIN4_CONFIG PORTA_PCR13
-#define CORE_PIN5_CONFIG PORTD_PCR7
-#define CORE_PIN6_CONFIG PORTD_PCR4
-#define CORE_PIN7_CONFIG PORTD_PCR2
-#define CORE_PIN8_CONFIG PORTD_PCR3
-#define CORE_PIN9_CONFIG PORTC_PCR3
-#define CORE_PIN10_CONFIG PORTC_PCR4
-#define CORE_PIN11_CONFIG PORTC_PCR6
-#define CORE_PIN12_CONFIG PORTC_PCR7
-#define CORE_PIN13_CONFIG PORTC_PCR5
-#define CORE_PIN14_CONFIG PORTD_PCR1
-#define CORE_PIN15_CONFIG PORTC_PCR0
-#define CORE_PIN16_CONFIG PORTB_PCR0
-#define CORE_PIN17_CONFIG PORTB_PCR1
-#define CORE_PIN18_CONFIG PORTB_PCR3
-#define CORE_PIN19_CONFIG PORTB_PCR2
-#define CORE_PIN20_CONFIG PORTD_PCR5
-#define CORE_PIN21_CONFIG PORTD_PCR6
-#define CORE_PIN22_CONFIG PORTC_PCR1
-#define CORE_PIN23_CONFIG PORTC_PCR2
-#define CORE_PIN24_CONFIG PORTE_PCR26
-#define CORE_PIN25_CONFIG PORTA_PCR5
-#define CORE_PIN26_CONFIG PORTA_PCR14
-#define CORE_PIN27_CONFIG PORTA_PCR15
-#define CORE_PIN28_CONFIG PORTA_PCR16
-#define CORE_PIN29_CONFIG PORTB_PCR18
-#define CORE_PIN30_CONFIG PORTB_PCR19
-#define CORE_PIN31_CONFIG PORTB_PCR10
-#define CORE_PIN32_CONFIG PORTB_PCR11
-#define CORE_PIN33_CONFIG PORTE_PCR24
-#define CORE_PIN34_CONFIG PORTE_PCR25
-#define CORE_PIN35_CONFIG PORTC_PCR8
-#define CORE_PIN36_CONFIG PORTC_PCR9
-#define CORE_PIN37_CONFIG PORTC_PCR10
-#define CORE_PIN38_CONFIG PORTC_PCR11
-#define CORE_PIN39_CONFIG PORTA_PCR17
-#define CORE_PIN40_CONFIG PORTA_PCR28
-#define CORE_PIN41_CONFIG PORTA_PCR29
-#define CORE_PIN42_CONFIG PORTA_PCR26
-#define CORE_PIN43_CONFIG PORTB_PCR20
-#define CORE_PIN44_CONFIG PORTB_PCR22
-#define CORE_PIN45_CONFIG PORTB_PCR23
-#define CORE_PIN46_CONFIG PORTB_PCR21
-#define CORE_PIN47_CONFIG PORTD_PCR8
-#define CORE_PIN48_CONFIG PORTD_PCR9
-#define CORE_PIN49_CONFIG PORTB_PCR4
-#define CORE_PIN50_CONFIG PORTB_PCR5
-#define CORE_PIN51_CONFIG PORTD_PCR14
-#define CORE_PIN52_CONFIG PORTD_PCR13
-#define CORE_PIN53_CONFIG PORTD_PCR12
-#define CORE_PIN54_CONFIG PORTD_PCR15
-#define CORE_PIN55_CONFIG PORTD_PCR11
-#define CORE_PIN56_CONFIG PORTE_PCR10
-#define CORE_PIN57_CONFIG PORTE_PCR11
-#define CORE_PIN58_CONFIG PORTE_PCR0
-#define CORE_PIN59_CONFIG PORTE_PCR1
-#define CORE_PIN60_CONFIG PORTE_PCR2
-#define CORE_PIN61_CONFIG PORTE_PCR3
-#define CORE_PIN62_CONFIG PORTE_PCR4
-#define CORE_PIN63_CONFIG PORTE_PCR5
-
-#define CORE_ADC0_PIN 14
-#define CORE_ADC1_PIN 15
-#define CORE_ADC2_PIN 16
-#define CORE_ADC3_PIN 17
-#define CORE_ADC4_PIN 18
-#define CORE_ADC5_PIN 19
-#define CORE_ADC6_PIN 20
-#define CORE_ADC7_PIN 21
-#define CORE_ADC8_PIN 22
-#define CORE_ADC9_PIN 23
-#define CORE_ADC10_PIN 64
-#define CORE_ADC11_PIN 65
-#define CORE_ADC12_PIN 31
-#define CORE_ADC13_PIN 32
-#define CORE_ADC14_PIN 33
-#define CORE_ADC15_PIN 34
-#define CORE_ADC16_PIN 35
-#define CORE_ADC17_PIN 36
-#define CORE_ADC18_PIN 37
-#define CORE_ADC19_PIN 38
-#define CORE_ADC20_PIN 39
-#define CORE_ADC21_PIN 66
-#define CORE_ADC22_PIN 67
-#define CORE_ADC23_PIN 49
-#define CORE_ADC24_PIN 50
-#define CORE_ADC25_PIN 68
-#define CORE_ADC26_PIN 69
-
-#define CORE_RXD0_PIN 0
-#define CORE_TXD0_PIN 1
-#define CORE_RXD1_PIN 9
-#define CORE_TXD1_PIN 10
-#define CORE_RXD2_PIN 7
-#define CORE_TXD2_PIN 8
-#define CORE_RXD3_PIN 31
-#define CORE_TXD3_PIN 32
-#define CORE_RXD4_PIN 34
-#define CORE_TXD4_PIN 33
-
-#define CORE_INT0_PIN 0
-#define CORE_INT1_PIN 1
-#define CORE_INT2_PIN 2
-#define CORE_INT3_PIN 3
-#define CORE_INT4_PIN 4
-#define CORE_INT5_PIN 5
-#define CORE_INT6_PIN 6
-#define CORE_INT7_PIN 7
-#define CORE_INT8_PIN 8
-#define CORE_INT9_PIN 9
-#define CORE_INT10_PIN 10
-#define CORE_INT11_PIN 11
-#define CORE_INT12_PIN 12
-#define CORE_INT13_PIN 13
-#define CORE_INT14_PIN 14
-#define CORE_INT15_PIN 15
-#define CORE_INT16_PIN 16
-#define CORE_INT17_PIN 17
-#define CORE_INT18_PIN 18
-#define CORE_INT19_PIN 19
-#define CORE_INT20_PIN 20
-#define CORE_INT21_PIN 21
-#define CORE_INT22_PIN 22
-#define CORE_INT23_PIN 23
-#define CORE_INT24_PIN 24
-#define CORE_INT25_PIN 25
-#define CORE_INT26_PIN 26
-#define CORE_INT27_PIN 27
-#define CORE_INT28_PIN 28
-#define CORE_INT29_PIN 29
-#define CORE_INT30_PIN 30
-#define CORE_INT31_PIN 31
-#define CORE_INT32_PIN 32
-#define CORE_INT33_PIN 33
-#define CORE_INT34_PIN 34
-#define CORE_INT35_PIN 35
-#define CORE_INT36_PIN 36
-#define CORE_INT37_PIN 37
-#define CORE_INT38_PIN 38
-#define CORE_INT39_PIN 39
-#define CORE_INT40_PIN 40
-#define CORE_INT41_PIN 41
-#define CORE_INT42_PIN 42
-#define CORE_INT43_PIN 43
-#define CORE_INT44_PIN 44
-#define CORE_INT45_PIN 45
-#define CORE_INT46_PIN 46
-#define CORE_INT47_PIN 47
-#define CORE_INT48_PIN 48
-#define CORE_INT49_PIN 49
-#define CORE_INT50_PIN 50
-#define CORE_INT51_PIN 51
-#define CORE_INT52_PIN 52
-#define CORE_INT53_PIN 53
-#define CORE_INT54_PIN 54
-#define CORE_INT55_PIN 55
-#define CORE_INT56_PIN 56
-#define CORE_INT57_PIN 57
-#define CORE_INT58_PIN 58
-#define CORE_INT59_PIN 59
-#define CORE_INT60_PIN 60
-#define CORE_INT61_PIN 61
-#define CORE_INT62_PIN 62
-#define CORE_INT63_PIN 63
-#define CORE_INT_EVERY_PIN 1
-
-#endif
-
-
-#if defined(__MK20DX128__)
-#define CORE_FTM0_CH0_PIN 22
-#define CORE_FTM0_CH1_PIN 23
-#define CORE_FTM0_CH2_PIN 9
-#define CORE_FTM0_CH3_PIN 10
-#define CORE_FTM0_CH4_PIN 6
-#define CORE_FTM0_CH5_PIN 20
-#define CORE_FTM0_CH6_PIN 21
-#define CORE_FTM0_CH7_PIN 5
-#define CORE_FTM1_CH0_PIN 3
-#define CORE_FTM1_CH1_PIN 4
-#elif defined(__MK20DX256__)
-#define CORE_FTM0_CH0_PIN 22
-#define CORE_FTM0_CH1_PIN 23
-#define CORE_FTM0_CH2_PIN 9
-#define CORE_FTM0_CH3_PIN 10
-#define CORE_FTM0_CH4_PIN 6
-#define CORE_FTM0_CH5_PIN 20
-#define CORE_FTM0_CH6_PIN 21
-#define CORE_FTM0_CH7_PIN 5
-#define CORE_FTM1_CH0_PIN 3
-#define CORE_FTM1_CH1_PIN 4
-#define CORE_FTM2_CH0_PIN 32
-#define CORE_FTM2_CH1_PIN 25
-#elif defined(__MKL26Z64__)
-#define CORE_TPM0_CH0_PIN 22
-#define CORE_TPM0_CH1_PIN 23
-#define CORE_TPM0_CH2_PIN 9
-#define CORE_TPM0_CH3_PIN 10
-#define CORE_TPM0_CH4_PIN 6
-#define CORE_TPM0_CH5_PIN 20
-#define CORE_TPM1_CH0_PIN 16
-#define CORE_TPM1_CH1_PIN 17
-#define CORE_TPM2_CH0_PIN 3
-#define CORE_TPM2_CH1_PIN 4
-#elif defined(__MK64FX512__)
-#define CORE_FTM0_CH0_PIN 22
-#define CORE_FTM0_CH1_PIN 23
-#define CORE_FTM0_CH2_PIN 9
-#define CORE_FTM0_CH3_PIN 10
-#define CORE_FTM0_CH4_PIN 6
-#define CORE_FTM0_CH5_PIN 20
-#define CORE_FTM0_CH6_PIN 21
-#define CORE_FTM0_CH7_PIN 5
-#define CORE_FTM1_CH0_PIN 3
-#define CORE_FTM1_CH1_PIN 4
-#define CORE_FTM2_CH0_PIN 29
-#define CORE_FTM2_CH1_PIN 30
-#define CORE_FTM3_CH0_PIN 2
-#define CORE_FTM3_CH1_PIN 14
-#define CORE_FTM3_CH2_PIN 7
-#define CORE_FTM3_CH3_PIN 8
-#define CORE_FTM3_CH4_PIN 35
-#define CORE_FTM3_CH5_PIN 36
-#define CORE_FTM3_CH6_PIN 37
-#define CORE_FTM3_CH7_PIN 38
-#elif defined(__MK66FX1M0__)
-#define CORE_FTM0_CH0_PIN 22
-#define CORE_FTM0_CH1_PIN 23
-#define CORE_FTM0_CH2_PIN 9
-#define CORE_FTM0_CH3_PIN 10
-#define CORE_FTM0_CH4_PIN 6
-#define CORE_FTM0_CH5_PIN 20
-#define CORE_FTM0_CH6_PIN 21
-#define CORE_FTM0_CH7_PIN 5
-#define CORE_FTM1_CH0_PIN 3
-#define CORE_FTM1_CH1_PIN 4
-#define CORE_FTM2_CH0_PIN 29
-#define CORE_FTM2_CH1_PIN 30
-#define CORE_FTM3_CH0_PIN 2
-#define CORE_FTM3_CH1_PIN 14
-#define CORE_FTM3_CH2_PIN 7
-#define CORE_FTM3_CH3_PIN 8
-#define CORE_FTM3_CH4_PIN 35
-#define CORE_FTM3_CH5_PIN 36
-#define CORE_FTM3_CH6_PIN 37
-#define CORE_FTM3_CH7_PIN 38
-#define CORE_TPM1_CH0_PIN 16
-#define CORE_TPM1_CH1_PIN 17
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void digitalWrite(uint8_t pin, uint8_t val);
-// static inline void digitalWriteFast(uint8_t pin, uint8_t val) __attribute__((always_inline, unused));
-// static inline void digitalWriteFast(uint8_t pin, uint8_t val)
-// {
-// if (__builtin_constant_p(pin)) {
-// if (val) {
-// if (pin == 0) {
-// CORE_PIN0_PORTSET = CORE_PIN0_BITMASK;
-// } else if (pin == 1) {
-// CORE_PIN1_PORTSET = CORE_PIN1_BITMASK;
-// } else if (pin == 2) {
-// CORE_PIN2_PORTSET = CORE_PIN2_BITMASK;
-// } else if (pin == 3) {
-// CORE_PIN3_PORTSET = CORE_PIN3_BITMASK;
-// } else if (pin == 4) {
-// CORE_PIN4_PORTSET = CORE_PIN4_BITMASK;
-// } else if (pin == 5) {
-// CORE_PIN5_PORTSET = CORE_PIN5_BITMASK;
-// } else if (pin == 6) {
-// CORE_PIN6_PORTSET = CORE_PIN6_BITMASK;
-// } else if (pin == 7) {
-// CORE_PIN7_PORTSET = CORE_PIN7_BITMASK;
-// } else if (pin == 8) {
-// CORE_PIN8_PORTSET = CORE_PIN8_BITMASK;
-// } else if (pin == 9) {
-// CORE_PIN9_PORTSET = CORE_PIN9_BITMASK;
-// } else if (pin == 10) {
-// CORE_PIN10_PORTSET = CORE_PIN10_BITMASK;
-// } else if (pin == 11) {
-// CORE_PIN11_PORTSET = CORE_PIN11_BITMASK;
-// } else if (pin == 12) {
-// CORE_PIN12_PORTSET = CORE_PIN12_BITMASK;
-// } else if (pin == 13) {
-// CORE_PIN13_PORTSET = CORE_PIN13_BITMASK;
-// } else if (pin == 14) {
-// CORE_PIN14_PORTSET = CORE_PIN14_BITMASK;
-// } else if (pin == 15) {
-// CORE_PIN15_PORTSET = CORE_PIN15_BITMASK;
-// } else if (pin == 16) {
-// CORE_PIN16_PORTSET = CORE_PIN16_BITMASK;
-// } else if (pin == 17) {
-// CORE_PIN17_PORTSET = CORE_PIN17_BITMASK;
-// } else if (pin == 18) {
-// CORE_PIN18_PORTSET = CORE_PIN18_BITMASK;
-// } else if (pin == 19) {
-// CORE_PIN19_PORTSET = CORE_PIN19_BITMASK;
-// } else if (pin == 20) {
-// CORE_PIN20_PORTSET = CORE_PIN20_BITMASK;
-// } else if (pin == 21) {
-// CORE_PIN21_PORTSET = CORE_PIN21_BITMASK;
-// } else if (pin == 22) {
-// CORE_PIN22_PORTSET = CORE_PIN22_BITMASK;
-// } else if (pin == 23) {
-// CORE_PIN23_PORTSET = CORE_PIN23_BITMASK;
-// } else if (pin == 24) {
-// CORE_PIN24_PORTSET = CORE_PIN24_BITMASK;
-// } else if (pin == 25) {
-// CORE_PIN25_PORTSET = CORE_PIN25_BITMASK;
-// } else if (pin == 26) {
-// CORE_PIN26_PORTSET = CORE_PIN26_BITMASK;
-// }
-// #if defined(CORE_PIN27_PORTSET)
-// else if (pin == 27) {
-// CORE_PIN27_PORTSET = CORE_PIN27_BITMASK;
-// } else if (pin == 28) {
-// CORE_PIN28_PORTSET = CORE_PIN28_BITMASK;
-// } else if (pin == 29) {
-// CORE_PIN29_PORTSET = CORE_PIN29_BITMASK;
-// } else if (pin == 30) {
-// CORE_PIN30_PORTSET = CORE_PIN30_BITMASK;
-// } else if (pin == 31) {
-// CORE_PIN31_PORTSET = CORE_PIN31_BITMASK;
-// } else if (pin == 32) {
-// CORE_PIN32_PORTSET = CORE_PIN32_BITMASK;
-// } else if (pin == 33) {
-// CORE_PIN33_PORTSET = CORE_PIN33_BITMASK;
-// }
-// #endif
-// #if defined(CORE_PIN34_PORTSET)
-// else if (pin == 34) {
-// CORE_PIN34_PORTSET = CORE_PIN34_BITMASK;
-// } else if (pin == 35) {
-// CORE_PIN35_PORTSET = CORE_PIN35_BITMASK;
-// } else if (pin == 36) {
-// CORE_PIN36_PORTSET = CORE_PIN36_BITMASK;
-// } else if (pin == 37) {
-// CORE_PIN37_PORTSET = CORE_PIN37_BITMASK;
-// } else if (pin == 38) {
-// CORE_PIN38_PORTSET = CORE_PIN38_BITMASK;
-// } else if (pin == 39) {
-// CORE_PIN39_PORTSET = CORE_PIN39_BITMASK;
-// } else if (pin == 40) {
-// CORE_PIN40_PORTSET = CORE_PIN40_BITMASK;
-// } else if (pin == 41) {
-// CORE_PIN41_PORTSET = CORE_PIN41_BITMASK;
-// } else if (pin == 42) {
-// CORE_PIN42_PORTSET = CORE_PIN42_BITMASK;
-// } else if (pin == 43) {
-// CORE_PIN43_PORTSET = CORE_PIN43_BITMASK;
-// } else if (pin == 44) {
-// CORE_PIN44_PORTSET = CORE_PIN44_BITMASK;
-// } else if (pin == 45) {
-// CORE_PIN45_PORTSET = CORE_PIN45_BITMASK;
-// } else if (pin == 46) {
-// CORE_PIN46_PORTSET = CORE_PIN46_BITMASK;
-// } else if (pin == 47) {
-// CORE_PIN47_PORTSET = CORE_PIN47_BITMASK;
-// } else if (pin == 48) {
-// CORE_PIN48_PORTSET = CORE_PIN48_BITMASK;
-// } else if (pin == 49) {
-// CORE_PIN49_PORTSET = CORE_PIN49_BITMASK;
-// } else if (pin == 50) {
-// CORE_PIN50_PORTSET = CORE_PIN50_BITMASK;
-// } else if (pin == 51) {
-// CORE_PIN51_PORTSET = CORE_PIN51_BITMASK;
-// } else if (pin == 52) {
-// CORE_PIN52_PORTSET = CORE_PIN52_BITMASK;
-// } else if (pin == 53) {
-// CORE_PIN53_PORTSET = CORE_PIN53_BITMASK;
-// } else if (pin == 54) {
-// CORE_PIN54_PORTSET = CORE_PIN54_BITMASK;
-// } else if (pin == 55) {
-// CORE_PIN55_PORTSET = CORE_PIN55_BITMASK;
-// } else if (pin == 56) {
-// CORE_PIN56_PORTSET = CORE_PIN56_BITMASK;
-// } else if (pin == 57) {
-// CORE_PIN57_PORTSET = CORE_PIN57_BITMASK;
-// } else if (pin == 58) {
-// CORE_PIN58_PORTSET = CORE_PIN58_BITMASK;
-// } else if (pin == 59) {
-// CORE_PIN59_PORTSET = CORE_PIN59_BITMASK;
-// } else if (pin == 60) {
-// CORE_PIN60_PORTSET = CORE_PIN60_BITMASK;
-// } else if (pin == 61) {
-// CORE_PIN61_PORTSET = CORE_PIN61_BITMASK;
-// } else if (pin == 62) {
-// CORE_PIN62_PORTSET = CORE_PIN62_BITMASK;
-// } else if (pin == 63) {
-// CORE_PIN63_PORTSET = CORE_PIN63_BITMASK;
-// }
-// #endif
-// } else {
-// if (pin == 0) {
-// CORE_PIN0_PORTCLEAR = CORE_PIN0_BITMASK;
-// } else if (pin == 1) {
-// CORE_PIN1_PORTCLEAR = CORE_PIN1_BITMASK;
-// } else if (pin == 2) {
-// CORE_PIN2_PORTCLEAR = CORE_PIN2_BITMASK;
-// } else if (pin == 3) {
-// CORE_PIN3_PORTCLEAR = CORE_PIN3_BITMASK;
-// } else if (pin == 4) {
-// CORE_PIN4_PORTCLEAR = CORE_PIN4_BITMASK;
-// } else if (pin == 5) {
-// CORE_PIN5_PORTCLEAR = CORE_PIN5_BITMASK;
-// } else if (pin == 6) {
-// CORE_PIN6_PORTCLEAR = CORE_PIN6_BITMASK;
-// } else if (pin == 7) {
-// CORE_PIN7_PORTCLEAR = CORE_PIN7_BITMASK;
-// } else if (pin == 8) {
-// CORE_PIN8_PORTCLEAR = CORE_PIN8_BITMASK;
-// } else if (pin == 9) {
-// CORE_PIN9_PORTCLEAR = CORE_PIN9_BITMASK;
-// } else if (pin == 10) {
-// CORE_PIN10_PORTCLEAR = CORE_PIN10_BITMASK;
-// } else if (pin == 11) {
-// CORE_PIN11_PORTCLEAR = CORE_PIN11_BITMASK;
-// } else if (pin == 12) {
-// CORE_PIN12_PORTCLEAR = CORE_PIN12_BITMASK;
-// } else if (pin == 13) {
-// CORE_PIN13_PORTCLEAR = CORE_PIN13_BITMASK;
-// } else if (pin == 14) {
-// CORE_PIN14_PORTCLEAR = CORE_PIN14_BITMASK;
-// } else if (pin == 15) {
-// CORE_PIN15_PORTCLEAR = CORE_PIN15_BITMASK;
-// } else if (pin == 16) {
-// CORE_PIN16_PORTCLEAR = CORE_PIN16_BITMASK;
-// } else if (pin == 17) {
-// CORE_PIN17_PORTCLEAR = CORE_PIN17_BITMASK;
-// } else if (pin == 18) {
-// CORE_PIN18_PORTCLEAR = CORE_PIN18_BITMASK;
-// } else if (pin == 19) {
-// CORE_PIN19_PORTCLEAR = CORE_PIN19_BITMASK;
-// } else if (pin == 20) {
-// CORE_PIN20_PORTCLEAR = CORE_PIN20_BITMASK;
-// } else if (pin == 21) {
-// CORE_PIN21_PORTCLEAR = CORE_PIN21_BITMASK;
-// } else if (pin == 22) {
-// CORE_PIN22_PORTCLEAR = CORE_PIN22_BITMASK;
-// } else if (pin == 23) {
-// CORE_PIN23_PORTCLEAR = CORE_PIN23_BITMASK;
-// } else if (pin == 24) {
-// CORE_PIN24_PORTCLEAR = CORE_PIN24_BITMASK;
-// } else if (pin == 25) {
-// CORE_PIN25_PORTCLEAR = CORE_PIN25_BITMASK;
-// } else if (pin == 26) {
-// CORE_PIN26_PORTCLEAR = CORE_PIN26_BITMASK;
-// }
-// #if defined(CORE_PIN27_PORTCLEAR)
-// else if (pin == 27) {
-// CORE_PIN27_PORTCLEAR = CORE_PIN27_BITMASK;
-// } else if (pin == 28) {
-// CORE_PIN28_PORTCLEAR = CORE_PIN28_BITMASK;
-// } else if (pin == 29) {
-// CORE_PIN29_PORTCLEAR = CORE_PIN29_BITMASK;
-// } else if (pin == 30) {
-// CORE_PIN30_PORTCLEAR = CORE_PIN30_BITMASK;
-// } else if (pin == 31) {
-// CORE_PIN31_PORTCLEAR = CORE_PIN31_BITMASK;
-// } else if (pin == 32) {
-// CORE_PIN32_PORTCLEAR = CORE_PIN32_BITMASK;
-// } else if (pin == 33) {
-// CORE_PIN33_PORTCLEAR = CORE_PIN33_BITMASK;
-// }
-// #endif
-// #if defined(CORE_PIN34_PORTCLEAR)
-// else if (pin == 34) {
-// CORE_PIN34_PORTCLEAR = CORE_PIN34_BITMASK;
-// } else if (pin == 35) {
-// CORE_PIN35_PORTCLEAR = CORE_PIN35_BITMASK;
-// } else if (pin == 36) {
-// CORE_PIN36_PORTCLEAR = CORE_PIN36_BITMASK;
-// } else if (pin == 37) {
-// CORE_PIN37_PORTCLEAR = CORE_PIN37_BITMASK;
-// } else if (pin == 38) {
-// CORE_PIN38_PORTCLEAR = CORE_PIN38_BITMASK;
-// } else if (pin == 39) {
-// CORE_PIN39_PORTCLEAR = CORE_PIN39_BITMASK;
-// } else if (pin == 40) {
-// CORE_PIN40_PORTCLEAR = CORE_PIN40_BITMASK;
-// } else if (pin == 41) {
-// CORE_PIN41_PORTCLEAR = CORE_PIN41_BITMASK;
-// } else if (pin == 42) {
-// CORE_PIN42_PORTCLEAR = CORE_PIN42_BITMASK;
-// } else if (pin == 43) {
-// CORE_PIN43_PORTCLEAR = CORE_PIN43_BITMASK;
-// } else if (pin == 44) {
-// CORE_PIN44_PORTCLEAR = CORE_PIN44_BITMASK;
-// } else if (pin == 45) {
-// CORE_PIN45_PORTCLEAR = CORE_PIN45_BITMASK;
-// } else if (pin == 46) {
-// CORE_PIN46_PORTCLEAR = CORE_PIN46_BITMASK;
-// } else if (pin == 47) {
-// CORE_PIN47_PORTCLEAR = CORE_PIN47_BITMASK;
-// } else if (pin == 48) {
-// CORE_PIN48_PORTCLEAR = CORE_PIN48_BITMASK;
-// } else if (pin == 49) {
-// CORE_PIN49_PORTCLEAR = CORE_PIN49_BITMASK;
-// } else if (pin == 50) {
-// CORE_PIN50_PORTCLEAR = CORE_PIN50_BITMASK;
-// } else if (pin == 51) {
-// CORE_PIN51_PORTCLEAR = CORE_PIN51_BITMASK;
-// } else if (pin == 52) {
-// CORE_PIN52_PORTCLEAR = CORE_PIN52_BITMASK;
-// } else if (pin == 53) {
-// CORE_PIN53_PORTCLEAR = CORE_PIN53_BITMASK;
-// } else if (pin == 54) {
-// CORE_PIN54_PORTCLEAR = CORE_PIN54_BITMASK;
-// } else if (pin == 55) {
-// CORE_PIN55_PORTCLEAR = CORE_PIN55_BITMASK;
-// } else if (pin == 56) {
-// CORE_PIN56_PORTCLEAR = CORE_PIN56_BITMASK;
-// } else if (pin == 57) {
-// CORE_PIN57_PORTCLEAR = CORE_PIN57_BITMASK;
-// } else if (pin == 58) {
-// CORE_PIN58_PORTCLEAR = CORE_PIN58_BITMASK;
-// } else if (pin == 59) {
-// CORE_PIN59_PORTCLEAR = CORE_PIN59_BITMASK;
-// } else if (pin == 60) {
-// CORE_PIN60_PORTCLEAR = CORE_PIN60_BITMASK;
-// } else if (pin == 61) {
-// CORE_PIN61_PORTCLEAR = CORE_PIN61_BITMASK;
-// } else if (pin == 62) {
-// CORE_PIN62_PORTCLEAR = CORE_PIN62_BITMASK;
-// } else if (pin == 63) {
-// CORE_PIN63_PORTCLEAR = CORE_PIN63_BITMASK;
-// }
-// #endif
-// }
-// } else {
-// if (val) {
-// *portSetRegister(pin) = digitalPinToBitMask(pin);
-// } else {
-// *portClearRegister(pin) = digitalPinToBitMask(pin);
-// }
-// }
-// }
-
-uint8_t digitalRead(uint8_t pin);
-// static inline uint8_t digitalReadFast(uint8_t pin) __attribute__((always_inline, unused));
-// static inline uint8_t digitalReadFast(uint8_t pin)
-// {
-// if (__builtin_constant_p(pin)) {
-// if (pin == 0) {
-// return (CORE_PIN0_PINREG & CORE_PIN0_BITMASK) ? 1 : 0;
-// } else if (pin == 1) {
-// return (CORE_PIN1_PINREG & CORE_PIN1_BITMASK) ? 1 : 0;
-// } else if (pin == 2) {
-// return (CORE_PIN2_PINREG & CORE_PIN2_BITMASK) ? 1 : 0;
-// } else if (pin == 3) {
-// return (CORE_PIN3_PINREG & CORE_PIN3_BITMASK) ? 1 : 0;
-// } else if (pin == 4) {
-// return (CORE_PIN4_PINREG & CORE_PIN4_BITMASK) ? 1 : 0;
-// } else if (pin == 5) {
-// return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0;
-// } else if (pin == 6) {
-// return (CORE_PIN6_PINREG & CORE_PIN6_BITMASK) ? 1 : 0;
-// } else if (pin == 7) {
-// return (CORE_PIN7_PINREG & CORE_PIN7_BITMASK) ? 1 : 0;
-// } else if (pin == 8) {
-// return (CORE_PIN8_PINREG & CORE_PIN8_BITMASK) ? 1 : 0;
-// } else if (pin == 9) {
-// return (CORE_PIN9_PINREG & CORE_PIN9_BITMASK) ? 1 : 0;
-// } else if (pin == 10) {
-// return (CORE_PIN10_PINREG & CORE_PIN10_BITMASK) ? 1 : 0;
-// } else if (pin == 11) {
-// return (CORE_PIN11_PINREG & CORE_PIN11_BITMASK) ? 1 : 0;
-// } else if (pin == 12) {
-// return (CORE_PIN12_PINREG & CORE_PIN12_BITMASK) ? 1 : 0;
-// } else if (pin == 13) {
-// return (CORE_PIN13_PINREG & CORE_PIN13_BITMASK) ? 1 : 0;
-// } else if (pin == 14) {
-// return (CORE_PIN14_PINREG & CORE_PIN14_BITMASK) ? 1 : 0;
-// } else if (pin == 15) {
-// return (CORE_PIN15_PINREG & CORE_PIN15_BITMASK) ? 1 : 0;
-// } else if (pin == 16) {
-// return (CORE_PIN16_PINREG & CORE_PIN16_BITMASK) ? 1 : 0;
-// } else if (pin == 17) {
-// return (CORE_PIN17_PINREG & CORE_PIN17_BITMASK) ? 1 : 0;
-// } else if (pin == 18) {
-// return (CORE_PIN18_PINREG & CORE_PIN18_BITMASK) ? 1 : 0;
-// } else if (pin == 19) {
-// return (CORE_PIN19_PINREG & CORE_PIN19_BITMASK) ? 1 : 0;
-// } else if (pin == 20) {
-// return (CORE_PIN20_PINREG & CORE_PIN20_BITMASK) ? 1 : 0;
-// } else if (pin == 21) {
-// return (CORE_PIN21_PINREG & CORE_PIN21_BITMASK) ? 1 : 0;
-// } else if (pin == 22) {
-// return (CORE_PIN22_PINREG & CORE_PIN22_BITMASK) ? 1 : 0;
-// } else if (pin == 23) {
-// return (CORE_PIN23_PINREG & CORE_PIN23_BITMASK) ? 1 : 0;
-// } else if (pin == 24) {
-// return (CORE_PIN24_PINREG & CORE_PIN24_BITMASK) ? 1 : 0;
-// } else if (pin == 25) {
-// return (CORE_PIN25_PINREG & CORE_PIN25_BITMASK) ? 1 : 0;
-// } else if (pin == 26) {
-// return (CORE_PIN26_PINREG & CORE_PIN26_BITMASK) ? 1 : 0;
-// }
-// #if defined(CORE_PIN27_PINREG)
-// else if (pin == 27) {
-// return (CORE_PIN27_PINREG & CORE_PIN27_BITMASK) ? 1 : 0;
-// } else if (pin == 28) {
-// return (CORE_PIN28_PINREG & CORE_PIN28_BITMASK) ? 1 : 0;
-// } else if (pin == 29) {
-// return (CORE_PIN29_PINREG & CORE_PIN29_BITMASK) ? 1 : 0;
-// } else if (pin == 30) {
-// return (CORE_PIN30_PINREG & CORE_PIN30_BITMASK) ? 1 : 0;
-// } else if (pin == 31) {
-// return (CORE_PIN31_PINREG & CORE_PIN31_BITMASK) ? 1 : 0;
-// } else if (pin == 32) {
-// return (CORE_PIN32_PINREG & CORE_PIN32_BITMASK) ? 1 : 0;
-// } else if (pin == 33) {
-// return (CORE_PIN33_PINREG & CORE_PIN33_BITMASK) ? 1 : 0;
-// }
-// #endif
-// #if defined(CORE_PIN34_PINREG)
-// else if (pin == 34) {
-// return (CORE_PIN34_PINREG & CORE_PIN34_BITMASK) ? 1 : 0;
-// } else if (pin == 35) {
-// return (CORE_PIN35_PINREG & CORE_PIN35_BITMASK) ? 1 : 0;
-// } else if (pin == 36) {
-// return (CORE_PIN36_PINREG & CORE_PIN36_BITMASK) ? 1 : 0;
-// } else if (pin == 37) {
-// return (CORE_PIN37_PINREG & CORE_PIN37_BITMASK) ? 1 : 0;
-// } else if (pin == 38) {
-// return (CORE_PIN38_PINREG & CORE_PIN38_BITMASK) ? 1 : 0;
-// } else if (pin == 39) {
-// return (CORE_PIN39_PINREG & CORE_PIN39_BITMASK) ? 1 : 0;
-// } else if (pin == 40) {
-// return (CORE_PIN40_PINREG & CORE_PIN40_BITMASK) ? 1 : 0;
-// } else if (pin == 41) {
-// return (CORE_PIN41_PINREG & CORE_PIN41_BITMASK) ? 1 : 0;
-// } else if (pin == 42) {
-// return (CORE_PIN42_PINREG & CORE_PIN42_BITMASK) ? 1 : 0;
-// } else if (pin == 43) {
-// return (CORE_PIN43_PINREG & CORE_PIN43_BITMASK) ? 1 : 0;
-// } else if (pin == 44) {
-// return (CORE_PIN44_PINREG & CORE_PIN44_BITMASK) ? 1 : 0;
-// } else if (pin == 45) {
-// return (CORE_PIN45_PINREG & CORE_PIN45_BITMASK) ? 1 : 0;
-// } else if (pin == 46) {
-// return (CORE_PIN46_PINREG & CORE_PIN46_BITMASK) ? 1 : 0;
-// } else if (pin == 47) {
-// return (CORE_PIN47_PINREG & CORE_PIN47_BITMASK) ? 1 : 0;
-// } else if (pin == 48) {
-// return (CORE_PIN48_PINREG & CORE_PIN48_BITMASK) ? 1 : 0;
-// } else if (pin == 49) {
-// return (CORE_PIN49_PINREG & CORE_PIN49_BITMASK) ? 1 : 0;
-// } else if (pin == 50) {
-// return (CORE_PIN50_PINREG & CORE_PIN50_BITMASK) ? 1 : 0;
-// } else if (pin == 51) {
-// return (CORE_PIN51_PINREG & CORE_PIN51_BITMASK) ? 1 : 0;
-// } else if (pin == 52) {
-// return (CORE_PIN52_PINREG & CORE_PIN52_BITMASK) ? 1 : 0;
-// } else if (pin == 53) {
-// return (CORE_PIN53_PINREG & CORE_PIN53_BITMASK) ? 1 : 0;
-// } else if (pin == 54) {
-// return (CORE_PIN54_PINREG & CORE_PIN54_BITMASK) ? 1 : 0;
-// } else if (pin == 55) {
-// return (CORE_PIN55_PINREG & CORE_PIN55_BITMASK) ? 1 : 0;
-// } else if (pin == 56) {
-// return (CORE_PIN56_PINREG & CORE_PIN56_BITMASK) ? 1 : 0;
-// } else if (pin == 57) {
-// return (CORE_PIN57_PINREG & CORE_PIN57_BITMASK) ? 1 : 0;
-// } else if (pin == 58) {
-// return (CORE_PIN58_PINREG & CORE_PIN58_BITMASK) ? 1 : 0;
-// } else if (pin == 59) {
-// return (CORE_PIN59_PINREG & CORE_PIN59_BITMASK) ? 1 : 0;
-// } else if (pin == 60) {
-// return (CORE_PIN60_PINREG & CORE_PIN60_BITMASK) ? 1 : 0;
-// } else if (pin == 61) {
-// return (CORE_PIN61_PINREG & CORE_PIN61_BITMASK) ? 1 : 0;
-// } else if (pin == 62) {
-// return (CORE_PIN62_PINREG & CORE_PIN62_BITMASK) ? 1 : 0;
-// } else if (pin == 63) {
-// return (CORE_PIN63_PINREG & CORE_PIN63_BITMASK) ? 1 : 0;
-// }
-// #endif
-// else {
-// return 0;
-// }
-// } else {
-// #if defined(KINETISK)
-// return *portInputRegister(pin);
-// #else
-// return (*portInputRegister(pin) & digitalPinToBitMask(pin)) ? 1 : 0;
-// #endif
-// }
-// }
-
-
-void pinMode(uint8_t pin, uint8_t mode);
-void init_pins(void);
-void analogWrite(uint8_t pin, int val);
-
-uint32_t analogWriteRes(uint32_t bits);
-static inline uint32_t analogWriteResolution(uint32_t bits) { return analogWriteRes(bits); }
-void analogWriteFrequency(uint8_t pin, float frequency);
-// void analogWriteDAC0(int val);
-// void analogWriteDAC1(int val);
-// #ifdef __cplusplus
-// void attachInterruptVector(IRQ_NUMBER_t irq, void (*function)(void));
-// #else
-// void attachInterruptVector(enum IRQ_NUMBER_t irq, void (*function)(void));
-// #endif
-// void attachInterrupt(uint8_t pin, void (*function)(void), int mode);
-// void detachInterrupt(uint8_t pin);
-// void _init_Teensyduino_internal_(void);
-
-int analogRead(uint8_t pin);
-void analogReference(uint8_t type);
-void analogReadRes(unsigned int bits);
-static inline void analogReadResolution(unsigned int bits) { analogReadRes(bits); }
-void analogReadAveraging(unsigned int num);
-void analog_init(void);
-
-
-#if defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__)
-#define DEFAULT 0
-#define INTERNAL 2
-#define INTERNAL1V2 2
-#define INTERNAL1V1 2
-#define EXTERNAL 0
-
-#elif defined(__MKL26Z64__)
-#define DEFAULT 0
-#define INTERNAL 0
-#define EXTERNAL 1
-#endif
-
-
-int touchRead(uint8_t pin);
-
-
-// static inline void shiftOut(uint8_t, uint8_t, uint8_t, uint8_t) __attribute__((always_inline, unused));
-extern void _shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t value) __attribute__((noinline));
-extern void shiftOut_lsbFirst(uint8_t dataPin, uint8_t clockPin, uint8_t value) __attribute__((noinline));
-extern void shiftOut_msbFirst(uint8_t dataPin, uint8_t clockPin, uint8_t value) __attribute__((noinline));
-
-// static inline void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t value)
-// {
-// if (__builtin_constant_p(bitOrder)) {
-// if (bitOrder == LSBFIRST) {
-// shiftOut_lsbFirst(dataPin, clockPin, value);
-// } else {
-// shiftOut_msbFirst(dataPin, clockPin, value);
-// }
-// } else {
-// _shiftOut(dataPin, clockPin, bitOrder, value);
-// }
-// }
-
-static inline uint8_t shiftIn(uint8_t, uint8_t, uint8_t) __attribute__((always_inline, unused));
-extern uint8_t _shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) __attribute__((noinline));
-extern uint8_t shiftIn_lsbFirst(uint8_t dataPin, uint8_t clockPin) __attribute__((noinline));
-extern uint8_t shiftIn_msbFirst(uint8_t dataPin, uint8_t clockPin) __attribute__((noinline));
-
-static inline uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
-{
- if (__builtin_constant_p(bitOrder)) {
- if (bitOrder == LSBFIRST) {
- return shiftIn_lsbFirst(dataPin, clockPin);
- } else {
- return shiftIn_msbFirst(dataPin, clockPin);
- }
- } else {
- return _shiftIn(dataPin, clockPin, bitOrder);
- }
-}
-
-void _reboot_Teensyduino_(void);
-void _restart_Teensyduino_(void);
-
-void yield(void);
-
-void delay(uint32_t msec);
-
-// extern volatile uint32_t systick_millis_count;
-
-// static inline uint32_t millis(void) __attribute__((always_inline, unused));
-// static inline uint32_t millis(void)
-// {
-// // Reading a volatile variable to another volatile
-// // seems redundant, but isn't for some cases.
-// // Eventually this should probably be replaced by a
-// // proper memory barrier or other technique. Please
-// // do not remove this "redundant" code without
-// // carefully verifying the case mentioned here:
-// //
-// // https://forum.pjrc.com/threads/17469-millis%28%29-on-teensy-3?p=104924&viewfull=1#post104924
-// //
-// volatile uint32_t ret = systick_millis_count; // single aligned 32 bit is atomic
-// return ret;
-// }
-
-// uint32_t micros(void);
-/*
-static inline void delayMicroseconds(uint32_t) __attribute__((always_inline, unused));
-static inline void delayMicroseconds(uint32_t usec)
-{
-#if F_CPU == 256000000
- uint32_t n = usec * 85;
-#elif F_CPU == 240000000
- uint32_t n = usec * 80;
-#elif F_CPU == 216000000
- uint32_t n = usec * 72;
-#elif F_CPU == 192000000
- uint32_t n = usec * 64;
-#elif F_CPU == 180000000
- uint32_t n = usec * 60;
-#elif F_CPU == 168000000
- uint32_t n = usec * 56;
-#elif F_CPU == 144000000
- uint32_t n = usec * 48;
-#elif F_CPU == 120000000
- uint32_t n = usec * 40;
-#elif F_CPU == 96000000
- uint32_t n = usec << 5;
-#elif F_CPU == 72000000
- uint32_t n = usec * 24;
-#elif F_CPU == 48000000
- uint32_t n = usec << 4;
-#elif F_CPU == 24000000
- uint32_t n = usec << 3;
-#elif F_CPU == 16000000
- uint32_t n = usec << 2;
-#elif F_CPU == 8000000
- uint32_t n = usec << 1;
-#elif F_CPU == 4000000
- uint32_t n = usec;
-#elif F_CPU == 2000000
- uint32_t n = usec >> 1;
-#endif
- // changed because a delay of 1 micro Sec @ 2MHz will be 0
- if (n == 0) return;
- __asm__ volatile(
- "L_%=_delayMicroseconds:" "\n\t"
-#if F_CPU < 24000000
- "nop" "\n\t"
-#endif
-#ifdef KINETISL
- "sub %0, #1" "\n\t"
- "bne L_%=_delayMicroseconds" "\n"
- : "+l" (n) :
-#else
- "subs %0, #1" "\n\t"
- "bne L_%=_delayMicroseconds" "\n"
- : "+r" (n) :
-#endif
- );
-}
-*/
-#ifdef __cplusplus
-}
-#endif
-
-
-
-
-
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-unsigned long rtc_get(void);
-void rtc_set(unsigned long t);
-void rtc_compensate(int adjust);
-#ifdef __cplusplus
-}
-class teensy3_clock_class
-{
-public:
- static unsigned long get(void) __attribute__((always_inline)) { return rtc_get(); }
- static void set(unsigned long t) __attribute__((always_inline)) { rtc_set(t); }
- static void compensate(int adj) __attribute__((always_inline)) { rtc_compensate(adj); }
-};
-extern teensy3_clock_class Teensy3Clock;
-#endif
-
-
-
-
-#endif
+/* Teensyduino Core Library
+ * http://www.pjrc.com/teensy/
+ * Copyright (c) 2017 PJRC.COM, LLC.
+ *
+ * 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:
+ *
+ * 1. The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 2. If the Software is incorporated into a build system that allows
+ * selection among a list of target devices, then similar target
+ * devices manufactured by PJRC.COM must be included in the list of
+ * target devices and selectable in the same manner.
+ *
+ * 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.
+ */
+
+#ifndef _core_pins_h_
+#define _core_pins_h_
+
+// #include "kinetis.h"
+#include "pins_arduino.h"
+
+#define HIGH 1
+#define LOW 0
+#define INPUT 0
+#define OUTPUT 1
+#define INPUT_PULLUP 2
+#define INPUT_PULLDOWN 3
+#define OUTPUT_OPENDRAIN 4
+#define INPUT_DISABLE 5
+#define LSBFIRST 0
+#define MSBFIRST 1
+
+#ifndef _BV
+#define _BV(n) (1<<(n))
+#endif
+
+#define CHANGE 4
+#define FALLING 2
+#define RISING 3
+
+// Pin Arduino
+// 0 B16 RXD
+// 1 B17 TXD
+// 2 D0
+// 3 A12 FTM1_CH0
+// 4 A13 FTM1_CH1
+// 5 D7 FTM0_CH7 OC0B/T1
+// 6 D4 FTM0_CH4 OC0A
+// 7 D2
+// 8 D3 ICP1
+// 9 C3 FTM0_CH2 OC1A
+// 10 C4 FTM0_CH3 SS/OC1B
+// 11 C6 MOSI/OC2A
+// 12 C7 MISO
+// 13 C5 SCK
+// 14 D1
+// 15 C0
+// 16 B0 (FTM1_CH0)
+// 17 B1 (FTM1_CH1)
+// 18 B3 SDA
+// 19 B2 SCL
+// 20 D5 FTM0_CH5
+// 21 D6 FTM0_CH6
+// 22 C1 FTM0_CH0
+// 23 C2 FTM0_CH1
+// 24 A5 (FTM0_CH2)
+// 25 B19
+// 26 E1
+// 27 C9
+// 28 C8
+// 29 C10
+// 30 C11
+// 31 E0
+// 32 B18
+// 33 A4 (FTM0_CH1)
+// (34) analog only
+// (35) analog only
+// (36) analog only
+// (37) analog only
+
+// not available to user:
+// A0 FTM0_CH5 SWD Clock
+// A1 FTM0_CH6 USB ID
+// A2 FTM0_CH7 SWD Trace
+// A3 FTM0_CH0 SWD Data
+
+#if defined(__MK20DX128__)
+#define CORE_NUM_TOTAL_PINS 34
+#define CORE_NUM_DIGITAL 34
+#define CORE_NUM_INTERRUPT 34
+#define CORE_NUM_ANALOG 14
+#define CORE_NUM_PWM 10
+#elif defined(__MK20DX256__)
+#define CORE_NUM_TOTAL_PINS 34
+#define CORE_NUM_DIGITAL 34
+#define CORE_NUM_INTERRUPT 34
+#define CORE_NUM_ANALOG 21
+#define CORE_NUM_PWM 12
+#elif defined(__MKL26Z64__)
+#define CORE_NUM_TOTAL_PINS 27
+#define CORE_NUM_DIGITAL 27
+#define CORE_NUM_INTERRUPT 24 // really only 18, but 6 "holes"
+#define CORE_NUM_ANALOG 13
+#define CORE_NUM_PWM 10
+#elif defined(__MK64FX512__)
+#define CORE_NUM_TOTAL_PINS 64
+#define CORE_NUM_DIGITAL 64
+#define CORE_NUM_INTERRUPT 64
+#define CORE_NUM_ANALOG 27
+#define CORE_NUM_PWM 20
+#elif defined(__MK66FX1M0__)
+#define CORE_NUM_TOTAL_PINS 64
+#define CORE_NUM_DIGITAL 64
+#define CORE_NUM_INTERRUPT 64
+#define CORE_NUM_ANALOG 25
+#define CORE_NUM_PWM 22
+#endif
+
+// These MAX_PIN_PORTx values have the highest Kinetis pin index
+// that is used for a given port.
+#if defined(__MK20DX128__) || defined(__MK20DX256__)
+#define CORE_MAX_PIN_PORTA 13
+#define CORE_MAX_PIN_PORTB 19
+#define CORE_MAX_PIN_PORTC 11
+#define CORE_MAX_PIN_PORTD 7
+#define CORE_MAX_PIN_PORTE 1
+#elif defined(__MKL26Z64__)
+#define CORE_MAX_PIN_PORTA 2
+#define CORE_MAX_PIN_PORTB 17
+#define CORE_MAX_PIN_PORTC 7
+#define CORE_MAX_PIN_PORTD 7
+#define CORE_MAX_PIN_PORTE 30
+#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
+#define CORE_MAX_PIN_PORTA 29
+#define CORE_MAX_PIN_PORTB 23
+#define CORE_MAX_PIN_PORTC 11
+#define CORE_MAX_PIN_PORTD 15
+#define CORE_MAX_PIN_PORTE 26
+#endif
+
+
+#if defined(__MK20DX128__) || defined(__MK20DX256__)
+
+#define CORE_PIN0_BIT 16
+#define CORE_PIN1_BIT 17
+#define CORE_PIN2_BIT 0
+#define CORE_PIN3_BIT 12
+#define CORE_PIN4_BIT 13
+#define CORE_PIN5_BIT 7
+#define CORE_PIN6_BIT 4
+#define CORE_PIN7_BIT 2
+#define CORE_PIN8_BIT 3
+#define CORE_PIN9_BIT 3
+#define CORE_PIN10_BIT 4
+#define CORE_PIN11_BIT 6
+#define CORE_PIN12_BIT 7
+#define CORE_PIN13_BIT 5
+#define CORE_PIN14_BIT 1
+#define CORE_PIN15_BIT 0
+#define CORE_PIN16_BIT 0
+#define CORE_PIN17_BIT 1
+#define CORE_PIN18_BIT 3
+#define CORE_PIN19_BIT 2
+#define CORE_PIN20_BIT 5
+#define CORE_PIN21_BIT 6
+#define CORE_PIN22_BIT 1
+#define CORE_PIN23_BIT 2
+#define CORE_PIN24_BIT 5
+#define CORE_PIN25_BIT 19
+#define CORE_PIN26_BIT 1
+#define CORE_PIN27_BIT 9
+#define CORE_PIN28_BIT 8
+#define CORE_PIN29_BIT 10
+#define CORE_PIN30_BIT 11
+#define CORE_PIN31_BIT 0
+#define CORE_PIN32_BIT 18
+#define CORE_PIN33_BIT 4
+
+#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
+#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
+#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
+#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
+#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
+#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
+#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
+#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
+#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
+#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
+#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
+#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
+#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
+#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
+#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
+#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
+#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
+#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
+#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
+#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
+#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
+#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
+#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
+#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
+#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
+#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
+#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
+#define CORE_PIN27_BITMASK (1<<(CORE_PIN27_BIT))
+#define CORE_PIN28_BITMASK (1<<(CORE_PIN28_BIT))
+#define CORE_PIN29_BITMASK (1<<(CORE_PIN29_BIT))
+#define CORE_PIN30_BITMASK (1<<(CORE_PIN30_BIT))
+#define CORE_PIN31_BITMASK (1<<(CORE_PIN31_BIT))
+#define CORE_PIN32_BITMASK (1<<(CORE_PIN32_BIT))
+#define CORE_PIN33_BITMASK (1<<(CORE_PIN33_BIT))
+
+#define CORE_PIN0_PORTREG GPIOB_PDOR
+#define CORE_PIN1_PORTREG GPIOB_PDOR
+#define CORE_PIN2_PORTREG GPIOD_PDOR
+#define CORE_PIN3_PORTREG GPIOA_PDOR
+#define CORE_PIN4_PORTREG GPIOA_PDOR
+#define CORE_PIN5_PORTREG GPIOD_PDOR
+#define CORE_PIN6_PORTREG GPIOD_PDOR
+#define CORE_PIN7_PORTREG GPIOD_PDOR
+#define CORE_PIN8_PORTREG GPIOD_PDOR
+#define CORE_PIN9_PORTREG GPIOC_PDOR
+#define CORE_PIN10_PORTREG GPIOC_PDOR
+#define CORE_PIN11_PORTREG GPIOC_PDOR
+#define CORE_PIN12_PORTREG GPIOC_PDOR
+#define CORE_PIN13_PORTREG GPIOC_PDOR
+#define CORE_PIN14_PORTREG GPIOD_PDOR
+#define CORE_PIN15_PORTREG GPIOC_PDOR
+#define CORE_PIN16_PORTREG GPIOB_PDOR
+#define CORE_PIN17_PORTREG GPIOB_PDOR
+#define CORE_PIN18_PORTREG GPIOB_PDOR
+#define CORE_PIN19_PORTREG GPIOB_PDOR
+#define CORE_PIN20_PORTREG GPIOD_PDOR
+#define CORE_PIN21_PORTREG GPIOD_PDOR
+#define CORE_PIN22_PORTREG GPIOC_PDOR
+#define CORE_PIN23_PORTREG GPIOC_PDOR
+#define CORE_PIN24_PORTREG GPIOA_PDOR
+#define CORE_PIN25_PORTREG GPIOB_PDOR
+#define CORE_PIN26_PORTREG GPIOE_PDOR
+#define CORE_PIN27_PORTREG GPIOC_PDOR
+#define CORE_PIN28_PORTREG GPIOC_PDOR
+#define CORE_PIN29_PORTREG GPIOC_PDOR
+#define CORE_PIN30_PORTREG GPIOC_PDOR
+#define CORE_PIN31_PORTREG GPIOE_PDOR
+#define CORE_PIN32_PORTREG GPIOB_PDOR
+#define CORE_PIN33_PORTREG GPIOA_PDOR
+
+#define CORE_PIN0_PORTSET GPIOB_PSOR
+#define CORE_PIN1_PORTSET GPIOB_PSOR
+#define CORE_PIN2_PORTSET GPIOD_PSOR
+#define CORE_PIN3_PORTSET GPIOA_PSOR
+#define CORE_PIN4_PORTSET GPIOA_PSOR
+#define CORE_PIN5_PORTSET GPIOD_PSOR
+#define CORE_PIN6_PORTSET GPIOD_PSOR
+#define CORE_PIN7_PORTSET GPIOD_PSOR
+#define CORE_PIN8_PORTSET GPIOD_PSOR
+#define CORE_PIN9_PORTSET GPIOC_PSOR
+#define CORE_PIN10_PORTSET GPIOC_PSOR
+#define CORE_PIN11_PORTSET GPIOC_PSOR
+#define CORE_PIN12_PORTSET GPIOC_PSOR
+#define CORE_PIN13_PORTSET GPIOC_PSOR
+#define CORE_PIN14_PORTSET GPIOD_PSOR
+#define CORE_PIN15_PORTSET GPIOC_PSOR
+#define CORE_PIN16_PORTSET GPIOB_PSOR
+#define CORE_PIN17_PORTSET GPIOB_PSOR
+#define CORE_PIN18_PORTSET GPIOB_PSOR
+#define CORE_PIN19_PORTSET GPIOB_PSOR
+#define CORE_PIN20_PORTSET GPIOD_PSOR
+#define CORE_PIN21_PORTSET GPIOD_PSOR
+#define CORE_PIN22_PORTSET GPIOC_PSOR
+#define CORE_PIN23_PORTSET GPIOC_PSOR
+#define CORE_PIN24_PORTSET GPIOA_PSOR
+#define CORE_PIN25_PORTSET GPIOB_PSOR
+#define CORE_PIN26_PORTSET GPIOE_PSOR
+#define CORE_PIN27_PORTSET GPIOC_PSOR
+#define CORE_PIN28_PORTSET GPIOC_PSOR
+#define CORE_PIN29_PORTSET GPIOC_PSOR
+#define CORE_PIN30_PORTSET GPIOC_PSOR
+#define CORE_PIN31_PORTSET GPIOE_PSOR
+#define CORE_PIN32_PORTSET GPIOB_PSOR
+#define CORE_PIN33_PORTSET GPIOA_PSOR
+
+#define CORE_PIN0_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN1_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN2_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN3_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN4_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN5_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN6_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN7_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN8_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN9_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN10_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN11_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN12_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN13_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN14_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN15_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN16_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN17_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN18_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN19_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN20_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN21_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN22_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN23_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN24_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN25_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN26_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN27_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN28_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN29_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN30_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN31_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN32_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN33_PORTCLEAR GPIOA_PCOR
+
+#define CORE_PIN0_DDRREG GPIOB_PDDR
+#define CORE_PIN1_DDRREG GPIOB_PDDR
+#define CORE_PIN2_DDRREG GPIOD_PDDR
+#define CORE_PIN3_DDRREG GPIOA_PDDR
+#define CORE_PIN4_DDRREG GPIOA_PDDR
+#define CORE_PIN5_DDRREG GPIOD_PDDR
+#define CORE_PIN6_DDRREG GPIOD_PDDR
+#define CORE_PIN7_DDRREG GPIOD_PDDR
+#define CORE_PIN8_DDRREG GPIOD_PDDR
+#define CORE_PIN9_DDRREG GPIOC_PDDR
+#define CORE_PIN10_DDRREG GPIOC_PDDR
+#define CORE_PIN11_DDRREG GPIOC_PDDR
+#define CORE_PIN12_DDRREG GPIOC_PDDR
+#define CORE_PIN13_DDRREG GPIOC_PDDR
+#define CORE_PIN14_DDRREG GPIOD_PDDR
+#define CORE_PIN15_DDRREG GPIOC_PDDR
+#define CORE_PIN16_DDRREG GPIOB_PDDR
+#define CORE_PIN17_DDRREG GPIOB_PDDR
+#define CORE_PIN18_DDRREG GPIOB_PDDR
+#define CORE_PIN19_DDRREG GPIOB_PDDR
+#define CORE_PIN20_DDRREG GPIOD_PDDR
+#define CORE_PIN21_DDRREG GPIOD_PDDR
+#define CORE_PIN22_DDRREG GPIOC_PDDR
+#define CORE_PIN23_DDRREG GPIOC_PDDR
+#define CORE_PIN24_DDRREG GPIOA_PDDR
+#define CORE_PIN25_DDRREG GPIOB_PDDR
+#define CORE_PIN26_DDRREG GPIOE_PDDR
+#define CORE_PIN27_DDRREG GPIOC_PDDR
+#define CORE_PIN28_DDRREG GPIOC_PDDR
+#define CORE_PIN29_DDRREG GPIOC_PDDR
+#define CORE_PIN30_DDRREG GPIOC_PDDR
+#define CORE_PIN31_DDRREG GPIOE_PDDR
+#define CORE_PIN32_DDRREG GPIOB_PDDR
+#define CORE_PIN33_DDRREG GPIOA_PDDR
+
+#define CORE_PIN0_PINREG GPIOB_PDIR
+#define CORE_PIN1_PINREG GPIOB_PDIR
+#define CORE_PIN2_PINREG GPIOD_PDIR
+#define CORE_PIN3_PINREG GPIOA_PDIR
+#define CORE_PIN4_PINREG GPIOA_PDIR
+#define CORE_PIN5_PINREG GPIOD_PDIR
+#define CORE_PIN6_PINREG GPIOD_PDIR
+#define CORE_PIN7_PINREG GPIOD_PDIR
+#define CORE_PIN8_PINREG GPIOD_PDIR
+#define CORE_PIN9_PINREG GPIOC_PDIR
+#define CORE_PIN10_PINREG GPIOC_PDIR
+#define CORE_PIN11_PINREG GPIOC_PDIR
+#define CORE_PIN12_PINREG GPIOC_PDIR
+#define CORE_PIN13_PINREG GPIOC_PDIR
+#define CORE_PIN14_PINREG GPIOD_PDIR
+#define CORE_PIN15_PINREG GPIOC_PDIR
+#define CORE_PIN16_PINREG GPIOB_PDIR
+#define CORE_PIN17_PINREG GPIOB_PDIR
+#define CORE_PIN18_PINREG GPIOB_PDIR
+#define CORE_PIN19_PINREG GPIOB_PDIR
+#define CORE_PIN20_PINREG GPIOD_PDIR
+#define CORE_PIN21_PINREG GPIOD_PDIR
+#define CORE_PIN22_PINREG GPIOC_PDIR
+#define CORE_PIN23_PINREG GPIOC_PDIR
+#define CORE_PIN24_PINREG GPIOA_PDIR
+#define CORE_PIN25_PINREG GPIOB_PDIR
+#define CORE_PIN26_PINREG GPIOE_PDIR
+#define CORE_PIN27_PINREG GPIOC_PDIR
+#define CORE_PIN28_PINREG GPIOC_PDIR
+#define CORE_PIN29_PINREG GPIOC_PDIR
+#define CORE_PIN30_PINREG GPIOC_PDIR
+#define CORE_PIN31_PINREG GPIOE_PDIR
+#define CORE_PIN32_PINREG GPIOB_PDIR
+#define CORE_PIN33_PINREG GPIOA_PDIR
+
+#define CORE_PIN0_CONFIG PORTB_PCR16
+#define CORE_PIN1_CONFIG PORTB_PCR17
+#define CORE_PIN2_CONFIG PORTD_PCR0
+#define CORE_PIN3_CONFIG PORTA_PCR12
+#define CORE_PIN4_CONFIG PORTA_PCR13
+#define CORE_PIN5_CONFIG PORTD_PCR7
+#define CORE_PIN6_CONFIG PORTD_PCR4
+#define CORE_PIN7_CONFIG PORTD_PCR2
+#define CORE_PIN8_CONFIG PORTD_PCR3
+#define CORE_PIN9_CONFIG PORTC_PCR3
+#define CORE_PIN10_CONFIG PORTC_PCR4
+#define CORE_PIN11_CONFIG PORTC_PCR6
+#define CORE_PIN12_CONFIG PORTC_PCR7
+#define CORE_PIN13_CONFIG PORTC_PCR5
+#define CORE_PIN14_CONFIG PORTD_PCR1
+#define CORE_PIN15_CONFIG PORTC_PCR0
+#define CORE_PIN16_CONFIG PORTB_PCR0
+#define CORE_PIN17_CONFIG PORTB_PCR1
+#define CORE_PIN18_CONFIG PORTB_PCR3
+#define CORE_PIN19_CONFIG PORTB_PCR2
+#define CORE_PIN20_CONFIG PORTD_PCR5
+#define CORE_PIN21_CONFIG PORTD_PCR6
+#define CORE_PIN22_CONFIG PORTC_PCR1
+#define CORE_PIN23_CONFIG PORTC_PCR2
+#define CORE_PIN24_CONFIG PORTA_PCR5
+#define CORE_PIN25_CONFIG PORTB_PCR19
+#define CORE_PIN26_CONFIG PORTE_PCR1
+#define CORE_PIN27_CONFIG PORTC_PCR9
+#define CORE_PIN28_CONFIG PORTC_PCR8
+#define CORE_PIN29_CONFIG PORTC_PCR10
+#define CORE_PIN30_CONFIG PORTC_PCR11
+#define CORE_PIN31_CONFIG PORTE_PCR0
+#define CORE_PIN32_CONFIG PORTB_PCR18
+#define CORE_PIN33_CONFIG PORTA_PCR4
+
+#define CORE_ADC0_PIN 14
+#define CORE_ADC1_PIN 15
+#define CORE_ADC2_PIN 16
+#define CORE_ADC3_PIN 17
+#define CORE_ADC4_PIN 18
+#define CORE_ADC5_PIN 19
+#define CORE_ADC6_PIN 20
+#define CORE_ADC7_PIN 21
+#define CORE_ADC8_PIN 22
+#define CORE_ADC9_PIN 23
+#define CORE_ADC10_PIN 34
+#define CORE_ADC11_PIN 35
+#define CORE_ADC12_PIN 36
+#define CORE_ADC13_PIN 37
+
+#define CORE_RXD0_PIN 0
+#define CORE_TXD0_PIN 1
+#define CORE_RXD1_PIN 9
+#define CORE_TXD1_PIN 10
+#define CORE_RXD2_PIN 7
+#define CORE_TXD2_PIN 8
+
+#define CORE_INT0_PIN 0
+#define CORE_INT1_PIN 1
+#define CORE_INT2_PIN 2
+#define CORE_INT3_PIN 3
+#define CORE_INT4_PIN 4
+#define CORE_INT5_PIN 5
+#define CORE_INT6_PIN 6
+#define CORE_INT7_PIN 7
+#define CORE_INT8_PIN 8
+#define CORE_INT9_PIN 9
+#define CORE_INT10_PIN 10
+#define CORE_INT11_PIN 11
+#define CORE_INT12_PIN 12
+#define CORE_INT13_PIN 13
+#define CORE_INT14_PIN 14
+#define CORE_INT15_PIN 15
+#define CORE_INT16_PIN 16
+#define CORE_INT17_PIN 17
+#define CORE_INT18_PIN 18
+#define CORE_INT19_PIN 19
+#define CORE_INT20_PIN 20
+#define CORE_INT21_PIN 21
+#define CORE_INT22_PIN 22
+#define CORE_INT23_PIN 23
+#define CORE_INT24_PIN 24
+#define CORE_INT25_PIN 25
+#define CORE_INT26_PIN 26
+#define CORE_INT27_PIN 27
+#define CORE_INT28_PIN 28
+#define CORE_INT29_PIN 29
+#define CORE_INT30_PIN 30
+#define CORE_INT31_PIN 31
+#define CORE_INT32_PIN 32
+#define CORE_INT33_PIN 33
+#define CORE_INT_EVERY_PIN 1
+
+
+#elif defined(__MKL26Z64__)
+
+#define CORE_PIN0_BIT 16
+#define CORE_PIN1_BIT 17
+#define CORE_PIN2_BIT 0
+#define CORE_PIN3_BIT 1
+#define CORE_PIN4_BIT 2
+#define CORE_PIN5_BIT 7
+#define CORE_PIN6_BIT 4
+#define CORE_PIN7_BIT 2
+#define CORE_PIN8_BIT 3
+#define CORE_PIN9_BIT 3
+#define CORE_PIN10_BIT 4
+#define CORE_PIN11_BIT 6
+#define CORE_PIN12_BIT 7
+#define CORE_PIN13_BIT 5
+#define CORE_PIN14_BIT 1
+#define CORE_PIN15_BIT 0
+#define CORE_PIN16_BIT 0
+#define CORE_PIN17_BIT 1
+#define CORE_PIN18_BIT 3
+#define CORE_PIN19_BIT 2
+#define CORE_PIN20_BIT 5
+#define CORE_PIN21_BIT 6
+#define CORE_PIN22_BIT 1
+#define CORE_PIN23_BIT 2
+#define CORE_PIN24_BIT 20
+#define CORE_PIN25_BIT 21
+#define CORE_PIN26_BIT 30
+
+#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
+#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
+#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
+#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
+#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
+#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
+#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
+#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
+#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
+#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
+#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
+#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
+#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
+#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
+#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
+#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
+#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
+#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
+#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
+#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
+#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
+#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
+#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
+#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
+#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
+#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
+#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
+
+#define CORE_PIN0_PORTREG FGPIOB_PDOR
+#define CORE_PIN1_PORTREG FGPIOB_PDOR
+#define CORE_PIN2_PORTREG FGPIOD_PDOR
+#define CORE_PIN3_PORTREG FGPIOA_PDOR
+#define CORE_PIN4_PORTREG FGPIOA_PDOR
+#define CORE_PIN5_PORTREG FGPIOD_PDOR
+#define CORE_PIN6_PORTREG FGPIOD_PDOR
+#define CORE_PIN7_PORTREG FGPIOD_PDOR
+#define CORE_PIN8_PORTREG FGPIOD_PDOR
+#define CORE_PIN9_PORTREG FGPIOC_PDOR
+#define CORE_PIN10_PORTREG FGPIOC_PDOR
+#define CORE_PIN11_PORTREG FGPIOC_PDOR
+#define CORE_PIN12_PORTREG FGPIOC_PDOR
+#define CORE_PIN13_PORTREG FGPIOC_PDOR
+#define CORE_PIN14_PORTREG FGPIOD_PDOR
+#define CORE_PIN15_PORTREG FGPIOC_PDOR
+#define CORE_PIN16_PORTREG FGPIOB_PDOR
+#define CORE_PIN17_PORTREG FGPIOB_PDOR
+#define CORE_PIN18_PORTREG FGPIOB_PDOR
+#define CORE_PIN19_PORTREG FGPIOB_PDOR
+#define CORE_PIN20_PORTREG FGPIOD_PDOR
+#define CORE_PIN21_PORTREG FGPIOD_PDOR
+#define CORE_PIN22_PORTREG FGPIOC_PDOR
+#define CORE_PIN23_PORTREG FGPIOC_PDOR
+#define CORE_PIN24_PORTREG FGPIOE_PDOR
+#define CORE_PIN25_PORTREG FGPIOE_PDOR
+#define CORE_PIN26_PORTREG FGPIOE_PDOR
+
+#define CORE_PIN0_PORTSET FGPIOB_PSOR
+#define CORE_PIN1_PORTSET FGPIOB_PSOR
+#define CORE_PIN2_PORTSET FGPIOD_PSOR
+#define CORE_PIN3_PORTSET FGPIOA_PSOR
+#define CORE_PIN4_PORTSET FGPIOA_PSOR
+#define CORE_PIN5_PORTSET FGPIOD_PSOR
+#define CORE_PIN6_PORTSET FGPIOD_PSOR
+#define CORE_PIN7_PORTSET FGPIOD_PSOR
+#define CORE_PIN8_PORTSET FGPIOD_PSOR
+#define CORE_PIN9_PORTSET FGPIOC_PSOR
+#define CORE_PIN10_PORTSET FGPIOC_PSOR
+#define CORE_PIN11_PORTSET FGPIOC_PSOR
+#define CORE_PIN12_PORTSET FGPIOC_PSOR
+#define CORE_PIN13_PORTSET FGPIOC_PSOR
+#define CORE_PIN14_PORTSET FGPIOD_PSOR
+#define CORE_PIN15_PORTSET FGPIOC_PSOR
+#define CORE_PIN16_PORTSET FGPIOB_PSOR
+#define CORE_PIN17_PORTSET FGPIOB_PSOR
+#define CORE_PIN18_PORTSET FGPIOB_PSOR
+#define CORE_PIN19_PORTSET FGPIOB_PSOR
+#define CORE_PIN20_PORTSET FGPIOD_PSOR
+#define CORE_PIN21_PORTSET FGPIOD_PSOR
+#define CORE_PIN22_PORTSET FGPIOC_PSOR
+#define CORE_PIN23_PORTSET FGPIOC_PSOR
+#define CORE_PIN24_PORTSET FGPIOE_PSOR
+#define CORE_PIN25_PORTSET FGPIOE_PSOR
+#define CORE_PIN26_PORTSET FGPIOE_PSOR
+
+#define CORE_PIN0_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN1_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN2_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN3_PORTCLEAR FGPIOA_PCOR
+#define CORE_PIN4_PORTCLEAR FGPIOA_PCOR
+#define CORE_PIN5_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN6_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN7_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN8_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN9_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN10_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN11_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN12_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN13_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN14_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN15_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN16_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN17_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN18_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN19_PORTCLEAR FGPIOB_PCOR
+#define CORE_PIN20_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN21_PORTCLEAR FGPIOD_PCOR
+#define CORE_PIN22_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN23_PORTCLEAR FGPIOC_PCOR
+#define CORE_PIN24_PORTCLEAR FGPIOE_PCOR
+#define CORE_PIN25_PORTCLEAR FGPIOE_PCOR
+#define CORE_PIN26_PORTCLEAR FGPIOE_PCOR
+
+#define CORE_PIN0_DDRREG FGPIOB_PDDR
+#define CORE_PIN1_DDRREG FGPIOB_PDDR
+#define CORE_PIN2_DDRREG FGPIOD_PDDR
+#define CORE_PIN3_DDRREG FGPIOA_PDDR
+#define CORE_PIN4_DDRREG FGPIOA_PDDR
+#define CORE_PIN5_DDRREG FGPIOD_PDDR
+#define CORE_PIN6_DDRREG FGPIOD_PDDR
+#define CORE_PIN7_DDRREG FGPIOD_PDDR
+#define CORE_PIN8_DDRREG FGPIOD_PDDR
+#define CORE_PIN9_DDRREG FGPIOC_PDDR
+#define CORE_PIN10_DDRREG FGPIOC_PDDR
+#define CORE_PIN11_DDRREG FGPIOC_PDDR
+#define CORE_PIN12_DDRREG FGPIOC_PDDR
+#define CORE_PIN13_DDRREG FGPIOC_PDDR
+#define CORE_PIN14_DDRREG FGPIOD_PDDR
+#define CORE_PIN15_DDRREG FGPIOC_PDDR
+#define CORE_PIN16_DDRREG FGPIOB_PDDR
+#define CORE_PIN17_DDRREG FGPIOB_PDDR
+#define CORE_PIN18_DDRREG FGPIOB_PDDR
+#define CORE_PIN19_DDRREG FGPIOB_PDDR
+#define CORE_PIN20_DDRREG FGPIOD_PDDR
+#define CORE_PIN21_DDRREG FGPIOD_PDDR
+#define CORE_PIN22_DDRREG FGPIOC_PDDR
+#define CORE_PIN23_DDRREG FGPIOC_PDDR
+#define CORE_PIN24_DDRREG FGPIOE_PDDR
+#define CORE_PIN25_DDRREG FGPIOE_PDDR
+#define CORE_PIN26_DDRREG FGPIOE_PDDR
+
+#define CORE_PIN0_PINREG FGPIOB_PDIR
+#define CORE_PIN1_PINREG FGPIOB_PDIR
+#define CORE_PIN2_PINREG FGPIOD_PDIR
+#define CORE_PIN3_PINREG FGPIOA_PDIR
+#define CORE_PIN4_PINREG FGPIOA_PDIR
+#define CORE_PIN5_PINREG FGPIOD_PDIR
+#define CORE_PIN6_PINREG FGPIOD_PDIR
+#define CORE_PIN7_PINREG FGPIOD_PDIR
+#define CORE_PIN8_PINREG FGPIOD_PDIR
+#define CORE_PIN9_PINREG FGPIOC_PDIR
+#define CORE_PIN10_PINREG FGPIOC_PDIR
+#define CORE_PIN11_PINREG FGPIOC_PDIR
+#define CORE_PIN12_PINREG FGPIOC_PDIR
+#define CORE_PIN13_PINREG FGPIOC_PDIR
+#define CORE_PIN14_PINREG FGPIOD_PDIR
+#define CORE_PIN15_PINREG FGPIOC_PDIR
+#define CORE_PIN16_PINREG FGPIOB_PDIR
+#define CORE_PIN17_PINREG FGPIOB_PDIR
+#define CORE_PIN18_PINREG FGPIOB_PDIR
+#define CORE_PIN19_PINREG FGPIOB_PDIR
+#define CORE_PIN20_PINREG FGPIOD_PDIR
+#define CORE_PIN21_PINREG FGPIOD_PDIR
+#define CORE_PIN22_PINREG FGPIOC_PDIR
+#define CORE_PIN23_PINREG FGPIOC_PDIR
+#define CORE_PIN24_PINREG FGPIOE_PDIR
+#define CORE_PIN25_PINREG FGPIOE_PDIR
+#define CORE_PIN26_PINREG FGPIOE_PDIR
+
+#define CORE_PIN0_CONFIG PORTB_PCR16
+#define CORE_PIN1_CONFIG PORTB_PCR17
+#define CORE_PIN2_CONFIG PORTD_PCR0
+#define CORE_PIN3_CONFIG PORTA_PCR1
+#define CORE_PIN4_CONFIG PORTA_PCR2
+#define CORE_PIN5_CONFIG PORTD_PCR7
+#define CORE_PIN6_CONFIG PORTD_PCR4
+#define CORE_PIN7_CONFIG PORTD_PCR2
+#define CORE_PIN8_CONFIG PORTD_PCR3
+#define CORE_PIN9_CONFIG PORTC_PCR3
+#define CORE_PIN10_CONFIG PORTC_PCR4
+#define CORE_PIN11_CONFIG PORTC_PCR6
+#define CORE_PIN12_CONFIG PORTC_PCR7
+#define CORE_PIN13_CONFIG PORTC_PCR5
+#define CORE_PIN14_CONFIG PORTD_PCR1
+#define CORE_PIN15_CONFIG PORTC_PCR0
+#define CORE_PIN16_CONFIG PORTB_PCR0
+#define CORE_PIN17_CONFIG PORTB_PCR1
+#define CORE_PIN18_CONFIG PORTB_PCR3
+#define CORE_PIN19_CONFIG PORTB_PCR2
+#define CORE_PIN20_CONFIG PORTD_PCR5
+#define CORE_PIN21_CONFIG PORTD_PCR6
+#define CORE_PIN22_CONFIG PORTC_PCR1
+#define CORE_PIN23_CONFIG PORTC_PCR2
+#define CORE_PIN24_CONFIG PORTE_PCR20
+#define CORE_PIN25_CONFIG PORTE_PCR21
+#define CORE_PIN26_CONFIG PORTE_PCR30
+
+#define CORE_ADC0_PIN 14
+#define CORE_ADC1_PIN 15
+#define CORE_ADC2_PIN 16
+#define CORE_ADC3_PIN 17
+#define CORE_ADC4_PIN 18
+#define CORE_ADC5_PIN 19
+#define CORE_ADC6_PIN 20
+#define CORE_ADC7_PIN 21
+#define CORE_ADC8_PIN 22
+#define CORE_ADC9_PIN 23
+#define CORE_ADC10_PIN 24
+#define CORE_ADC11_PIN 25
+#define CORE_ADC12_PIN 26
+
+#define CORE_RXD0_PIN 0
+#define CORE_TXD0_PIN 1
+#define CORE_RXD1_PIN 9
+#define CORE_TXD1_PIN 10
+#define CORE_RXD2_PIN 7
+#define CORE_TXD2_PIN 8
+
+#define CORE_INT2_PIN 2
+#define CORE_INT3_PIN 3
+#define CORE_INT4_PIN 4
+#define CORE_INT5_PIN 5
+#define CORE_INT6_PIN 6
+#define CORE_INT7_PIN 7
+#define CORE_INT8_PIN 8
+#define CORE_INT9_PIN 9
+#define CORE_INT10_PIN 10
+#define CORE_INT11_PIN 11
+#define CORE_INT12_PIN 12
+#define CORE_INT13_PIN 13
+#define CORE_INT14_PIN 14
+#define CORE_INT15_PIN 15
+#define CORE_INT20_PIN 20
+#define CORE_INT21_PIN 21
+#define CORE_INT22_PIN 22
+#define CORE_INT23_PIN 23
+
+
+#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
+
+#define CORE_PIN0_BIT 16
+#define CORE_PIN1_BIT 17
+#define CORE_PIN2_BIT 0
+#define CORE_PIN3_BIT 12
+#define CORE_PIN4_BIT 13
+#define CORE_PIN5_BIT 7
+#define CORE_PIN6_BIT 4
+#define CORE_PIN7_BIT 2
+#define CORE_PIN8_BIT 3
+#define CORE_PIN9_BIT 3
+#define CORE_PIN10_BIT 4
+#define CORE_PIN11_BIT 6
+#define CORE_PIN12_BIT 7
+#define CORE_PIN13_BIT 5
+#define CORE_PIN14_BIT 1
+#define CORE_PIN15_BIT 0
+#define CORE_PIN16_BIT 0
+#define CORE_PIN17_BIT 1
+#define CORE_PIN18_BIT 3
+#define CORE_PIN19_BIT 2
+#define CORE_PIN20_BIT 5
+#define CORE_PIN21_BIT 6
+#define CORE_PIN22_BIT 1
+#define CORE_PIN23_BIT 2
+#define CORE_PIN24_BIT 26
+#define CORE_PIN25_BIT 5
+#define CORE_PIN26_BIT 14
+#define CORE_PIN27_BIT 15
+#define CORE_PIN28_BIT 16
+#define CORE_PIN29_BIT 18
+#define CORE_PIN30_BIT 19
+#define CORE_PIN31_BIT 10
+#define CORE_PIN32_BIT 11
+#define CORE_PIN33_BIT 24
+#define CORE_PIN34_BIT 25
+#define CORE_PIN35_BIT 8
+#define CORE_PIN36_BIT 9
+#define CORE_PIN37_BIT 10
+#define CORE_PIN38_BIT 11
+#define CORE_PIN39_BIT 17
+#define CORE_PIN40_BIT 28
+#define CORE_PIN41_BIT 29
+#define CORE_PIN42_BIT 26
+#define CORE_PIN43_BIT 20
+#define CORE_PIN44_BIT 22
+#define CORE_PIN45_BIT 23
+#define CORE_PIN46_BIT 21
+#define CORE_PIN47_BIT 8
+#define CORE_PIN48_BIT 9
+#define CORE_PIN49_BIT 4
+#define CORE_PIN50_BIT 5
+#define CORE_PIN51_BIT 14
+#define CORE_PIN52_BIT 13
+#define CORE_PIN53_BIT 12
+#define CORE_PIN54_BIT 15
+#define CORE_PIN55_BIT 11
+#define CORE_PIN56_BIT 10
+#define CORE_PIN57_BIT 11
+#define CORE_PIN58_BIT 0
+#define CORE_PIN59_BIT 1
+#define CORE_PIN60_BIT 2
+#define CORE_PIN61_BIT 3
+#define CORE_PIN62_BIT 4
+#define CORE_PIN63_BIT 5
+
+#define CORE_PIN0_BITMASK (1<<(CORE_PIN0_BIT))
+#define CORE_PIN1_BITMASK (1<<(CORE_PIN1_BIT))
+#define CORE_PIN2_BITMASK (1<<(CORE_PIN2_BIT))
+#define CORE_PIN3_BITMASK (1<<(CORE_PIN3_BIT))
+#define CORE_PIN4_BITMASK (1<<(CORE_PIN4_BIT))
+#define CORE_PIN5_BITMASK (1<<(CORE_PIN5_BIT))
+#define CORE_PIN6_BITMASK (1<<(CORE_PIN6_BIT))
+#define CORE_PIN7_BITMASK (1<<(CORE_PIN7_BIT))
+#define CORE_PIN8_BITMASK (1<<(CORE_PIN8_BIT))
+#define CORE_PIN9_BITMASK (1<<(CORE_PIN9_BIT))
+#define CORE_PIN10_BITMASK (1<<(CORE_PIN10_BIT))
+#define CORE_PIN11_BITMASK (1<<(CORE_PIN11_BIT))
+#define CORE_PIN12_BITMASK (1<<(CORE_PIN12_BIT))
+#define CORE_PIN13_BITMASK (1<<(CORE_PIN13_BIT))
+#define CORE_PIN14_BITMASK (1<<(CORE_PIN14_BIT))
+#define CORE_PIN15_BITMASK (1<<(CORE_PIN15_BIT))
+#define CORE_PIN16_BITMASK (1<<(CORE_PIN16_BIT))
+#define CORE_PIN17_BITMASK (1<<(CORE_PIN17_BIT))
+#define CORE_PIN18_BITMASK (1<<(CORE_PIN18_BIT))
+#define CORE_PIN19_BITMASK (1<<(CORE_PIN19_BIT))
+#define CORE_PIN20_BITMASK (1<<(CORE_PIN20_BIT))
+#define CORE_PIN21_BITMASK (1<<(CORE_PIN21_BIT))
+#define CORE_PIN22_BITMASK (1<<(CORE_PIN22_BIT))
+#define CORE_PIN23_BITMASK (1<<(CORE_PIN23_BIT))
+#define CORE_PIN24_BITMASK (1<<(CORE_PIN24_BIT))
+#define CORE_PIN25_BITMASK (1<<(CORE_PIN25_BIT))
+#define CORE_PIN26_BITMASK (1<<(CORE_PIN26_BIT))
+#define CORE_PIN27_BITMASK (1<<(CORE_PIN27_BIT))
+#define CORE_PIN28_BITMASK (1<<(CORE_PIN28_BIT))
+#define CORE_PIN29_BITMASK (1<<(CORE_PIN29_BIT))
+#define CORE_PIN30_BITMASK (1<<(CORE_PIN30_BIT))
+#define CORE_PIN31_BITMASK (1<<(CORE_PIN31_BIT))
+#define CORE_PIN32_BITMASK (1<<(CORE_PIN32_BIT))
+#define CORE_PIN33_BITMASK (1<<(CORE_PIN33_BIT))
+#define CORE_PIN34_BITMASK (1<<(CORE_PIN34_BIT))
+#define CORE_PIN35_BITMASK (1<<(CORE_PIN35_BIT))
+#define CORE_PIN36_BITMASK (1<<(CORE_PIN36_BIT))
+#define CORE_PIN37_BITMASK (1<<(CORE_PIN37_BIT))
+#define CORE_PIN38_BITMASK (1<<(CORE_PIN38_BIT))
+#define CORE_PIN39_BITMASK (1<<(CORE_PIN39_BIT))
+#define CORE_PIN40_BITMASK (1<<(CORE_PIN40_BIT))
+#define CORE_PIN41_BITMASK (1<<(CORE_PIN41_BIT))
+#define CORE_PIN42_BITMASK (1<<(CORE_PIN42_BIT))
+#define CORE_PIN43_BITMASK (1<<(CORE_PIN43_BIT))
+#define CORE_PIN44_BITMASK (1<<(CORE_PIN44_BIT))
+#define CORE_PIN45_BITMASK (1<<(CORE_PIN45_BIT))
+#define CORE_PIN46_BITMASK (1<<(CORE_PIN46_BIT))
+#define CORE_PIN47_BITMASK (1<<(CORE_PIN47_BIT))
+#define CORE_PIN48_BITMASK (1<<(CORE_PIN48_BIT))
+#define CORE_PIN49_BITMASK (1<<(CORE_PIN49_BIT))
+#define CORE_PIN50_BITMASK (1<<(CORE_PIN50_BIT))
+#define CORE_PIN51_BITMASK (1<<(CORE_PIN51_BIT))
+#define CORE_PIN52_BITMASK (1<<(CORE_PIN52_BIT))
+#define CORE_PIN53_BITMASK (1<<(CORE_PIN53_BIT))
+#define CORE_PIN54_BITMASK (1<<(CORE_PIN54_BIT))
+#define CORE_PIN55_BITMASK (1<<(CORE_PIN55_BIT))
+#define CORE_PIN56_BITMASK (1<<(CORE_PIN56_BIT))
+#define CORE_PIN57_BITMASK (1<<(CORE_PIN57_BIT))
+#define CORE_PIN58_BITMASK (1<<(CORE_PIN58_BIT))
+#define CORE_PIN59_BITMASK (1<<(CORE_PIN59_BIT))
+#define CORE_PIN60_BITMASK (1<<(CORE_PIN60_BIT))
+#define CORE_PIN61_BITMASK (1<<(CORE_PIN61_BIT))
+#define CORE_PIN62_BITMASK (1<<(CORE_PIN62_BIT))
+#define CORE_PIN63_BITMASK (1<<(CORE_PIN63_BIT))
+
+
+#define CORE_PIN0_PORTREG GPIOB_PDOR
+#define CORE_PIN1_PORTREG GPIOB_PDOR
+#define CORE_PIN2_PORTREG GPIOD_PDOR
+#define CORE_PIN3_PORTREG GPIOA_PDOR
+#define CORE_PIN4_PORTREG GPIOA_PDOR
+#define CORE_PIN5_PORTREG GPIOD_PDOR
+#define CORE_PIN6_PORTREG GPIOD_PDOR
+#define CORE_PIN7_PORTREG GPIOD_PDOR
+#define CORE_PIN8_PORTREG GPIOD_PDOR
+#define CORE_PIN9_PORTREG GPIOC_PDOR
+#define CORE_PIN10_PORTREG GPIOC_PDOR
+#define CORE_PIN11_PORTREG GPIOC_PDOR
+#define CORE_PIN12_PORTREG GPIOC_PDOR
+#define CORE_PIN13_PORTREG GPIOC_PDOR
+#define CORE_PIN14_PORTREG GPIOD_PDOR
+#define CORE_PIN15_PORTREG GPIOC_PDOR
+#define CORE_PIN16_PORTREG GPIOB_PDOR
+#define CORE_PIN17_PORTREG GPIOB_PDOR
+#define CORE_PIN18_PORTREG GPIOB_PDOR
+#define CORE_PIN19_PORTREG GPIOB_PDOR
+#define CORE_PIN20_PORTREG GPIOD_PDOR
+#define CORE_PIN21_PORTREG GPIOD_PDOR
+#define CORE_PIN22_PORTREG GPIOC_PDOR
+#define CORE_PIN23_PORTREG GPIOC_PDOR
+#define CORE_PIN24_PORTREG GPIOE_PDOR
+#define CORE_PIN25_PORTREG GPIOA_PDOR
+#define CORE_PIN26_PORTREG GPIOA_PDOR
+#define CORE_PIN27_PORTREG GPIOA_PDOR
+#define CORE_PIN28_PORTREG GPIOA_PDOR
+#define CORE_PIN29_PORTREG GPIOB_PDOR
+#define CORE_PIN30_PORTREG GPIOB_PDOR
+#define CORE_PIN31_PORTREG GPIOB_PDOR
+#define CORE_PIN32_PORTREG GPIOB_PDOR
+#define CORE_PIN33_PORTREG GPIOE_PDOR
+#define CORE_PIN34_PORTREG GPIOE_PDOR
+#define CORE_PIN35_PORTREG GPIOC_PDOR
+#define CORE_PIN36_PORTREG GPIOC_PDOR
+#define CORE_PIN37_PORTREG GPIOC_PDOR
+#define CORE_PIN38_PORTREG GPIOC_PDOR
+#define CORE_PIN39_PORTREG GPIOA_PDOR
+#define CORE_PIN40_PORTREG GPIOA_PDOR
+#define CORE_PIN41_PORTREG GPIOA_PDOR
+#define CORE_PIN42_PORTREG GPIOA_PDOR
+#define CORE_PIN43_PORTREG GPIOB_PDOR
+#define CORE_PIN44_PORTREG GPIOB_PDOR
+#define CORE_PIN45_PORTREG GPIOB_PDOR
+#define CORE_PIN46_PORTREG GPIOB_PDOR
+#define CORE_PIN47_PORTREG GPIOD_PDOR
+#define CORE_PIN48_PORTREG GPIOD_PDOR
+#define CORE_PIN49_PORTREG GPIOB_PDOR
+#define CORE_PIN50_PORTREG GPIOB_PDOR
+#define CORE_PIN51_PORTREG GPIOD_PDOR
+#define CORE_PIN52_PORTREG GPIOD_PDOR
+#define CORE_PIN53_PORTREG GPIOD_PDOR
+#define CORE_PIN54_PORTREG GPIOD_PDOR
+#define CORE_PIN55_PORTREG GPIOD_PDOR
+#define CORE_PIN56_PORTREG GPIOE_PDOR
+#define CORE_PIN57_PORTREG GPIOE_PDOR
+#define CORE_PIN58_PORTREG GPIOE_PDOR
+#define CORE_PIN59_PORTREG GPIOE_PDOR
+#define CORE_PIN60_PORTREG GPIOE_PDOR
+#define CORE_PIN61_PORTREG GPIOE_PDOR
+#define CORE_PIN62_PORTREG GPIOE_PDOR
+#define CORE_PIN63_PORTREG GPIOE_PDOR
+
+#define CORE_PIN0_PORTSET GPIOB_PSOR
+#define CORE_PIN1_PORTSET GPIOB_PSOR
+#define CORE_PIN2_PORTSET GPIOD_PSOR
+#define CORE_PIN3_PORTSET GPIOA_PSOR
+#define CORE_PIN4_PORTSET GPIOA_PSOR
+#define CORE_PIN5_PORTSET GPIOD_PSOR
+#define CORE_PIN6_PORTSET GPIOD_PSOR
+#define CORE_PIN7_PORTSET GPIOD_PSOR
+#define CORE_PIN8_PORTSET GPIOD_PSOR
+#define CORE_PIN9_PORTSET GPIOC_PSOR
+#define CORE_PIN10_PORTSET GPIOC_PSOR
+#define CORE_PIN11_PORTSET GPIOC_PSOR
+#define CORE_PIN12_PORTSET GPIOC_PSOR
+#define CORE_PIN13_PORTSET GPIOC_PSOR
+#define CORE_PIN14_PORTSET GPIOD_PSOR
+#define CORE_PIN15_PORTSET GPIOC_PSOR
+#define CORE_PIN16_PORTSET GPIOB_PSOR
+#define CORE_PIN17_PORTSET GPIOB_PSOR
+#define CORE_PIN18_PORTSET GPIOB_PSOR
+#define CORE_PIN19_PORTSET GPIOB_PSOR
+#define CORE_PIN20_PORTSET GPIOD_PSOR
+#define CORE_PIN21_PORTSET GPIOD_PSOR
+#define CORE_PIN22_PORTSET GPIOC_PSOR
+#define CORE_PIN23_PORTSET GPIOC_PSOR
+#define CORE_PIN24_PORTSET GPIOE_PSOR
+#define CORE_PIN25_PORTSET GPIOA_PSOR
+#define CORE_PIN26_PORTSET GPIOA_PSOR
+#define CORE_PIN27_PORTSET GPIOA_PSOR
+#define CORE_PIN28_PORTSET GPIOA_PSOR
+#define CORE_PIN29_PORTSET GPIOB_PSOR
+#define CORE_PIN30_PORTSET GPIOB_PSOR
+#define CORE_PIN31_PORTSET GPIOB_PSOR
+#define CORE_PIN32_PORTSET GPIOB_PSOR
+#define CORE_PIN33_PORTSET GPIOE_PSOR
+#define CORE_PIN34_PORTSET GPIOE_PSOR
+#define CORE_PIN35_PORTSET GPIOC_PSOR
+#define CORE_PIN36_PORTSET GPIOC_PSOR
+#define CORE_PIN37_PORTSET GPIOC_PSOR
+#define CORE_PIN38_PORTSET GPIOC_PSOR
+#define CORE_PIN39_PORTSET GPIOA_PSOR
+#define CORE_PIN40_PORTSET GPIOA_PSOR
+#define CORE_PIN41_PORTSET GPIOA_PSOR
+#define CORE_PIN42_PORTSET GPIOA_PSOR
+#define CORE_PIN43_PORTSET GPIOB_PSOR
+#define CORE_PIN44_PORTSET GPIOB_PSOR
+#define CORE_PIN45_PORTSET GPIOB_PSOR
+#define CORE_PIN46_PORTSET GPIOB_PSOR
+#define CORE_PIN47_PORTSET GPIOD_PSOR
+#define CORE_PIN48_PORTSET GPIOD_PSOR
+#define CORE_PIN49_PORTSET GPIOB_PSOR
+#define CORE_PIN50_PORTSET GPIOB_PSOR
+#define CORE_PIN51_PORTSET GPIOD_PSOR
+#define CORE_PIN52_PORTSET GPIOD_PSOR
+#define CORE_PIN53_PORTSET GPIOD_PSOR
+#define CORE_PIN54_PORTSET GPIOD_PSOR
+#define CORE_PIN55_PORTSET GPIOD_PSOR
+#define CORE_PIN56_PORTSET GPIOE_PSOR
+#define CORE_PIN57_PORTSET GPIOE_PSOR
+#define CORE_PIN58_PORTSET GPIOE_PSOR
+#define CORE_PIN59_PORTSET GPIOE_PSOR
+#define CORE_PIN60_PORTSET GPIOE_PSOR
+#define CORE_PIN61_PORTSET GPIOE_PSOR
+#define CORE_PIN62_PORTSET GPIOE_PSOR
+#define CORE_PIN63_PORTSET GPIOE_PSOR
+
+#define CORE_PIN0_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN1_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN2_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN3_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN4_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN5_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN6_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN7_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN8_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN9_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN10_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN11_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN12_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN13_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN14_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN15_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN16_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN17_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN18_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN19_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN20_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN21_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN22_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN23_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN24_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN25_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN26_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN27_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN28_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN29_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN30_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN31_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN32_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN33_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN34_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN35_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN36_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN37_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN38_PORTCLEAR GPIOC_PCOR
+#define CORE_PIN39_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN40_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN41_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN42_PORTCLEAR GPIOA_PCOR
+#define CORE_PIN43_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN44_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN45_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN46_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN47_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN48_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN49_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN50_PORTCLEAR GPIOB_PCOR
+#define CORE_PIN51_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN52_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN53_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN54_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN55_PORTCLEAR GPIOD_PCOR
+#define CORE_PIN56_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN57_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN58_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN59_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN60_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN61_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN62_PORTCLEAR GPIOE_PCOR
+#define CORE_PIN63_PORTCLEAR GPIOE_PCOR
+
+#define CORE_PIN0_DDRREG GPIOB_PDDR
+#define CORE_PIN1_DDRREG GPIOB_PDDR
+#define CORE_PIN2_DDRREG GPIOD_PDDR
+#define CORE_PIN3_DDRREG GPIOA_PDDR
+#define CORE_PIN4_DDRREG GPIOA_PDDR
+#define CORE_PIN5_DDRREG GPIOD_PDDR
+#define CORE_PIN6_DDRREG GPIOD_PDDR
+#define CORE_PIN7_DDRREG GPIOD_PDDR
+#define CORE_PIN8_DDRREG GPIOD_PDDR
+#define CORE_PIN9_DDRREG GPIOC_PDDR
+#define CORE_PIN10_DDRREG GPIOC_PDDR
+#define CORE_PIN11_DDRREG GPIOC_PDDR
+#define CORE_PIN12_DDRREG GPIOC_PDDR
+#define CORE_PIN13_DDRREG GPIOC_PDDR
+#define CORE_PIN14_DDRREG GPIOD_PDDR
+#define CORE_PIN15_DDRREG GPIOC_PDDR
+#define CORE_PIN16_DDRREG GPIOB_PDDR
+#define CORE_PIN17_DDRREG GPIOB_PDDR
+#define CORE_PIN18_DDRREG GPIOB_PDDR
+#define CORE_PIN19_DDRREG GPIOB_PDDR
+#define CORE_PIN20_DDRREG GPIOD_PDDR
+#define CORE_PIN21_DDRREG GPIOD_PDDR
+#define CORE_PIN22_DDRREG GPIOC_PDDR
+#define CORE_PIN23_DDRREG GPIOC_PDDR
+#define CORE_PIN24_DDRREG GPIOE_PDDR
+#define CORE_PIN25_DDRREG GPIOA_PDDR
+#define CORE_PIN26_DDRREG GPIOA_PDDR
+#define CORE_PIN27_DDRREG GPIOA_PDDR
+#define CORE_PIN28_DDRREG GPIOA_PDDR
+#define CORE_PIN29_DDRREG GPIOB_PDDR
+#define CORE_PIN30_DDRREG GPIOB_PDDR
+#define CORE_PIN31_DDRREG GPIOB_PDDR
+#define CORE_PIN32_DDRREG GPIOB_PDDR
+#define CORE_PIN33_DDRREG GPIOE_PDDR
+#define CORE_PIN34_DDRREG GPIOE_PDDR
+#define CORE_PIN35_DDRREG GPIOC_PDDR
+#define CORE_PIN36_DDRREG GPIOC_PDDR
+#define CORE_PIN37_DDRREG GPIOC_PDDR
+#define CORE_PIN38_DDRREG GPIOC_PDDR
+#define CORE_PIN39_DDRREG GPIOA_PDDR
+#define CORE_PIN40_DDRREG GPIOA_PDDR
+#define CORE_PIN41_DDRREG GPIOA_PDDR
+#define CORE_PIN42_DDRREG GPIOA_PDDR
+#define CORE_PIN43_DDRREG GPIOB_PDDR
+#define CORE_PIN44_DDRREG GPIOB_PDDR
+#define CORE_PIN45_DDRREG GPIOB_PDDR
+#define CORE_PIN46_DDRREG GPIOB_PDDR
+#define CORE_PIN47_DDRREG GPIOD_PDDR
+#define CORE_PIN48_DDRREG GPIOD_PDDR
+#define CORE_PIN49_DDRREG GPIOB_PDDR
+#define CORE_PIN50_DDRREG GPIOB_PDDR
+#define CORE_PIN51_DDRREG GPIOD_PDDR
+#define CORE_PIN52_DDRREG GPIOD_PDDR
+#define CORE_PIN53_DDRREG GPIOD_PDDR
+#define CORE_PIN54_DDRREG GPIOD_PDDR
+#define CORE_PIN55_DDRREG GPIOD_PDDR
+#define CORE_PIN56_DDRREG GPIOE_PDDR
+#define CORE_PIN57_DDRREG GPIOE_PDDR
+#define CORE_PIN58_DDRREG GPIOE_PDDR
+#define CORE_PIN59_DDRREG GPIOE_PDDR
+#define CORE_PIN60_DDRREG GPIOE_PDDR
+#define CORE_PIN61_DDRREG GPIOE_PDDR
+#define CORE_PIN62_DDRREG GPIOE_PDDR
+#define CORE_PIN63_DDRREG GPIOE_PDDR
+
+#define CORE_PIN0_PINREG GPIOB_PDIR
+#define CORE_PIN1_PINREG GPIOB_PDIR
+#define CORE_PIN2_PINREG GPIOD_PDIR
+#define CORE_PIN3_PINREG GPIOA_PDIR
+#define CORE_PIN4_PINREG GPIOA_PDIR
+#define CORE_PIN5_PINREG GPIOD_PDIR
+#define CORE_PIN6_PINREG GPIOD_PDIR
+#define CORE_PIN7_PINREG GPIOD_PDIR
+#define CORE_PIN8_PINREG GPIOD_PDIR
+#define CORE_PIN9_PINREG GPIOC_PDIR
+#define CORE_PIN10_PINREG GPIOC_PDIR
+#define CORE_PIN11_PINREG GPIOC_PDIR
+#define CORE_PIN12_PINREG GPIOC_PDIR
+#define CORE_PIN13_PINREG GPIOC_PDIR
+#define CORE_PIN14_PINREG GPIOD_PDIR
+#define CORE_PIN15_PINREG GPIOC_PDIR
+#define CORE_PIN16_PINREG GPIOB_PDIR
+#define CORE_PIN17_PINREG GPIOB_PDIR
+#define CORE_PIN18_PINREG GPIOB_PDIR
+#define CORE_PIN19_PINREG GPIOB_PDIR
+#define CORE_PIN20_PINREG GPIOD_PDIR
+#define CORE_PIN21_PINREG GPIOD_PDIR
+#define CORE_PIN22_PINREG GPIOC_PDIR
+#define CORE_PIN23_PINREG GPIOC_PDIR
+#define CORE_PIN24_PINREG GPIOE_PDIR
+#define CORE_PIN25_PINREG GPIOA_PDIR
+#define CORE_PIN26_PINREG GPIOA_PDIR
+#define CORE_PIN27_PINREG GPIOA_PDIR
+#define CORE_PIN28_PINREG GPIOA_PDIR
+#define CORE_PIN29_PINREG GPIOB_PDIR
+#define CORE_PIN30_PINREG GPIOB_PDIR
+#define CORE_PIN31_PINREG GPIOB_PDIR
+#define CORE_PIN32_PINREG GPIOB_PDIR
+#define CORE_PIN33_PINREG GPIOE_PDIR
+#define CORE_PIN34_PINREG GPIOE_PDIR
+#define CORE_PIN35_PINREG GPIOC_PDIR
+#define CORE_PIN36_PINREG GPIOC_PDIR
+#define CORE_PIN37_PINREG GPIOC_PDIR
+#define CORE_PIN38_PINREG GPIOC_PDIR
+#define CORE_PIN39_PINREG GPIOA_PDIR
+#define CORE_PIN40_PINREG GPIOA_PDIR
+#define CORE_PIN41_PINREG GPIOA_PDIR
+#define CORE_PIN42_PINREG GPIOA_PDIR
+#define CORE_PIN43_PINREG GPIOB_PDIR
+#define CORE_PIN44_PINREG GPIOB_PDIR
+#define CORE_PIN45_PINREG GPIOB_PDIR
+#define CORE_PIN46_PINREG GPIOB_PDIR
+#define CORE_PIN47_PINREG GPIOD_PDIR
+#define CORE_PIN48_PINREG GPIOD_PDIR
+#define CORE_PIN49_PINREG GPIOB_PDIR
+#define CORE_PIN50_PINREG GPIOB_PDIR
+#define CORE_PIN51_PINREG GPIOD_PDIR
+#define CORE_PIN52_PINREG GPIOD_PDIR
+#define CORE_PIN53_PINREG GPIOD_PDIR
+#define CORE_PIN54_PINREG GPIOD_PDIR
+#define CORE_PIN55_PINREG GPIOD_PDIR
+#define CORE_PIN56_PINREG GPIOE_PDIR
+#define CORE_PIN57_PINREG GPIOE_PDIR
+#define CORE_PIN58_PINREG GPIOE_PDIR
+#define CORE_PIN59_PINREG GPIOE_PDIR
+#define CORE_PIN60_PINREG GPIOE_PDIR
+#define CORE_PIN61_PINREG GPIOE_PDIR
+#define CORE_PIN62_PINREG GPIOE_PDIR
+#define CORE_PIN63_PINREG GPIOE_PDIR
+
+#define CORE_PIN0_CONFIG PORTB_PCR16
+#define CORE_PIN1_CONFIG PORTB_PCR17
+#define CORE_PIN2_CONFIG PORTD_PCR0
+#define CORE_PIN3_CONFIG PORTA_PCR12
+#define CORE_PIN4_CONFIG PORTA_PCR13
+#define CORE_PIN5_CONFIG PORTD_PCR7
+#define CORE_PIN6_CONFIG PORTD_PCR4
+#define CORE_PIN7_CONFIG PORTD_PCR2
+#define CORE_PIN8_CONFIG PORTD_PCR3
+#define CORE_PIN9_CONFIG PORTC_PCR3
+#define CORE_PIN10_CONFIG PORTC_PCR4
+#define CORE_PIN11_CONFIG PORTC_PCR6
+#define CORE_PIN12_CONFIG PORTC_PCR7
+#define CORE_PIN13_CONFIG PORTC_PCR5
+#define CORE_PIN14_CONFIG PORTD_PCR1
+#define CORE_PIN15_CONFIG PORTC_PCR0
+#define CORE_PIN16_CONFIG PORTB_PCR0
+#define CORE_PIN17_CONFIG PORTB_PCR1
+#define CORE_PIN18_CONFIG PORTB_PCR3
+#define CORE_PIN19_CONFIG PORTB_PCR2
+#define CORE_PIN20_CONFIG PORTD_PCR5
+#define CORE_PIN21_CONFIG PORTD_PCR6
+#define CORE_PIN22_CONFIG PORTC_PCR1
+#define CORE_PIN23_CONFIG PORTC_PCR2
+#define CORE_PIN24_CONFIG PORTE_PCR26
+#define CORE_PIN25_CONFIG PORTA_PCR5
+#define CORE_PIN26_CONFIG PORTA_PCR14
+#define CORE_PIN27_CONFIG PORTA_PCR15
+#define CORE_PIN28_CONFIG PORTA_PCR16
+#define CORE_PIN29_CONFIG PORTB_PCR18
+#define CORE_PIN30_CONFIG PORTB_PCR19
+#define CORE_PIN31_CONFIG PORTB_PCR10
+#define CORE_PIN32_CONFIG PORTB_PCR11
+#define CORE_PIN33_CONFIG PORTE_PCR24
+#define CORE_PIN34_CONFIG PORTE_PCR25
+#define CORE_PIN35_CONFIG PORTC_PCR8
+#define CORE_PIN36_CONFIG PORTC_PCR9
+#define CORE_PIN37_CONFIG PORTC_PCR10
+#define CORE_PIN38_CONFIG PORTC_PCR11
+#define CORE_PIN39_CONFIG PORTA_PCR17
+#define CORE_PIN40_CONFIG PORTA_PCR28
+#define CORE_PIN41_CONFIG PORTA_PCR29
+#define CORE_PIN42_CONFIG PORTA_PCR26
+#define CORE_PIN43_CONFIG PORTB_PCR20
+#define CORE_PIN44_CONFIG PORTB_PCR22
+#define CORE_PIN45_CONFIG PORTB_PCR23
+#define CORE_PIN46_CONFIG PORTB_PCR21
+#define CORE_PIN47_CONFIG PORTD_PCR8
+#define CORE_PIN48_CONFIG PORTD_PCR9
+#define CORE_PIN49_CONFIG PORTB_PCR4
+#define CORE_PIN50_CONFIG PORTB_PCR5
+#define CORE_PIN51_CONFIG PORTD_PCR14
+#define CORE_PIN52_CONFIG PORTD_PCR13
+#define CORE_PIN53_CONFIG PORTD_PCR12
+#define CORE_PIN54_CONFIG PORTD_PCR15
+#define CORE_PIN55_CONFIG PORTD_PCR11
+#define CORE_PIN56_CONFIG PORTE_PCR10
+#define CORE_PIN57_CONFIG PORTE_PCR11
+#define CORE_PIN58_CONFIG PORTE_PCR0
+#define CORE_PIN59_CONFIG PORTE_PCR1
+#define CORE_PIN60_CONFIG PORTE_PCR2
+#define CORE_PIN61_CONFIG PORTE_PCR3
+#define CORE_PIN62_CONFIG PORTE_PCR4
+#define CORE_PIN63_CONFIG PORTE_PCR5
+
+#define CORE_ADC0_PIN 14
+#define CORE_ADC1_PIN 15
+#define CORE_ADC2_PIN 16
+#define CORE_ADC3_PIN 17
+#define CORE_ADC4_PIN 18
+#define CORE_ADC5_PIN 19
+#define CORE_ADC6_PIN 20
+#define CORE_ADC7_PIN 21
+#define CORE_ADC8_PIN 22
+#define CORE_ADC9_PIN 23
+#define CORE_ADC10_PIN 64
+#define CORE_ADC11_PIN 65
+#define CORE_ADC12_PIN 31
+#define CORE_ADC13_PIN 32
+#define CORE_ADC14_PIN 33
+#define CORE_ADC15_PIN 34
+#define CORE_ADC16_PIN 35
+#define CORE_ADC17_PIN 36
+#define CORE_ADC18_PIN 37
+#define CORE_ADC19_PIN 38
+#define CORE_ADC20_PIN 39
+#define CORE_ADC21_PIN 66
+#define CORE_ADC22_PIN 67
+#define CORE_ADC23_PIN 49
+#define CORE_ADC24_PIN 50
+#define CORE_ADC25_PIN 68
+#define CORE_ADC26_PIN 69
+
+#define CORE_RXD0_PIN 0
+#define CORE_TXD0_PIN 1
+#define CORE_RXD1_PIN 9
+#define CORE_TXD1_PIN 10
+#define CORE_RXD2_PIN 7
+#define CORE_TXD2_PIN 8
+#define CORE_RXD3_PIN 31
+#define CORE_TXD3_PIN 32
+#define CORE_RXD4_PIN 34
+#define CORE_TXD4_PIN 33
+
+#define CORE_INT0_PIN 0
+#define CORE_INT1_PIN 1
+#define CORE_INT2_PIN 2
+#define CORE_INT3_PIN 3
+#define CORE_INT4_PIN 4
+#define CORE_INT5_PIN 5
+#define CORE_INT6_PIN 6
+#define CORE_INT7_PIN 7
+#define CORE_INT8_PIN 8
+#define CORE_INT9_PIN 9
+#define CORE_INT10_PIN 10
+#define CORE_INT11_PIN 11
+#define CORE_INT12_PIN 12
+#define CORE_INT13_PIN 13
+#define CORE_INT14_PIN 14
+#define CORE_INT15_PIN 15
+#define CORE_INT16_PIN 16
+#define CORE_INT17_PIN 17
+#define CORE_INT18_PIN 18
+#define CORE_INT19_PIN 19
+#define CORE_INT20_PIN 20
+#define CORE_INT21_PIN 21
+#define CORE_INT22_PIN 22
+#define CORE_INT23_PIN 23
+#define CORE_INT24_PIN 24
+#define CORE_INT25_PIN 25
+#define CORE_INT26_PIN 26
+#define CORE_INT27_PIN 27
+#define CORE_INT28_PIN 28
+#define CORE_INT29_PIN 29
+#define CORE_INT30_PIN 30
+#define CORE_INT31_PIN 31
+#define CORE_INT32_PIN 32
+#define CORE_INT33_PIN 33
+#define CORE_INT34_PIN 34
+#define CORE_INT35_PIN 35
+#define CORE_INT36_PIN 36
+#define CORE_INT37_PIN 37
+#define CORE_INT38_PIN 38
+#define CORE_INT39_PIN 39
+#define CORE_INT40_PIN 40
+#define CORE_INT41_PIN 41
+#define CORE_INT42_PIN 42
+#define CORE_INT43_PIN 43
+#define CORE_INT44_PIN 44
+#define CORE_INT45_PIN 45
+#define CORE_INT46_PIN 46
+#define CORE_INT47_PIN 47
+#define CORE_INT48_PIN 48
+#define CORE_INT49_PIN 49
+#define CORE_INT50_PIN 50
+#define CORE_INT51_PIN 51
+#define CORE_INT52_PIN 52
+#define CORE_INT53_PIN 53
+#define CORE_INT54_PIN 54
+#define CORE_INT55_PIN 55
+#define CORE_INT56_PIN 56
+#define CORE_INT57_PIN 57
+#define CORE_INT58_PIN 58
+#define CORE_INT59_PIN 59
+#define CORE_INT60_PIN 60
+#define CORE_INT61_PIN 61
+#define CORE_INT62_PIN 62
+#define CORE_INT63_PIN 63
+#define CORE_INT_EVERY_PIN 1
+
+#endif
+
+
+#if defined(__MK20DX128__)
+#define CORE_FTM0_CH0_PIN 22
+#define CORE_FTM0_CH1_PIN 23
+#define CORE_FTM0_CH2_PIN 9
+#define CORE_FTM0_CH3_PIN 10
+#define CORE_FTM0_CH4_PIN 6
+#define CORE_FTM0_CH5_PIN 20
+#define CORE_FTM0_CH6_PIN 21
+#define CORE_FTM0_CH7_PIN 5
+#define CORE_FTM1_CH0_PIN 3
+#define CORE_FTM1_CH1_PIN 4
+#elif defined(__MK20DX256__)
+#define CORE_FTM0_CH0_PIN 22
+#define CORE_FTM0_CH1_PIN 23
+#define CORE_FTM0_CH2_PIN 9
+#define CORE_FTM0_CH3_PIN 10
+#define CORE_FTM0_CH4_PIN 6
+#define CORE_FTM0_CH5_PIN 20
+#define CORE_FTM0_CH6_PIN 21
+#define CORE_FTM0_CH7_PIN 5
+#define CORE_FTM1_CH0_PIN 3
+#define CORE_FTM1_CH1_PIN 4
+#define CORE_FTM2_CH0_PIN 32
+#define CORE_FTM2_CH1_PIN 25
+#elif defined(__MKL26Z64__)
+#define CORE_TPM0_CH0_PIN 22
+#define CORE_TPM0_CH1_PIN 23
+#define CORE_TPM0_CH2_PIN 9
+#define CORE_TPM0_CH3_PIN 10
+#define CORE_TPM0_CH4_PIN 6
+#define CORE_TPM0_CH5_PIN 20
+#define CORE_TPM1_CH0_PIN 16
+#define CORE_TPM1_CH1_PIN 17
+#define CORE_TPM2_CH0_PIN 3
+#define CORE_TPM2_CH1_PIN 4
+#elif defined(__MK64FX512__)
+#define CORE_FTM0_CH0_PIN 22
+#define CORE_FTM0_CH1_PIN 23
+#define CORE_FTM0_CH2_PIN 9
+#define CORE_FTM0_CH3_PIN 10
+#define CORE_FTM0_CH4_PIN 6
+#define CORE_FTM0_CH5_PIN 20
+#define CORE_FTM0_CH6_PIN 21
+#define CORE_FTM0_CH7_PIN 5
+#define CORE_FTM1_CH0_PIN 3
+#define CORE_FTM1_CH1_PIN 4
+#define CORE_FTM2_CH0_PIN 29
+#define CORE_FTM2_CH1_PIN 30
+#define CORE_FTM3_CH0_PIN 2
+#define CORE_FTM3_CH1_PIN 14
+#define CORE_FTM3_CH2_PIN 7
+#define CORE_FTM3_CH3_PIN 8
+#define CORE_FTM3_CH4_PIN 35
+#define CORE_FTM3_CH5_PIN 36
+#define CORE_FTM3_CH6_PIN 37
+#define CORE_FTM3_CH7_PIN 38
+#elif defined(__MK66FX1M0__)
+#define CORE_FTM0_CH0_PIN 22
+#define CORE_FTM0_CH1_PIN 23
+#define CORE_FTM0_CH2_PIN 9
+#define CORE_FTM0_CH3_PIN 10
+#define CORE_FTM0_CH4_PIN 6
+#define CORE_FTM0_CH5_PIN 20
+#define CORE_FTM0_CH6_PIN 21
+#define CORE_FTM0_CH7_PIN 5
+#define CORE_FTM1_CH0_PIN 3
+#define CORE_FTM1_CH1_PIN 4
+#define CORE_FTM2_CH0_PIN 29
+#define CORE_FTM2_CH1_PIN 30
+#define CORE_FTM3_CH0_PIN 2
+#define CORE_FTM3_CH1_PIN 14
+#define CORE_FTM3_CH2_PIN 7
+#define CORE_FTM3_CH3_PIN 8
+#define CORE_FTM3_CH4_PIN 35
+#define CORE_FTM3_CH5_PIN 36
+#define CORE_FTM3_CH6_PIN 37
+#define CORE_FTM3_CH7_PIN 38
+#define CORE_TPM1_CH0_PIN 16
+#define CORE_TPM1_CH1_PIN 17
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void digitalWrite(uint8_t pin, uint8_t val);
+// static inline void digitalWriteFast(uint8_t pin, uint8_t val) __attribute__((always_inline, unused));
+// static inline void digitalWriteFast(uint8_t pin, uint8_t val)
+// {
+// if (__builtin_constant_p(pin)) {
+// if (val) {
+// if (pin == 0) {
+// CORE_PIN0_PORTSET = CORE_PIN0_BITMASK;
+// } else if (pin == 1) {
+// CORE_PIN1_PORTSET = CORE_PIN1_BITMASK;
+// } else if (pin == 2) {
+// CORE_PIN2_PORTSET = CORE_PIN2_BITMASK;
+// } else if (pin == 3) {
+// CORE_PIN3_PORTSET = CORE_PIN3_BITMASK;
+// } else if (pin == 4) {
+// CORE_PIN4_PORTSET = CORE_PIN4_BITMASK;
+// } else if (pin == 5) {
+// CORE_PIN5_PORTSET = CORE_PIN5_BITMASK;
+// } else if (pin == 6) {
+// CORE_PIN6_PORTSET = CORE_PIN6_BITMASK;
+// } else if (pin == 7) {
+// CORE_PIN7_PORTSET = CORE_PIN7_BITMASK;
+// } else if (pin == 8) {
+// CORE_PIN8_PORTSET = CORE_PIN8_BITMASK;
+// } else if (pin == 9) {
+// CORE_PIN9_PORTSET = CORE_PIN9_BITMASK;
+// } else if (pin == 10) {
+// CORE_PIN10_PORTSET = CORE_PIN10_BITMASK;
+// } else if (pin == 11) {
+// CORE_PIN11_PORTSET = CORE_PIN11_BITMASK;
+// } else if (pin == 12) {
+// CORE_PIN12_PORTSET = CORE_PIN12_BITMASK;
+// } else if (pin == 13) {
+// CORE_PIN13_PORTSET = CORE_PIN13_BITMASK;
+// } else if (pin == 14) {
+// CORE_PIN14_PORTSET = CORE_PIN14_BITMASK;
+// } else if (pin == 15) {
+// CORE_PIN15_PORTSET = CORE_PIN15_BITMASK;
+// } else if (pin == 16) {
+// CORE_PIN16_PORTSET = CORE_PIN16_BITMASK;
+// } else if (pin == 17) {
+// CORE_PIN17_PORTSET = CORE_PIN17_BITMASK;
+// } else if (pin == 18) {
+// CORE_PIN18_PORTSET = CORE_PIN18_BITMASK;
+// } else if (pin == 19) {
+// CORE_PIN19_PORTSET = CORE_PIN19_BITMASK;
+// } else if (pin == 20) {
+// CORE_PIN20_PORTSET = CORE_PIN20_BITMASK;
+// } else if (pin == 21) {
+// CORE_PIN21_PORTSET = CORE_PIN21_BITMASK;
+// } else if (pin == 22) {
+// CORE_PIN22_PORTSET = CORE_PIN22_BITMASK;
+// } else if (pin == 23) {
+// CORE_PIN23_PORTSET = CORE_PIN23_BITMASK;
+// } else if (pin == 24) {
+// CORE_PIN24_PORTSET = CORE_PIN24_BITMASK;
+// } else if (pin == 25) {
+// CORE_PIN25_PORTSET = CORE_PIN25_BITMASK;
+// } else if (pin == 26) {
+// CORE_PIN26_PORTSET = CORE_PIN26_BITMASK;
+// }
+// #if defined(CORE_PIN27_PORTSET)
+// else if (pin == 27) {
+// CORE_PIN27_PORTSET = CORE_PIN27_BITMASK;
+// } else if (pin == 28) {
+// CORE_PIN28_PORTSET = CORE_PIN28_BITMASK;
+// } else if (pin == 29) {
+// CORE_PIN29_PORTSET = CORE_PIN29_BITMASK;
+// } else if (pin == 30) {
+// CORE_PIN30_PORTSET = CORE_PIN30_BITMASK;
+// } else if (pin == 31) {
+// CORE_PIN31_PORTSET = CORE_PIN31_BITMASK;
+// } else if (pin == 32) {
+// CORE_PIN32_PORTSET = CORE_PIN32_BITMASK;
+// } else if (pin == 33) {
+// CORE_PIN33_PORTSET = CORE_PIN33_BITMASK;
+// }
+// #endif
+// #if defined(CORE_PIN34_PORTSET)
+// else if (pin == 34) {
+// CORE_PIN34_PORTSET = CORE_PIN34_BITMASK;
+// } else if (pin == 35) {
+// CORE_PIN35_PORTSET = CORE_PIN35_BITMASK;
+// } else if (pin == 36) {
+// CORE_PIN36_PORTSET = CORE_PIN36_BITMASK;
+// } else if (pin == 37) {
+// CORE_PIN37_PORTSET = CORE_PIN37_BITMASK;
+// } else if (pin == 38) {
+// CORE_PIN38_PORTSET = CORE_PIN38_BITMASK;
+// } else if (pin == 39) {
+// CORE_PIN39_PORTSET = CORE_PIN39_BITMASK;
+// } else if (pin == 40) {
+// CORE_PIN40_PORTSET = CORE_PIN40_BITMASK;
+// } else if (pin == 41) {
+// CORE_PIN41_PORTSET = CORE_PIN41_BITMASK;
+// } else if (pin == 42) {
+// CORE_PIN42_PORTSET = CORE_PIN42_BITMASK;
+// } else if (pin == 43) {
+// CORE_PIN43_PORTSET = CORE_PIN43_BITMASK;
+// } else if (pin == 44) {
+// CORE_PIN44_PORTSET = CORE_PIN44_BITMASK;
+// } else if (pin == 45) {
+// CORE_PIN45_PORTSET = CORE_PIN45_BITMASK;
+// } else if (pin == 46) {
+// CORE_PIN46_PORTSET = CORE_PIN46_BITMASK;
+// } else if (pin == 47) {
+// CORE_PIN47_PORTSET = CORE_PIN47_BITMASK;
+// } else if (pin == 48) {
+// CORE_PIN48_PORTSET = CORE_PIN48_BITMASK;
+// } else if (pin == 49) {
+// CORE_PIN49_PORTSET = CORE_PIN49_BITMASK;
+// } else if (pin == 50) {
+// CORE_PIN50_PORTSET = CORE_PIN50_BITMASK;
+// } else if (pin == 51) {
+// CORE_PIN51_PORTSET = CORE_PIN51_BITMASK;
+// } else if (pin == 52) {
+// CORE_PIN52_PORTSET = CORE_PIN52_BITMASK;
+// } else if (pin == 53) {
+// CORE_PIN53_PORTSET = CORE_PIN53_BITMASK;
+// } else if (pin == 54) {
+// CORE_PIN54_PORTSET = CORE_PIN54_BITMASK;
+// } else if (pin == 55) {
+// CORE_PIN55_PORTSET = CORE_PIN55_BITMASK;
+// } else if (pin == 56) {
+// CORE_PIN56_PORTSET = CORE_PIN56_BITMASK;
+// } else if (pin == 57) {
+// CORE_PIN57_PORTSET = CORE_PIN57_BITMASK;
+// } else if (pin == 58) {
+// CORE_PIN58_PORTSET = CORE_PIN58_BITMASK;
+// } else if (pin == 59) {
+// CORE_PIN59_PORTSET = CORE_PIN59_BITMASK;
+// } else if (pin == 60) {
+// CORE_PIN60_PORTSET = CORE_PIN60_BITMASK;
+// } else if (pin == 61) {
+// CORE_PIN61_PORTSET = CORE_PIN61_BITMASK;
+// } else if (pin == 62) {
+// CORE_PIN62_PORTSET = CORE_PIN62_BITMASK;
+// } else if (pin == 63) {
+// CORE_PIN63_PORTSET = CORE_PIN63_BITMASK;
+// }
+// #endif
+// } else {
+// if (pin == 0) {
+// CORE_PIN0_PORTCLEAR = CORE_PIN0_BITMASK;
+// } else if (pin == 1) {
+// CORE_PIN1_PORTCLEAR = CORE_PIN1_BITMASK;
+// } else if (pin == 2) {
+// CORE_PIN2_PORTCLEAR = CORE_PIN2_BITMASK;
+// } else if (pin == 3) {
+// CORE_PIN3_PORTCLEAR = CORE_PIN3_BITMASK;
+// } else if (pin == 4) {
+// CORE_PIN4_PORTCLEAR = CORE_PIN4_BITMASK;
+// } else if (pin == 5) {
+// CORE_PIN5_PORTCLEAR = CORE_PIN5_BITMASK;
+// } else if (pin == 6) {
+// CORE_PIN6_PORTCLEAR = CORE_PIN6_BITMASK;
+// } else if (pin == 7) {
+// CORE_PIN7_PORTCLEAR = CORE_PIN7_BITMASK;
+// } else if (pin == 8) {
+// CORE_PIN8_PORTCLEAR = CORE_PIN8_BITMASK;
+// } else if (pin == 9) {
+// CORE_PIN9_PORTCLEAR = CORE_PIN9_BITMASK;
+// } else if (pin == 10) {
+// CORE_PIN10_PORTCLEAR = CORE_PIN10_BITMASK;
+// } else if (pin == 11) {
+// CORE_PIN11_PORTCLEAR = CORE_PIN11_BITMASK;
+// } else if (pin == 12) {
+// CORE_PIN12_PORTCLEAR = CORE_PIN12_BITMASK;
+// } else if (pin == 13) {
+// CORE_PIN13_PORTCLEAR = CORE_PIN13_BITMASK;
+// } else if (pin == 14) {
+// CORE_PIN14_PORTCLEAR = CORE_PIN14_BITMASK;
+// } else if (pin == 15) {
+// CORE_PIN15_PORTCLEAR = CORE_PIN15_BITMASK;
+// } else if (pin == 16) {
+// CORE_PIN16_PORTCLEAR = CORE_PIN16_BITMASK;
+// } else if (pin == 17) {
+// CORE_PIN17_PORTCLEAR = CORE_PIN17_BITMASK;
+// } else if (pin == 18) {
+// CORE_PIN18_PORTCLEAR = CORE_PIN18_BITMASK;
+// } else if (pin == 19) {
+// CORE_PIN19_PORTCLEAR = CORE_PIN19_BITMASK;
+// } else if (pin == 20) {
+// CORE_PIN20_PORTCLEAR = CORE_PIN20_BITMASK;
+// } else if (pin == 21) {
+// CORE_PIN21_PORTCLEAR = CORE_PIN21_BITMASK;
+// } else if (pin == 22) {
+// CORE_PIN22_PORTCLEAR = CORE_PIN22_BITMASK;
+// } else if (pin == 23) {
+// CORE_PIN23_PORTCLEAR = CORE_PIN23_BITMASK;
+// } else if (pin == 24) {
+// CORE_PIN24_PORTCLEAR = CORE_PIN24_BITMASK;
+// } else if (pin == 25) {
+// CORE_PIN25_PORTCLEAR = CORE_PIN25_BITMASK;
+// } else if (pin == 26) {
+// CORE_PIN26_PORTCLEAR = CORE_PIN26_BITMASK;
+// }
+// #if defined(CORE_PIN27_PORTCLEAR)
+// else if (pin == 27) {
+// CORE_PIN27_PORTCLEAR = CORE_PIN27_BITMASK;
+// } else if (pin == 28) {
+// CORE_PIN28_PORTCLEAR = CORE_PIN28_BITMASK;
+// } else if (pin == 29) {
+// CORE_PIN29_PORTCLEAR = CORE_PIN29_BITMASK;
+// } else if (pin == 30) {
+// CORE_PIN30_PORTCLEAR = CORE_PIN30_BITMASK;
+// } else if (pin == 31) {
+// CORE_PIN31_PORTCLEAR = CORE_PIN31_BITMASK;
+// } else if (pin == 32) {
+// CORE_PIN32_PORTCLEAR = CORE_PIN32_BITMASK;
+// } else if (pin == 33) {
+// CORE_PIN33_PORTCLEAR = CORE_PIN33_BITMASK;
+// }
+// #endif
+// #if defined(CORE_PIN34_PORTCLEAR)
+// else if (pin == 34) {
+// CORE_PIN34_PORTCLEAR = CORE_PIN34_BITMASK;
+// } else if (pin == 35) {
+// CORE_PIN35_PORTCLEAR = CORE_PIN35_BITMASK;
+// } else if (pin == 36) {
+// CORE_PIN36_PORTCLEAR = CORE_PIN36_BITMASK;
+// } else if (pin == 37) {
+// CORE_PIN37_PORTCLEAR = CORE_PIN37_BITMASK;
+// } else if (pin == 38) {
+// CORE_PIN38_PORTCLEAR = CORE_PIN38_BITMASK;
+// } else if (pin == 39) {
+// CORE_PIN39_PORTCLEAR = CORE_PIN39_BITMASK;
+// } else if (pin == 40) {
+// CORE_PIN40_PORTCLEAR = CORE_PIN40_BITMASK;
+// } else if (pin == 41) {
+// CORE_PIN41_PORTCLEAR = CORE_PIN41_BITMASK;
+// } else if (pin == 42) {
+// CORE_PIN42_PORTCLEAR = CORE_PIN42_BITMASK;
+// } else if (pin == 43) {
+// CORE_PIN43_PORTCLEAR = CORE_PIN43_BITMASK;
+// } else if (pin == 44) {
+// CORE_PIN44_PORTCLEAR = CORE_PIN44_BITMASK;
+// } else if (pin == 45) {
+// CORE_PIN45_PORTCLEAR = CORE_PIN45_BITMASK;
+// } else if (pin == 46) {
+// CORE_PIN46_PORTCLEAR = CORE_PIN46_BITMASK;
+// } else if (pin == 47) {
+// CORE_PIN47_PORTCLEAR = CORE_PIN47_BITMASK;
+// } else if (pin == 48) {
+// CORE_PIN48_PORTCLEAR = CORE_PIN48_BITMASK;
+// } else if (pin == 49) {
+// CORE_PIN49_PORTCLEAR = CORE_PIN49_BITMASK;
+// } else if (pin == 50) {
+// CORE_PIN50_PORTCLEAR = CORE_PIN50_BITMASK;
+// } else if (pin == 51) {
+// CORE_PIN51_PORTCLEAR = CORE_PIN51_BITMASK;
+// } else if (pin == 52) {
+// CORE_PIN52_PORTCLEAR = CORE_PIN52_BITMASK;
+// } else if (pin == 53) {
+// CORE_PIN53_PORTCLEAR = CORE_PIN53_BITMASK;
+// } else if (pin == 54) {
+// CORE_PIN54_PORTCLEAR = CORE_PIN54_BITMASK;
+// } else if (pin == 55) {
+// CORE_PIN55_PORTCLEAR = CORE_PIN55_BITMASK;
+// } else if (pin == 56) {
+// CORE_PIN56_PORTCLEAR = CORE_PIN56_BITMASK;
+// } else if (pin == 57) {
+// CORE_PIN57_PORTCLEAR = CORE_PIN57_BITMASK;
+// } else if (pin == 58) {
+// CORE_PIN58_PORTCLEAR = CORE_PIN58_BITMASK;
+// } else if (pin == 59) {
+// CORE_PIN59_PORTCLEAR = CORE_PIN59_BITMASK;
+// } else if (pin == 60) {
+// CORE_PIN60_PORTCLEAR = CORE_PIN60_BITMASK;
+// } else if (pin == 61) {
+// CORE_PIN61_PORTCLEAR = CORE_PIN61_BITMASK;
+// } else if (pin == 62) {
+// CORE_PIN62_PORTCLEAR = CORE_PIN62_BITMASK;
+// } else if (pin == 63) {
+// CORE_PIN63_PORTCLEAR = CORE_PIN63_BITMASK;
+// }
+// #endif
+// }
+// } else {
+// if (val) {
+// *portSetRegister(pin) = digitalPinToBitMask(pin);
+// } else {
+// *portClearRegister(pin) = digitalPinToBitMask(pin);
+// }
+// }
+// }
+
+uint8_t digitalRead(uint8_t pin);
+// static inline uint8_t digitalReadFast(uint8_t pin) __attribute__((always_inline, unused));
+// static inline uint8_t digitalReadFast(uint8_t pin)
+// {
+// if (__builtin_constant_p(pin)) {
+// if (pin == 0) {
+// return (CORE_PIN0_PINREG & CORE_PIN0_BITMASK) ? 1 : 0;
+// } else if (pin == 1) {
+// return (CORE_PIN1_PINREG & CORE_PIN1_BITMASK) ? 1 : 0;
+// } else if (pin == 2) {
+// return (CORE_PIN2_PINREG & CORE_PIN2_BITMASK) ? 1 : 0;
+// } else if (pin == 3) {
+// return (CORE_PIN3_PINREG & CORE_PIN3_BITMASK) ? 1 : 0;
+// } else if (pin == 4) {
+// return (CORE_PIN4_PINREG & CORE_PIN4_BITMASK) ? 1 : 0;
+// } else if (pin == 5) {
+// return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0;
+// } else if (pin == 6) {
+// return (CORE_PIN6_PINREG & CORE_PIN6_BITMASK) ? 1 : 0;
+// } else if (pin == 7) {
+// return (CORE_PIN7_PINREG & CORE_PIN7_BITMASK) ? 1 : 0;
+// } else if (pin == 8) {
+// return (CORE_PIN8_PINREG & CORE_PIN8_BITMASK) ? 1 : 0;
+// } else if (pin == 9) {
+// return (CORE_PIN9_PINREG & CORE_PIN9_BITMASK) ? 1 : 0;
+// } else if (pin == 10) {
+// return (CORE_PIN10_PINREG & CORE_PIN10_BITMASK) ? 1 : 0;
+// } else if (pin == 11) {
+// return (CORE_PIN11_PINREG & CORE_PIN11_BITMASK) ? 1 : 0;
+// } else if (pin == 12) {
+// return (CORE_PIN12_PINREG & CORE_PIN12_BITMASK) ? 1 : 0;
+// } else if (pin == 13) {
+// return (CORE_PIN13_PINREG & CORE_PIN13_BITMASK) ? 1 : 0;
+// } else if (pin == 14) {
+// return (CORE_PIN14_PINREG & CORE_PIN14_BITMASK) ? 1 : 0;
+// } else if (pin == 15) {
+// return (CORE_PIN15_PINREG & CORE_PIN15_BITMASK) ? 1 : 0;
+// } else if (pin == 16) {
+// return (CORE_PIN16_PINREG & CORE_PIN16_BITMASK) ? 1 : 0;
+// } else if (pin == 17) {
+// return (CORE_PIN17_PINREG & CORE_PIN17_BITMASK) ? 1 : 0;
+// } else if (pin == 18) {
+// return (CORE_PIN18_PINREG & CORE_PIN18_BITMASK) ? 1 : 0;
+// } else if (pin == 19) {
+// return (CORE_PIN19_PINREG & CORE_PIN19_BITMASK) ? 1 : 0;
+// } else if (pin == 20) {
+// return (CORE_PIN20_PINREG & CORE_PIN20_BITMASK) ? 1 : 0;
+// } else if (pin == 21) {
+// return (CORE_PIN21_PINREG & CORE_PIN21_BITMASK) ? 1 : 0;
+// } else if (pin == 22) {
+// return (CORE_PIN22_PINREG & CORE_PIN22_BITMASK) ? 1 : 0;
+// } else if (pin == 23) {
+// return (CORE_PIN23_PINREG & CORE_PIN23_BITMASK) ? 1 : 0;
+// } else if (pin == 24) {
+// return (CORE_PIN24_PINREG & CORE_PIN24_BITMASK) ? 1 : 0;
+// } else if (pin == 25) {
+// return (CORE_PIN25_PINREG & CORE_PIN25_BITMASK) ? 1 : 0;
+// } else if (pin == 26) {
+// return (CORE_PIN26_PINREG & CORE_PIN26_BITMASK) ? 1 : 0;
+// }
+// #if defined(CORE_PIN27_PINREG)
+// else if (pin == 27) {
+// return (CORE_PIN27_PINREG & CORE_PIN27_BITMASK) ? 1 : 0;
+// } else if (pin == 28) {
+// return (CORE_PIN28_PINREG & CORE_PIN28_BITMASK) ? 1 : 0;
+// } else if (pin == 29) {
+// return (CORE_PIN29_PINREG & CORE_PIN29_BITMASK) ? 1 : 0;
+// } else if (pin == 30) {
+// return (CORE_PIN30_PINREG & CORE_PIN30_BITMASK) ? 1 : 0;
+// } else if (pin == 31) {
+// return (CORE_PIN31_PINREG & CORE_PIN31_BITMASK) ? 1 : 0;
+// } else if (pin == 32) {
+// return (CORE_PIN32_PINREG & CORE_PIN32_BITMASK) ? 1 : 0;
+// } else if (pin == 33) {
+// return (CORE_PIN33_PINREG & CORE_PIN33_BITMASK) ? 1 : 0;
+// }
+// #endif
+// #if defined(CORE_PIN34_PINREG)
+// else if (pin == 34) {
+// return (CORE_PIN34_PINREG & CORE_PIN34_BITMASK) ? 1 : 0;
+// } else if (pin == 35) {
+// return (CORE_PIN35_PINREG & CORE_PIN35_BITMASK) ? 1 : 0;
+// } else if (pin == 36) {
+// return (CORE_PIN36_PINREG & CORE_PIN36_BITMASK) ? 1 : 0;
+// } else if (pin == 37) {
+// return (CORE_PIN37_PINREG & CORE_PIN37_BITMASK) ? 1 : 0;
+// } else if (pin == 38) {
+// return (CORE_PIN38_PINREG & CORE_PIN38_BITMASK) ? 1 : 0;
+// } else if (pin == 39) {
+// return (CORE_PIN39_PINREG & CORE_PIN39_BITMASK) ? 1 : 0;
+// } else if (pin == 40) {
+// return (CORE_PIN40_PINREG & CORE_PIN40_BITMASK) ? 1 : 0;
+// } else if (pin == 41) {
+// return (CORE_PIN41_PINREG & CORE_PIN41_BITMASK) ? 1 : 0;
+// } else if (pin == 42) {
+// return (CORE_PIN42_PINREG & CORE_PIN42_BITMASK) ? 1 : 0;
+// } else if (pin == 43) {
+// return (CORE_PIN43_PINREG & CORE_PIN43_BITMASK) ? 1 : 0;
+// } else if (pin == 44) {
+// return (CORE_PIN44_PINREG & CORE_PIN44_BITMASK) ? 1 : 0;
+// } else if (pin == 45) {
+// return (CORE_PIN45_PINREG & CORE_PIN45_BITMASK) ? 1 : 0;
+// } else if (pin == 46) {
+// return (CORE_PIN46_PINREG & CORE_PIN46_BITMASK) ? 1 : 0;
+// } else if (pin == 47) {
+// return (CORE_PIN47_PINREG & CORE_PIN47_BITMASK) ? 1 : 0;
+// } else if (pin == 48) {
+// return (CORE_PIN48_PINREG & CORE_PIN48_BITMASK) ? 1 : 0;
+// } else if (pin == 49) {
+// return (CORE_PIN49_PINREG & CORE_PIN49_BITMASK) ? 1 : 0;
+// } else if (pin == 50) {
+// return (CORE_PIN50_PINREG & CORE_PIN50_BITMASK) ? 1 : 0;
+// } else if (pin == 51) {
+// return (CORE_PIN51_PINREG & CORE_PIN51_BITMASK) ? 1 : 0;
+// } else if (pin == 52) {
+// return (CORE_PIN52_PINREG & CORE_PIN52_BITMASK) ? 1 : 0;
+// } else if (pin == 53) {
+// return (CORE_PIN53_PINREG & CORE_PIN53_BITMASK) ? 1 : 0;
+// } else if (pin == 54) {
+// return (CORE_PIN54_PINREG & CORE_PIN54_BITMASK) ? 1 : 0;
+// } else if (pin == 55) {
+// return (CORE_PIN55_PINREG & CORE_PIN55_BITMASK) ? 1 : 0;
+// } else if (pin == 56) {
+// return (CORE_PIN56_PINREG & CORE_PIN56_BITMASK) ? 1 : 0;
+// } else if (pin == 57) {
+// return (CORE_PIN57_PINREG & CORE_PIN57_BITMASK) ? 1 : 0;
+// } else if (pin == 58) {
+// return (CORE_PIN58_PINREG & CORE_PIN58_BITMASK) ? 1 : 0;
+// } else if (pin == 59) {
+// return (CORE_PIN59_PINREG & CORE_PIN59_BITMASK) ? 1 : 0;
+// } else if (pin == 60) {
+// return (CORE_PIN60_PINREG & CORE_PIN60_BITMASK) ? 1 : 0;
+// } else if (pin == 61) {
+// return (CORE_PIN61_PINREG & CORE_PIN61_BITMASK) ? 1 : 0;
+// } else if (pin == 62) {
+// return (CORE_PIN62_PINREG & CORE_PIN62_BITMASK) ? 1 : 0;
+// } else if (pin == 63) {
+// return (CORE_PIN63_PINREG & CORE_PIN63_BITMASK) ? 1 : 0;
+// }
+// #endif
+// else {
+// return 0;
+// }
+// } else {
+// #if defined(KINETISK)
+// return *portInputRegister(pin);
+// #else
+// return (*portInputRegister(pin) & digitalPinToBitMask(pin)) ? 1 : 0;
+// #endif
+// }
+// }
+
+
+void pinMode(uint8_t pin, uint8_t mode);
+void init_pins(void);
+void analogWrite(uint8_t pin, int val);
+
+uint32_t analogWriteRes(uint32_t bits);
+static inline uint32_t analogWriteResolution(uint32_t bits) { return analogWriteRes(bits); }
+void analogWriteFrequency(uint8_t pin, float frequency);
+// void analogWriteDAC0(int val);
+// void analogWriteDAC1(int val);
+// #ifdef __cplusplus
+// void attachInterruptVector(IRQ_NUMBER_t irq, void (*function)(void));
+// #else
+// void attachInterruptVector(enum IRQ_NUMBER_t irq, void (*function)(void));
+// #endif
+// void attachInterrupt(uint8_t pin, void (*function)(void), int mode);
+// void detachInterrupt(uint8_t pin);
+// void _init_Teensyduino_internal_(void);
+
+int analogRead(uint8_t pin);
+void analogReference(uint8_t type);
+void analogReadRes(unsigned int bits);
+static inline void analogReadResolution(unsigned int bits) { analogReadRes(bits); }
+void analogReadAveraging(unsigned int num);
+void analog_init(void);
+
+
+#if defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__)
+#define DEFAULT 0
+#define INTERNAL 2
+#define INTERNAL1V2 2
+#define INTERNAL1V1 2
+#define EXTERNAL 0
+
+#elif defined(__MKL26Z64__)
+#define DEFAULT 0
+#define INTERNAL 0
+#define EXTERNAL 1
+#endif
+
+
+int touchRead(uint8_t pin);
+
+
+// static inline void shiftOut(uint8_t, uint8_t, uint8_t, uint8_t) __attribute__((always_inline, unused));
+extern void _shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t value) __attribute__((noinline));
+extern void shiftOut_lsbFirst(uint8_t dataPin, uint8_t clockPin, uint8_t value) __attribute__((noinline));
+extern void shiftOut_msbFirst(uint8_t dataPin, uint8_t clockPin, uint8_t value) __attribute__((noinline));
+
+// static inline void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t value)
+// {
+// if (__builtin_constant_p(bitOrder)) {
+// if (bitOrder == LSBFIRST) {
+// shiftOut_lsbFirst(dataPin, clockPin, value);
+// } else {
+// shiftOut_msbFirst(dataPin, clockPin, value);
+// }
+// } else {
+// _shiftOut(dataPin, clockPin, bitOrder, value);
+// }
+// }
+
+static inline uint8_t shiftIn(uint8_t, uint8_t, uint8_t) __attribute__((always_inline, unused));
+extern uint8_t _shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) __attribute__((noinline));
+extern uint8_t shiftIn_lsbFirst(uint8_t dataPin, uint8_t clockPin) __attribute__((noinline));
+extern uint8_t shiftIn_msbFirst(uint8_t dataPin, uint8_t clockPin) __attribute__((noinline));
+
+static inline uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
+{
+ if (__builtin_constant_p(bitOrder)) {
+ if (bitOrder == LSBFIRST) {
+ return shiftIn_lsbFirst(dataPin, clockPin);
+ } else {
+ return shiftIn_msbFirst(dataPin, clockPin);
+ }
+ } else {
+ return _shiftIn(dataPin, clockPin, bitOrder);
+ }
+}
+
+void _reboot_Teensyduino_(void);
+void _restart_Teensyduino_(void);
+
+void yield(void);
+
+void delay(uint32_t msec);
+
+// extern volatile uint32_t systick_millis_count;
+
+// static inline uint32_t millis(void) __attribute__((always_inline, unused));
+// static inline uint32_t millis(void)
+// {
+// // Reading a volatile variable to another volatile
+// // seems redundant, but isn't for some cases.
+// // Eventually this should probably be replaced by a
+// // proper memory barrier or other technique. Please
+// // do not remove this "redundant" code without
+// // carefully verifying the case mentioned here:
+// //
+// // https://forum.pjrc.com/threads/17469-millis%28%29-on-teensy-3?p=104924&viewfull=1#post104924
+// //
+// volatile uint32_t ret = systick_millis_count; // single aligned 32 bit is atomic
+// return ret;
+// }
+
+// uint32_t micros(void);
+/*
+static inline void delayMicroseconds(uint32_t) __attribute__((always_inline, unused));
+static inline void delayMicroseconds(uint32_t usec)
+{
+#if F_CPU == 256000000
+ uint32_t n = usec * 85;
+#elif F_CPU == 240000000
+ uint32_t n = usec * 80;
+#elif F_CPU == 216000000
+ uint32_t n = usec * 72;
+#elif F_CPU == 192000000
+ uint32_t n = usec * 64;
+#elif F_CPU == 180000000
+ uint32_t n = usec * 60;
+#elif F_CPU == 168000000
+ uint32_t n = usec * 56;
+#elif F_CPU == 144000000
+ uint32_t n = usec * 48;
+#elif F_CPU == 120000000
+ uint32_t n = usec * 40;
+#elif F_CPU == 96000000
+ uint32_t n = usec << 5;
+#elif F_CPU == 72000000
+ uint32_t n = usec * 24;
+#elif F_CPU == 48000000
+ uint32_t n = usec << 4;
+#elif F_CPU == 24000000
+ uint32_t n = usec << 3;
+#elif F_CPU == 16000000
+ uint32_t n = usec << 2;
+#elif F_CPU == 8000000
+ uint32_t n = usec << 1;
+#elif F_CPU == 4000000
+ uint32_t n = usec;
+#elif F_CPU == 2000000
+ uint32_t n = usec >> 1;
+#endif
+ // changed because a delay of 1 micro Sec @ 2MHz will be 0
+ if (n == 0) return;
+ __asm__ volatile(
+ "L_%=_delayMicroseconds:" "\n\t"
+#if F_CPU < 24000000
+ "nop" "\n\t"
+#endif
+#ifdef KINETISL
+ "sub %0, #1" "\n\t"
+ "bne L_%=_delayMicroseconds" "\n"
+ : "+l" (n) :
+#else
+ "subs %0, #1" "\n\t"
+ "bne L_%=_delayMicroseconds" "\n"
+ : "+r" (n) :
+#endif
+ );
+}
+*/
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long rtc_get(void);
+void rtc_set(unsigned long t);
+void rtc_compensate(int adjust);
+#ifdef __cplusplus
+}
+class teensy3_clock_class
+{
+public:
+ static unsigned long get(void) __attribute__((always_inline)) { return rtc_get(); }
+ static void set(unsigned long t) __attribute__((always_inline)) { rtc_set(t); }
+ static void compensate(int adj) __attribute__((always_inline)) { rtc_compensate(adj); }
+};
+extern teensy3_clock_class Teensy3Clock;
+#endif
+
+
+
+
+#endif
diff --git a/simulation/include/gfxfont.h b/simulation/include/gfxfont.h
index c691de6..0337a5e 100644
--- a/simulation/include/gfxfont.h
+++ b/simulation/include/gfxfont.h
@@ -1,29 +1,29 @@
-// Font structures for newer Adafruit_GFX (1.1 and later).
-// Example fonts are included in 'Fonts' directory.
-// To use a font in your Arduino sketch, #include the corresponding .h
-// file and pass address of GFXfont struct to setFont(). Pass NULL to
-// revert to 'classic' fixed-space bitmap font.
-
-#ifndef _GFXFONT_H_
-#define _GFXFONT_H_
-
-/// Font data stored PER GLYPH
-typedef struct {
- uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap
- uint8_t width; ///< Bitmap dimensions in pixels
- uint8_t height; ///< Bitmap dimensions in pixels
- uint8_t xAdvance; ///< Distance to advance cursor (x axis)
- int8_t xOffset; ///< X dist from cursor pos to UL corner
- int8_t yOffset; ///< Y dist from cursor pos to UL corner
-} GFXglyph;
-
-/// Data stored for FONT AS A WHOLE
-typedef struct {
- uint8_t *bitmap; ///< Glyph bitmaps, concatenated
- GFXglyph *glyph; ///< Glyph array
- uint8_t first; ///< ASCII extents (first char)
- uint8_t last; ///< ASCII extents (last char)
- uint8_t yAdvance; ///< Newline distance (y axis)
-} GFXfont;
-
-#endif // _GFXFONT_H_
+// Font structures for newer Adafruit_GFX (1.1 and later).
+// Example fonts are included in 'Fonts' directory.
+// To use a font in your Arduino sketch, #include the corresponding .h
+// file and pass address of GFXfont struct to setFont(). Pass NULL to
+// revert to 'classic' fixed-space bitmap font.
+
+#ifndef _GFXFONT_H_
+#define _GFXFONT_H_
+
+/// Font data stored PER GLYPH
+typedef struct {
+ uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap
+ uint8_t width; ///< Bitmap dimensions in pixels
+ uint8_t height; ///< Bitmap dimensions in pixels
+ uint8_t xAdvance; ///< Distance to advance cursor (x axis)
+ int8_t xOffset; ///< X dist from cursor pos to UL corner
+ int8_t yOffset; ///< Y dist from cursor pos to UL corner
+} GFXglyph;
+
+/// Data stored for FONT AS A WHOLE
+typedef struct {
+ uint8_t *bitmap; ///< Glyph bitmaps, concatenated
+ GFXglyph *glyph; ///< Glyph array
+ uint8_t first; ///< ASCII extents (first char)
+ uint8_t last; ///< ASCII extents (last char)
+ uint8_t yAdvance; ///< Newline distance (y axis)
+} GFXfont;
+
+#endif // _GFXFONT_H_
diff --git a/simulation/include/interrupts.h b/simulation/include/interrupts.h
index 1da6763..a22cda2 100644
--- a/simulation/include/interrupts.h
+++ b/simulation/include/interrupts.h
@@ -1,17 +1,17 @@
-#ifndef __INTERRUPTS_H
-#define __INTERRUPTS_H
-
-//Dummy functions, used by macros for interrupts() / noInterrupts()
-void __enable_irq() {}
-void __disable_irq() {}
-
-
-struct IntervalTimer
-{
- public:
- IntervalTimer() {};
- bool begin(void (*funct)(), unsigned int microseconds) { };
-
-};
-
-#endif
+#ifndef __INTERRUPTS_H
+#define __INTERRUPTS_H
+
+//Dummy functions, used by macros for interrupts() / noInterrupts()
+void __enable_irq() {}
+void __disable_irq() {}
+
+
+struct IntervalTimer
+{
+ public:
+ IntervalTimer() {};
+ bool begin(void (*funct)(), unsigned int microseconds) { };
+
+};
+
+#endif
diff --git a/simulation/include/pins_arduino.h b/simulation/include/pins_arduino.h
index 56d31e4..17c62b8 100644
--- a/simulation/include/pins_arduino.h
+++ b/simulation/include/pins_arduino.h
@@ -1,283 +1,283 @@
-/* Teensyduino Core Library
- * http://www.pjrc.com/teensy/
- * Copyright (c) 2017 PJRC.COM, LLC.
- *
- * 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:
- *
- * 1. The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * 2. If the Software is incorporated into a build system that allows
- * selection among a list of target devices, then similar target
- * devices manufactured by PJRC.COM must be included in the list of
- * target devices and selectable in the same manner.
- *
- * 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.
- */
-
-#ifndef pins_macros_for_arduino_compatibility_h
-#define pins_macros_for_arduino_compatibility_h
-
-#include
-
-// A0-A9 are always digital 14-23, for Arduino compatibility
-#define PIN_A0 (14)
-#define PIN_A1 (15)
-#define PIN_A2 (16)
-#define PIN_A3 (17)
-#define PIN_A4 (18)
-#define PIN_A5 (19)
-#define PIN_A6 (20)
-#define PIN_A7 (21)
-#define PIN_A8 (22)
-#define PIN_A9 (23)
-const static uint8_t A0 = PIN_A0;
-const static uint8_t A1 = PIN_A1;
-const static uint8_t A2 = PIN_A2;
-const static uint8_t A3 = PIN_A3;
-const static uint8_t A4 = PIN_A4;
-const static uint8_t A5 = PIN_A5;
-const static uint8_t A6 = PIN_A6;
-const static uint8_t A7 = PIN_A7;
-const static uint8_t A8 = PIN_A8;
-const static uint8_t A9 = PIN_A9;
-
-#if defined(__MK20DX128__)
-#define PIN_A10 (34)
-#define PIN_A11 (35)
-#define PIN_A12 (36)
-#define PIN_A13 (37)
-const static uint8_t A10 = PIN_A10;
-const static uint8_t A11 = PIN_A11;
-const static uint8_t A12 = PIN_A12;
-const static uint8_t A13 = PIN_A13;
-
-#elif defined(__MK20DX256__)
-#define PIN_A10 (34)
-#define PIN_A11 (35)
-#define PIN_A12 (36)
-#define PIN_A13 (37)
-#define PIN_A14 (40)
-#define PIN_A15 (26)
-#define PIN_A16 (27)
-#define PIN_A17 (28)
-#define PIN_A18 (29)
-#define PIN_A19 (30)
-#define PIN_A20 (31)
-const static uint8_t A10 = PIN_A10;
-const static uint8_t A11 = PIN_A11;
-const static uint8_t A12 = PIN_A12;
-const static uint8_t A13 = PIN_A13;
-const static uint8_t A14 = PIN_A14;
-const static uint8_t A15 = PIN_A15;
-const static uint8_t A16 = PIN_A16;
-const static uint8_t A17 = PIN_A17;
-const static uint8_t A18 = PIN_A18;
-const static uint8_t A19 = PIN_A19;
-const static uint8_t A20 = PIN_A20;
-
-#elif defined(__MKL26Z64__)
-#define PIN_A10 (24)
-#define PIN_A11 (25)
-#define PIN_A12 (26)
-const static uint8_t A10 = PIN_A10;
-const static uint8_t A11 = PIN_A11;
-const static uint8_t A12 = PIN_A12;
-
-#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
-#define PIN_A10 (64)
-#define PIN_A11 (65)
-#define PIN_A12 (31)
-#define PIN_A13 (32)
-#define PIN_A14 (33)
-#define PIN_A15 (34)
-#define PIN_A16 (35)
-#define PIN_A17 (36)
-#define PIN_A18 (37)
-#define PIN_A19 (38)
-#define PIN_A20 (39)
-#define PIN_A21 (66)
-#define PIN_A22 (67)
-#define PIN_A23 (49)
-#define PIN_A24 (50)
-#define PIN_A25 (68)
-#define PIN_A26 (69)
-const static uint8_t A10 = PIN_A10;
-const static uint8_t A11 = PIN_A11;
-const static uint8_t A12 = PIN_A12;
-const static uint8_t A13 = PIN_A13;
-const static uint8_t A14 = PIN_A14;
-const static uint8_t A15 = PIN_A15;
-const static uint8_t A16 = PIN_A16;
-const static uint8_t A17 = PIN_A17;
-const static uint8_t A18 = PIN_A18;
-const static uint8_t A19 = PIN_A19;
-const static uint8_t A20 = PIN_A20;
-const static uint8_t A21 = PIN_A21;
-const static uint8_t A22 = PIN_A22;
-const static uint8_t A23 = PIN_A23;
-const static uint8_t A24 = PIN_A24;
-const static uint8_t A25 = PIN_A25;
-const static uint8_t A26 = PIN_A26;
-#endif
-
-#define LED_BUILTIN (13)
-
-#define PIN_SPI_SS (10)
-#define PIN_SPI_MOSI (11)
-#define PIN_SPI_MISO (12)
-#define PIN_SPI_SCK (13)
-const static uint8_t SS = 10;
-const static uint8_t MOSI = 11;
-const static uint8_t MISO = 12;
-const static uint8_t SCK = 13;
-
-#define PIN_WIRE_SDA (18)
-#define PIN_WIRE_SCL (19)
-const static uint8_t SDA = 18;
-const static uint8_t SCL = 19;
-
-#define PIN_SERIAL_RX (0)
-#define PIN_SERIAL_TX (1)
-
-
-#define NUM_DIGITAL_PINS CORE_NUM_DIGITAL
-#define NUM_ANALOG_INPUTS CORE_NUM_ANALOG
-
-
-#define NOT_AN_INTERRUPT -1
-
-
-#if defined(__MK20DX128__)
- #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 13) ? (p) + 24 : -1))
- #define digitalPinHasPWM(p) (((p) >= 3 && (p) <= 6) || (p) == 9 || (p) == 10 || ((p) >= 20 && (p) <= 23))
- #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
-#elif defined(__MK20DX256__)
- #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 13) ? (p) + 24 : (((p) == 14) ? 40 : (((p) <= 20) ? (p) + 11 : -1))))
- #define digitalPinHasPWM(p) (((p) >= 3 && (p) <= 6) || (p) == 9 || (p) == 10 || ((p) >= 20 && (p) <= 23) || (p) == 25 || (p) == 32)
- #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
-#elif defined(__MKL26Z64__)
- #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 12) ? (p) + 14 : -1))
- #define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 16 || (p) == 17 || (p) == 20 || (p) == 22 || (p) == 23)
- #define digitalPinToInterrupt(p) ((((p) >= 2 && (p) <= 15) || ((p) >= 20 && (p) <= 23)) ? (p) : -1)
-#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
- // TODO analogInputToDigitalPin needs update...
- #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) >= 12 && (p) <= 20) ? (p) + 19 : -1))
- #define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 10) || (p) == 14 || ((p) >= 20 && (p) <= 23) || (p) == 29 || (p) == 30 || ((p) >= 35 && (p) <= 38))
- #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
-#endif
-
-#define digitalPinToPCICR(p) ((volatile uint8_t *)0)
-#define digitalPinToPCICRbit(p) (0)
-#define digitalPinToPCIFR(p) ((volatile uint8_t *)0)
-#define digitalPinToPCIFRbit(p) (0)
-#define digitalPinToPCMSK(p) ((volatile uint8_t *)0)
-#define digitalPinToPCMSKbit(p) (0)
-
-
-#if defined(KINETISK)
-struct digital_pin_bitband_and_config_table_struct {
- volatile uint32_t *reg;
- volatile uint32_t *config;
-};
-extern const struct digital_pin_bitband_and_config_table_struct digital_pin_to_info_PGM[];
-// compatibility macros
-#define digitalPinToPort(pin) (pin)
-#define digitalPinToBitMask(pin) (1)
-#define portOutputRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 0))
-#define portSetRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 32))
-#define portClearRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 64))
-#define portToggleRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 96))
-#define portInputRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 128))
-#define portModeRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 160))
-#define portConfigRegister(pin) ((volatile uint32_t *)(digital_pin_to_info_PGM[(pin)].config))
-#define digitalPinToPortReg(pin) (portOutputRegister(pin))
-#define digitalPinToBit(pin) (1)
-
-#elif defined(KINETISL)
-struct digital_pin_bitband_and_config_table_struct {
- volatile uint8_t *reg;
- volatile uint32_t *config;
- uint8_t mask;
-};
-extern const struct digital_pin_bitband_and_config_table_struct digital_pin_to_info_PGM[];
-// compatibility macros
-#define digitalPinToPort(pin) (pin)
-#define digitalPinToBitMask(pin) (digital_pin_to_info_PGM[(pin)].mask)
-#define portOutputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 0))
-#define portSetRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 4))
-#define portClearRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 8))
-#define portToggleRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 12))
-#define portInputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 16))
-#define portModeRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 20))
-#define portConfigRegister(pin) ((digital_pin_to_info_PGM[(pin)].config))
-#define digitalPinToPortReg(pin) (portOutputRegister(pin))
-//#define digitalPinToBit(pin) (1)
-
-#endif
-
-
-
-#define NOT_ON_TIMER 0
-static inline uint8_t digitalPinToTimer(uint8_t) __attribute__((always_inline, unused));
-static inline uint8_t digitalPinToTimer(uint8_t pin)
-{
- if (pin >= 3 && pin <= 6) return pin - 2;
- if (pin >= 9 && pin <= 10) return pin - 4;
- if (pin >= 20 && pin <= 23) return pin - 13;
- return NOT_ON_TIMER;
-}
-
-// These serial port names are intended to allow libraries and architecture-neutral
-// sketches to automatically default to the correct port name for a particular type
-// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
-// the first hardware serial port whose RX/TX pins are not dedicated to another use.
-//
-// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
-//
-// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
-//
-// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
-//
-// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
-//
-// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
-// pins are NOT connected to anything by default.
-//
-#if F_CPU >= 20000000 && !defined(USB_DISABLED)
-#define SERIAL_PORT_MONITOR Serial
-#else
-#define SERIAL_PORT_MONITOR Serial1
-#endif
-#define SERIAL_PORT_USBVIRTUAL Serial
-#define SERIAL_PORT_HARDWARE Serial1
-#define SERIAL_PORT_HARDWARE1 Serial2
-#define SERIAL_PORT_HARDWARE2 Serial3
-#define SERIAL_PORT_HARDWARE_OPEN Serial1
-#define SERIAL_PORT_HARDWARE_OPEN1 Serial2
-#define SERIAL_PORT_HARDWARE_OPEN2 Serial3
-#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
-#define SERIAL_PORT_HARDWARE3 Serial4
-#define SERIAL_PORT_HARDWARE4 Serial5
-#define SERIAL_PORT_HARDWARE5 Serial6
-#define SERIAL_PORT_HARDWARE_OPEN3 Serial4
-#define SERIAL_PORT_HARDWARE_OPEN4 Serial5
-#define SERIAL_PORT_HARDWARE_OPEN5 Serial6
-#endif
-
-#define SerialUSB Serial
-
-#endif
+/* Teensyduino Core Library
+ * http://www.pjrc.com/teensy/
+ * Copyright (c) 2017 PJRC.COM, LLC.
+ *
+ * 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:
+ *
+ * 1. The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 2. If the Software is incorporated into a build system that allows
+ * selection among a list of target devices, then similar target
+ * devices manufactured by PJRC.COM must be included in the list of
+ * target devices and selectable in the same manner.
+ *
+ * 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.
+ */
+
+#ifndef pins_macros_for_arduino_compatibility_h
+#define pins_macros_for_arduino_compatibility_h
+
+#include
+
+// A0-A9 are always digital 14-23, for Arduino compatibility
+#define PIN_A0 (14)
+#define PIN_A1 (15)
+#define PIN_A2 (16)
+#define PIN_A3 (17)
+#define PIN_A4 (18)
+#define PIN_A5 (19)
+#define PIN_A6 (20)
+#define PIN_A7 (21)
+#define PIN_A8 (22)
+#define PIN_A9 (23)
+const static uint8_t A0 = PIN_A0;
+const static uint8_t A1 = PIN_A1;
+const static uint8_t A2 = PIN_A2;
+const static uint8_t A3 = PIN_A3;
+const static uint8_t A4 = PIN_A4;
+const static uint8_t A5 = PIN_A5;
+const static uint8_t A6 = PIN_A6;
+const static uint8_t A7 = PIN_A7;
+const static uint8_t A8 = PIN_A8;
+const static uint8_t A9 = PIN_A9;
+
+#if defined(__MK20DX128__)
+#define PIN_A10 (34)
+#define PIN_A11 (35)
+#define PIN_A12 (36)
+#define PIN_A13 (37)
+const static uint8_t A10 = PIN_A10;
+const static uint8_t A11 = PIN_A11;
+const static uint8_t A12 = PIN_A12;
+const static uint8_t A13 = PIN_A13;
+
+#elif defined(__MK20DX256__)
+#define PIN_A10 (34)
+#define PIN_A11 (35)
+#define PIN_A12 (36)
+#define PIN_A13 (37)
+#define PIN_A14 (40)
+#define PIN_A15 (26)
+#define PIN_A16 (27)
+#define PIN_A17 (28)
+#define PIN_A18 (29)
+#define PIN_A19 (30)
+#define PIN_A20 (31)
+const static uint8_t A10 = PIN_A10;
+const static uint8_t A11 = PIN_A11;
+const static uint8_t A12 = PIN_A12;
+const static uint8_t A13 = PIN_A13;
+const static uint8_t A14 = PIN_A14;
+const static uint8_t A15 = PIN_A15;
+const static uint8_t A16 = PIN_A16;
+const static uint8_t A17 = PIN_A17;
+const static uint8_t A18 = PIN_A18;
+const static uint8_t A19 = PIN_A19;
+const static uint8_t A20 = PIN_A20;
+
+#elif defined(__MKL26Z64__)
+#define PIN_A10 (24)
+#define PIN_A11 (25)
+#define PIN_A12 (26)
+const static uint8_t A10 = PIN_A10;
+const static uint8_t A11 = PIN_A11;
+const static uint8_t A12 = PIN_A12;
+
+#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
+#define PIN_A10 (64)
+#define PIN_A11 (65)
+#define PIN_A12 (31)
+#define PIN_A13 (32)
+#define PIN_A14 (33)
+#define PIN_A15 (34)
+#define PIN_A16 (35)
+#define PIN_A17 (36)
+#define PIN_A18 (37)
+#define PIN_A19 (38)
+#define PIN_A20 (39)
+#define PIN_A21 (66)
+#define PIN_A22 (67)
+#define PIN_A23 (49)
+#define PIN_A24 (50)
+#define PIN_A25 (68)
+#define PIN_A26 (69)
+const static uint8_t A10 = PIN_A10;
+const static uint8_t A11 = PIN_A11;
+const static uint8_t A12 = PIN_A12;
+const static uint8_t A13 = PIN_A13;
+const static uint8_t A14 = PIN_A14;
+const static uint8_t A15 = PIN_A15;
+const static uint8_t A16 = PIN_A16;
+const static uint8_t A17 = PIN_A17;
+const static uint8_t A18 = PIN_A18;
+const static uint8_t A19 = PIN_A19;
+const static uint8_t A20 = PIN_A20;
+const static uint8_t A21 = PIN_A21;
+const static uint8_t A22 = PIN_A22;
+const static uint8_t A23 = PIN_A23;
+const static uint8_t A24 = PIN_A24;
+const static uint8_t A25 = PIN_A25;
+const static uint8_t A26 = PIN_A26;
+#endif
+
+#define LED_BUILTIN (13)
+
+#define PIN_SPI_SS (10)
+#define PIN_SPI_MOSI (11)
+#define PIN_SPI_MISO (12)
+#define PIN_SPI_SCK (13)
+const static uint8_t SS = 10;
+const static uint8_t MOSI = 11;
+const static uint8_t MISO = 12;
+const static uint8_t SCK = 13;
+
+#define PIN_WIRE_SDA (18)
+#define PIN_WIRE_SCL (19)
+const static uint8_t SDA = 18;
+const static uint8_t SCL = 19;
+
+#define PIN_SERIAL_RX (0)
+#define PIN_SERIAL_TX (1)
+
+
+#define NUM_DIGITAL_PINS CORE_NUM_DIGITAL
+#define NUM_ANALOG_INPUTS CORE_NUM_ANALOG
+
+
+#define NOT_AN_INTERRUPT -1
+
+
+#if defined(__MK20DX128__)
+ #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 13) ? (p) + 24 : -1))
+ #define digitalPinHasPWM(p) (((p) >= 3 && (p) <= 6) || (p) == 9 || (p) == 10 || ((p) >= 20 && (p) <= 23))
+ #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
+#elif defined(__MK20DX256__)
+ #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 13) ? (p) + 24 : (((p) == 14) ? 40 : (((p) <= 20) ? (p) + 11 : -1))))
+ #define digitalPinHasPWM(p) (((p) >= 3 && (p) <= 6) || (p) == 9 || (p) == 10 || ((p) >= 20 && (p) <= 23) || (p) == 25 || (p) == 32)
+ #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
+#elif defined(__MKL26Z64__)
+ #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) <= 12) ? (p) + 14 : -1))
+ #define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 16 || (p) == 17 || (p) == 20 || (p) == 22 || (p) == 23)
+ #define digitalPinToInterrupt(p) ((((p) >= 2 && (p) <= 15) || ((p) >= 20 && (p) <= 23)) ? (p) : -1)
+#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
+ // TODO analogInputToDigitalPin needs update...
+ #define analogInputToDigitalPin(p) (((p) <= 9) ? (p) + 14 : (((p) >= 12 && (p) <= 20) ? (p) + 19 : -1))
+ #define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 10) || (p) == 14 || ((p) >= 20 && (p) <= 23) || (p) == 29 || (p) == 30 || ((p) >= 35 && (p) <= 38))
+ #define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
+#endif
+
+#define digitalPinToPCICR(p) ((volatile uint8_t *)0)
+#define digitalPinToPCICRbit(p) (0)
+#define digitalPinToPCIFR(p) ((volatile uint8_t *)0)
+#define digitalPinToPCIFRbit(p) (0)
+#define digitalPinToPCMSK(p) ((volatile uint8_t *)0)
+#define digitalPinToPCMSKbit(p) (0)
+
+
+#if defined(KINETISK)
+struct digital_pin_bitband_and_config_table_struct {
+ volatile uint32_t *reg;
+ volatile uint32_t *config;
+};
+extern const struct digital_pin_bitband_and_config_table_struct digital_pin_to_info_PGM[];
+// compatibility macros
+#define digitalPinToPort(pin) (pin)
+#define digitalPinToBitMask(pin) (1)
+#define portOutputRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 0))
+#define portSetRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 32))
+#define portClearRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 64))
+#define portToggleRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 96))
+#define portInputRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 128))
+#define portModeRegister(pin) ((volatile uint8_t *)(digital_pin_to_info_PGM[(pin)].reg + 160))
+#define portConfigRegister(pin) ((volatile uint32_t *)(digital_pin_to_info_PGM[(pin)].config))
+#define digitalPinToPortReg(pin) (portOutputRegister(pin))
+#define digitalPinToBit(pin) (1)
+
+#elif defined(KINETISL)
+struct digital_pin_bitband_and_config_table_struct {
+ volatile uint8_t *reg;
+ volatile uint32_t *config;
+ uint8_t mask;
+};
+extern const struct digital_pin_bitband_and_config_table_struct digital_pin_to_info_PGM[];
+// compatibility macros
+#define digitalPinToPort(pin) (pin)
+#define digitalPinToBitMask(pin) (digital_pin_to_info_PGM[(pin)].mask)
+#define portOutputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 0))
+#define portSetRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 4))
+#define portClearRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 8))
+#define portToggleRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 12))
+#define portInputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 16))
+#define portModeRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 20))
+#define portConfigRegister(pin) ((digital_pin_to_info_PGM[(pin)].config))
+#define digitalPinToPortReg(pin) (portOutputRegister(pin))
+//#define digitalPinToBit(pin) (1)
+
+#endif
+
+
+
+#define NOT_ON_TIMER 0
+static inline uint8_t digitalPinToTimer(uint8_t) __attribute__((always_inline, unused));
+static inline uint8_t digitalPinToTimer(uint8_t pin)
+{
+ if (pin >= 3 && pin <= 6) return pin - 2;
+ if (pin >= 9 && pin <= 10) return pin - 4;
+ if (pin >= 20 && pin <= 23) return pin - 13;
+ return NOT_ON_TIMER;
+}
+
+// These serial port names are intended to allow libraries and architecture-neutral
+// sketches to automatically default to the correct port name for a particular type
+// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
+// the first hardware serial port whose RX/TX pins are not dedicated to another use.
+//
+// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
+//
+// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
+//
+// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
+//
+// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
+//
+// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
+// pins are NOT connected to anything by default.
+//
+#if F_CPU >= 20000000 && !defined(USB_DISABLED)
+#define SERIAL_PORT_MONITOR Serial
+#else
+#define SERIAL_PORT_MONITOR Serial1
+#endif
+#define SERIAL_PORT_USBVIRTUAL Serial
+#define SERIAL_PORT_HARDWARE Serial1
+#define SERIAL_PORT_HARDWARE1 Serial2
+#define SERIAL_PORT_HARDWARE2 Serial3
+#define SERIAL_PORT_HARDWARE_OPEN Serial1
+#define SERIAL_PORT_HARDWARE_OPEN1 Serial2
+#define SERIAL_PORT_HARDWARE_OPEN2 Serial3
+#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
+#define SERIAL_PORT_HARDWARE3 Serial4
+#define SERIAL_PORT_HARDWARE4 Serial5
+#define SERIAL_PORT_HARDWARE5 Serial6
+#define SERIAL_PORT_HARDWARE_OPEN3 Serial4
+#define SERIAL_PORT_HARDWARE_OPEN4 Serial5
+#define SERIAL_PORT_HARDWARE_OPEN5 Serial6
+#endif
+
+#define SerialUSB Serial
+
+#endif
diff --git a/simulation/include/simusbmidi.h b/simulation/include/simusbmidi.h
index 05c31cb..7c44878 100644
--- a/simulation/include/simusbmidi.h
+++ b/simulation/include/simusbmidi.h
@@ -1,35 +1,35 @@
-#ifndef __SIMUSBMIDI_H__
-#define __SIMUSBMIDI_H__
-
-#include
-
-class SimUsbMidi
-{
-public:
- void sendNoteOff(uint8_t note, uint8_t velocity, uint8_t channel, uint8_t cable=0);
- void sendNoteOn(uint8_t note, uint8_t velocity, uint8_t channel, uint8_t cable=0);
- void sendPolyPressure(uint8_t note, uint8_t pressure, uint8_t channel, uint8_t cable=0);
- void sendAfterTouchPoly(uint8_t note, uint8_t pressure, uint8_t channel, uint8_t cable=0);
- void sendControlChange(uint8_t control, uint8_t value, uint8_t channel, uint8_t cable=0);
- void sendProgramChange(uint8_t program, uint8_t channel, uint8_t cable=0);
- void sendAfterTouch(uint8_t pressure, uint8_t channel, uint8_t cable=0);
- void sendPitchBend(int value, uint8_t channel, uint8_t cable=0);
- void sendSysEx(uint16_t length, const uint8_t *data, bool hasTerm=false, uint8_t cable=0);
- bool read(uint8_t channel=0);
- void setHandleSystemExclusive(void (*fptr) (const uint8_t *array, unsigned int size));
- void setHandleSystemExclusive(void (*fptr) (const uint8_t *data, uint16_t length, bool complete));
-
-//Things not part of Teensy USBMidi, but used to simulate sending data to it
- void receiveMidiData(const uint8_t *data, const uint16_t length); //Send midi data "into simulator"
- void setMidiFile(std::string filename); //MIDI data to send to device
- void triggerMidi(); //"Arm" so data is sent to device next time it tries to read anything
-private:
- //Handlers registered to receive MIDI
- void (*usb_midi_handleSysExPartial)(const uint8_t *data, uint16_t length, uint8_t complete);
- void (*usb_midi_handleSysExComplete)(const uint8_t *data, unsigned int size);
- std::string midiFile;
- bool sendMidi;
-};
-
-
+#ifndef __SIMUSBMIDI_H__
+#define __SIMUSBMIDI_H__
+
+#include
+
+class SimUsbMidi
+{
+public:
+ void sendNoteOff(uint8_t note, uint8_t velocity, uint8_t channel, uint8_t cable=0);
+ void sendNoteOn(uint8_t note, uint8_t velocity, uint8_t channel, uint8_t cable=0);
+ void sendPolyPressure(uint8_t note, uint8_t pressure, uint8_t channel, uint8_t cable=0);
+ void sendAfterTouchPoly(uint8_t note, uint8_t pressure, uint8_t channel, uint8_t cable=0);
+ void sendControlChange(uint8_t control, uint8_t value, uint8_t channel, uint8_t cable=0);
+ void sendProgramChange(uint8_t program, uint8_t channel, uint8_t cable=0);
+ void sendAfterTouch(uint8_t pressure, uint8_t channel, uint8_t cable=0);
+ void sendPitchBend(int value, uint8_t channel, uint8_t cable=0);
+ void sendSysEx(uint16_t length, const uint8_t *data, bool hasTerm=false, uint8_t cable=0);
+ bool read(uint8_t channel=0);
+ void setHandleSystemExclusive(void (*fptr) (const uint8_t *array, unsigned int size));
+ void setHandleSystemExclusive(void (*fptr) (const uint8_t *data, uint16_t length, bool complete));
+
+//Things not part of Teensy USBMidi, but used to simulate sending data to it
+ void receiveMidiData(const uint8_t *data, const uint16_t length); //Send midi data "into simulator"
+ void setMidiFile(std::string filename); //MIDI data to send to device
+ void triggerMidi(); //"Arm" so data is sent to device next time it tries to read anything
+private:
+ //Handlers registered to receive MIDI
+ void (*usb_midi_handleSysExPartial)(const uint8_t *data, uint16_t length, uint8_t complete);
+ void (*usb_midi_handleSysExComplete)(const uint8_t *data, unsigned int size);
+ std::string midiFile;
+ bool sendMidi;
+};
+
+
#endif
\ No newline at end of file
diff --git a/simulation/include/wiring.h b/simulation/include/wiring.h
index 2873ee5..4594929 100644
--- a/simulation/include/wiring.h
+++ b/simulation/include/wiring.h
@@ -1,197 +1,197 @@
-/* Teensyduino Core Library
- * http://www.pjrc.com/teensy/
- * Copyright (c) 2017 PJRC.COM, LLC.
- *
- * 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:
- *
- * 1. The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * 2. If the Software is incorporated into a build system that allows
- * selection among a list of target devices, then similar target
- * devices manufactured by PJRC.COM must be included in the list of
- * target devices and selectable in the same manner.
- *
- * 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.
- */
-
-#ifndef Wiring_h
-#define Wiring_h
-
-#include
-#include
-// #include "binary.h"
-#include "core_id.h"
-// #include "core_pins.h"
-
-// type_traits interferes with min() and other defines
-// include it early, so we can define these later
-// for Arduino compatibility
-#ifdef __cplusplus
-#include
-// when the input number is an integer type, do all math as 32 bit signed long
-template
-long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enable_if::value >::type* = 0)
-{
- long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max;
- // Arduino's traditional algorithm
- //return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- // st42's suggestion: https://github.com/arduino/Arduino/issues/2466#issuecomment-69873889
- // more conversation:
- // https://forum.pjrc.com/threads/44503-map()-function-improvements
- if ((in_max - in_min) > (out_max - out_min)) {
- return (x - in_min) * (out_max - out_min+1) / (in_max - in_min+1) + out_min;
- } else {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- }
-}
-// when the input is a float or double, do all math using the input's type
-template
-T map(T x, A in_min, B in_max, C out_min, D out_max, typename std::enable_if::value >::type* = 0)
-{
- return (x - (T)in_min) * ((T)out_max - (T)out_min) / ((T)in_max - (T)in_min) + (T)out_min;
-}
-//#include // this isn't really needed, is it? (slows down compiling)
-#include
-// https://forum.pjrc.com/threads/44596-Teensyduino-1-37-Beta-2-(Arduino-1-8-3-support)?p=145150&viewfull=1#post145150
-template
-constexpr auto min(A&& a, B&& b) -> decltype(a < b ? std::forward(a) : std::forward(b)) {
- return a < b ? std::forward(a) : std::forward(b);
-}
-template
-constexpr auto max(A&& a, B&& b) -> decltype(a < b ? std::forward(a) : std::forward(b)) {
- return a >= b ? std::forward(a) : std::forward(b);
-}
-#else // not C++
-#define min(a, b) ({ \
- typeof(a) _a = (a); \
- typeof(b) _b = (b); \
- (_a < _b) ? _a : _b; \
-})
-#define max(a, b) ({ \
- typeof(a) _a = (a); \
- typeof(b) _b = (b); \
- (_a > _b) ? _a : _b; \
-})
-#endif
-
-
-#ifdef PI
-#undef PI
-#endif
-#define PI 3.1415926535897932384626433832795
-#define HALF_PI 1.5707963267948966192313216916398
-#define TWO_PI 6.283185307179586476925286766559
-#define DEG_TO_RAD 0.017453292519943295769236907684886
-#define RAD_TO_DEG 57.295779513082320876798154814105
-
-#ifndef M_PI
-#define M_PI 3.1415926535897932384626433832795
-#endif
-#ifndef M_SQRT2
-#define M_SQRT2 1.4142135623730950488016887
-#endif
-
-#define SERIAL 0
-#define DISPLAY 1
-
-// undefine stdlib's abs if encountered
-#ifdef abs
-#undef abs
-#endif
-
-#if __cplusplus >= 201103L && defined(__STRICT_ANSI__)
-#define typeof(a) decltype(a)
-#endif
-
-#define abs(x) ({ \
- typeof(x) _x = (x); \
- (_x > 0) ? _x : -_x; \
-})
-#define constrain(amt, low, high) ({ \
- typeof(amt) _amt = (amt); \
- typeof(low) _low = (low); \
- typeof(high) _high = (high); \
- (_amt < _low) ? _low : ((_amt > _high) ? _high : _amt); \
-})
-#define round(x) ({ \
- typeof(x) _x = (x); \
- (_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \
-})
-#define radians(deg) ((deg)*DEG_TO_RAD)
-#define degrees(rad) ((rad)*RAD_TO_DEG)
-#define sq(x) ({ \
- typeof(x) _x = (x); \
- _x * _x; \
-})
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-extern double exp10(double x);
-extern float exp10f(float x);
-extern long double exp10l(long double x);
-extern double pow10(double x);
-extern float pow10f(float x);
-extern long double pow10l(long double x);
-
-#define stricmp(a, b) strcasecmp(a, b)
-
-#define sei() __enable_irq()
-#define cli() __disable_irq()
-#define interrupts() __enable_irq()
-#define noInterrupts() __disable_irq()
-
-#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
-#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
-#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
-
-#define lowByte(w) ((uint8_t)((w) & 0xFF))
-#define highByte(w) ((uint8_t)((w) >> 8))
-
-#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
-#define bitSet(value, bit) ((value) |= (1UL << (bit)))
-#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
-#define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet((value), (bit)) : bitClear((value), (bit)))
-
-typedef unsigned int word;
-
-#define bit(b) (1UL << (b))
-
-typedef uint8_t byte;
-
-uint32_t pulseIn(uint8_t pin, uint8_t state, uint32_t timeout);
-void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val);
-
-void setup(void);
-void loop(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-// fix C++ boolean issue
-// https://github.com/arduino/Arduino/pull/2151
-#ifdef __cplusplus
-typedef bool boolean;
-#else
-typedef uint8_t boolean;
-#define false 0
-#define true (!false)
-#endif
-
-#endif
+/* Teensyduino Core Library
+ * http://www.pjrc.com/teensy/
+ * Copyright (c) 2017 PJRC.COM, LLC.
+ *
+ * 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:
+ *
+ * 1. The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 2. If the Software is incorporated into a build system that allows
+ * selection among a list of target devices, then similar target
+ * devices manufactured by PJRC.COM must be included in the list of
+ * target devices and selectable in the same manner.
+ *
+ * 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.
+ */
+
+#ifndef Wiring_h
+#define Wiring_h
+
+#include
+#include
+// #include "binary.h"
+#include "core_id.h"
+// #include "core_pins.h"
+
+// type_traits interferes with min() and other defines
+// include it early, so we can define these later
+// for Arduino compatibility
+#ifdef __cplusplus
+#include
+// when the input number is an integer type, do all math as 32 bit signed long
+template
+long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enable_if::value >::type* = 0)
+{
+ long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max;
+ // Arduino's traditional algorithm
+ //return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+ // st42's suggestion: https://github.com/arduino/Arduino/issues/2466#issuecomment-69873889
+ // more conversation:
+ // https://forum.pjrc.com/threads/44503-map()-function-improvements
+ if ((in_max - in_min) > (out_max - out_min)) {
+ return (x - in_min) * (out_max - out_min+1) / (in_max - in_min+1) + out_min;
+ } else {
+ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+ }
+}
+// when the input is a float or double, do all math using the input's type
+template
+T map(T x, A in_min, B in_max, C out_min, D out_max, typename std::enable_if::value >::type* = 0)
+{
+ return (x - (T)in_min) * ((T)out_max - (T)out_min) / ((T)in_max - (T)in_min) + (T)out_min;
+}
+//#include // this isn't really needed, is it? (slows down compiling)
+#include
+// https://forum.pjrc.com/threads/44596-Teensyduino-1-37-Beta-2-(Arduino-1-8-3-support)?p=145150&viewfull=1#post145150
+template
+constexpr auto min(A&& a, B&& b) -> decltype(a < b ? std::forward(a) : std::forward(b)) {
+ return a < b ? std::forward(a) : std::forward(b);
+}
+template
+constexpr auto max(A&& a, B&& b) -> decltype(a < b ? std::forward(a) : std::forward(b)) {
+ return a >= b ? std::forward(a) : std::forward(b);
+}
+#else // not C++
+#define min(a, b) ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ (_a < _b) ? _a : _b; \
+})
+#define max(a, b) ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ (_a > _b) ? _a : _b; \
+})
+#endif
+
+
+#ifdef PI
+#undef PI
+#endif
+#define PI 3.1415926535897932384626433832795
+#define HALF_PI 1.5707963267948966192313216916398
+#define TWO_PI 6.283185307179586476925286766559
+#define DEG_TO_RAD 0.017453292519943295769236907684886
+#define RAD_TO_DEG 57.295779513082320876798154814105
+
+#ifndef M_PI
+#define M_PI 3.1415926535897932384626433832795
+#endif
+#ifndef M_SQRT2
+#define M_SQRT2 1.4142135623730950488016887
+#endif
+
+#define SERIAL 0
+#define DISPLAY 1
+
+// undefine stdlib's abs if encountered
+#ifdef abs
+#undef abs
+#endif
+
+#if __cplusplus >= 201103L && defined(__STRICT_ANSI__)
+#define typeof(a) decltype(a)
+#endif
+
+#define abs(x) ({ \
+ typeof(x) _x = (x); \
+ (_x > 0) ? _x : -_x; \
+})
+#define constrain(amt, low, high) ({ \
+ typeof(amt) _amt = (amt); \
+ typeof(low) _low = (low); \
+ typeof(high) _high = (high); \
+ (_amt < _low) ? _low : ((_amt > _high) ? _high : _amt); \
+})
+#define round(x) ({ \
+ typeof(x) _x = (x); \
+ (_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \
+})
+#define radians(deg) ((deg)*DEG_TO_RAD)
+#define degrees(rad) ((rad)*RAD_TO_DEG)
+#define sq(x) ({ \
+ typeof(x) _x = (x); \
+ _x * _x; \
+})
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+extern double exp10(double x);
+extern float exp10f(float x);
+extern long double exp10l(long double x);
+extern double pow10(double x);
+extern float pow10f(float x);
+extern long double pow10l(long double x);
+
+#define stricmp(a, b) strcasecmp(a, b)
+
+#define sei() __enable_irq()
+#define cli() __disable_irq()
+#define interrupts() __enable_irq()
+#define noInterrupts() __disable_irq()
+
+#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
+#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
+#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
+
+#define lowByte(w) ((uint8_t)((w) & 0xFF))
+#define highByte(w) ((uint8_t)((w) >> 8))
+
+#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
+#define bitSet(value, bit) ((value) |= (1UL << (bit)))
+#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
+#define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet((value), (bit)) : bitClear((value), (bit)))
+
+typedef unsigned int word;
+
+#define bit(b) (1UL << (b))
+
+typedef uint8_t byte;
+
+uint32_t pulseIn(uint8_t pin, uint8_t state, uint32_t timeout);
+void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val);
+
+void setup(void);
+void loop(void);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// fix C++ boolean issue
+// https://github.com/arduino/Arduino/pull/2151
+#ifdef __cplusplus
+typedef bool boolean;
+#else
+typedef uint8_t boolean;
+#define false 0
+#define true (!false)
+#endif
+
+#endif
diff --git a/simulation/readme.md b/simulation/readme.md
index 164779b..4974c0e 100644
--- a/simulation/readme.md
+++ b/simulation/readme.md
@@ -1,22 +1,22 @@
-# Simulator for NuEVI
-
-This is a simple SDL2 based simulator that runs the NuEVI firmware compiled for MacOS. This is for testing the menu and is not supposed to produce any midi events.
-
-## Requirements
-
-* The Filters library must be installed in ~/Documents/Arduino/libraries/Filters.
-* [SDL2.framework](https://www.libsdl.org/download-2.0.php) must be installed on your machine in /Library/Frameworks/ (or ~/Library/Frameworks/).
-* You probably need to have XCode and XCodes command line tools installed as well, but using brew to install make and clang might be enough.
-
-[Dear Imgui](https://github.com/ocornut/imgui) is pulled in as an git submodule. Run `git submodule init` and `git submodule update` to get the code. The code is tested with tag v1.70 of ImGui, so if you run into problems make sure that is the checked out version.
-
-## Know limitations
-
-Currently only some input is simulated, and the default values are not based on real hardware. There is also a limitation on some keyboards on how many buttons can be pressed at the same time. This means that all menu functions cannot be tested.
-
-## Future plans
-
-* Add simulation for all inputs
-* Show MIDI status in UI
-* Add in-app log window
-* Fake real breath input by keypress
+# Simulator for NuEVI
+
+This is a simple SDL2 based simulator that runs the NuEVI firmware compiled for MacOS. This is for testing the menu and is not supposed to produce any midi events.
+
+## Requirements
+
+* The Filters library must be installed in ~/Documents/Arduino/libraries/Filters.
+* [SDL2.framework](https://www.libsdl.org/download-2.0.php) must be installed on your machine in /Library/Frameworks/ (or ~/Library/Frameworks/).
+* You probably need to have XCode and XCodes command line tools installed as well, but using brew to install make and clang might be enough.
+
+[Dear Imgui](https://github.com/ocornut/imgui) is pulled in as an git submodule. Run `git submodule init` and `git submodule update` to get the code. The code is tested with tag v1.70 of ImGui, so if you run into problems make sure that is the checked out version.
+
+## Know limitations
+
+Currently only some input is simulated, and the default values are not based on real hardware. There is also a limitation on some keyboards on how many buttons can be pressed at the same time. This means that all menu functions cannot be tested.
+
+## Future plans
+
+* Add simulation for all inputs
+* Show MIDI status in UI
+* Add in-app log window
+* Fake real breath input by keypress
diff --git a/simulation/src/Adafruit_GFX_sim.cpp b/simulation/src/Adafruit_GFX_sim.cpp
index 2958831..a38e5c9 100644
--- a/simulation/src/Adafruit_GFX_sim.cpp
+++ b/simulation/src/Adafruit_GFX_sim.cpp
@@ -1,1982 +1,1982 @@
-/*
-This is the core graphics library for all our displays, providing a common
-set of graphics primitives (points, lines, circles, etc.). It needs to be
-paired with a hardware-specific library for each display device we carry
-(to handle the lower-level functions).
-
-Adafruit invests time and resources providing this open source code, please
-support Adafruit & open-source hardware by purchasing products from Adafruit!
-
-Copyright (c) 2013 Adafruit Industries. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-- Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "Adafruit_GFX.h"
-#include "glcdfont.c"
-#ifdef __AVR__
- #include
-#elif defined(ESP8266) || defined(ESP32)
- #include
-#endif
-
-// Many (but maybe not all) non-AVR board installs define macros
-// for compatibility with existing PROGMEM-reading AVR code.
-// Do our own checks and defines here for good measure...
-
-#ifndef pgm_read_byte
- #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
-#endif
-#ifndef pgm_read_word
- #define pgm_read_word(addr) (*(const unsigned short *)(addr))
-#endif
-#ifndef pgm_read_dword
- #define pgm_read_dword(addr) (*(const unsigned long *)(addr))
-#endif
-
-// Pointers are a peculiar case...typically 16-bit on AVR boards,
-// 32 bits elsewhere. Try to accommodate both...
-
-#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF)
- #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr))
-#else
- #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr))
-#endif
-
-#ifndef min
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
-#ifndef _swap_int16_t
-#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; }
-#endif
-
-/**************************************************************************/
-/*!
- @brief Instatiate a GFX context for graphics! Can only be done by a superclass
- @param w Display width, in pixels
- @param h Display height, in pixels
-*/
-/**************************************************************************/
-Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h):
-WIDTH(w), HEIGHT(h)
-{
- _width = WIDTH;
- _height = HEIGHT;
- rotation = 0;
- cursor_y = cursor_x = 0;
- textsize = 1;
- textcolor = textbgcolor = 0xFFFF;
- wrap = true;
- _cp437 = false;
- gfxFont = NULL;
-
- dimmed_ = false;;
- enabled_ = true;
- inverted_ = false;
-}
-
-/**************************************************************************/
-/*!
- @brief Write a line. Bresenham's algorithm - thx wikpedia
- @param x0 Start point x coordinate
- @param y0 Start point y coordinate
- @param x1 End point x coordinate
- @param y1 End point y coordinate
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
- uint16_t color) {
-#if defined(ESP8266)
- yield();
-#endif
- int16_t steep = abs(y1 - y0) > abs(x1 - x0);
- if (steep) {
- _swap_int16_t(x0, y0);
- _swap_int16_t(x1, y1);
- }
-
- if (x0 > x1) {
- _swap_int16_t(x0, x1);
- _swap_int16_t(y0, y1);
- }
-
- int16_t dx, dy;
- dx = x1 - x0;
- dy = abs(y1 - y0);
-
- int16_t err = dx / 2;
- int16_t ystep;
-
- if (y0 < y1) {
- ystep = 1;
- } else {
- ystep = -1;
- }
-
- for (; x0<=x1; x0++) {
- if (steep) {
- writePixel(y0, x0, color);
- } else {
- writePixel(x0, y0, color);
- }
- err -= dy;
- if (err < 0) {
- y0 += ystep;
- err += dx;
- }
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Start a display-writing routine, overwrite in subclasses.
-*/
-/**************************************************************************/
-void Adafruit_GFX::startWrite(){
-}
-
-/**************************************************************************/
-/*!
- @brief Write a pixel, overwrite in subclasses if startWrite is defined!
- @param x x coordinate
- @param y y coordinate
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){
- drawPixel(x, y, color);
-}
-
-/**************************************************************************/
-/*!
- @brief Write a perfectly vertical line, overwrite in subclasses if startWrite is defined!
- @param x Top-most x coordinate
- @param y Top-most y coordinate
- @param h Height in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y,
- int16_t h, uint16_t color) {
- // Overwrite in subclasses if startWrite is defined!
- // Can be just writeLine(x, y, x, y+h-1, color);
- // or writeFillRect(x, y, 1, h, color);
- drawFastVLine(x, y, h, color);
-}
-
-/**************************************************************************/
-/*!
- @brief Write a perfectly horizontal line, overwrite in subclasses if startWrite is defined!
- @param x Left-most x coordinate
- @param y Left-most y coordinate
- @param w Width in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y,
- int16_t w, uint16_t color) {
- // Overwrite in subclasses if startWrite is defined!
- // Example: writeLine(x, y, x+w-1, y, color);
- // or writeFillRect(x, y, w, 1, color);
- drawFastHLine(x, y, w, color);
-}
-
-/**************************************************************************/
-/*!
- @brief Write a rectangle completely with one color, overwrite in subclasses if startWrite is defined!
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param w Width in pixels
- @param h Height in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h,
- uint16_t color) {
- // Overwrite in subclasses if desired!
- fillRect(x,y,w,h,color);
-}
-
-/**************************************************************************/
-/*!
- @brief End a display-writing routine, overwrite in subclasses if startWrite is defined!
-*/
-/**************************************************************************/
-void Adafruit_GFX::endWrite(){
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a perfectly vertical line (this is often optimized in a subclass!)
- @param x Top-most x coordinate
- @param y Top-most y coordinate
- @param h Height in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y,
- int16_t h, uint16_t color) {
- startWrite();
- writeLine(x, y, x, y+h-1, color);
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a perfectly horizontal line (this is often optimized in a subclass!)
- @param x Left-most x coordinate
- @param y Left-most y coordinate
- @param w Width in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y,
- int16_t w, uint16_t color) {
- startWrite();
- writeLine(x, y, x+w-1, y, color);
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Fill a rectangle completely with one color. Update in subclasses if desired!
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param w Width in pixels
- @param h Height in pixels
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
- uint16_t color) {
- startWrite();
- for (int16_t i=x; i y1) _swap_int16_t(y0, y1);
- drawFastVLine(x0, y0, y1 - y0 + 1, color);
- } else if(y0 == y1){
- if(x0 > x1) _swap_int16_t(x0, x1);
- drawFastHLine(x0, y0, x1 - x0 + 1, color);
- } else {
- startWrite();
- writeLine(x0, y0, x1, y1, color);
- endWrite();
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a circle outline
- @param x0 Center-point x coordinate
- @param y0 Center-point y coordinate
- @param r Radius of circle
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
- uint16_t color) {
-#if defined(ESP8266)
- yield();
-#endif
- int16_t f = 1 - r;
- int16_t ddF_x = 1;
- int16_t ddF_y = -2 * r;
- int16_t x = 0;
- int16_t y = r;
-
- startWrite();
- writePixel(x0 , y0+r, color);
- writePixel(x0 , y0-r, color);
- writePixel(x0+r, y0 , color);
- writePixel(x0-r, y0 , color);
-
- while (x= 0) {
- y--;
- ddF_y += 2;
- f += ddF_y;
- }
- x++;
- ddF_x += 2;
- f += ddF_x;
-
- writePixel(x0 + x, y0 + y, color);
- writePixel(x0 - x, y0 + y, color);
- writePixel(x0 + x, y0 - y, color);
- writePixel(x0 - x, y0 - y, color);
- writePixel(x0 + y, y0 + x, color);
- writePixel(x0 - y, y0 + x, color);
- writePixel(x0 + y, y0 - x, color);
- writePixel(x0 - y, y0 - x, color);
- }
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Quarter-circle drawer, used to do circles and roundrects
- @param x0 Center-point x coordinate
- @param y0 Center-point y coordinate
- @param r Radius of circle
- @param cornername Mask bit #1 or bit #2 to indicate which quarters of the circle we're doing
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0,
- int16_t r, uint8_t cornername, uint16_t color) {
- int16_t f = 1 - r;
- int16_t ddF_x = 1;
- int16_t ddF_y = -2 * r;
- int16_t x = 0;
- int16_t y = r;
-
- while (x= 0) {
- y--;
- ddF_y += 2;
- f += ddF_y;
- }
- x++;
- ddF_x += 2;
- f += ddF_x;
- if (cornername & 0x4) {
- writePixel(x0 + x, y0 + y, color);
- writePixel(x0 + y, y0 + x, color);
- }
- if (cornername & 0x2) {
- writePixel(x0 + x, y0 - y, color);
- writePixel(x0 + y, y0 - x, color);
- }
- if (cornername & 0x8) {
- writePixel(x0 - y, y0 + x, color);
- writePixel(x0 - x, y0 + y, color);
- }
- if (cornername & 0x1) {
- writePixel(x0 - y, y0 - x, color);
- writePixel(x0 - x, y0 - y, color);
- }
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a circle with filled color
- @param x0 Center-point x coordinate
- @param y0 Center-point y coordinate
- @param r Radius of circle
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r,
- uint16_t color) {
- startWrite();
- writeFastVLine(x0, y0-r, 2*r+1, color);
- fillCircleHelper(x0, y0, r, 3, 0, color);
- endWrite();
-}
-
-
-/**************************************************************************/
-/*!
- @brief Quarter-circle drawer with fill, used for circles and roundrects
- @param x0 Center-point x coordinate
- @param y0 Center-point y coordinate
- @param r Radius of circle
- @param corners Mask bits indicating which quarters we're doing
- @param delta Offset from center-point, used for round-rects
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
- uint8_t corners, int16_t delta, uint16_t color) {
-
- int16_t f = 1 - r;
- int16_t ddF_x = 1;
- int16_t ddF_y = -2 * r;
- int16_t x = 0;
- int16_t y = r;
- int16_t px = x;
- int16_t py = y;
-
- delta++; // Avoid some +1's in the loop
-
- while(x < y) {
- if (f >= 0) {
- y--;
- ddF_y += 2;
- f += ddF_y;
- }
- x++;
- ddF_x += 2;
- f += ddF_x;
- // These checks avoid double-drawing certain lines, important
- // for the SSD1306 library which has an INVERT drawing mode.
- if(x < (y + 1)) {
- if(corners & 1) writeFastVLine(x0+x, y0-y, 2*y+delta, color);
- if(corners & 2) writeFastVLine(x0-x, y0-y, 2*y+delta, color);
- }
- if(y != py) {
- if(corners & 1) writeFastVLine(x0+py, y0-px, 2*px+delta, color);
- if(corners & 2) writeFastVLine(x0-py, y0-px, 2*px+delta, color);
- py = y;
- }
- px = x;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a rectangle with no fill color
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param w Width in pixels
- @param h Height in pixels
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h,
- uint16_t color) {
- startWrite();
- writeFastHLine(x, y, w, color);
- writeFastHLine(x, y+h-1, w, color);
- writeFastVLine(x, y, h, color);
- writeFastVLine(x+w-1, y, h, color);
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a rounded rectangle with no fill color
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param w Width in pixels
- @param h Height in pixels
- @param r Radius of corner rounding
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
- int16_t h, int16_t r, uint16_t color) {
- int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis
- if(r > max_radius) r = max_radius;
- // smarter version
- startWrite();
- writeFastHLine(x+r , y , w-2*r, color); // Top
- writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom
- writeFastVLine(x , y+r , h-2*r, color); // Left
- writeFastVLine(x+w-1, y+r , h-2*r, color); // Right
- // draw four corners
- drawCircleHelper(x+r , y+r , r, 1, color);
- drawCircleHelper(x+w-r-1, y+r , r, 2, color);
- drawCircleHelper(x+w-r-1, y+h-r-1, r, 4, color);
- drawCircleHelper(x+r , y+h-r-1, r, 8, color);
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a rounded rectangle with fill color
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param w Width in pixels
- @param h Height in pixels
- @param r Radius of corner rounding
- @param color 16-bit 5-6-5 Color to draw/fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
- int16_t h, int16_t r, uint16_t color) {
- int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis
- if(r > max_radius) r = max_radius;
- // smarter version
- startWrite();
- writeFillRect(x+r, y, w-2*r, h, color);
- // draw four corners
- fillCircleHelper(x+w-r-1, y+r, r, 1, h-2*r-1, color);
- fillCircleHelper(x+r , y+r, r, 2, h-2*r-1, color);
- endWrite();
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a triangle with no fill color
- @param x0 Vertex #0 x coordinate
- @param y0 Vertex #0 y coordinate
- @param x1 Vertex #1 x coordinate
- @param y1 Vertex #1 y coordinate
- @param x2 Vertex #2 x coordinate
- @param y2 Vertex #2 y coordinate
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
- int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
- drawLine(x0, y0, x1, y1, color);
- drawLine(x1, y1, x2, y2, color);
- drawLine(x2, y2, x0, y0, color);
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a triangle with color-fill
- @param x0 Vertex #0 x coordinate
- @param y0 Vertex #0 y coordinate
- @param x1 Vertex #1 x coordinate
- @param y1 Vertex #1 y coordinate
- @param x2 Vertex #2 x coordinate
- @param y2 Vertex #2 y coordinate
- @param color 16-bit 5-6-5 Color to fill/draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0,
- int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
-
- int16_t a, b, y, last;
-
- // Sort coordinates by Y order (y2 >= y1 >= y0)
- if (y0 > y1) {
- _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
- }
- if (y1 > y2) {
- _swap_int16_t(y2, y1); _swap_int16_t(x2, x1);
- }
- if (y0 > y1) {
- _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
- }
-
- startWrite();
- if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing
- a = b = x0;
- if(x1 < a) a = x1;
- else if(x1 > b) b = x1;
- if(x2 < a) a = x2;
- else if(x2 > b) b = x2;
- writeFastHLine(a, y0, b-a+1, color);
- endWrite();
- return;
- }
-
- int16_t
- dx01 = x1 - x0,
- dy01 = y1 - y0,
- dx02 = x2 - x0,
- dy02 = y2 - y0,
- dx12 = x2 - x1,
- dy12 = y2 - y1;
- int32_t
- sa = 0,
- sb = 0;
-
- // For upper part of triangle, find scanline crossings for segments
- // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1
- // is included here (and second loop will be skipped, avoiding a /0
- // error there), otherwise scanline y1 is skipped here and handled
- // in the second loop...which also avoids a /0 error here if y0=y1
- // (flat-topped triangle).
- if(y1 == y2) last = y1; // Include y1 scanline
- else last = y1-1; // Skip it
-
- for(y=y0; y<=last; y++) {
- a = x0 + sa / dy01;
- b = x0 + sb / dy02;
- sa += dx01;
- sb += dx02;
- /* longhand:
- a = x0 + (x1 - x0) * (y - y0) / (y1 - y0);
- b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
- */
- if(a > b) _swap_int16_t(a,b);
- writeFastHLine(a, y, b-a+1, color);
- }
-
- // For lower part of triangle, find scanline crossings for segments
- // 0-2 and 1-2. This loop is skipped if y1=y2.
- sa = dx12 * (y - y1);
- sb = dx02 * (y - y0);
- for(; y<=y2; y++) {
- a = x1 + sa / dy12;
- b = x0 + sb / dy02;
- sa += dx12;
- sb += dx02;
- /* longhand:
- a = x1 + (x2 - x1) * (y - y1) / (y2 - y1);
- b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
- */
- if(a > b) _swap_int16_t(a,b);
- writeFastHLine(a, y, b-a+1, color);
- }
- endWrite();
-}
-
-// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS ---------------------
-
-/**************************************************************************/
-/*!
- @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, using the specified foreground color (unset bits are transparent).
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param bitmap byte array with monochrome bitmap
- @param w Width of bitmap in pixels
- @param h Hieght of bitmap in pixels
- @param color 16-bit 5-6-5 Color to draw with
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
- const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) {
-
- int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte
- uint8_t byte = 0;
-
- startWrite();
- for(int16_t j=0; j>= 1;
- else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]);
- // Nearly identical to drawBitmap(), only the bit order
- // is reversed here (left-to-right = LSB to MSB):
- if(byte & 0x01) writePixel(x+i, y, color);
- }
- }
- endWrite();
-}
-
-
-/**************************************************************************/
-/*!
- @brief Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) pos.
- Specifically for 8-bit display devices such as IS31FL3731; no color reduction/expansion is performed.
- @param x Top left corner x coordinate
- @param y Top left corner y coordinate
- @param bitmap byte array with grayscale bitmap
- @param w Width of bitmap in pixels
- @param h Hieght of bitmap in pixels
-*/
-/**************************************************************************/
-void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y,
- const uint8_t bitmap[], int16_t w, int16_t h) {
- startWrite();
- for(int16_t j=0; j= _width) || // Clip right
- (y >= _height) || // Clip bottom
- ((x + 6 * size - 1) < 0) || // Clip left
- ((y + 8 * size - 1) < 0)) // Clip top
- return;
-
- if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior
-
- startWrite();
- for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns
- uint8_t line = pgm_read_byte(&font[c * 5 + i]);
- for(int8_t j=0; j<8; j++, line >>= 1) {
- if(line & 1) {
- if(size == 1)
- writePixel(x+i, y+j, color);
- else
- writeFillRect(x+i*size, y+j*size, size, size, color);
- } else if(bg != color) {
- if(size == 1)
- writePixel(x+i, y+j, bg);
- else
- writeFillRect(x+i*size, y+j*size, size, size, bg);
- }
- }
- }
- if(bg != color) { // If opaque, draw vertical line for last column
- if(size == 1) writeFastVLine(x+5, y, 8, bg);
- else writeFillRect(x+5*size, y, size, 8*size, bg);
- }
- endWrite();
-
- } else { // Custom font
-
- // Character is assumed previously filtered by write() to eliminate
- // newlines, returns, non-printable characters, etc. Calling
- // drawChar() directly with 'bad' characters of font may cause mayhem!
-
- c -= (uint8_t)pgm_read_byte(&gfxFont->first);
- GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
- uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap);
-
- uint16_t bo = pgm_read_word(&glyph->bitmapOffset);
- uint8_t w = pgm_read_byte(&glyph->width),
- h = pgm_read_byte(&glyph->height);
- int8_t xo = pgm_read_byte(&glyph->xOffset),
- yo = pgm_read_byte(&glyph->yOffset);
- uint8_t xx, yy, bits = 0, bit = 0;
- int16_t xo16 = 0, yo16 = 0;
-
- if(size > 1) {
- xo16 = xo;
- yo16 = yo;
- }
-
- // Todo: Add character clipping here
-
- // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
- // THIS IS ON PURPOSE AND BY DESIGN. The background color feature
- // has typically been used with the 'classic' font to overwrite old
- // screen contents with new data. This ONLY works because the
- // characters are a uniform size; it's not a sensible thing to do with
- // proportionally-spaced fonts with glyphs of varying sizes (and that
- // may overlap). To replace previously-drawn text when using a custom
- // font, use the getTextBounds() function to determine the smallest
- // rectangle encompassing a string, erase the area with fillRect(),
- // then draw new text. This WILL infortunately 'blink' the text, but
- // is unavoidable. Drawing 'background' pixels will NOT fix this,
- // only creates a new set of problems. Have an idea to work around
- // this (a canvas object type for MCUs that can afford the RAM and
- // displays supporting setAddrWindow() and pushColors()), but haven't
- // implemented this yet.
-
- startWrite();
- for(yy=0; yy _width)) { // Off right?
- cursor_x = 0; // Reset x to zero,
- cursor_y += textsize * 8; // advance y one line
- }
- drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
- cursor_x += textsize * 6; // Advance x one char
- }
-
- } else { // Custom font
-
- if(c == '\n') {
- cursor_x = 0;
- cursor_y += (int16_t)textsize *
- (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
- } else if(c != '\r') {
- uint8_t first = pgm_read_byte(&gfxFont->first);
- if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) {
- GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
- &gfxFont->glyph))[c - first]);
- uint8_t w = pgm_read_byte(&glyph->width),
- h = pgm_read_byte(&glyph->height);
- if((w > 0) && (h > 0)) { // Is there an associated bitmap?
- int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic
- if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) {
- cursor_x = 0;
- cursor_y += (int16_t)textsize *
- (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
- }
- drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
- }
- cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize;
- }
- }
-
- }
- return 1;
-}
-
-/**************************************************************************/
-/*!
- @brief Set text cursor location
- @param x X coordinate in pixels
- @param y Y coordinate in pixels
-*/
-/**************************************************************************/
-void Adafruit_GFX::setCursor(int16_t x, int16_t y) {
- cursor_x = x;
- cursor_y = y;
-}
-
-/**************************************************************************/
-/*!
- @brief Get text cursor X location
- @returns X coordinate in pixels
-*/
-/**************************************************************************/
-int16_t Adafruit_GFX::getCursorX(void) const {
- return cursor_x;
-}
-
-/**************************************************************************/
-/*!
- @brief Get text cursor Y location
- @returns Y coordinate in pixels
-*/
-/**************************************************************************/
-int16_t Adafruit_GFX::getCursorY(void) const {
- return cursor_y;
-}
-
-/**************************************************************************/
-/*!
- @brief Set text 'magnification' size. Each increase in s makes 1 pixel that much bigger.
- @param s Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc
-*/
-/**************************************************************************/
-void Adafruit_GFX::setTextSize(uint8_t s) {
- textsize = (s > 0) ? s : 1;
-}
-
-/**************************************************************************/
-/*!
- @brief Set text font color with transparant background
- @param c 16-bit 5-6-5 Color to draw text with
-*/
-/**************************************************************************/
-void Adafruit_GFX::setTextColor(uint16_t c) {
- // For 'transparent' background, we'll set the bg
- // to the same as fg instead of using a flag
- textcolor = textbgcolor = c;
-}
-
-/**************************************************************************/
-/*!
- @brief Set text font color with custom background color
- @param c 16-bit 5-6-5 Color to draw text with
- @param b 16-bit 5-6-5 Color to draw background/fill with
-*/
-/**************************************************************************/
-void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) {
- textcolor = c;
- textbgcolor = b;
-}
-
-/**************************************************************************/
-/*!
- @brief Whether text that is too long should 'wrap' around to the next line.
- @param w Set true for wrapping, false for clipping
-*/
-/**************************************************************************/
-void Adafruit_GFX::setTextWrap(boolean w) {
- wrap = w;
-}
-
-/**************************************************************************/
-/*!
- @brief Get rotation setting for display
- @returns 0 thru 3 corresponding to 4 cardinal rotations
-*/
-/**************************************************************************/
-uint8_t Adafruit_GFX::getRotation(void) const {
- return rotation;
-}
-
-/**************************************************************************/
-/*!
- @brief Set rotation setting for display
- @param x 0 thru 3 corresponding to 4 cardinal rotations
-*/
-/**************************************************************************/
-void Adafruit_GFX::setRotation(uint8_t x) {
- rotation = (x & 3);
- switch(rotation) {
- case 0:
- case 2:
- _width = WIDTH;
- _height = HEIGHT;
- break;
- case 1:
- case 3:
- _width = HEIGHT;
- _height = WIDTH;
- break;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Enable (or disable) Code Page 437-compatible charset.
- There was an error in glcdfont.c for the longest time -- one character
- (#176, the 'light shade' block) was missing -- this threw off the index
- of every character that followed it. But a TON of code has been written
- with the erroneous character indices. By default, the library uses the
- original 'wrong' behavior and old sketches will still work. Pass 'true'
- to this function to use correct CP437 character values in your code.
- @param x Whether to enable (True) or not (False)
-*/
-/**************************************************************************/
-void Adafruit_GFX::cp437(boolean x) {
- _cp437 = x;
-}
-
-/**************************************************************************/
-/*!
- @brief Set the font to display when print()ing, either custom or default
- @param f The GFXfont object, if NULL use built in 6x8 font
-*/
-/**************************************************************************/
-void Adafruit_GFX::setFont(const GFXfont *f) {
- if(f) { // Font struct pointer passed in?
- if(!gfxFont) { // And no current font struct?
- // Switching from classic to new font behavior.
- // Move cursor pos down 6 pixels so it's on baseline.
- cursor_y += 6;
- }
- } else if(gfxFont) { // NULL passed. Current font struct defined?
- // Switching from new to classic font behavior.
- // Move cursor pos up 6 pixels so it's at top-left of char.
- cursor_y -= 6;
- }
- gfxFont = (GFXfont *)f;
-}
-
-
-/**************************************************************************/
-/*!
- @brief Helper to determine size of a character with current font/size.
- Broke this out as it's used by both the PROGMEM- and RAM-resident getTextBounds() functions.
- @param c The ascii character in question
- @param x Pointer to x location of character
- @param y Pointer to y location of character
- @param minx Minimum clipping value for X
- @param miny Minimum clipping value for Y
- @param maxx Maximum clipping value for X
- @param maxy Maximum clipping value for Y
-*/
-/**************************************************************************/
-void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y,
- int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) {
-
- if(gfxFont) {
-
- if(c == '\n') { // Newline?
- *x = 0; // Reset x to zero, advance y by one line
- *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
- } else if(c != '\r') { // Not a carriage return; is normal char
- uint8_t first = pgm_read_byte(&gfxFont->first),
- last = pgm_read_byte(&gfxFont->last);
- if((c >= first) && (c <= last)) { // Char present in this font?
- GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
- &gfxFont->glyph))[c - first]);
- uint8_t gw = pgm_read_byte(&glyph->width),
- gh = pgm_read_byte(&glyph->height),
- xa = pgm_read_byte(&glyph->xAdvance);
- int8_t xo = pgm_read_byte(&glyph->xOffset),
- yo = pgm_read_byte(&glyph->yOffset);
- if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) {
- *x = 0; // Reset x to zero, advance y by one line
- *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
- }
- int16_t ts = (int16_t)textsize,
- x1 = *x + xo * ts,
- y1 = *y + yo * ts,
- x2 = x1 + gw * ts - 1,
- y2 = y1 + gh * ts - 1;
- if(x1 < *minx) *minx = x1;
- if(y1 < *miny) *miny = y1;
- if(x2 > *maxx) *maxx = x2;
- if(y2 > *maxy) *maxy = y2;
- *x += xa * ts;
- }
- }
-
- } else { // Default font
-
- if(c == '\n') { // Newline?
- *x = 0; // Reset x to zero,
- *y += textsize * 8; // advance y one line
- // min/max x/y unchaged -- that waits for next 'normal' character
- } else if(c != '\r') { // Normal char; ignore carriage returns
- if(wrap && ((*x + textsize * 6) > _width)) { // Off right?
- *x = 0; // Reset x to zero,
- *y += textsize * 8; // advance y one line
- }
- int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char
- y2 = *y + textsize * 8 - 1;
- if(x2 > *maxx) *maxx = x2; // Track max x, y
- if(y2 > *maxy) *maxy = y2;
- if(*x < *minx) *minx = *x; // Track min x, y
- if(*y < *miny) *miny = *y;
- *x += textsize * 6; // Advance x one char
- }
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Helper to determine size of a string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
- @param str The ascii string to measure
- @param x The current cursor X
- @param y The current cursor Y
- @param x1 The boundary X coordinate, set by function
- @param y1 The boundary Y coordinate, set by function
- @param w The boundary width, set by function
- @param h The boundary height, set by function
-*/
-/**************************************************************************/
-void Adafruit_GFX::getTextBounds(const char *str, int16_t x, int16_t y,
- int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
- uint8_t c; // Current character
-
- *x1 = x;
- *y1 = y;
- *w = *h = 0;
-
- int16_t minx = _width, miny = _height, maxx = -1, maxy = -1;
-
- while((c = *str++))
- charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy);
-
- if(maxx >= minx) {
- *x1 = minx;
- *w = maxx - minx + 1;
- }
- if(maxy >= miny) {
- *y1 = miny;
- *h = maxy - miny + 1;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Helper to determine size of a string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
- @param str The ascii string to measure (as an arduino String() class)
- @param x The current cursor X
- @param y The current cursor Y
- @param x1 The boundary X coordinate, set by function
- @param y1 The boundary Y coordinate, set by function
- @param w The boundary width, set by function
- @param h The boundary height, set by function
-*/
-/**************************************************************************/
-void Adafruit_GFX::getTextBounds(const String &str, int16_t x, int16_t y,
- int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
- if (str.length() != 0) {
- getTextBounds(const_cast(str.c_str()), x, y, x1, y1, w, h);
- }
-}
-
-
-/**************************************************************************/
-/*!
- @brief Helper to determine size of a PROGMEM string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
- @param str The flash-memory ascii string to measure
- @param x The current cursor X
- @param y The current cursor Y
- @param x1 The boundary X coordinate, set by function
- @param y1 The boundary Y coordinate, set by function
- @param w The boundary width, set by function
- @param h The boundary height, set by function
-*/
-/**************************************************************************/
-void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str,
- int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
- uint8_t *s = (uint8_t *)str, c;
-
- *x1 = x;
- *y1 = y;
- *w = *h = 0;
-
- int16_t minx = _width, miny = _height, maxx = -1, maxy = -1;
-
- while((c = pgm_read_byte(s++)))
- charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy);
-
- if(maxx >= minx) {
- *x1 = minx;
- *w = maxx - minx + 1;
- }
- if(maxy >= miny) {
- *y1 = miny;
- *h = maxy - miny + 1;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Get width of the display, accounting for the current rotation
- @returns Width in pixels
-*/
-/**************************************************************************/
-int16_t Adafruit_GFX::width(void) const {
- return _width;
-}
-
-/**************************************************************************/
-/*!
- @brief Get height of the display, accounting for the current rotation
- @returns Height in pixels
-*/
-/**************************************************************************/
-int16_t Adafruit_GFX::height(void) const {
- return _height;
-}
-
-/**************************************************************************/
-/*!
- @brief Invert the display (ideally using built-in hardware command)
- @param i True if you want to invert, false to make 'normal'
-*/
-/**************************************************************************/
-void Adafruit_GFX::invertDisplay(boolean __attribute__((unused)) i) {
- // Do nothing, must be subclassed if supported by hardware
-}
-
-/***************************************************************************/
-
-/**************************************************************************/
-/*!
- @brief Create a simple drawn button UI element
-*/
-/**************************************************************************/
-Adafruit_GFX_Button::Adafruit_GFX_Button(void) {
- _gfx = 0;
-}
-
-/**************************************************************************/
-/*!
- @brief Initialize button with our desired color/size/settings
- @param gfx Pointer to our display so we can draw to it!
- @param x The X coordinate of the center of the button
- @param y The Y coordinate of the center of the button
- @param w Width of the buttton
- @param h Height of the buttton
- @param outline Color of the outline (16-bit 5-6-5 standard)
- @param fill Color of the button fill (16-bit 5-6-5 standard)
- @param textcolor Color of the button label (16-bit 5-6-5 standard)
- @param label Ascii string of the text inside the button
- @param textsize The font magnification of the label text
-*/
-/**************************************************************************/
-// Classic initButton() function: pass center & size
-void Adafruit_GFX_Button::initButton(
- Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h,
- uint16_t outline, uint16_t fill, uint16_t textcolor,
- char *label, uint8_t textsize)
-{
- // Tweak arguments and pass to the newer initButtonUL() function...
- initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill,
- textcolor, label, textsize);
-}
-
-/**************************************************************************/
-/*!
- @brief Initialize button with our desired color/size/settings, with upper-left coordinates
- @param gfx Pointer to our display so we can draw to it!
- @param x1 The X coordinate of the Upper-Left corner of the button
- @param y1 The Y coordinate of the Upper-Left corner of the button
- @param w Width of the buttton
- @param h Height of the buttton
- @param outline Color of the outline (16-bit 5-6-5 standard)
- @param fill Color of the button fill (16-bit 5-6-5 standard)
- @param textcolor Color of the button label (16-bit 5-6-5 standard)
- @param label Ascii string of the text inside the button
- @param textsize The font magnification of the label text
-*/
-/**************************************************************************/
-void Adafruit_GFX_Button::initButtonUL(
- Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h,
- uint16_t outline, uint16_t fill, uint16_t textcolor,
- char *label, uint8_t textsize)
-{
- _x1 = x1;
- _y1 = y1;
- _w = w;
- _h = h;
- _outlinecolor = outline;
- _fillcolor = fill;
- _textcolor = textcolor;
- _textsize = textsize;
- _gfx = gfx;
- strncpy(_label, label, 9);
-}
-
-/**************************************************************************/
-/*!
- @brief Draw the button on the screen
- @param inverted Whether to draw with fill/text swapped to indicate 'pressed'
-*/
-/**************************************************************************/
-void Adafruit_GFX_Button::drawButton(boolean inverted) {
- uint16_t fill, outline, text;
-
- if(!inverted) {
- fill = _fillcolor;
- outline = _outlinecolor;
- text = _textcolor;
- } else {
- fill = _textcolor;
- outline = _outlinecolor;
- text = _fillcolor;
- }
-
- uint8_t r = min(_w, _h) / 4; // Corner radius
- _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill);
- _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline);
-
- _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize),
- _y1 + (_h/2) - (4 * _textsize));
- _gfx->setTextColor(text);
- _gfx->setTextSize(_textsize);
- _gfx->print(_label);
-}
-
-/**************************************************************************/
-/*!
- @brief Helper to let us know if a coordinate is within the bounds of the button
- @param x The X coordinate to check
- @param y The Y coordinate to check
- @returns True if within button graphics outline
-*/
-/**************************************************************************/
-boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) {
- return ((x >= _x1) && (x < (int16_t) (_x1 + _w)) &&
- (y >= _y1) && (y < (int16_t) (_y1 + _h)));
-}
-
-/**************************************************************************/
-/*!
- @brief Sets the state of the button, should be done by some touch function
- @param p True for pressed, false for not.
-*/
-/**************************************************************************/
-void Adafruit_GFX_Button::press(boolean p) {
- laststate = currstate;
- currstate = p;
-}
-
-/**************************************************************************/
-/*!
- @brief Query whether the button is currently pressed
- @returns True if pressed
-*/
-/**************************************************************************/
-boolean Adafruit_GFX_Button::isPressed() { return currstate; }
-
-/**************************************************************************/
-/*!
- @brief Query whether the button was pressed since we last checked state
- @returns True if was not-pressed before, now is.
-*/
-/**************************************************************************/
-boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); }
-
-/**************************************************************************/
-/*!
- @brief Query whether the button was released since we last checked state
- @returns True if was pressed before, now is not.
-*/
-/**************************************************************************/
-boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); }
-
-// -------------------------------------------------------------------------
-
-// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too
-// comfy with the implementation) provide 1-, 8- and 16-bit offscreen
-// canvases, the address of which can be passed to drawBitmap() or
-// pushColors() (the latter appears only in a couple of GFX-subclassed TFT
-// libraries at this time). This is here mostly to help with the recently-
-// added proportionally-spaced fonts; adds a way to refresh a section of the
-// screen without a massive flickering clear-and-redraw...but maybe you'll
-// find other uses too. VERY RAM-intensive, since the buffer is in MCU
-// memory and not the display driver...GXFcanvas1 might be minimally useful
-// on an Uno-class board, but this and the others are much more likely to
-// require at least a Mega or various recent ARM-type boards (recommended,
-// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per
-// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte
-// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no
-// scanline pad).
-// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND.
-
-/**************************************************************************/
-/*!
- @brief Instatiate a GFX 1-bit canvas context for graphics
- @param w Display width, in pixels
- @param h Display height, in pixels
-*/
-/**************************************************************************/
-GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
- uint16_t bytes = ((w + 7) / 8) * h;
- if((buffer = (uint8_t *)malloc(bytes))) {
- memset(buffer, 0, bytes);
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Delete the canvas, free memory
-*/
-/**************************************************************************/
-GFXcanvas1::~GFXcanvas1(void) {
- if(buffer) free(buffer);
-}
-
-/**************************************************************************/
-/*!
- @brief Get a pointer to the internal buffer memory
- @returns A pointer to the allocated buffer
-*/
-/**************************************************************************/
-uint8_t* GFXcanvas1::getBuffer(void) {
- return buffer;
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a pixel to the canvas framebuffer
- @param x x coordinate
- @param y y coordinate
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) {
-#ifdef __AVR__
- // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR
- static const uint8_t PROGMEM
- GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 },
- GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE };
-#endif
-
- if(buffer) {
- if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
-
- int16_t t;
- switch(rotation) {
- case 1:
- t = x;
- x = WIDTH - 1 - y;
- y = t;
- break;
- case 2:
- x = WIDTH - 1 - x;
- y = HEIGHT - 1 - y;
- break;
- case 3:
- t = x;
- x = y;
- y = HEIGHT - 1 - t;
- break;
- }
-
- uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)];
-#ifdef __AVR__
- if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]);
- else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]);
-#else
- if(color) *ptr |= 0x80 >> (x & 7);
- else *ptr &= ~(0x80 >> (x & 7));
-#endif
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Fill the framebuffer completely with one color
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas1::fillScreen(uint16_t color) {
- if(buffer) {
- uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT;
- memset(buffer, color ? 0xFF : 0x00, bytes);
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Instatiate a GFX 8-bit canvas context for graphics
- @param w Display width, in pixels
- @param h Display height, in pixels
-*/
-/**************************************************************************/
-GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
- uint32_t bytes = w * h;
- if((buffer = (uint8_t *)malloc(bytes))) {
- memset(buffer, 0, bytes);
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Delete the canvas, free memory
-*/
-/**************************************************************************/
-GFXcanvas8::~GFXcanvas8(void) {
- if(buffer) free(buffer);
-}
-
-
-/**************************************************************************/
-/*!
- @brief Get a pointer to the internal buffer memory
- @returns A pointer to the allocated buffer
-*/
-/**************************************************************************/
-uint8_t* GFXcanvas8::getBuffer(void) {
- return buffer;
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a pixel to the canvas framebuffer
- @param x x coordinate
- @param y y coordinate
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) {
- if(buffer) {
- if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
-
- int16_t t;
- switch(rotation) {
- case 1:
- t = x;
- x = WIDTH - 1 - y;
- y = t;
- break;
- case 2:
- x = WIDTH - 1 - x;
- y = HEIGHT - 1 - y;
- break;
- case 3:
- t = x;
- x = y;
- y = HEIGHT - 1 - t;
- break;
- }
-
- buffer[x + y * WIDTH] = color;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Fill the framebuffer completely with one color
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas8::fillScreen(uint16_t color) {
- if(buffer) {
- memset(buffer, color, WIDTH * HEIGHT);
- }
-}
-
-void GFXcanvas8::writeFastHLine(int16_t x, int16_t y,
- int16_t w, uint16_t color) {
-
- if((x >= _width) || (y < 0) || (y >= _height)) return;
- int16_t x2 = x + w - 1;
- if(x2 < 0) return;
-
- // Clip left/right
- if(x < 0) {
- x = 0;
- w = x2 + 1;
- }
- if(x2 >= _width) w = _width - x;
-
- int16_t t;
- switch(rotation) {
- case 1:
- t = x;
- x = WIDTH - 1 - y;
- y = t;
- break;
- case 2:
- x = WIDTH - 1 - x;
- y = HEIGHT - 1 - y;
- break;
- case 3:
- t = x;
- x = y;
- y = HEIGHT - 1 - t;
- break;
- }
-
- memset(buffer + y * WIDTH + x, color, w);
-}
-
-/**************************************************************************/
-/*!
- @brief Instatiate a GFX 16-bit canvas context for graphics
- @param w Display width, in pixels
- @param h Display height, in pixels
-*/
-/**************************************************************************/
-GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
- uint32_t bytes = w * h * 2;
- if((buffer = (uint16_t *)malloc(bytes))) {
- memset(buffer, 0, bytes);
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Delete the canvas, free memory
-*/
-/**************************************************************************/
-GFXcanvas16::~GFXcanvas16(void) {
- if(buffer) free(buffer);
-}
-
-/**************************************************************************/
-/*!
- @brief Get a pointer to the internal buffer memory
- @returns A pointer to the allocated buffer
-*/
-/**************************************************************************/
-uint16_t* GFXcanvas16::getBuffer(void) {
- return buffer;
-}
-
-/**************************************************************************/
-/*!
- @brief Draw a pixel to the canvas framebuffer
- @param x x coordinate
- @param y y coordinate
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) {
- if(buffer) {
- if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
-
- int16_t t;
- switch(rotation) {
- case 1:
- t = x;
- x = WIDTH - 1 - y;
- y = t;
- break;
- case 2:
- x = WIDTH - 1 - x;
- y = HEIGHT - 1 - y;
- break;
- case 3:
- t = x;
- x = y;
- y = HEIGHT - 1 - t;
- break;
- }
-
- buffer[x + y * WIDTH] = color;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Fill the framebuffer completely with one color
- @param color 16-bit 5-6-5 Color to fill with
-*/
-/**************************************************************************/
-void GFXcanvas16::fillScreen(uint16_t color) {
- if(buffer) {
- uint8_t hi = color >> 8, lo = color & 0xFF;
- if(hi == lo) {
- memset(buffer, lo, WIDTH * HEIGHT * 2);
- } else {
- uint32_t i, pixels = WIDTH * HEIGHT;
- for(i=0; i
+#elif defined(ESP8266) || defined(ESP32)
+ #include
+#endif
+
+// Many (but maybe not all) non-AVR board installs define macros
+// for compatibility with existing PROGMEM-reading AVR code.
+// Do our own checks and defines here for good measure...
+
+#ifndef pgm_read_byte
+ #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
+#endif
+#ifndef pgm_read_word
+ #define pgm_read_word(addr) (*(const unsigned short *)(addr))
+#endif
+#ifndef pgm_read_dword
+ #define pgm_read_dword(addr) (*(const unsigned long *)(addr))
+#endif
+
+// Pointers are a peculiar case...typically 16-bit on AVR boards,
+// 32 bits elsewhere. Try to accommodate both...
+
+#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF)
+ #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr))
+#else
+ #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr))
+#endif
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef _swap_int16_t
+#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; }
+#endif
+
+/**************************************************************************/
+/*!
+ @brief Instatiate a GFX context for graphics! Can only be done by a superclass
+ @param w Display width, in pixels
+ @param h Display height, in pixels
+*/
+/**************************************************************************/
+Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h):
+WIDTH(w), HEIGHT(h)
+{
+ _width = WIDTH;
+ _height = HEIGHT;
+ rotation = 0;
+ cursor_y = cursor_x = 0;
+ textsize = 1;
+ textcolor = textbgcolor = 0xFFFF;
+ wrap = true;
+ _cp437 = false;
+ gfxFont = NULL;
+
+ dimmed_ = false;;
+ enabled_ = true;
+ inverted_ = false;
+}
+
+/**************************************************************************/
+/*!
+ @brief Write a line. Bresenham's algorithm - thx wikpedia
+ @param x0 Start point x coordinate
+ @param y0 Start point y coordinate
+ @param x1 End point x coordinate
+ @param y1 End point y coordinate
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+ uint16_t color) {
+#if defined(ESP8266)
+ yield();
+#endif
+ int16_t steep = abs(y1 - y0) > abs(x1 - x0);
+ if (steep) {
+ _swap_int16_t(x0, y0);
+ _swap_int16_t(x1, y1);
+ }
+
+ if (x0 > x1) {
+ _swap_int16_t(x0, x1);
+ _swap_int16_t(y0, y1);
+ }
+
+ int16_t dx, dy;
+ dx = x1 - x0;
+ dy = abs(y1 - y0);
+
+ int16_t err = dx / 2;
+ int16_t ystep;
+
+ if (y0 < y1) {
+ ystep = 1;
+ } else {
+ ystep = -1;
+ }
+
+ for (; x0<=x1; x0++) {
+ if (steep) {
+ writePixel(y0, x0, color);
+ } else {
+ writePixel(x0, y0, color);
+ }
+ err -= dy;
+ if (err < 0) {
+ y0 += ystep;
+ err += dx;
+ }
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Start a display-writing routine, overwrite in subclasses.
+*/
+/**************************************************************************/
+void Adafruit_GFX::startWrite(){
+}
+
+/**************************************************************************/
+/*!
+ @brief Write a pixel, overwrite in subclasses if startWrite is defined!
+ @param x x coordinate
+ @param y y coordinate
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){
+ drawPixel(x, y, color);
+}
+
+/**************************************************************************/
+/*!
+ @brief Write a perfectly vertical line, overwrite in subclasses if startWrite is defined!
+ @param x Top-most x coordinate
+ @param y Top-most y coordinate
+ @param h Height in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y,
+ int16_t h, uint16_t color) {
+ // Overwrite in subclasses if startWrite is defined!
+ // Can be just writeLine(x, y, x, y+h-1, color);
+ // or writeFillRect(x, y, 1, h, color);
+ drawFastVLine(x, y, h, color);
+}
+
+/**************************************************************************/
+/*!
+ @brief Write a perfectly horizontal line, overwrite in subclasses if startWrite is defined!
+ @param x Left-most x coordinate
+ @param y Left-most y coordinate
+ @param w Width in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y,
+ int16_t w, uint16_t color) {
+ // Overwrite in subclasses if startWrite is defined!
+ // Example: writeLine(x, y, x+w-1, y, color);
+ // or writeFillRect(x, y, w, 1, color);
+ drawFastHLine(x, y, w, color);
+}
+
+/**************************************************************************/
+/*!
+ @brief Write a rectangle completely with one color, overwrite in subclasses if startWrite is defined!
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param w Width in pixels
+ @param h Height in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color) {
+ // Overwrite in subclasses if desired!
+ fillRect(x,y,w,h,color);
+}
+
+/**************************************************************************/
+/*!
+ @brief End a display-writing routine, overwrite in subclasses if startWrite is defined!
+*/
+/**************************************************************************/
+void Adafruit_GFX::endWrite(){
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a perfectly vertical line (this is often optimized in a subclass!)
+ @param x Top-most x coordinate
+ @param y Top-most y coordinate
+ @param h Height in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y,
+ int16_t h, uint16_t color) {
+ startWrite();
+ writeLine(x, y, x, y+h-1, color);
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a perfectly horizontal line (this is often optimized in a subclass!)
+ @param x Left-most x coordinate
+ @param y Left-most y coordinate
+ @param w Width in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y,
+ int16_t w, uint16_t color) {
+ startWrite();
+ writeLine(x, y, x+w-1, y, color);
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Fill a rectangle completely with one color. Update in subclasses if desired!
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param w Width in pixels
+ @param h Height in pixels
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color) {
+ startWrite();
+ for (int16_t i=x; i y1) _swap_int16_t(y0, y1);
+ drawFastVLine(x0, y0, y1 - y0 + 1, color);
+ } else if(y0 == y1){
+ if(x0 > x1) _swap_int16_t(x0, x1);
+ drawFastHLine(x0, y0, x1 - x0 + 1, color);
+ } else {
+ startWrite();
+ writeLine(x0, y0, x1, y1, color);
+ endWrite();
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a circle outline
+ @param x0 Center-point x coordinate
+ @param y0 Center-point y coordinate
+ @param r Radius of circle
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
+ uint16_t color) {
+#if defined(ESP8266)
+ yield();
+#endif
+ int16_t f = 1 - r;
+ int16_t ddF_x = 1;
+ int16_t ddF_y = -2 * r;
+ int16_t x = 0;
+ int16_t y = r;
+
+ startWrite();
+ writePixel(x0 , y0+r, color);
+ writePixel(x0 , y0-r, color);
+ writePixel(x0+r, y0 , color);
+ writePixel(x0-r, y0 , color);
+
+ while (x= 0) {
+ y--;
+ ddF_y += 2;
+ f += ddF_y;
+ }
+ x++;
+ ddF_x += 2;
+ f += ddF_x;
+
+ writePixel(x0 + x, y0 + y, color);
+ writePixel(x0 - x, y0 + y, color);
+ writePixel(x0 + x, y0 - y, color);
+ writePixel(x0 - x, y0 - y, color);
+ writePixel(x0 + y, y0 + x, color);
+ writePixel(x0 - y, y0 + x, color);
+ writePixel(x0 + y, y0 - x, color);
+ writePixel(x0 - y, y0 - x, color);
+ }
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Quarter-circle drawer, used to do circles and roundrects
+ @param x0 Center-point x coordinate
+ @param y0 Center-point y coordinate
+ @param r Radius of circle
+ @param cornername Mask bit #1 or bit #2 to indicate which quarters of the circle we're doing
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0,
+ int16_t r, uint8_t cornername, uint16_t color) {
+ int16_t f = 1 - r;
+ int16_t ddF_x = 1;
+ int16_t ddF_y = -2 * r;
+ int16_t x = 0;
+ int16_t y = r;
+
+ while (x= 0) {
+ y--;
+ ddF_y += 2;
+ f += ddF_y;
+ }
+ x++;
+ ddF_x += 2;
+ f += ddF_x;
+ if (cornername & 0x4) {
+ writePixel(x0 + x, y0 + y, color);
+ writePixel(x0 + y, y0 + x, color);
+ }
+ if (cornername & 0x2) {
+ writePixel(x0 + x, y0 - y, color);
+ writePixel(x0 + y, y0 - x, color);
+ }
+ if (cornername & 0x8) {
+ writePixel(x0 - y, y0 + x, color);
+ writePixel(x0 - x, y0 + y, color);
+ }
+ if (cornername & 0x1) {
+ writePixel(x0 - y, y0 - x, color);
+ writePixel(x0 - x, y0 - y, color);
+ }
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a circle with filled color
+ @param x0 Center-point x coordinate
+ @param y0 Center-point y coordinate
+ @param r Radius of circle
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r,
+ uint16_t color) {
+ startWrite();
+ writeFastVLine(x0, y0-r, 2*r+1, color);
+ fillCircleHelper(x0, y0, r, 3, 0, color);
+ endWrite();
+}
+
+
+/**************************************************************************/
+/*!
+ @brief Quarter-circle drawer with fill, used for circles and roundrects
+ @param x0 Center-point x coordinate
+ @param y0 Center-point y coordinate
+ @param r Radius of circle
+ @param corners Mask bits indicating which quarters we're doing
+ @param delta Offset from center-point, used for round-rects
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
+ uint8_t corners, int16_t delta, uint16_t color) {
+
+ int16_t f = 1 - r;
+ int16_t ddF_x = 1;
+ int16_t ddF_y = -2 * r;
+ int16_t x = 0;
+ int16_t y = r;
+ int16_t px = x;
+ int16_t py = y;
+
+ delta++; // Avoid some +1's in the loop
+
+ while(x < y) {
+ if (f >= 0) {
+ y--;
+ ddF_y += 2;
+ f += ddF_y;
+ }
+ x++;
+ ddF_x += 2;
+ f += ddF_x;
+ // These checks avoid double-drawing certain lines, important
+ // for the SSD1306 library which has an INVERT drawing mode.
+ if(x < (y + 1)) {
+ if(corners & 1) writeFastVLine(x0+x, y0-y, 2*y+delta, color);
+ if(corners & 2) writeFastVLine(x0-x, y0-y, 2*y+delta, color);
+ }
+ if(y != py) {
+ if(corners & 1) writeFastVLine(x0+py, y0-px, 2*px+delta, color);
+ if(corners & 2) writeFastVLine(x0-py, y0-px, 2*px+delta, color);
+ py = y;
+ }
+ px = x;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a rectangle with no fill color
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param w Width in pixels
+ @param h Height in pixels
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color) {
+ startWrite();
+ writeFastHLine(x, y, w, color);
+ writeFastHLine(x, y+h-1, w, color);
+ writeFastVLine(x, y, h, color);
+ writeFastVLine(x+w-1, y, h, color);
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a rounded rectangle with no fill color
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param w Width in pixels
+ @param h Height in pixels
+ @param r Radius of corner rounding
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
+ int16_t h, int16_t r, uint16_t color) {
+ int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis
+ if(r > max_radius) r = max_radius;
+ // smarter version
+ startWrite();
+ writeFastHLine(x+r , y , w-2*r, color); // Top
+ writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom
+ writeFastVLine(x , y+r , h-2*r, color); // Left
+ writeFastVLine(x+w-1, y+r , h-2*r, color); // Right
+ // draw four corners
+ drawCircleHelper(x+r , y+r , r, 1, color);
+ drawCircleHelper(x+w-r-1, y+r , r, 2, color);
+ drawCircleHelper(x+w-r-1, y+h-r-1, r, 4, color);
+ drawCircleHelper(x+r , y+h-r-1, r, 8, color);
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a rounded rectangle with fill color
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param w Width in pixels
+ @param h Height in pixels
+ @param r Radius of corner rounding
+ @param color 16-bit 5-6-5 Color to draw/fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
+ int16_t h, int16_t r, uint16_t color) {
+ int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis
+ if(r > max_radius) r = max_radius;
+ // smarter version
+ startWrite();
+ writeFillRect(x+r, y, w-2*r, h, color);
+ // draw four corners
+ fillCircleHelper(x+w-r-1, y+r, r, 1, h-2*r-1, color);
+ fillCircleHelper(x+r , y+r, r, 2, h-2*r-1, color);
+ endWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a triangle with no fill color
+ @param x0 Vertex #0 x coordinate
+ @param y0 Vertex #0 y coordinate
+ @param x1 Vertex #1 x coordinate
+ @param y1 Vertex #1 y coordinate
+ @param x2 Vertex #2 x coordinate
+ @param y2 Vertex #2 y coordinate
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
+ int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
+ drawLine(x0, y0, x1, y1, color);
+ drawLine(x1, y1, x2, y2, color);
+ drawLine(x2, y2, x0, y0, color);
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a triangle with color-fill
+ @param x0 Vertex #0 x coordinate
+ @param y0 Vertex #0 y coordinate
+ @param x1 Vertex #1 x coordinate
+ @param y1 Vertex #1 y coordinate
+ @param x2 Vertex #2 x coordinate
+ @param y2 Vertex #2 y coordinate
+ @param color 16-bit 5-6-5 Color to fill/draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0,
+ int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
+
+ int16_t a, b, y, last;
+
+ // Sort coordinates by Y order (y2 >= y1 >= y0)
+ if (y0 > y1) {
+ _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
+ }
+ if (y1 > y2) {
+ _swap_int16_t(y2, y1); _swap_int16_t(x2, x1);
+ }
+ if (y0 > y1) {
+ _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
+ }
+
+ startWrite();
+ if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing
+ a = b = x0;
+ if(x1 < a) a = x1;
+ else if(x1 > b) b = x1;
+ if(x2 < a) a = x2;
+ else if(x2 > b) b = x2;
+ writeFastHLine(a, y0, b-a+1, color);
+ endWrite();
+ return;
+ }
+
+ int16_t
+ dx01 = x1 - x0,
+ dy01 = y1 - y0,
+ dx02 = x2 - x0,
+ dy02 = y2 - y0,
+ dx12 = x2 - x1,
+ dy12 = y2 - y1;
+ int32_t
+ sa = 0,
+ sb = 0;
+
+ // For upper part of triangle, find scanline crossings for segments
+ // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1
+ // is included here (and second loop will be skipped, avoiding a /0
+ // error there), otherwise scanline y1 is skipped here and handled
+ // in the second loop...which also avoids a /0 error here if y0=y1
+ // (flat-topped triangle).
+ if(y1 == y2) last = y1; // Include y1 scanline
+ else last = y1-1; // Skip it
+
+ for(y=y0; y<=last; y++) {
+ a = x0 + sa / dy01;
+ b = x0 + sb / dy02;
+ sa += dx01;
+ sb += dx02;
+ /* longhand:
+ a = x0 + (x1 - x0) * (y - y0) / (y1 - y0);
+ b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+ */
+ if(a > b) _swap_int16_t(a,b);
+ writeFastHLine(a, y, b-a+1, color);
+ }
+
+ // For lower part of triangle, find scanline crossings for segments
+ // 0-2 and 1-2. This loop is skipped if y1=y2.
+ sa = dx12 * (y - y1);
+ sb = dx02 * (y - y0);
+ for(; y<=y2; y++) {
+ a = x1 + sa / dy12;
+ b = x0 + sb / dy02;
+ sa += dx12;
+ sb += dx02;
+ /* longhand:
+ a = x1 + (x2 - x1) * (y - y1) / (y2 - y1);
+ b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+ */
+ if(a > b) _swap_int16_t(a,b);
+ writeFastHLine(a, y, b-a+1, color);
+ }
+ endWrite();
+}
+
+// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS ---------------------
+
+/**************************************************************************/
+/*!
+ @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, using the specified foreground color (unset bits are transparent).
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param bitmap byte array with monochrome bitmap
+ @param w Width of bitmap in pixels
+ @param h Hieght of bitmap in pixels
+ @param color 16-bit 5-6-5 Color to draw with
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
+ const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) {
+
+ int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte
+ uint8_t byte = 0;
+
+ startWrite();
+ for(int16_t j=0; j>= 1;
+ else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]);
+ // Nearly identical to drawBitmap(), only the bit order
+ // is reversed here (left-to-right = LSB to MSB):
+ if(byte & 0x01) writePixel(x+i, y, color);
+ }
+ }
+ endWrite();
+}
+
+
+/**************************************************************************/
+/*!
+ @brief Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) pos.
+ Specifically for 8-bit display devices such as IS31FL3731; no color reduction/expansion is performed.
+ @param x Top left corner x coordinate
+ @param y Top left corner y coordinate
+ @param bitmap byte array with grayscale bitmap
+ @param w Width of bitmap in pixels
+ @param h Hieght of bitmap in pixels
+*/
+/**************************************************************************/
+void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y,
+ const uint8_t bitmap[], int16_t w, int16_t h) {
+ startWrite();
+ for(int16_t j=0; j= _width) || // Clip right
+ (y >= _height) || // Clip bottom
+ ((x + 6 * size - 1) < 0) || // Clip left
+ ((y + 8 * size - 1) < 0)) // Clip top
+ return;
+
+ if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior
+
+ startWrite();
+ for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns
+ uint8_t line = pgm_read_byte(&font[c * 5 + i]);
+ for(int8_t j=0; j<8; j++, line >>= 1) {
+ if(line & 1) {
+ if(size == 1)
+ writePixel(x+i, y+j, color);
+ else
+ writeFillRect(x+i*size, y+j*size, size, size, color);
+ } else if(bg != color) {
+ if(size == 1)
+ writePixel(x+i, y+j, bg);
+ else
+ writeFillRect(x+i*size, y+j*size, size, size, bg);
+ }
+ }
+ }
+ if(bg != color) { // If opaque, draw vertical line for last column
+ if(size == 1) writeFastVLine(x+5, y, 8, bg);
+ else writeFillRect(x+5*size, y, size, 8*size, bg);
+ }
+ endWrite();
+
+ } else { // Custom font
+
+ // Character is assumed previously filtered by write() to eliminate
+ // newlines, returns, non-printable characters, etc. Calling
+ // drawChar() directly with 'bad' characters of font may cause mayhem!
+
+ c -= (uint8_t)pgm_read_byte(&gfxFont->first);
+ GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
+ uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap);
+
+ uint16_t bo = pgm_read_word(&glyph->bitmapOffset);
+ uint8_t w = pgm_read_byte(&glyph->width),
+ h = pgm_read_byte(&glyph->height);
+ int8_t xo = pgm_read_byte(&glyph->xOffset),
+ yo = pgm_read_byte(&glyph->yOffset);
+ uint8_t xx, yy, bits = 0, bit = 0;
+ int16_t xo16 = 0, yo16 = 0;
+
+ if(size > 1) {
+ xo16 = xo;
+ yo16 = yo;
+ }
+
+ // Todo: Add character clipping here
+
+ // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
+ // THIS IS ON PURPOSE AND BY DESIGN. The background color feature
+ // has typically been used with the 'classic' font to overwrite old
+ // screen contents with new data. This ONLY works because the
+ // characters are a uniform size; it's not a sensible thing to do with
+ // proportionally-spaced fonts with glyphs of varying sizes (and that
+ // may overlap). To replace previously-drawn text when using a custom
+ // font, use the getTextBounds() function to determine the smallest
+ // rectangle encompassing a string, erase the area with fillRect(),
+ // then draw new text. This WILL infortunately 'blink' the text, but
+ // is unavoidable. Drawing 'background' pixels will NOT fix this,
+ // only creates a new set of problems. Have an idea to work around
+ // this (a canvas object type for MCUs that can afford the RAM and
+ // displays supporting setAddrWindow() and pushColors()), but haven't
+ // implemented this yet.
+
+ startWrite();
+ for(yy=0; yy _width)) { // Off right?
+ cursor_x = 0; // Reset x to zero,
+ cursor_y += textsize * 8; // advance y one line
+ }
+ drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
+ cursor_x += textsize * 6; // Advance x one char
+ }
+
+ } else { // Custom font
+
+ if(c == '\n') {
+ cursor_x = 0;
+ cursor_y += (int16_t)textsize *
+ (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
+ } else if(c != '\r') {
+ uint8_t first = pgm_read_byte(&gfxFont->first);
+ if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) {
+ GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
+ &gfxFont->glyph))[c - first]);
+ uint8_t w = pgm_read_byte(&glyph->width),
+ h = pgm_read_byte(&glyph->height);
+ if((w > 0) && (h > 0)) { // Is there an associated bitmap?
+ int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic
+ if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) {
+ cursor_x = 0;
+ cursor_y += (int16_t)textsize *
+ (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
+ }
+ drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
+ }
+ cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize;
+ }
+ }
+
+ }
+ return 1;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set text cursor location
+ @param x X coordinate in pixels
+ @param y Y coordinate in pixels
+*/
+/**************************************************************************/
+void Adafruit_GFX::setCursor(int16_t x, int16_t y) {
+ cursor_x = x;
+ cursor_y = y;
+}
+
+/**************************************************************************/
+/*!
+ @brief Get text cursor X location
+ @returns X coordinate in pixels
+*/
+/**************************************************************************/
+int16_t Adafruit_GFX::getCursorX(void) const {
+ return cursor_x;
+}
+
+/**************************************************************************/
+/*!
+ @brief Get text cursor Y location
+ @returns Y coordinate in pixels
+*/
+/**************************************************************************/
+int16_t Adafruit_GFX::getCursorY(void) const {
+ return cursor_y;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set text 'magnification' size. Each increase in s makes 1 pixel that much bigger.
+ @param s Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc
+*/
+/**************************************************************************/
+void Adafruit_GFX::setTextSize(uint8_t s) {
+ textsize = (s > 0) ? s : 1;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set text font color with transparant background
+ @param c 16-bit 5-6-5 Color to draw text with
+*/
+/**************************************************************************/
+void Adafruit_GFX::setTextColor(uint16_t c) {
+ // For 'transparent' background, we'll set the bg
+ // to the same as fg instead of using a flag
+ textcolor = textbgcolor = c;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set text font color with custom background color
+ @param c 16-bit 5-6-5 Color to draw text with
+ @param b 16-bit 5-6-5 Color to draw background/fill with
+*/
+/**************************************************************************/
+void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) {
+ textcolor = c;
+ textbgcolor = b;
+}
+
+/**************************************************************************/
+/*!
+ @brief Whether text that is too long should 'wrap' around to the next line.
+ @param w Set true for wrapping, false for clipping
+*/
+/**************************************************************************/
+void Adafruit_GFX::setTextWrap(boolean w) {
+ wrap = w;
+}
+
+/**************************************************************************/
+/*!
+ @brief Get rotation setting for display
+ @returns 0 thru 3 corresponding to 4 cardinal rotations
+*/
+/**************************************************************************/
+uint8_t Adafruit_GFX::getRotation(void) const {
+ return rotation;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set rotation setting for display
+ @param x 0 thru 3 corresponding to 4 cardinal rotations
+*/
+/**************************************************************************/
+void Adafruit_GFX::setRotation(uint8_t x) {
+ rotation = (x & 3);
+ switch(rotation) {
+ case 0:
+ case 2:
+ _width = WIDTH;
+ _height = HEIGHT;
+ break;
+ case 1:
+ case 3:
+ _width = HEIGHT;
+ _height = WIDTH;
+ break;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Enable (or disable) Code Page 437-compatible charset.
+ There was an error in glcdfont.c for the longest time -- one character
+ (#176, the 'light shade' block) was missing -- this threw off the index
+ of every character that followed it. But a TON of code has been written
+ with the erroneous character indices. By default, the library uses the
+ original 'wrong' behavior and old sketches will still work. Pass 'true'
+ to this function to use correct CP437 character values in your code.
+ @param x Whether to enable (True) or not (False)
+*/
+/**************************************************************************/
+void Adafruit_GFX::cp437(boolean x) {
+ _cp437 = x;
+}
+
+/**************************************************************************/
+/*!
+ @brief Set the font to display when print()ing, either custom or default
+ @param f The GFXfont object, if NULL use built in 6x8 font
+*/
+/**************************************************************************/
+void Adafruit_GFX::setFont(const GFXfont *f) {
+ if(f) { // Font struct pointer passed in?
+ if(!gfxFont) { // And no current font struct?
+ // Switching from classic to new font behavior.
+ // Move cursor pos down 6 pixels so it's on baseline.
+ cursor_y += 6;
+ }
+ } else if(gfxFont) { // NULL passed. Current font struct defined?
+ // Switching from new to classic font behavior.
+ // Move cursor pos up 6 pixels so it's at top-left of char.
+ cursor_y -= 6;
+ }
+ gfxFont = (GFXfont *)f;
+}
+
+
+/**************************************************************************/
+/*!
+ @brief Helper to determine size of a character with current font/size.
+ Broke this out as it's used by both the PROGMEM- and RAM-resident getTextBounds() functions.
+ @param c The ascii character in question
+ @param x Pointer to x location of character
+ @param y Pointer to y location of character
+ @param minx Minimum clipping value for X
+ @param miny Minimum clipping value for Y
+ @param maxx Maximum clipping value for X
+ @param maxy Maximum clipping value for Y
+*/
+/**************************************************************************/
+void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y,
+ int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) {
+
+ if(gfxFont) {
+
+ if(c == '\n') { // Newline?
+ *x = 0; // Reset x to zero, advance y by one line
+ *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
+ } else if(c != '\r') { // Not a carriage return; is normal char
+ uint8_t first = pgm_read_byte(&gfxFont->first),
+ last = pgm_read_byte(&gfxFont->last);
+ if((c >= first) && (c <= last)) { // Char present in this font?
+ GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
+ &gfxFont->glyph))[c - first]);
+ uint8_t gw = pgm_read_byte(&glyph->width),
+ gh = pgm_read_byte(&glyph->height),
+ xa = pgm_read_byte(&glyph->xAdvance);
+ int8_t xo = pgm_read_byte(&glyph->xOffset),
+ yo = pgm_read_byte(&glyph->yOffset);
+ if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) {
+ *x = 0; // Reset x to zero, advance y by one line
+ *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
+ }
+ int16_t ts = (int16_t)textsize,
+ x1 = *x + xo * ts,
+ y1 = *y + yo * ts,
+ x2 = x1 + gw * ts - 1,
+ y2 = y1 + gh * ts - 1;
+ if(x1 < *minx) *minx = x1;
+ if(y1 < *miny) *miny = y1;
+ if(x2 > *maxx) *maxx = x2;
+ if(y2 > *maxy) *maxy = y2;
+ *x += xa * ts;
+ }
+ }
+
+ } else { // Default font
+
+ if(c == '\n') { // Newline?
+ *x = 0; // Reset x to zero,
+ *y += textsize * 8; // advance y one line
+ // min/max x/y unchaged -- that waits for next 'normal' character
+ } else if(c != '\r') { // Normal char; ignore carriage returns
+ if(wrap && ((*x + textsize * 6) > _width)) { // Off right?
+ *x = 0; // Reset x to zero,
+ *y += textsize * 8; // advance y one line
+ }
+ int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char
+ y2 = *y + textsize * 8 - 1;
+ if(x2 > *maxx) *maxx = x2; // Track max x, y
+ if(y2 > *maxy) *maxy = y2;
+ if(*x < *minx) *minx = *x; // Track min x, y
+ if(*y < *miny) *miny = *y;
+ *x += textsize * 6; // Advance x one char
+ }
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Helper to determine size of a string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
+ @param str The ascii string to measure
+ @param x The current cursor X
+ @param y The current cursor Y
+ @param x1 The boundary X coordinate, set by function
+ @param y1 The boundary Y coordinate, set by function
+ @param w The boundary width, set by function
+ @param h The boundary height, set by function
+*/
+/**************************************************************************/
+void Adafruit_GFX::getTextBounds(const char *str, int16_t x, int16_t y,
+ int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
+ uint8_t c; // Current character
+
+ *x1 = x;
+ *y1 = y;
+ *w = *h = 0;
+
+ int16_t minx = _width, miny = _height, maxx = -1, maxy = -1;
+
+ while((c = *str++))
+ charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy);
+
+ if(maxx >= minx) {
+ *x1 = minx;
+ *w = maxx - minx + 1;
+ }
+ if(maxy >= miny) {
+ *y1 = miny;
+ *h = maxy - miny + 1;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Helper to determine size of a string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
+ @param str The ascii string to measure (as an arduino String() class)
+ @param x The current cursor X
+ @param y The current cursor Y
+ @param x1 The boundary X coordinate, set by function
+ @param y1 The boundary Y coordinate, set by function
+ @param w The boundary width, set by function
+ @param h The boundary height, set by function
+*/
+/**************************************************************************/
+void Adafruit_GFX::getTextBounds(const String &str, int16_t x, int16_t y,
+ int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
+ if (str.length() != 0) {
+ getTextBounds(const_cast(str.c_str()), x, y, x1, y1, w, h);
+ }
+}
+
+
+/**************************************************************************/
+/*!
+ @brief Helper to determine size of a PROGMEM string with current font/size. Pass string and a cursor position, returns UL corner and W,H.
+ @param str The flash-memory ascii string to measure
+ @param x The current cursor X
+ @param y The current cursor Y
+ @param x1 The boundary X coordinate, set by function
+ @param y1 The boundary Y coordinate, set by function
+ @param w The boundary width, set by function
+ @param h The boundary height, set by function
+*/
+/**************************************************************************/
+void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str,
+ int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
+ uint8_t *s = (uint8_t *)str, c;
+
+ *x1 = x;
+ *y1 = y;
+ *w = *h = 0;
+
+ int16_t minx = _width, miny = _height, maxx = -1, maxy = -1;
+
+ while((c = pgm_read_byte(s++)))
+ charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy);
+
+ if(maxx >= minx) {
+ *x1 = minx;
+ *w = maxx - minx + 1;
+ }
+ if(maxy >= miny) {
+ *y1 = miny;
+ *h = maxy - miny + 1;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Get width of the display, accounting for the current rotation
+ @returns Width in pixels
+*/
+/**************************************************************************/
+int16_t Adafruit_GFX::width(void) const {
+ return _width;
+}
+
+/**************************************************************************/
+/*!
+ @brief Get height of the display, accounting for the current rotation
+ @returns Height in pixels
+*/
+/**************************************************************************/
+int16_t Adafruit_GFX::height(void) const {
+ return _height;
+}
+
+/**************************************************************************/
+/*!
+ @brief Invert the display (ideally using built-in hardware command)
+ @param i True if you want to invert, false to make 'normal'
+*/
+/**************************************************************************/
+void Adafruit_GFX::invertDisplay(boolean __attribute__((unused)) i) {
+ // Do nothing, must be subclassed if supported by hardware
+}
+
+/***************************************************************************/
+
+/**************************************************************************/
+/*!
+ @brief Create a simple drawn button UI element
+*/
+/**************************************************************************/
+Adafruit_GFX_Button::Adafruit_GFX_Button(void) {
+ _gfx = 0;
+}
+
+/**************************************************************************/
+/*!
+ @brief Initialize button with our desired color/size/settings
+ @param gfx Pointer to our display so we can draw to it!
+ @param x The X coordinate of the center of the button
+ @param y The Y coordinate of the center of the button
+ @param w Width of the buttton
+ @param h Height of the buttton
+ @param outline Color of the outline (16-bit 5-6-5 standard)
+ @param fill Color of the button fill (16-bit 5-6-5 standard)
+ @param textcolor Color of the button label (16-bit 5-6-5 standard)
+ @param label Ascii string of the text inside the button
+ @param textsize The font magnification of the label text
+*/
+/**************************************************************************/
+// Classic initButton() function: pass center & size
+void Adafruit_GFX_Button::initButton(
+ Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h,
+ uint16_t outline, uint16_t fill, uint16_t textcolor,
+ char *label, uint8_t textsize)
+{
+ // Tweak arguments and pass to the newer initButtonUL() function...
+ initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill,
+ textcolor, label, textsize);
+}
+
+/**************************************************************************/
+/*!
+ @brief Initialize button with our desired color/size/settings, with upper-left coordinates
+ @param gfx Pointer to our display so we can draw to it!
+ @param x1 The X coordinate of the Upper-Left corner of the button
+ @param y1 The Y coordinate of the Upper-Left corner of the button
+ @param w Width of the buttton
+ @param h Height of the buttton
+ @param outline Color of the outline (16-bit 5-6-5 standard)
+ @param fill Color of the button fill (16-bit 5-6-5 standard)
+ @param textcolor Color of the button label (16-bit 5-6-5 standard)
+ @param label Ascii string of the text inside the button
+ @param textsize The font magnification of the label text
+*/
+/**************************************************************************/
+void Adafruit_GFX_Button::initButtonUL(
+ Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h,
+ uint16_t outline, uint16_t fill, uint16_t textcolor,
+ char *label, uint8_t textsize)
+{
+ _x1 = x1;
+ _y1 = y1;
+ _w = w;
+ _h = h;
+ _outlinecolor = outline;
+ _fillcolor = fill;
+ _textcolor = textcolor;
+ _textsize = textsize;
+ _gfx = gfx;
+ strncpy(_label, label, 9);
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw the button on the screen
+ @param inverted Whether to draw with fill/text swapped to indicate 'pressed'
+*/
+/**************************************************************************/
+void Adafruit_GFX_Button::drawButton(boolean inverted) {
+ uint16_t fill, outline, text;
+
+ if(!inverted) {
+ fill = _fillcolor;
+ outline = _outlinecolor;
+ text = _textcolor;
+ } else {
+ fill = _textcolor;
+ outline = _outlinecolor;
+ text = _fillcolor;
+ }
+
+ uint8_t r = min(_w, _h) / 4; // Corner radius
+ _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill);
+ _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline);
+
+ _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize),
+ _y1 + (_h/2) - (4 * _textsize));
+ _gfx->setTextColor(text);
+ _gfx->setTextSize(_textsize);
+ _gfx->print(_label);
+}
+
+/**************************************************************************/
+/*!
+ @brief Helper to let us know if a coordinate is within the bounds of the button
+ @param x The X coordinate to check
+ @param y The Y coordinate to check
+ @returns True if within button graphics outline
+*/
+/**************************************************************************/
+boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) {
+ return ((x >= _x1) && (x < (int16_t) (_x1 + _w)) &&
+ (y >= _y1) && (y < (int16_t) (_y1 + _h)));
+}
+
+/**************************************************************************/
+/*!
+ @brief Sets the state of the button, should be done by some touch function
+ @param p True for pressed, false for not.
+*/
+/**************************************************************************/
+void Adafruit_GFX_Button::press(boolean p) {
+ laststate = currstate;
+ currstate = p;
+}
+
+/**************************************************************************/
+/*!
+ @brief Query whether the button is currently pressed
+ @returns True if pressed
+*/
+/**************************************************************************/
+boolean Adafruit_GFX_Button::isPressed() { return currstate; }
+
+/**************************************************************************/
+/*!
+ @brief Query whether the button was pressed since we last checked state
+ @returns True if was not-pressed before, now is.
+*/
+/**************************************************************************/
+boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); }
+
+/**************************************************************************/
+/*!
+ @brief Query whether the button was released since we last checked state
+ @returns True if was pressed before, now is not.
+*/
+/**************************************************************************/
+boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); }
+
+// -------------------------------------------------------------------------
+
+// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too
+// comfy with the implementation) provide 1-, 8- and 16-bit offscreen
+// canvases, the address of which can be passed to drawBitmap() or
+// pushColors() (the latter appears only in a couple of GFX-subclassed TFT
+// libraries at this time). This is here mostly to help with the recently-
+// added proportionally-spaced fonts; adds a way to refresh a section of the
+// screen without a massive flickering clear-and-redraw...but maybe you'll
+// find other uses too. VERY RAM-intensive, since the buffer is in MCU
+// memory and not the display driver...GXFcanvas1 might be minimally useful
+// on an Uno-class board, but this and the others are much more likely to
+// require at least a Mega or various recent ARM-type boards (recommended,
+// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per
+// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte
+// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no
+// scanline pad).
+// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND.
+
+/**************************************************************************/
+/*!
+ @brief Instatiate a GFX 1-bit canvas context for graphics
+ @param w Display width, in pixels
+ @param h Display height, in pixels
+*/
+/**************************************************************************/
+GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
+ uint16_t bytes = ((w + 7) / 8) * h;
+ if((buffer = (uint8_t *)malloc(bytes))) {
+ memset(buffer, 0, bytes);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Delete the canvas, free memory
+*/
+/**************************************************************************/
+GFXcanvas1::~GFXcanvas1(void) {
+ if(buffer) free(buffer);
+}
+
+/**************************************************************************/
+/*!
+ @brief Get a pointer to the internal buffer memory
+ @returns A pointer to the allocated buffer
+*/
+/**************************************************************************/
+uint8_t* GFXcanvas1::getBuffer(void) {
+ return buffer;
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a pixel to the canvas framebuffer
+ @param x x coordinate
+ @param y y coordinate
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) {
+#ifdef __AVR__
+ // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR
+ static const uint8_t PROGMEM
+ GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 },
+ GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE };
+#endif
+
+ if(buffer) {
+ if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
+
+ int16_t t;
+ switch(rotation) {
+ case 1:
+ t = x;
+ x = WIDTH - 1 - y;
+ y = t;
+ break;
+ case 2:
+ x = WIDTH - 1 - x;
+ y = HEIGHT - 1 - y;
+ break;
+ case 3:
+ t = x;
+ x = y;
+ y = HEIGHT - 1 - t;
+ break;
+ }
+
+ uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)];
+#ifdef __AVR__
+ if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]);
+ else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]);
+#else
+ if(color) *ptr |= 0x80 >> (x & 7);
+ else *ptr &= ~(0x80 >> (x & 7));
+#endif
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Fill the framebuffer completely with one color
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas1::fillScreen(uint16_t color) {
+ if(buffer) {
+ uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT;
+ memset(buffer, color ? 0xFF : 0x00, bytes);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Instatiate a GFX 8-bit canvas context for graphics
+ @param w Display width, in pixels
+ @param h Display height, in pixels
+*/
+/**************************************************************************/
+GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
+ uint32_t bytes = w * h;
+ if((buffer = (uint8_t *)malloc(bytes))) {
+ memset(buffer, 0, bytes);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Delete the canvas, free memory
+*/
+/**************************************************************************/
+GFXcanvas8::~GFXcanvas8(void) {
+ if(buffer) free(buffer);
+}
+
+
+/**************************************************************************/
+/*!
+ @brief Get a pointer to the internal buffer memory
+ @returns A pointer to the allocated buffer
+*/
+/**************************************************************************/
+uint8_t* GFXcanvas8::getBuffer(void) {
+ return buffer;
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a pixel to the canvas framebuffer
+ @param x x coordinate
+ @param y y coordinate
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) {
+ if(buffer) {
+ if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
+
+ int16_t t;
+ switch(rotation) {
+ case 1:
+ t = x;
+ x = WIDTH - 1 - y;
+ y = t;
+ break;
+ case 2:
+ x = WIDTH - 1 - x;
+ y = HEIGHT - 1 - y;
+ break;
+ case 3:
+ t = x;
+ x = y;
+ y = HEIGHT - 1 - t;
+ break;
+ }
+
+ buffer[x + y * WIDTH] = color;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Fill the framebuffer completely with one color
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas8::fillScreen(uint16_t color) {
+ if(buffer) {
+ memset(buffer, color, WIDTH * HEIGHT);
+ }
+}
+
+void GFXcanvas8::writeFastHLine(int16_t x, int16_t y,
+ int16_t w, uint16_t color) {
+
+ if((x >= _width) || (y < 0) || (y >= _height)) return;
+ int16_t x2 = x + w - 1;
+ if(x2 < 0) return;
+
+ // Clip left/right
+ if(x < 0) {
+ x = 0;
+ w = x2 + 1;
+ }
+ if(x2 >= _width) w = _width - x;
+
+ int16_t t;
+ switch(rotation) {
+ case 1:
+ t = x;
+ x = WIDTH - 1 - y;
+ y = t;
+ break;
+ case 2:
+ x = WIDTH - 1 - x;
+ y = HEIGHT - 1 - y;
+ break;
+ case 3:
+ t = x;
+ x = y;
+ y = HEIGHT - 1 - t;
+ break;
+ }
+
+ memset(buffer + y * WIDTH + x, color, w);
+}
+
+/**************************************************************************/
+/*!
+ @brief Instatiate a GFX 16-bit canvas context for graphics
+ @param w Display width, in pixels
+ @param h Display height, in pixels
+*/
+/**************************************************************************/
+GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) {
+ uint32_t bytes = w * h * 2;
+ if((buffer = (uint16_t *)malloc(bytes))) {
+ memset(buffer, 0, bytes);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Delete the canvas, free memory
+*/
+/**************************************************************************/
+GFXcanvas16::~GFXcanvas16(void) {
+ if(buffer) free(buffer);
+}
+
+/**************************************************************************/
+/*!
+ @brief Get a pointer to the internal buffer memory
+ @returns A pointer to the allocated buffer
+*/
+/**************************************************************************/
+uint16_t* GFXcanvas16::getBuffer(void) {
+ return buffer;
+}
+
+/**************************************************************************/
+/*!
+ @brief Draw a pixel to the canvas framebuffer
+ @param x x coordinate
+ @param y y coordinate
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) {
+ if(buffer) {
+ if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
+
+ int16_t t;
+ switch(rotation) {
+ case 1:
+ t = x;
+ x = WIDTH - 1 - y;
+ y = t;
+ break;
+ case 2:
+ x = WIDTH - 1 - x;
+ y = HEIGHT - 1 - y;
+ break;
+ case 3:
+ t = x;
+ x = y;
+ y = HEIGHT - 1 - t;
+ break;
+ }
+
+ buffer[x + y * WIDTH] = color;
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Fill the framebuffer completely with one color
+ @param color 16-bit 5-6-5 Color to fill with
+*/
+/**************************************************************************/
+void GFXcanvas16::fillScreen(uint16_t color) {
+ if(buffer) {
+ uint8_t hi = color >> 8, lo = color & 0xFF;
+ if(hi == lo) {
+ memset(buffer, lo, WIDTH * HEIGHT * 2);
+ } else {
+ uint32_t i, pixels = WIDTH * HEIGHT;
+ for(i=0; i https://www.adafruit.com/products/1982
-
- These sensors use I2C to communicate, 2+ pins are required to
- interface
- Adafruit invests time and resources providing this open source code,
- please support Adafruit and open-source hardware by purchasing
- products from Adafruit!
- *
- * @section author Author
- *
- * Written by Limor Fried/Ladyada for Adafruit Industries.
- *
- * @section license License
- *
- * BSD license, all text here must be included in any redistribution.
- *
- */
-
-#include "Adafruit_MPR121.h"
-
-/**
- *****************************************************************************************
- * @brief Default constructor
- ****************************************************************************************/
-Adafruit_MPR121::Adafruit_MPR121() {
-}
-
-/**
- *****************************************************************************************
- * @brief Begin an MPR121 object on a given I2C bus. This function resets the
- * device and writes the default settings.
- *
- * @param i2caddr the i2c address the device can be found on. Defaults to 0x5A.
- * @returns true on success, false otherwise
- ****************************************************************************************/
-boolean Adafruit_MPR121::begin(uint8_t i2caddr) {
- _i2caddr = i2caddr;
-
- return true;
-}
-
-/**
- *****************************************************************************************
- * @brief DEPRECATED. Use Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release) instead.
- *
- * @param touch see Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release)
- * @param release see Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release)
- ****************************************************************************************/
-void Adafruit_MPR121::setThreshholds(uint8_t __attribute__((unused)) touch, uint8_t __attribute__((unused)) release) {
- // setThresholds(touch, release);
-}
-
-/**
- *****************************************************************************************
- * @brief Set the touch and release thresholds for all 13 channels on the device to the
- * passed values. The threshold is defined as a deviation value from the baseline value,
- * so it remains constant even baseline value changes. Typically the touch
- * threshold is a little bigger than the release threshold to touch debounce and hysteresis.
- *
- * For typical touch application, the value can be in range 0x05~0x30 for example. The setting
- * of the threshold is depended on the actual application. For the operation details and how to set the threshold refer to
- * application note AN3892 and MPR121 design guidelines.
- *
- * @param touch the touch threshold value from 0 to 255.
- * @param release the release threshold from 0 to 255.
- ****************************************************************************************/
-void Adafruit_MPR121::setThresholds(uint8_t __attribute__((unused)) touch, __attribute__((unused)) uint8_t release) {
- // for (uint8_t i=0; i<12; i++) {
- // writeRegister(MPR121_TOUCHTH_0 + 2*i, touch);
- // writeRegister(MPR121_RELEASETH_0 + 2*i, release);
- // }
-}
-
-/**
- *****************************************************************************************
- * @brief Read the filtered data from channel t. The ADC raw data outputs run through 3
- * levels of digital filtering to filter out the high frequency and low frequency noise
- * encountered. For detailed information on this filtering see page 6 of the device datasheet.
- *
- * @param t the channel to read
- * @returns the filtered reading as a 10 bit unsigned value
- ****************************************************************************************/
-uint16_t Adafruit_MPR121::filteredData(uint8_t t) {
- if (t > 12) return 0;
- return readRegister16(MPR121_FILTDATA_0L + t*2);
-}
-
-/**
- *****************************************************************************************
- * @brief Read the baseline value for the channel. The 3rd level filtered result is internally 10bit
- * but only high 8 bits are readable from registers 0x1E~0x2A as the baseline value output for each channel.
- *
- * @param t the channel to read.
- * @returns the baseline data that was read
- ****************************************************************************************/
-uint16_t Adafruit_MPR121::baselineData(uint8_t t) {
- if (t > 12) return 0;
- uint16_t bl = readRegister8(MPR121_BASELINE_0 + t);
- return (bl << 2);
-}
-
-/**
- *****************************************************************************************
- * @brief Read the touch status of all 13 channels as bit values in a 12 bit integer.
- *
- * @returns a 12 bit integer with each bit corresponding to the touch status of a sensor.
- * For example, if bit 0 is set then channel 0 of the device is currently deemed to be touched.
- ****************************************************************************************/
-uint16_t Adafruit_MPR121::touched(void) {
- uint16_t t = readRegister16(MPR121_TOUCHSTATUS_L);
- return t & 0x0FFF;
-}
-
-/*********************************************************************/
-
-/**
- *****************************************************************************************
- * @brief Read the contents of an 8 bit device register.
- *
- * @param reg the register address to read from
- * @returns the 8 bit value that was read.
- ****************************************************************************************/
-uint8_t Adafruit_MPR121::readRegister8(uint8_t reg) {
- return this->_registers[reg];
-}
-
-/**
- *****************************************************************************************
- * @brief Read the contents of a 16 bit device register.
- *
- * @param reg the register address to read from
- * @returns the 16 bit value that was read.
- ****************************************************************************************/
-uint16_t Adafruit_MPR121::readRegister16(uint8_t reg) {
- return _registers[reg] | (_registers[reg+1] << 8);
-}
-
-/**************************************************************************/
-/*!
- @brief Writes 8-bits to the specified destination register
-
- @param reg the register address to write to
- @param value the value to write
-*/
-/**************************************************************************/
-void Adafruit_MPR121::writeRegister(uint8_t reg, uint8_t value) {
-
- _registers[reg] = value;
-}
-
-
-/*
- Simulator specifics code..
- */
-
-
-void Adafruit_MPR121::mockFilteredData(int reg, uint16_t value) {
- _registers[MPR121_FILTDATA_0L + reg*2] = value & 0xffu;
- _registers[MPR121_FILTDATA_0L + reg*2+1] = (value>>8) & 0xffu;
-}
+/*!
+ * @file Adafruit_MPR121.cpp
+ *
+ * @mainpage Adafruit MPR121 arduino driver
+ *
+ * @section intro_sec Introduction
+ *
+ This is a library for the MPR121 I2C 12-chan Capacitive Sensor
+
+ Designed specifically to work with the MPR121 sensor from Adafruit
+ ----> https://www.adafruit.com/products/1982
+
+ These sensors use I2C to communicate, 2+ pins are required to
+ interface
+ Adafruit invests time and resources providing this open source code,
+ please support Adafruit and open-source hardware by purchasing
+ products from Adafruit!
+ *
+ * @section author Author
+ *
+ * Written by Limor Fried/Ladyada for Adafruit Industries.
+ *
+ * @section license License
+ *
+ * BSD license, all text here must be included in any redistribution.
+ *
+ */
+
+#include "Adafruit_MPR121.h"
+
+/**
+ *****************************************************************************************
+ * @brief Default constructor
+ ****************************************************************************************/
+Adafruit_MPR121::Adafruit_MPR121() {
+}
+
+/**
+ *****************************************************************************************
+ * @brief Begin an MPR121 object on a given I2C bus. This function resets the
+ * device and writes the default settings.
+ *
+ * @param i2caddr the i2c address the device can be found on. Defaults to 0x5A.
+ * @returns true on success, false otherwise
+ ****************************************************************************************/
+boolean Adafruit_MPR121::begin(uint8_t i2caddr) {
+ _i2caddr = i2caddr;
+
+ return true;
+}
+
+/**
+ *****************************************************************************************
+ * @brief DEPRECATED. Use Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release) instead.
+ *
+ * @param touch see Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release)
+ * @param release see Adafruit_MPR121::setThresholds(uint8_t touch, uint8_t release)
+ ****************************************************************************************/
+void Adafruit_MPR121::setThreshholds(uint8_t __attribute__((unused)) touch, uint8_t __attribute__((unused)) release) {
+ // setThresholds(touch, release);
+}
+
+/**
+ *****************************************************************************************
+ * @brief Set the touch and release thresholds for all 13 channels on the device to the
+ * passed values. The threshold is defined as a deviation value from the baseline value,
+ * so it remains constant even baseline value changes. Typically the touch
+ * threshold is a little bigger than the release threshold to touch debounce and hysteresis.
+ *
+ * For typical touch application, the value can be in range 0x05~0x30 for example. The setting
+ * of the threshold is depended on the actual application. For the operation details and how to set the threshold refer to
+ * application note AN3892 and MPR121 design guidelines.
+ *
+ * @param touch the touch threshold value from 0 to 255.
+ * @param release the release threshold from 0 to 255.
+ ****************************************************************************************/
+void Adafruit_MPR121::setThresholds(uint8_t __attribute__((unused)) touch, __attribute__((unused)) uint8_t release) {
+ // for (uint8_t i=0; i<12; i++) {
+ // writeRegister(MPR121_TOUCHTH_0 + 2*i, touch);
+ // writeRegister(MPR121_RELEASETH_0 + 2*i, release);
+ // }
+}
+
+/**
+ *****************************************************************************************
+ * @brief Read the filtered data from channel t. The ADC raw data outputs run through 3
+ * levels of digital filtering to filter out the high frequency and low frequency noise
+ * encountered. For detailed information on this filtering see page 6 of the device datasheet.
+ *
+ * @param t the channel to read
+ * @returns the filtered reading as a 10 bit unsigned value
+ ****************************************************************************************/
+uint16_t Adafruit_MPR121::filteredData(uint8_t t) {
+ if (t > 12) return 0;
+ return readRegister16(MPR121_FILTDATA_0L + t*2);
+}
+
+/**
+ *****************************************************************************************
+ * @brief Read the baseline value for the channel. The 3rd level filtered result is internally 10bit
+ * but only high 8 bits are readable from registers 0x1E~0x2A as the baseline value output for each channel.
+ *
+ * @param t the channel to read.
+ * @returns the baseline data that was read
+ ****************************************************************************************/
+uint16_t Adafruit_MPR121::baselineData(uint8_t t) {
+ if (t > 12) return 0;
+ uint16_t bl = readRegister8(MPR121_BASELINE_0 + t);
+ return (bl << 2);
+}
+
+/**
+ *****************************************************************************************
+ * @brief Read the touch status of all 13 channels as bit values in a 12 bit integer.
+ *
+ * @returns a 12 bit integer with each bit corresponding to the touch status of a sensor.
+ * For example, if bit 0 is set then channel 0 of the device is currently deemed to be touched.
+ ****************************************************************************************/
+uint16_t Adafruit_MPR121::touched(void) {
+ uint16_t t = readRegister16(MPR121_TOUCHSTATUS_L);
+ return t & 0x0FFF;
+}
+
+/*********************************************************************/
+
+/**
+ *****************************************************************************************
+ * @brief Read the contents of an 8 bit device register.
+ *
+ * @param reg the register address to read from
+ * @returns the 8 bit value that was read.
+ ****************************************************************************************/
+uint8_t Adafruit_MPR121::readRegister8(uint8_t reg) {
+ return this->_registers[reg];
+}
+
+/**
+ *****************************************************************************************
+ * @brief Read the contents of a 16 bit device register.
+ *
+ * @param reg the register address to read from
+ * @returns the 16 bit value that was read.
+ ****************************************************************************************/
+uint16_t Adafruit_MPR121::readRegister16(uint8_t reg) {
+ return _registers[reg] | (_registers[reg+1] << 8);
+}
+
+/**************************************************************************/
+/*!
+ @brief Writes 8-bits to the specified destination register
+
+ @param reg the register address to write to
+ @param value the value to write
+*/
+/**************************************************************************/
+void Adafruit_MPR121::writeRegister(uint8_t reg, uint8_t value) {
+
+ _registers[reg] = value;
+}
+
+
+/*
+ Simulator specifics code..
+ */
+
+
+void Adafruit_MPR121::mockFilteredData(int reg, uint16_t value) {
+ _registers[MPR121_FILTDATA_0L + reg*2] = value & 0xffu;
+ _registers[MPR121_FILTDATA_0L + reg*2+1] = (value>>8) & 0xffu;
+}
diff --git a/simulation/src/Adafruit_SSD1306_sim.cpp b/simulation/src/Adafruit_SSD1306_sim.cpp
index 65952bb..e55804f 100644
--- a/simulation/src/Adafruit_SSD1306_sim.cpp
+++ b/simulation/src/Adafruit_SSD1306_sim.cpp
@@ -1,730 +1,730 @@
-/*!
- * @file Adafruit_SSD1306.cpp
- *
- * @mainpage Arduino library for monochrome OLEDs based on SSD1306 drivers.
- *
- * @section intro_sec Introduction
- *
- * This is documentation for Adafruit's SSD1306 library for monochrome
- * OLED displays: http://www.adafruit.com/category/63_98
- *
- * These displays use I2C or SPI to communicate. I2C requires 2 pins
- * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK,
- * select, data/command) and optionally a reset pin. Hardware SPI or
- * 'bitbang' software SPI are both supported.
- *
- * Adafruit invests time and resources providing this open source code,
- * please support Adafruit and open-source hardware by purchasing
- * products from Adafruit!
- *
- * @section dependencies Dependencies
- *
- * This library depends on