[SCM] drumgizmo/master: Imported Upstream version 0.9.9

viccuad-guest at users.alioth.debian.org viccuad-guest at users.alioth.debian.org
Sat Mar 26 19:05:26 UTC 2016


The following commit has been merged in the master branch:
commit 730604550f81eb1e3dd3b2a50e2b59e3ddf702a5
Author: Víctor Cuadrado Juan <me at viccuad.me>
Date:   Fri Mar 25 14:34:50 2016 +0100

    Imported Upstream version 0.9.9

diff --git a/AUTHORS b/AUTHORS
index 4aee056..056ec04 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,6 +4,12 @@ Founder and lead developer:
 Developer:
  Jonas Suhr Christensen [suhr] (jsc at umbraculum.org)
 
+Developer:
+ André Nusser [chaot4]
+
+Developer:
+ Christian Glöckner [cglocke]
+
 Developer, Graphics, GUI design and logo:
  Lars Muldjord [muldjord] (muldjordlars at gmail.com)
 
diff --git a/COPYING b/COPYING
index 94a9ed0..65c5ca8 100644
--- a/COPYING
+++ b/COPYING
@@ -1,674 +1,165 @@
-                    GNU GENERAL PUBLIC LICENSE
+                   GNU LESSER GENERAL PUBLIC LICENSE
                        Version 3, 29 June 2007
 
  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser 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
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/ChangeLog b/ChangeLog
index 9c4cfd7..8e8afe5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,61 @@
+Version 0.9.9
+=============
+Release date: March 24th 2016
+Contributors: cglocke, chaot4, deva, muldjord, suhr, viccuad
+
+Highlighted changes / fixes:
+ - Switch to LGPLv3
+ - Linux VST
+ - Embedded UI
+ - Prepped for diskstreaming (but not yet implemented in UI)
+ - Load of bug fixes
+
+All changes / fixes:
+ - Remove unused libraries
+ - Headers are currently a mix and gpl2 and gpl3. Should be fixed
+
+ - UI refactor
+   - Move textedit widget to refactor branch
+   - Move autolayout to refactor branch
+   - Use new notifier and refactor to new code guidelines:
+     - LineEdit fixes:
+       - Follow marker
+       - Scroll with long line and cursor in beginning of line
+   - Update Linux build agents so they support C++11
+
+ - Refactor CLI
+   - Rewrite all modules to be compiled directly into the binary
+   - Modernise all cli files
+
+ - Add diskstreaming feature with infinite buffer size:
+   - Test on windows
+   - Make sure on-the-fly framesize change is working
+   - Set pre-cache size to "infinite"
+   - Make std::mutex work with mingw
+   - Make unit tests:
+     - AudioCacheIDManager
+     - AudioCacheFile
+     - AudioCacheEventHandler
+     - AudioCache
+   - Design and implement AudioCache
+   - Use AudioCache in inner-loop
+   - Get framesize dynamically from output engine
+   - Handle snd files with refcounter
+   - Collapse events from same file and position into single multichannel event
+   - Make sure free-wheel-mode works in jack, lv2 and vst
+
+ - Add referenced drumkit/midi files feature
+ - Remove version number from man page
+
+ - Make benchmark performance comparisons with the "old" engine
+ - Add a valgrind test script
+ - Fix some problems reported by valgrind
+
+ - Add memory check to warn the user if the drumkit about to be loaded cannot fit into memory
+
+ - LV2/VST: Make UI event handling based on idle/run calls from the plugin host instead of in a thread
+ - Port "The Aasimonster" to new velocity format
+
 Version 0.9.8.1-hotfix
 ======================
 Released March 16th 2015
diff --git a/Makefile.am b/Makefile.am
index 84bcaa7..3784c39 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
 AUTOMAKE_OPTIONS = gnu
-SUBDIRS = plugingui tools include src vst lv2 drumgizmo man test
-DISTDIRS = plugingui tools include src vst lv2 drumgizmo man test
+SUBDIRS = plugingui tools include src plugin drumgizmo man test
+DISTDIRS = plugingui tools include src plugin drumgizmo man test
 
 EXTRA_DIST = \
 	version.h \
@@ -9,5 +9,6 @@ EXTRA_DIST = \
 	hugin/hugin.c \
 	hugin/hugin_util.h \
 	hugin/hugin_syslog.h \
-	hugin/hugin_syslog.c
-
+	hugin/hugin_syslog.c \
+	hugin/hugin_filter.h \
+	hugin/hugin_filter.c
diff --git a/Makefile.in b/Makefile.in
index 56b7794..623febd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -229,7 +229,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -293,8 +293,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -350,8 +348,8 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = gnu
-SUBDIRS = plugingui tools include src vst lv2 drumgizmo man test
-DISTDIRS = plugingui tools include src vst lv2 drumgizmo man test
+SUBDIRS = plugingui tools include src plugin drumgizmo man test
+DISTDIRS = plugingui tools include src plugin drumgizmo man test
 EXTRA_DIST = \
 	version.h \
 	hugin/hugin.h \
@@ -359,7 +357,9 @@ EXTRA_DIST = \
 	hugin/hugin.c \
 	hugin/hugin_util.h \
 	hugin/hugin_syslog.h \
-	hugin/hugin_syslog.c
+	hugin/hugin_syslog.c \
+	hugin/hugin_filter.h \
+	hugin/hugin_filter.c
 
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/README b/README
index f73cf72..f75599a 100644
--- a/README
+++ b/README
@@ -1,41 +1,71 @@
 Installation Instructions
 *************************
+NOTE1: Certain audio-centric Linux distros such as KxStudio has DrumGizmo
+included in the repository. To install it on such systems, use the distros
+package manager, search for it and install it. Please refer to each distro's
+documentation for detailed instructions on how to do this.
 
-Compiling and installing the LV2 plugin
+NOTE2: Be aware that if you are planning on running the LV2 plugin from within
+one of the binary releases of Ardour, you must make sure that drumgizmo is using
+the same version of libpng, pthread and expat as Ardour was compiled with (or
+at least versions matching the ABI), otherwise the plugin will show strange
+behaviour or even crash upon load.
+
+Compiling and Installing on linux (LV2)
 =======================================
-If you extracted the code from a tar-ball skip to the "Configuring" section.
-
-Preparing code from git
------------------------
-If you cloned the repository from git, make sure to run the following commands
-in order to obtain the hugin debug code:
- git submodule init
- git submodule update
-
-After that you need to run ./autogen.sh
-
-Configuring
------------
-Run ./configure --enable-lv2 --prefix=/usr
-Then run 'make && make install' and the plugin should be installed in
-/usr/lib/lv2/drumgizmo.lv2
+This guide will show you how to unpack, compile and install the lv2 version
+of the drumgizmo plugin. It will also show how to make it usable for the LV2
+host Ardour3.
+
+Prerequisites
+-------------
+* lv2-devel package >= 1.0
+* libsndfile-devel >= 1.0.21
+* zita-resampler-devel (no minimal version specified)
+* libexpat-devel (no minimal version specified)
+* pkg-config >= 0.23
+* Xlib >= 1.0
+* libpng >= 1.2
+* libsmf (no minimal version specified)
+* pthread (no minimal version specified)
+* libcppunit-dev (only necessary when compiling from git sources)
+
+Compiling source tarball
+------------------------
+$ tar xvzf drumgizmo-[version].tar.gz (you probably already did this)
+$ cd drumgizmo-[version]
+$ ./configure --prefix=$PWD/install --enable-lv2
+$ make
+$ make install
+
+Compiling from git sources
+--------------------------
+$ git clone http://git.drumgizmo.org/drumgizmo.git
+$ git submodule init
+$ git submodule update
+$ ./autogen.sh
+$ ./configure --prefix=$PWD/install --enable-lv2
+
 If you want to compile only the LV2 parts of the plugin use
 '--disable-editor --disable-cli' as additional parameters to the configure
 script.
 
-The LV2 plugin requires the following dependencies:
-pkg-config >= 0.23
-lv2 >= 1.0
-Xlib >= 1.0
-sndfile >= 1.0.21
-libpng >= 1.2
-pthread (no minimal version specified)
-expat (no minimal version specified)
-
-Be aware that if you are planning on running the LV2 plugin from within one
-of the binary releases of Ardour, you must make sure that drumgizmo is using
-the same version of libpng, pthread and expat as Ardour was compiled with (or
-at least versions matching the ABI), otherwise the plugin will show strange
-behaviour or even crash upon load.
+Now compile and install
+$ make
+$ make install
+
+Installing for use with Ardour3
+-------------------------------
+When the make install step has been successfully performed the source directory
+will contain a folder named install. In this folder the:
+
+  install/lib/lv2/drumgizmo.lv2
+
+... is located. This folder contain all the files needed for the plugin to run.
+In order to make it work with Ardour3, either copy this directory to the lv2
+plugin dir (usually /usr/lib/lv2) or create a symbolic link to the directory
 
+$ ln -s [dg path]/install/lib/lv2/drumgizmo.lv2 /usr/lib/lv2/drumgizmo.lv2
 
+You need to be root to do this. Keep in mind that the lv2 directory differs from
+distro to distro, so do a search for it in order to verify the correct location.
\ No newline at end of file
diff --git a/config.h.in b/config.h.in
index 7a53563..01a4e91 100644
--- a/config.h.in
+++ b/config.h.in
@@ -81,3 +81,14 @@
 
 /* Use resample */
 #undef WITH_RESAMPLER
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
diff --git a/configure b/configure
index 6d87794..687acbd 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for drumgizmo 0.9.8.1.
+# Generated by GNU Autoconf 2.69 for drumgizmo 0.9.9.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='drumgizmo'
 PACKAGE_TARNAME='drumgizmo'
-PACKAGE_VERSION='0.9.8.1'
-PACKAGE_STRING='drumgizmo 0.9.8.1'
+PACKAGE_VERSION='0.9.9'
+PACKAGE_STRING='drumgizmo 0.9.9'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -640,8 +640,6 @@ EXPAT_LIBS
 EXPAT_CFLAGS
 PTHREAD_LIBS
 PTHREAD_CFLAGS
-ZLIB_LIBS
-ZLIB_CFLAGS
 ZITA_LIBS
 ZITA_CPPFLAGS
 SAMPLERATE_LIBS
@@ -686,10 +684,14 @@ LV2_CFLAGS
 CPPUNIT_LIBS
 CPPUNIT_CFLAGS
 CPPUNIT_CONFIG
+ENABLE_X11_FALSE
+ENABLE_X11_TRUE
+ENABLE_WIN32_FALSE
+ENABLE_WIN32_TRUE
 ENABLE_PUGL_FALSE
 ENABLE_PUGL_TRUE
 GUI_LIBS
-GUI_CFLAGS
+GUI_CPPFLAGS
 X11_LIBS
 X11_CFLAGS
 PKG_CONFIG_LIBDIR
@@ -826,6 +828,7 @@ enable_fast_install
 with_gnu_ld
 with_sysroot
 enable_libtool_lock
+enable_largefile
 with_debug
 enable_gui
 with_test
@@ -874,8 +877,6 @@ SNDFILE_CFLAGS
 SNDFILE_LIBS
 SAMPLERATE_CFLAGS
 SAMPLERATE_LIBS
-ZLIB_CFLAGS
-ZLIB_LIBS
 JACK_CFLAGS
 JACK_LIBS'
 
@@ -1418,7 +1419,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures drumgizmo 0.9.8.1 to adapt to many kinds of systems.
+\`configure' configures drumgizmo 0.9.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1488,7 +1489,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of drumgizmo 0.9.8.1:";;
+     short | recursive ) echo "Configuration of drumgizmo 0.9.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1507,6 +1508,7 @@ Optional Features:
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-largefile     omit support for large files
   --enable-gui=backend    Use specified gui backend. Can be win32, x11, pugl
                           or auto [default=auto]
   --enable-lv2            Compile the LV2 plugin [default=no]
@@ -1576,8 +1578,6 @@ Some influential environment variables:
               C compiler flags for SAMPLERATE, overriding pkg-config
   SAMPLERATE_LIBS
               linker flags for SAMPLERATE, overriding pkg-config
-  ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config
-  ZLIB_LIBS   linker flags for ZLIB, overriding pkg-config
   JACK_CFLAGS C compiler flags for JACK, overriding pkg-config
   JACK_LIBS   linker flags for JACK, overriding pkg-config
 
@@ -1647,7 +1647,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-drumgizmo configure 0.9.8.1
+drumgizmo configure 0.9.9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2133,7 +2133,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by drumgizmo $as_me 0.9.8.1, which was
+It was created by drumgizmo $as_me 0.9.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2997,7 +2997,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='drumgizmo'
- VERSION='0.9.8.1'
+ VERSION='0.9.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15348,8 +15348,311 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_config_headers="$ac_config_headers config.h"
 
 
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+	 # IRIX 6.2 and later do not support large files by default,
+	 # so use the C compiler's -n32 option if that helps.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 CC="$CC -n32"
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+
+
+fi
+
+
 need_jack=no
 
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+TMP_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS=-std=c++11
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++11" >&5
+$as_echo_n "checking whether CXX supports -std=c++11... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+
+	 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	 CXXFLAGS=-std=c++0x
+	 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++0x" >&5
+$as_echo_n "checking whether CXX supports -std=c++0x... " >&6; }
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+
+	 	 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	 	 as_fn_error $? "Compiler does not support c++11" "$LINENO" 5
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CXXFLAGS="$TMP_CXXFLAGS $CXXFLAGS"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether 'override' and 'final' keywords are supported" >&5
+$as_echo_n "checking whether 'override' and 'final' keywords are supported... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+			class A { virtual void foo() {} };
+			class B : public A { virtual void foo() override {} };
+			class C : public B { virtual void foo() final {} };
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (deploying fix)" >&5
+$as_echo "no (deploying fix)" >&6; }
+	 CXXFLAGS="$CXXFLAGS -Doverride=\"\" -Dfinal=\"\""
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 
 
 
@@ -15482,7 +15785,7 @@ fi
 if test "x$with_debug" == "xyes"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Building with debug support!" >&5
 $as_echo "$as_me: WARNING: *** Building with debug support!" >&2;}
-	     CXXFLAGS="$CXXFLAGS -Wall -Werror -g"
+	     CXXFLAGS="$CXXFLAGS -Wall -Werror -g -Wl,--no-undefined"
 	     HUGIN_PARM=""
 
 fi
@@ -15508,7 +15811,7 @@ $as_echo "Auto setting gui based on host: $host_os" >&6; }
 	     case $host_os in #(
   darwin*) :
     enable_gui="" ;; #(
-  linux*|*BSD*) :
+  linux*|*bsd*) :
     enable_gui="x11" ;; #(
   mingw*|windows*|winnt|cygwin) :
     enable_gui="win32" ;; #(
@@ -15614,17 +15917,17 @@ $as_echo "yes" >&6; }
 
 fi
 
-  GUI_CFLAGS="-DX11 $X11_CFLAGS"
+  GUI_CPPFLAGS="-DX11 $X11_CFLAGS"
   GUI_LIBS="$X11_LIBS"
 elif test "x$enable_gui" = "xwin32"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: Setting gui backend to Win32" >&5
 $as_echo "Setting gui backend to Win32" >&6; }
-  GUI_CFLAGS="-DWIN32"
+  GUI_CPPFLAGS="-DWIN32"
   GUI_LIBS="-lgdi32 -lsetupapi -lws2_32"
 elif test "x$enable_gui" = "xpugl"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: Setting gui backend to Pugl" >&5
 $as_echo "Setting gui backend to Pugl" >&6; }
-  GUI_CFLAGS="-DPUGL -I../../pugl"
+  GUI_CPPFLAGS="-DPUGL -I../../pugl"
   GUI_LIBS="-lGLU -lGL -lglut"
 else
   as_fn_error $? "*** No GUI backend has been selected ***" "$LINENO" 5
@@ -15642,6 +15945,22 @@ else
   ENABLE_PUGL_FALSE=
 fi
 
+ if test "x$enable_gui" = "xwin32"; then
+  ENABLE_WIN32_TRUE=
+  ENABLE_WIN32_FALSE='#'
+else
+  ENABLE_WIN32_TRUE='#'
+  ENABLE_WIN32_FALSE=
+fi
+
+ if test "x$enable_gui" = "xx11"; then
+  ENABLE_X11_TRUE=
+  ENABLE_X11_FALSE='#'
+else
+  ENABLE_X11_TRUE='#'
+  ENABLE_X11_FALSE=
+fi
+
 
 
 # Check whether --with-test was given.
@@ -15934,7 +16253,7 @@ if test "x$enable_vst" = "xyes"; then :
   VST_SOURCE_PATH="$with_vst_sources"
 
 
-  ac_config_files="$ac_config_files vst/Makefile.mingw32"
+  ac_config_files="$ac_config_files plugin/Makefile.mingw32"
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** VST plugin will not be compiled ***" >&5
@@ -16679,101 +16998,6 @@ fi
 
 fi
 
-#dnl ======================
-#dnl Check for zlib
-#dnl ======================
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5
-$as_echo_n "checking for ZLIB... " >&6; }
-
-if test -n "$ZLIB_CFLAGS"; then
-    pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.3\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.3") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.3" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$ZLIB_LIBS"; then
-    pkg_cv_ZLIB_LIBS="$ZLIB_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.3\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.3") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.3" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib >= 1.2.3" 2>&1`
-        else
-	        ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib >= 1.2.3" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$ZLIB_PKG_ERRORS" >&5
-
-	as_fn_error $? "Package requirements (zlib >= 1.2.3) were not met:
-
-$ZLIB_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables ZLIB_CFLAGS
-and ZLIB_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables ZLIB_CFLAGS
-and ZLIB_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
-else
-	ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS
-	ZLIB_LIBS=$pkg_cv_ZLIB_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-
 tmp_CXXFLAGS="$CXXFLAGS"
 tmp_CPPFLAGS="$CPPFLAGS"
 tmp_CFLAGS="$CFLAGS"
@@ -17097,11 +17321,7 @@ fi
 
 
 
-
-
-#	au/Makefile
-
-ac_config_files="$ac_config_files Makefile tools/Makefile src/Makefile vst/Makefile lv2/Makefile plugingui/Makefile include/Makefile man/Makefile test/Makefile drumgizmo/Makefile drumgizmo/input/Makefile drumgizmo/input/dummy/Makefile drumgizmo/input/test/Makefile drumgizmo/input/jackmidi/Makefile drumgizmo/input/midifile/Makefile drumgizmo/output/Makefile drumgizmo/output/dummy/Makefile drumgizmo/output/alsa/Makefile drumgizmo/output/jackaudio/Makefile drumgizmo/output/wavfile/Makefile"
+ac_config_files="$ac_config_files Makefile tools/Makefile src/Makefile plugin/Makefile plugingui/Makefile include/Makefile man/Makefile test/Makefile drumgizmo/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -17245,6 +17465,14 @@ if test -z "${ENABLE_PUGL_TRUE}" && test -z "${ENABLE_PUGL_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_PUGL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${ENABLE_WIN32_TRUE}" && test -z "${ENABLE_WIN32_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_X11_TRUE}" && test -z "${ENABLE_X11_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_X11\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${ENABLE_LV2_TRUE}" && test -z "${ENABLE_LV2_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_LV2\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17686,7 +17914,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by drumgizmo $as_me 0.9.8.1, which was
+This file was extended by drumgizmo $as_me 0.9.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17752,7 +17980,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-drumgizmo config.status 0.9.8.1
+drumgizmo config.status 0.9.9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -18259,27 +18487,16 @@ do
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "vst/Makefile.mingw32") CONFIG_FILES="$CONFIG_FILES vst/Makefile.mingw32" ;;
+    "plugin/Makefile.mingw32") CONFIG_FILES="$CONFIG_FILES plugin/Makefile.mingw32" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "vst/Makefile") CONFIG_FILES="$CONFIG_FILES vst/Makefile" ;;
-    "lv2/Makefile") CONFIG_FILES="$CONFIG_FILES lv2/Makefile" ;;
+    "plugin/Makefile") CONFIG_FILES="$CONFIG_FILES plugin/Makefile" ;;
     "plugingui/Makefile") CONFIG_FILES="$CONFIG_FILES plugingui/Makefile" ;;
     "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
     "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
     "drumgizmo/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/Makefile" ;;
-    "drumgizmo/input/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/input/Makefile" ;;
-    "drumgizmo/input/dummy/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/input/dummy/Makefile" ;;
-    "drumgizmo/input/test/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/input/test/Makefile" ;;
-    "drumgizmo/input/jackmidi/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/input/jackmidi/Makefile" ;;
-    "drumgizmo/input/midifile/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/input/midifile/Makefile" ;;
-    "drumgizmo/output/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/output/Makefile" ;;
-    "drumgizmo/output/dummy/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/output/dummy/Makefile" ;;
-    "drumgizmo/output/alsa/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/output/alsa/Makefile" ;;
-    "drumgizmo/output/jackaudio/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/output/jackaudio/Makefile" ;;
-    "drumgizmo/output/wavfile/Makefile") CONFIG_FILES="$CONFIG_FILES drumgizmo/output/wavfile/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
diff --git a/configure.ac b/configure.ac
index 02027da..1745714 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,8 +10,56 @@ LT_INIT
 
 AC_CONFIG_HEADERS(config.h)
 
+AC_SYS_LARGEFILE
+
 need_jack=no
 
+dnl ===========================
+dnl Compile with C++11 support.
+dnl ===========================
+AC_LANG_PUSH([C++])
+TMP_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS=-std=c++11
+AC_MSG_CHECKING([whether CXX supports -std=c++11])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
+	[AC_MSG_RESULT([yes])],
+	[
+	 AC_MSG_RESULT([no])
+	 CXXFLAGS=-std=c++0x
+	 AC_MSG_CHECKING([whether CXX supports -std=c++0x])
+	 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
+	 	[AC_MSG_RESULT([yes])],
+	 	[
+	 	 AC_MSG_RESULT([no])
+	 	 AC_MSG_ERROR([Compiler does not support c++11])
+	 	]
+	 )
+]
+)
+CXXFLAGS="$TMP_CXXFLAGS $CXXFLAGS"
+AC_LANG_POP([C++])
+
+dnl ===========================
+dnl Check for override /final keywords support
+dnl ===========================
+AC_LANG_PUSH([C++])
+AC_MSG_CHECKING([whether 'override' and 'final' keywords are supported])
+AC_COMPILE_IFELSE(
+	[AC_LANG_SOURCE(
+		[
+			class A { virtual void foo() {} };
+			class B : public A { virtual void foo() override {} };
+			class C : public B { virtual void foo() final {} };
+		]
+	 )
+	],
+	[AC_MSG_RESULT([yes])],
+	[AC_MSG_RESULT([no (deploying fix)])
+	 CXXFLAGS="$CXXFLAGS -Doverride=\"\" -Dfinal=\"\""
+	]
+)
+AC_LANG_POP([C++])
+
 dnl ======================
 dnl Init pkg-config
 dnl ======================
@@ -23,7 +71,7 @@ AC_ARG_WITH([debug],
 
 AS_IF([test "x$with_debug" == "xyes"],
       [AC_MSG_WARN([*** Building with debug support!])
-	     CXXFLAGS="$CXXFLAGS -Wall -Werror -g"
+	     CXXFLAGS="$CXXFLAGS -Wall -Werror -g -Wl,--no-undefined"
 	     HUGIN_PARM=""]
 )
 
@@ -43,7 +91,7 @@ AS_IF([test "x$enable_gui" = "xauto"],
       [AC_MSG_RESULT([Auto setting gui based on host: $host_os])
 	     AS_CASE([$host_os],
 		      [darwin*], [enable_gui=""],
-		      [linux*|*BSD*], [enable_gui="x11"],
+		      [linux*|*bsd*], [enable_gui="x11"],
 		      [mingw*|windows*|winnt|cygwin], [enable_gui="win32"],
 
 		      AC_MSG_ERROR([Your platform is not currently supported])
@@ -58,26 +106,28 @@ AS_IF(
   dnl ======================
   PKG_CHECK_MODULES(X11, x11 >= 1.0)
 
-  GUI_CFLAGS="-DX11 $X11_CFLAGS"
+  GUI_CPPFLAGS="-DX11 $X11_CFLAGS"
   GUI_LIBS="$X11_LIBS"],
 
   [test "x$enable_gui" = "xwin32"],
   [AC_MSG_RESULT([Setting gui backend to Win32])
-  GUI_CFLAGS="-DWIN32"
+  GUI_CPPFLAGS="-DWIN32"
   GUI_LIBS="-lgdi32 -lsetupapi -lws2_32"],
 
   [test "x$enable_gui" = "xpugl"],
   [AC_MSG_RESULT([Setting gui backend to Pugl])
-  GUI_CFLAGS="-DPUGL -I../../pugl"
+  GUI_CPPFLAGS="-DPUGL -I../../pugl"
   GUI_LIBS="-lGLU -lGL -lglut"],
 
   AC_MSG_ERROR([*** No GUI backend has been selected ***])
 )
 
-AC_SUBST(GUI_CFLAGS)
+AC_SUBST(GUI_CPPFLAGS)
 AC_SUBST(GUI_LIBS)
 
 AM_CONDITIONAL([ENABLE_PUGL], [test "x$enable_gui" = "xpugl"])
+AM_CONDITIONAL([ENABLE_WIN32], [test "x$enable_gui" = "xwin32"])
+AM_CONDITIONAL([ENABLE_X11], [test "x$enable_gui" = "xx11"])
 
 dnl ======================
 dnl Compile unit tests
@@ -127,7 +177,7 @@ AS_IF(
   VST_SOURCE_PATH="$with_vst_sources"
   AC_SUBST(VST_SOURCE_PATH)
   AC_SUBST(VST_CPPFLAGS)
-  AC_CONFIG_FILES(vst/Makefile.mingw32)],
+  AC_CONFIG_FILES(plugin/Makefile.mingw32)],
 
   [AC_MSG_RESULT([*** VST plugin will not be compiled ***])
    enable_vst=no]
@@ -182,7 +232,7 @@ AS_IF(
     [AC_MSG_RESULT([*** input dummy plugin disabled per user request ***])
      have_input_dummy=no]
   )
-   
+
   dnl *** Test
   AC_ARG_ENABLE([input_test],
 		AS_HELP_STRING([--disable-input-test], [Disable input test plugin [default=enabled]]),,
@@ -326,7 +376,7 @@ PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.20)
 
 
 AC_ARG_ENABLE([resampler],
-	AS_HELP_STRING([--enable-resampler[=lib]], 
+	AS_HELP_STRING([--enable-resampler[=lib]],
         [Enable resampling using libzita-resampler, set to 'src' to force use of libsamplerate (slow). [default=yes]]),,
         [enable_resampler="yes"])
 
@@ -398,11 +448,6 @@ AS_IF([test x$enable_resampler == xsrc],
        )]
 )
 
-#dnl ======================
-#dnl Check for zlib
-#dnl ======================
-PKG_CHECK_MODULES(ZLIB, zlib >= 1.2.3)
-
 dnl ======================
 dnl Check for the pthread library
 dnl ======================
@@ -519,30 +564,15 @@ AC_SUBST(CPPFLAGS)
 AC_SUBST(CXXFLAGS)
 AC_SUBST(LDFLAGS)
 
-
-
-#	au/Makefile
-
 AC_CONFIG_FILES(
 	Makefile
 	tools/Makefile
 	src/Makefile
-	vst/Makefile
-	lv2/Makefile
+	plugin/Makefile
 	plugingui/Makefile
 	include/Makefile
 	man/Makefile
   test/Makefile
-	drumgizmo/Makefile
-	drumgizmo/input/Makefile
-	drumgizmo/input/dummy/Makefile
-	drumgizmo/input/test/Makefile
-	drumgizmo/input/jackmidi/Makefile
-	drumgizmo/input/midifile/Makefile
-	drumgizmo/output/Makefile
-	drumgizmo/output/dummy/Makefile
-	drumgizmo/output/alsa/Makefile
-	drumgizmo/output/jackaudio/Makefile
-	drumgizmo/output/wavfile/Makefile)
+	drumgizmo/Makefile)
 
 AC_OUTPUT()
diff --git a/drumgizmo/Makefile.am b/drumgizmo/Makefile.am
index 5220ae3..01a69af 100644
--- a/drumgizmo/Makefile.am
+++ b/drumgizmo/Makefile.am
@@ -4,30 +4,78 @@ if ENABLE_CLI
 
 include $(top_srcdir)/src/Makefile.am.drumgizmo 
 
-SUBDIRS = input output
-
 bin_PROGRAMS = drumgizmo
 
 drumgizmo_LDADD = $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) -ldl $(JACK_LIBS)
 
+drumgizmo_LDFLAGS = 
+
 drumgizmo_CXXFLAGS = $(SNDFILE_CXXFLAGS) $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \
 	-I$(top_srcdir)/include -I$(top_srcdir)/src \
-	-I$(top_srcdir)/hugin -DWITH_HUG_MUTEX $(JACK_CFLAGS) $(SSEFLAGS) \
-	-DINPUT_PLUGIN_DIR=\"${INPUT_PLUGIN_DIR}\" \
-	-DOUTPUT_PLUGIN_DIR=\"${OUTPUT_PLUGIN_DIR}\"
+	-I$(top_srcdir)/hugin -DWITH_HUG_MUTEX -DWITH_HUG_FILTER \
+	$(JACK_CFLAGS) $(SSEFLAGS)
+
+drumgizmo_CFLAGS = -DWITH_HUG_MUTEX -DWITH_HUG_FILTER
 
 drumgizmo_SOURCES = \
-	audioinputenginedl.cc \
-	audiooutputenginedl.cc \
 	drumgizmoc.cc \
 	jackclient.cc \
+	enginefactory.cc \
 	$(DRUMGIZMO_SOURCES) \
-	$(top_srcdir)/hugin/hugin.c
+	$(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/hugin/hugin_filter.c
+
+if HAVE_INPUT_DUMMY
+drumgizmo_SOURCES += input/inputdummy.cc
+drumgizmo_CXXFLAGS += -DHAVE_INPUT_DUMMY
+endif # HAVE_INPUT_DUMMY
+
+if HAVE_INPUT_MIDIFILE
+drumgizmo_CXXFLAGS += $(SMF_CFLAGS)
+drumgizmo_LDADD += $(SMF_LIBS)
+drumgizmo_SOURCES += input/midifile.cc
+drumgizmo_CXXFLAGS += -DHAVE_INPUT_MIDIFILE
+endif # HAVE_INPUT_MIDIFILE
+
+if HAVE_INPUT_JACKMIDI
+drumgizmo_SOURCES += input/jackmidi.cc
+drumgizmo_CXXFLAGS += -DHAVE_INPUT_JACKMIDI
+endif # HAVE_INPUT_JACKMIDI
+
+if HAVE_OUTPUT_DUMMY
+drumgizmo_SOURCES += output/outputdummy.cc
+drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_DUMMY
+endif # HAVE_OUTPUT_DUMMY
+
+if HAVE_OUTPUT_WAVFILE
+drumgizmo_SOURCES += output/wavfile.cc
+drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_WAVFILE
+endif # HAVE_OUTPUT_WAVFILE
+
+if HAVE_OUTPUT_ALSA
+drumgizmo_CXXFLAGS += $(ALSA_CFLAGS)
+drumgizmo_LDFLAGS += $(ALSA_LIBS)
+drumgizmo_SOURCES += output/alsa.cc
+drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_ALSA
+endif # HAVE_OUTPUT_ALSA
+
+if HAVE_OUTPUT_JACKAUDIO
+drumgizmo_CXXFLAGS += $(JACK_CFLAGS)
+drumgizmo_LDFLAGS += $(JACK_LIBS)
+drumgizmo_SOURCES += output/jackaudio.cc
+drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_JACKAUDIO
+endif # HAVE_OUTPUT_JACKAUDIO
 
 EXTRA_DIST = \
-	audioinputenginedl.h \
-	audiooutputenginedl.h \
 	drumgizmoc.h \
-	jackclient.h
+	jackclient.h \
+	enginefactory.h \
+	input/inputdummy.h \
+	input/jackmidi.h \
+	input/midifile.h \
+	output/alsa.h \
+	output/jackaudio.h \
+	output/outputdummy.h \
+	output/wavfile.h
 
-endif
+endif # ENABLE_CLI
diff --git a/drumgizmo/Makefile.in b/drumgizmo/Makefile.in
index f1d4ad3..b2ab3fa 100644
--- a/drumgizmo/Makefile.in
+++ b/drumgizmo/Makefile.in
@@ -14,6 +14,8 @@
 
 @SET_MAKE@
 
+# -*- Makefile -*-
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -82,6 +84,29 @@ DIST_COMMON = $(top_srcdir)/src/Makefile.am.drumgizmo \
 	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/depcomp
 @ENABLE_CLI_TRUE at bin_PROGRAMS = drumgizmo$(EXEEXT)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_DUMMY_TRUE at am__append_1 = input/inputdummy.cc
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_DUMMY_TRUE at am__append_2 = -DHAVE_INPUT_DUMMY
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE at am__append_3 =  \
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE@	$(SMF_CFLAGS) \
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE@	-DHAVE_INPUT_MIDIFILE
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE at am__append_4 = $(SMF_LIBS)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE at am__append_5 = input/midifile.cc
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_JACKMIDI_TRUE at am__append_6 = input/jackmidi.cc
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_JACKMIDI_TRUE at am__append_7 = -DHAVE_INPUT_JACKMIDI
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_DUMMY_TRUE at am__append_8 = output/outputdummy.cc
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_DUMMY_TRUE at am__append_9 = -DHAVE_OUTPUT_DUMMY
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_WAVFILE_TRUE at am__append_10 = output/wavfile.cc
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_WAVFILE_TRUE at am__append_11 = -DHAVE_OUTPUT_WAVFILE
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE at am__append_12 =  \
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE@	$(ALSA_CFLAGS) \
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE@	-DHAVE_OUTPUT_ALSA
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE at am__append_13 = $(ALSA_LIBS)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE at am__append_14 = output/alsa.cc
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE at am__append_15 =  \
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE@	$(JACK_CFLAGS) \
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE@	-DHAVE_OUTPUT_JACKAUDIO
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE at am__append_16 = $(JACK_LIBS)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE at am__append_17 = output/jackaudio.cc
 subdir = drumgizmo
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -93,12 +118,16 @@ CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS)
-am__drumgizmo_SOURCES_DIST = audioinputenginedl.cc \
-	audiooutputenginedl.cc drumgizmoc.cc jackclient.cc \
+am__drumgizmo_SOURCES_DIST = drumgizmoc.cc jackclient.cc \
+	enginefactory.cc $(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
 	$(top_srcdir)/src/audioinputenginemidi.cc \
 	$(top_srcdir)/src/audiofile.cc $(top_srcdir)/src/channel.cc \
 	$(top_srcdir)/src/channelmixer.cc \
 	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
 	$(top_srcdir)/src/configuration.cc \
 	$(top_srcdir)/src/configparser.cc \
 	$(top_srcdir)/src/drumgizmo.cc $(top_srcdir)/src/drumkit.cc \
@@ -106,6 +135,7 @@ am__drumgizmo_SOURCES_DIST = audioinputenginedl.cc \
 	$(top_srcdir)/src/drumkitparser.cc $(top_srcdir)/src/events.cc \
 	$(top_srcdir)/src/instrument.cc \
 	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
 	$(top_srcdir)/src/messagehandler.cc \
 	$(top_srcdir)/src/messagereceiver.cc \
 	$(top_srcdir)/src/midimapparser.cc \
@@ -114,13 +144,20 @@ am__drumgizmo_SOURCES_DIST = audioinputenginedl.cc \
 	$(top_srcdir)/src/sample.cc $(top_srcdir)/src/semaphore.cc \
 	$(top_srcdir)/src/saxparser.cc $(top_srcdir)/src/thread.cc \
 	$(top_srcdir)/src/velocity.cc $(top_srcdir)/src/versionstr.cc \
-	$(top_srcdir)/hugin/hugin.c
- at ENABLE_CLI_TRUE@am__objects_1 =  \
+	$(top_srcdir)/hugin/hugin.c $(top_srcdir)/hugin/hugin_filter.c \
+	input/inputdummy.cc input/midifile.cc input/jackmidi.cc \
+	output/outputdummy.cc output/wavfile.cc output/alsa.cc \
+	output/jackaudio.cc
+ at ENABLE_CLI_TRUE@am__objects_1 = drumgizmo-audiocachefile.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-audiocache.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-audiocacheeventhandler.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-audiocacheidmanager.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-audioinputenginemidi.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-audiofile.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-channel.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-channelmixer.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-chresampler.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-configfile.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-configuration.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-configparser.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-drumgizmo.$(OBJEXT) \
@@ -130,6 +167,7 @@ am__drumgizmo_SOURCES_DIST = audioinputenginedl.cc \
 @ENABLE_CLI_TRUE@	drumgizmo-events.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-instrument.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-instrumentparser.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-memchecker.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-messagehandler.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-messagereceiver.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-midimapparser.$(OBJEXT) \
@@ -143,26 +181,39 @@ am__drumgizmo_SOURCES_DIST = audioinputenginedl.cc \
 @ENABLE_CLI_TRUE@	drumgizmo-thread.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-velocity.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-versionstr.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_DUMMY_TRUE at am__objects_2 = drumgizmo-inputdummy.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE at am__objects_3 = drumgizmo-midifile.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_JACKMIDI_TRUE at am__objects_4 = drumgizmo-jackmidi.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_DUMMY_TRUE at am__objects_5 = drumgizmo-outputdummy.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_WAVFILE_TRUE at am__objects_6 = drumgizmo-wavfile.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_ALSA_TRUE at am__objects_7 = drumgizmo-alsa.$(OBJEXT)
+ at ENABLE_CLI_TRUE@@HAVE_OUTPUT_JACKAUDIO_TRUE at am__objects_8 = drumgizmo-jackaudio.$(OBJEXT)
 @ENABLE_CLI_TRUE at am_drumgizmo_OBJECTS =  \
- at ENABLE_CLI_TRUE@	drumgizmo-audioinputenginedl.$(OBJEXT) \
- at ENABLE_CLI_TRUE@	drumgizmo-audiooutputenginedl.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-drumgizmoc.$(OBJEXT) \
 @ENABLE_CLI_TRUE@	drumgizmo-jackclient.$(OBJEXT) \
- at ENABLE_CLI_TRUE@	$(am__objects_1) hugin.$(OBJEXT)
+ at ENABLE_CLI_TRUE@	drumgizmo-enginefactory.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	$(am__objects_1) drumgizmo-hugin.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	drumgizmo-hugin_filter.$(OBJEXT) \
+ at ENABLE_CLI_TRUE@	$(am__objects_2) $(am__objects_3) \
+ at ENABLE_CLI_TRUE@	$(am__objects_4) $(am__objects_5) \
+ at ENABLE_CLI_TRUE@	$(am__objects_6) $(am__objects_7) \
+ at ENABLE_CLI_TRUE@	$(am__objects_8)
 drumgizmo_OBJECTS = $(am_drumgizmo_OBJECTS)
 am__DEPENDENCIES_1 =
 @ENABLE_CLI_TRUE at am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \
 @ENABLE_CLI_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- at ENABLE_CLI_TRUE@	$(am__DEPENDENCIES_1)
- at ENABLE_CLI_TRUE@drumgizmo_DEPENDENCIES = $(am__DEPENDENCIES_2) \
 @ENABLE_CLI_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ at ENABLE_CLI_TRUE@@HAVE_INPUT_MIDIFILE_TRUE at am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+ at ENABLE_CLI_TRUE@drumgizmo_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ at ENABLE_CLI_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ at ENABLE_CLI_TRUE@	$(am__DEPENDENCIES_3)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 drumgizmo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(drumgizmo_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+	$(CXXFLAGS) $(drumgizmo_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -217,27 +268,11 @@ am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(drumgizmo_SOURCES)
 DIST_SOURCES = $(am__drumgizmo_SOURCES_DIST)
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -257,33 +292,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = input output
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALSA_CFLAGS = @ALSA_CFLAGS@
 ALSA_LIBS = @ALSA_LIBS@
@@ -321,7 +330,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -385,8 +394,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -443,11 +450,16 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 DISTDIRS = input output
 @ENABLE_CLI_TRUE at DRUMGIZMO_SOURCES = \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/audiocachefile.cc \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/audiocache.cc \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/audiocacheeventhandler.cc \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/audiocacheidmanager.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/audioinputenginemidi.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/audiofile.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/channel.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/channelmixer.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/chresampler.cc \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/configfile.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/configuration.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/configparser.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/drumgizmo.cc \
@@ -457,6 +469,7 @@ DISTDIRS = input output
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/events.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/instrument.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/instrumentparser.cc \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/src/memchecker.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/messagehandler.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/messagereceiver.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/midimapparser.cc \
@@ -471,30 +484,50 @@ DISTDIRS = input output
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/velocity.cc \
 @ENABLE_CLI_TRUE@	$(top_srcdir)/src/versionstr.cc
 
- at ENABLE_CLI_TRUE@DRUMGIZMO_LIBS = $(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS)
- at ENABLE_CLI_TRUE@SUBDIRS = input output
- at ENABLE_CLI_TRUE@drumgizmo_LDADD = $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) -ldl $(JACK_LIBS)
- at ENABLE_CLI_TRUE@drumgizmo_CXXFLAGS = $(SNDFILE_CXXFLAGS) $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \
+ at ENABLE_CLI_TRUE@DRUMGIZMO_LIBS = \
+ at ENABLE_CLI_TRUE@	$(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS) \
+ at ENABLE_CLI_TRUE@	$(PTHREAD_LIBS)
+
+ at ENABLE_CLI_TRUE@DRUMGIZMO_CPPFLAGS = \
+ at ENABLE_CLI_TRUE@	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/hugin \
+ at ENABLE_CLI_TRUE@	$(SSEFLAGS) \
+ at ENABLE_CLI_TRUE@	$(ZITA_CPPFLAGS) $(SNDFILE_CXXFLAGS) $(EXPAT_CFLAGS) $(SAMPLERATE_CFLAGS) \
+ at ENABLE_CLI_TRUE@	$(PTHREAD_CFLAGS)
+
+ at ENABLE_CLI_TRUE@drumgizmo_LDADD = $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) \
+ at ENABLE_CLI_TRUE@	-ldl $(JACK_LIBS) $(am__append_4)
+ at ENABLE_CLI_TRUE@drumgizmo_LDFLAGS = $(am__append_13) $(am__append_16)
+ at ENABLE_CLI_TRUE@drumgizmo_CXXFLAGS = $(SNDFILE_CXXFLAGS) \
+ at ENABLE_CLI_TRUE@	$(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \
 @ENABLE_CLI_TRUE@	-I$(top_srcdir)/include -I$(top_srcdir)/src \
- at ENABLE_CLI_TRUE@	-I$(top_srcdir)/hugin -DWITH_HUG_MUTEX $(JACK_CFLAGS) $(SSEFLAGS) \
- at ENABLE_CLI_TRUE@	-DINPUT_PLUGIN_DIR=\"${INPUT_PLUGIN_DIR}\" \
- at ENABLE_CLI_TRUE@	-DOUTPUT_PLUGIN_DIR=\"${OUTPUT_PLUGIN_DIR}\"
-
- at ENABLE_CLI_TRUE@drumgizmo_SOURCES = \
- at ENABLE_CLI_TRUE@	audioinputenginedl.cc \
- at ENABLE_CLI_TRUE@	audiooutputenginedl.cc \
- at ENABLE_CLI_TRUE@	drumgizmoc.cc \
- at ENABLE_CLI_TRUE@	jackclient.cc \
- at ENABLE_CLI_TRUE@	$(DRUMGIZMO_SOURCES) \
- at ENABLE_CLI_TRUE@	$(top_srcdir)/hugin/hugin.c
-
+ at ENABLE_CLI_TRUE@	-I$(top_srcdir)/hugin -DWITH_HUG_MUTEX \
+ at ENABLE_CLI_TRUE@	-DWITH_HUG_FILTER $(JACK_CFLAGS) $(SSEFLAGS) \
+ at ENABLE_CLI_TRUE@	$(am__append_2) $(am__append_3) \
+ at ENABLE_CLI_TRUE@	$(am__append_7) $(am__append_9) \
+ at ENABLE_CLI_TRUE@	$(am__append_11) $(am__append_12) \
+ at ENABLE_CLI_TRUE@	$(am__append_15)
+ at ENABLE_CLI_TRUE@drumgizmo_CFLAGS = -DWITH_HUG_MUTEX -DWITH_HUG_FILTER
+ at ENABLE_CLI_TRUE@drumgizmo_SOURCES = drumgizmoc.cc jackclient.cc \
+ at ENABLE_CLI_TRUE@	enginefactory.cc $(DRUMGIZMO_SOURCES) \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/hugin/hugin.c \
+ at ENABLE_CLI_TRUE@	$(top_srcdir)/hugin/hugin_filter.c \
+ at ENABLE_CLI_TRUE@	$(am__append_1) $(am__append_5) \
+ at ENABLE_CLI_TRUE@	$(am__append_6) $(am__append_8) \
+ at ENABLE_CLI_TRUE@	$(am__append_10) $(am__append_14) \
+ at ENABLE_CLI_TRUE@	$(am__append_17)
 @ENABLE_CLI_TRUE at EXTRA_DIST = \
- at ENABLE_CLI_TRUE@	audioinputenginedl.h \
- at ENABLE_CLI_TRUE@	audiooutputenginedl.h \
 @ENABLE_CLI_TRUE@	drumgizmoc.h \
- at ENABLE_CLI_TRUE@	jackclient.h
-
-all: all-recursive
+ at ENABLE_CLI_TRUE@	jackclient.h \
+ at ENABLE_CLI_TRUE@	enginefactory.h \
+ at ENABLE_CLI_TRUE@	input/inputdummy.h \
+ at ENABLE_CLI_TRUE@	input/jackmidi.h \
+ at ENABLE_CLI_TRUE@	input/midifile.h \
+ at ENABLE_CLI_TRUE@	output/alsa.h \
+ at ENABLE_CLI_TRUE@	output/jackaudio.h \
+ at ENABLE_CLI_TRUE@	output/outputdummy.h \
+ at ENABLE_CLI_TRUE@	output/wavfile.h
+
+all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .cc .lo .o .obj
@@ -589,13 +622,17 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-alsa.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiocache.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiocacheeventhandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiocacheidmanager.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiofile.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audioinputenginedl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audioinputenginemidi.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-audiooutputenginedl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-channel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-channelmixer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-chresampler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-configfile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-configparser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-configuration.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-drumgizmo.Po at am__quote@
@@ -603,15 +640,24 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-drumkit.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-drumkitloader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-drumkitparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-enginefactory.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-events.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-hugin.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-hugin_filter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-inputdummy.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-instrument.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-instrumentparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-jackaudio.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-jackclient.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-jackmidi.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-memchecker.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-messagehandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-messagereceiver.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-midifile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-midimapparser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-midimapper.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-outputdummy.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-path.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-powerlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-sample.Po at am__quote@
@@ -620,7 +666,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-thread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-velocity.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-versionstr.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo-wavfile.Po at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -643,19 +689,33 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-hugin.o: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.o -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.o' libtool=no @AMDEPBACKSLASH@
+drumgizmo-hugin.o: $(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -MT drumgizmo-hugin.o -MD -MP -MF $(DEPDIR)/drumgizmo-hugin.Tpo -c -o drumgizmo-hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-hugin.Tpo $(DEPDIR)/drumgizmo-hugin.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='drumgizmo-hugin.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -c -o drumgizmo-hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+
+drumgizmo-hugin.obj: $(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -MT drumgizmo-hugin.obj -MD -MP -MF $(DEPDIR)/drumgizmo-hugin.Tpo -c -o drumgizmo-hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-hugin.Tpo $(DEPDIR)/drumgizmo-hugin.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='drumgizmo-hugin.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -c -o drumgizmo-hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
+
+drumgizmo-hugin_filter.o: $(top_srcdir)/hugin/hugin_filter.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -MT drumgizmo-hugin_filter.o -MD -MP -MF $(DEPDIR)/drumgizmo-hugin_filter.Tpo -c -o drumgizmo-hugin_filter.o `test -f '$(top_srcdir)/hugin/hugin_filter.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_filter.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-hugin_filter.Tpo $(DEPDIR)/drumgizmo-hugin_filter.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_filter.c' object='drumgizmo-hugin_filter.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -c -o drumgizmo-hugin_filter.o `test -f '$(top_srcdir)/hugin/hugin_filter.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_filter.c
 
-hugin.obj: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.obj -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.obj' libtool=no @AMDEPBACKSLASH@
+drumgizmo-hugin_filter.obj: $(top_srcdir)/hugin/hugin_filter.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -MT drumgizmo-hugin_filter.obj -MD -MP -MF $(DEPDIR)/drumgizmo-hugin_filter.Tpo -c -o drumgizmo-hugin_filter.obj `if test -f '$(top_srcdir)/hugin/hugin_filter.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin_filter.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin_filter.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-hugin_filter.Tpo $(DEPDIR)/drumgizmo-hugin_filter.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_filter.c' object='drumgizmo-hugin_filter.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CFLAGS) $(CFLAGS) -c -o drumgizmo-hugin_filter.obj `if test -f '$(top_srcdir)/hugin/hugin_filter.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin_filter.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin_filter.c'; fi`
 
 .cc.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -678,34 +738,6 @@ hugin.obj: $(top_srcdir)/hugin/hugin.c
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
-drumgizmo-audioinputenginedl.o: audioinputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audioinputenginedl.o -MD -MP -MF $(DEPDIR)/drumgizmo-audioinputenginedl.Tpo -c -o drumgizmo-audioinputenginedl.o `test -f 'audioinputenginedl.cc' || echo '$(srcdir)/'`audioinputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audioinputenginedl.Tpo $(DEPDIR)/drumgizmo-audioinputenginedl.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audioinputenginedl.cc' object='drumgizmo-audioinputenginedl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audioinputenginedl.o `test -f 'audioinputenginedl.cc' || echo '$(srcdir)/'`audioinputenginedl.cc
-
-drumgizmo-audioinputenginedl.obj: audioinputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audioinputenginedl.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audioinputenginedl.Tpo -c -o drumgizmo-audioinputenginedl.obj `if test -f 'audioinputenginedl.cc'; then $(CYGPATH_W) 'audioinputenginedl.cc'; else $(CYGPATH_W) '$(srcdir)/audioinputenginedl.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audioinputenginedl.Tpo $(DEPDIR)/drumgizmo-audioinputenginedl.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audioinputenginedl.cc' object='drumgizmo-audioinputenginedl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audioinputenginedl.obj `if test -f 'audioinputenginedl.cc'; then $(CYGPATH_W) 'audioinputenginedl.cc'; else $(CYGPATH_W) '$(srcdir)/audioinputenginedl.cc'; fi`
-
-drumgizmo-audiooutputenginedl.o: audiooutputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiooutputenginedl.o -MD -MP -MF $(DEPDIR)/drumgizmo-audiooutputenginedl.Tpo -c -o drumgizmo-audiooutputenginedl.o `test -f 'audiooutputenginedl.cc' || echo '$(srcdir)/'`audiooutputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiooutputenginedl.Tpo $(DEPDIR)/drumgizmo-audiooutputenginedl.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiooutputenginedl.cc' object='drumgizmo-audiooutputenginedl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiooutputenginedl.o `test -f 'audiooutputenginedl.cc' || echo '$(srcdir)/'`audiooutputenginedl.cc
-
-drumgizmo-audiooutputenginedl.obj: audiooutputenginedl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiooutputenginedl.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audiooutputenginedl.Tpo -c -o drumgizmo-audiooutputenginedl.obj `if test -f 'audiooutputenginedl.cc'; then $(CYGPATH_W) 'audiooutputenginedl.cc'; else $(CYGPATH_W) '$(srcdir)/audiooutputenginedl.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiooutputenginedl.Tpo $(DEPDIR)/drumgizmo-audiooutputenginedl.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiooutputenginedl.cc' object='drumgizmo-audiooutputenginedl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiooutputenginedl.obj `if test -f 'audiooutputenginedl.cc'; then $(CYGPATH_W) 'audiooutputenginedl.cc'; else $(CYGPATH_W) '$(srcdir)/audiooutputenginedl.cc'; fi`
-
 drumgizmo-drumgizmoc.o: drumgizmoc.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-drumgizmoc.o -MD -MP -MF $(DEPDIR)/drumgizmo-drumgizmoc.Tpo -c -o drumgizmo-drumgizmoc.o `test -f 'drumgizmoc.cc' || echo '$(srcdir)/'`drumgizmoc.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-drumgizmoc.Tpo $(DEPDIR)/drumgizmo-drumgizmoc.Po
@@ -734,6 +766,76 @@ drumgizmo-jackclient.obj: jackclient.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-jackclient.obj `if test -f 'jackclient.cc'; then $(CYGPATH_W) 'jackclient.cc'; else $(CYGPATH_W) '$(srcdir)/jackclient.cc'; fi`
 
+drumgizmo-enginefactory.o: enginefactory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-enginefactory.o -MD -MP -MF $(DEPDIR)/drumgizmo-enginefactory.Tpo -c -o drumgizmo-enginefactory.o `test -f 'enginefactory.cc' || echo '$(srcdir)/'`enginefactory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-enginefactory.Tpo $(DEPDIR)/drumgizmo-enginefactory.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='enginefactory.cc' object='drumgizmo-enginefactory.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-enginefactory.o `test -f 'enginefactory.cc' || echo '$(srcdir)/'`enginefactory.cc
+
+drumgizmo-enginefactory.obj: enginefactory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-enginefactory.obj -MD -MP -MF $(DEPDIR)/drumgizmo-enginefactory.Tpo -c -o drumgizmo-enginefactory.obj `if test -f 'enginefactory.cc'; then $(CYGPATH_W) 'enginefactory.cc'; else $(CYGPATH_W) '$(srcdir)/enginefactory.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-enginefactory.Tpo $(DEPDIR)/drumgizmo-enginefactory.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='enginefactory.cc' object='drumgizmo-enginefactory.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-enginefactory.obj `if test -f 'enginefactory.cc'; then $(CYGPATH_W) 'enginefactory.cc'; else $(CYGPATH_W) '$(srcdir)/enginefactory.cc'; fi`
+
+drumgizmo-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocachefile.o -MD -MP -MF $(DEPDIR)/drumgizmo-audiocachefile.Tpo -c -o drumgizmo-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocachefile.Tpo $(DEPDIR)/drumgizmo-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='drumgizmo-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+drumgizmo-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocachefile.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audiocachefile.Tpo -c -o drumgizmo-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocachefile.Tpo $(DEPDIR)/drumgizmo-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='drumgizmo-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+drumgizmo-audiocache.o: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocache.o -MD -MP -MF $(DEPDIR)/drumgizmo-audiocache.Tpo -c -o drumgizmo-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocache.Tpo $(DEPDIR)/drumgizmo-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='drumgizmo-audiocache.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+drumgizmo-audiocache.obj: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocache.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audiocache.Tpo -c -o drumgizmo-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocache.Tpo $(DEPDIR)/drumgizmo-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='drumgizmo-audiocache.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+
+drumgizmo-audiocacheeventhandler.o: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocacheeventhandler.o -MD -MP -MF $(DEPDIR)/drumgizmo-audiocacheeventhandler.Tpo -c -o drumgizmo-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocacheeventhandler.Tpo $(DEPDIR)/drumgizmo-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='drumgizmo-audiocacheeventhandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+drumgizmo-audiocacheeventhandler.obj: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocacheeventhandler.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audiocacheeventhandler.Tpo -c -o drumgizmo-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocacheeventhandler.Tpo $(DEPDIR)/drumgizmo-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='drumgizmo-audiocacheeventhandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+
+drumgizmo-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/drumgizmo-audiocacheidmanager.Tpo -c -o drumgizmo-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocacheidmanager.Tpo $(DEPDIR)/drumgizmo-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='drumgizmo-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+drumgizmo-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/drumgizmo-audiocacheidmanager.Tpo -c -o drumgizmo-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audiocacheidmanager.Tpo $(DEPDIR)/drumgizmo-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='drumgizmo-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
 drumgizmo-audioinputenginemidi.o: $(top_srcdir)/src/audioinputenginemidi.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-audioinputenginemidi.o -MD -MP -MF $(DEPDIR)/drumgizmo-audioinputenginemidi.Tpo -c -o drumgizmo-audioinputenginemidi.o `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-audioinputenginemidi.Tpo $(DEPDIR)/drumgizmo-audioinputenginemidi.Po
@@ -804,6 +906,20 @@ drumgizmo-chresampler.obj: $(top_srcdir)/src/chresampler.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-chresampler.obj `if test -f '$(top_srcdir)/src/chresampler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/chresampler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/chresampler.cc'; fi`
 
+drumgizmo-configfile.o: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-configfile.o -MD -MP -MF $(DEPDIR)/drumgizmo-configfile.Tpo -c -o drumgizmo-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-configfile.Tpo $(DEPDIR)/drumgizmo-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='drumgizmo-configfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+drumgizmo-configfile.obj: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-configfile.obj -MD -MP -MF $(DEPDIR)/drumgizmo-configfile.Tpo -c -o drumgizmo-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-configfile.Tpo $(DEPDIR)/drumgizmo-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='drumgizmo-configfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+
 drumgizmo-configuration.o: $(top_srcdir)/src/configuration.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-configuration.o -MD -MP -MF $(DEPDIR)/drumgizmo-configuration.Tpo -c -o drumgizmo-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-configuration.Tpo $(DEPDIR)/drumgizmo-configuration.Po
@@ -930,6 +1046,20 @@ drumgizmo-instrumentparser.obj: $(top_srcdir)/src/instrumentparser.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-instrumentparser.obj `if test -f '$(top_srcdir)/src/instrumentparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrumentparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrumentparser.cc'; fi`
 
+drumgizmo-memchecker.o: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-memchecker.o -MD -MP -MF $(DEPDIR)/drumgizmo-memchecker.Tpo -c -o drumgizmo-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-memchecker.Tpo $(DEPDIR)/drumgizmo-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='drumgizmo-memchecker.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+
+drumgizmo-memchecker.obj: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-memchecker.obj -MD -MP -MF $(DEPDIR)/drumgizmo-memchecker.Tpo -c -o drumgizmo-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-memchecker.Tpo $(DEPDIR)/drumgizmo-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='drumgizmo-memchecker.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+
 drumgizmo-messagehandler.o: $(top_srcdir)/src/messagehandler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-messagehandler.o -MD -MP -MF $(DEPDIR)/drumgizmo-messagehandler.Tpo -c -o drumgizmo-messagehandler.o `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-messagehandler.Tpo $(DEPDIR)/drumgizmo-messagehandler.Po
@@ -1112,67 +1242,118 @@ drumgizmo-versionstr.obj: $(top_srcdir)/src/versionstr.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-versionstr.obj `if test -f '$(top_srcdir)/src/versionstr.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/versionstr.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/versionstr.cc'; fi`
 
+drumgizmo-inputdummy.o: input/inputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-inputdummy.o -MD -MP -MF $(DEPDIR)/drumgizmo-inputdummy.Tpo -c -o drumgizmo-inputdummy.o `test -f 'input/inputdummy.cc' || echo '$(srcdir)/'`input/inputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-inputdummy.Tpo $(DEPDIR)/drumgizmo-inputdummy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/inputdummy.cc' object='drumgizmo-inputdummy.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-inputdummy.o `test -f 'input/inputdummy.cc' || echo '$(srcdir)/'`input/inputdummy.cc
+
+drumgizmo-inputdummy.obj: input/inputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-inputdummy.obj -MD -MP -MF $(DEPDIR)/drumgizmo-inputdummy.Tpo -c -o drumgizmo-inputdummy.obj `if test -f 'input/inputdummy.cc'; then $(CYGPATH_W) 'input/inputdummy.cc'; else $(CYGPATH_W) '$(srcdir)/input/inputdummy.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-inputdummy.Tpo $(DEPDIR)/drumgizmo-inputdummy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/inputdummy.cc' object='drumgizmo-inputdummy.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-inputdummy.obj `if test -f 'input/inputdummy.cc'; then $(CYGPATH_W) 'input/inputdummy.cc'; else $(CYGPATH_W) '$(srcdir)/input/inputdummy.cc'; fi`
+
+drumgizmo-midifile.o: input/midifile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-midifile.o -MD -MP -MF $(DEPDIR)/drumgizmo-midifile.Tpo -c -o drumgizmo-midifile.o `test -f 'input/midifile.cc' || echo '$(srcdir)/'`input/midifile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-midifile.Tpo $(DEPDIR)/drumgizmo-midifile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/midifile.cc' object='drumgizmo-midifile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-midifile.o `test -f 'input/midifile.cc' || echo '$(srcdir)/'`input/midifile.cc
+
+drumgizmo-midifile.obj: input/midifile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-midifile.obj -MD -MP -MF $(DEPDIR)/drumgizmo-midifile.Tpo -c -o drumgizmo-midifile.obj `if test -f 'input/midifile.cc'; then $(CYGPATH_W) 'input/midifile.cc'; else $(CYGPATH_W) '$(srcdir)/input/midifile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-midifile.Tpo $(DEPDIR)/drumgizmo-midifile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/midifile.cc' object='drumgizmo-midifile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-midifile.obj `if test -f 'input/midifile.cc'; then $(CYGPATH_W) 'input/midifile.cc'; else $(CYGPATH_W) '$(srcdir)/input/midifile.cc'; fi`
+
+drumgizmo-jackmidi.o: input/jackmidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-jackmidi.o -MD -MP -MF $(DEPDIR)/drumgizmo-jackmidi.Tpo -c -o drumgizmo-jackmidi.o `test -f 'input/jackmidi.cc' || echo '$(srcdir)/'`input/jackmidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-jackmidi.Tpo $(DEPDIR)/drumgizmo-jackmidi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/jackmidi.cc' object='drumgizmo-jackmidi.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-jackmidi.o `test -f 'input/jackmidi.cc' || echo '$(srcdir)/'`input/jackmidi.cc
+
+drumgizmo-jackmidi.obj: input/jackmidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-jackmidi.obj -MD -MP -MF $(DEPDIR)/drumgizmo-jackmidi.Tpo -c -o drumgizmo-jackmidi.obj `if test -f 'input/jackmidi.cc'; then $(CYGPATH_W) 'input/jackmidi.cc'; else $(CYGPATH_W) '$(srcdir)/input/jackmidi.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-jackmidi.Tpo $(DEPDIR)/drumgizmo-jackmidi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input/jackmidi.cc' object='drumgizmo-jackmidi.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-jackmidi.obj `if test -f 'input/jackmidi.cc'; then $(CYGPATH_W) 'input/jackmidi.cc'; else $(CYGPATH_W) '$(srcdir)/input/jackmidi.cc'; fi`
+
+drumgizmo-outputdummy.o: output/outputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-outputdummy.o -MD -MP -MF $(DEPDIR)/drumgizmo-outputdummy.Tpo -c -o drumgizmo-outputdummy.o `test -f 'output/outputdummy.cc' || echo '$(srcdir)/'`output/outputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-outputdummy.Tpo $(DEPDIR)/drumgizmo-outputdummy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/outputdummy.cc' object='drumgizmo-outputdummy.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-outputdummy.o `test -f 'output/outputdummy.cc' || echo '$(srcdir)/'`output/outputdummy.cc
+
+drumgizmo-outputdummy.obj: output/outputdummy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-outputdummy.obj -MD -MP -MF $(DEPDIR)/drumgizmo-outputdummy.Tpo -c -o drumgizmo-outputdummy.obj `if test -f 'output/outputdummy.cc'; then $(CYGPATH_W) 'output/outputdummy.cc'; else $(CYGPATH_W) '$(srcdir)/output/outputdummy.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-outputdummy.Tpo $(DEPDIR)/drumgizmo-outputdummy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/outputdummy.cc' object='drumgizmo-outputdummy.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-outputdummy.obj `if test -f 'output/outputdummy.cc'; then $(CYGPATH_W) 'output/outputdummy.cc'; else $(CYGPATH_W) '$(srcdir)/output/outputdummy.cc'; fi`
+
+drumgizmo-wavfile.o: output/wavfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-wavfile.o -MD -MP -MF $(DEPDIR)/drumgizmo-wavfile.Tpo -c -o drumgizmo-wavfile.o `test -f 'output/wavfile.cc' || echo '$(srcdir)/'`output/wavfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-wavfile.Tpo $(DEPDIR)/drumgizmo-wavfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/wavfile.cc' object='drumgizmo-wavfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-wavfile.o `test -f 'output/wavfile.cc' || echo '$(srcdir)/'`output/wavfile.cc
+
+drumgizmo-wavfile.obj: output/wavfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-wavfile.obj -MD -MP -MF $(DEPDIR)/drumgizmo-wavfile.Tpo -c -o drumgizmo-wavfile.obj `if test -f 'output/wavfile.cc'; then $(CYGPATH_W) 'output/wavfile.cc'; else $(CYGPATH_W) '$(srcdir)/output/wavfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-wavfile.Tpo $(DEPDIR)/drumgizmo-wavfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/wavfile.cc' object='drumgizmo-wavfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-wavfile.obj `if test -f 'output/wavfile.cc'; then $(CYGPATH_W) 'output/wavfile.cc'; else $(CYGPATH_W) '$(srcdir)/output/wavfile.cc'; fi`
+
+drumgizmo-alsa.o: output/alsa.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-alsa.o -MD -MP -MF $(DEPDIR)/drumgizmo-alsa.Tpo -c -o drumgizmo-alsa.o `test -f 'output/alsa.cc' || echo '$(srcdir)/'`output/alsa.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-alsa.Tpo $(DEPDIR)/drumgizmo-alsa.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/alsa.cc' object='drumgizmo-alsa.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-alsa.o `test -f 'output/alsa.cc' || echo '$(srcdir)/'`output/alsa.cc
+
+drumgizmo-alsa.obj: output/alsa.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-alsa.obj -MD -MP -MF $(DEPDIR)/drumgizmo-alsa.Tpo -c -o drumgizmo-alsa.obj `if test -f 'output/alsa.cc'; then $(CYGPATH_W) 'output/alsa.cc'; else $(CYGPATH_W) '$(srcdir)/output/alsa.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-alsa.Tpo $(DEPDIR)/drumgizmo-alsa.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/alsa.cc' object='drumgizmo-alsa.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-alsa.obj `if test -f 'output/alsa.cc'; then $(CYGPATH_W) 'output/alsa.cc'; else $(CYGPATH_W) '$(srcdir)/output/alsa.cc'; fi`
+
+drumgizmo-jackaudio.o: output/jackaudio.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-jackaudio.o -MD -MP -MF $(DEPDIR)/drumgizmo-jackaudio.Tpo -c -o drumgizmo-jackaudio.o `test -f 'output/jackaudio.cc' || echo '$(srcdir)/'`output/jackaudio.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-jackaudio.Tpo $(DEPDIR)/drumgizmo-jackaudio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/jackaudio.cc' object='drumgizmo-jackaudio.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-jackaudio.o `test -f 'output/jackaudio.cc' || echo '$(srcdir)/'`output/jackaudio.cc
+
+drumgizmo-jackaudio.obj: output/jackaudio.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo-jackaudio.obj -MD -MP -MF $(DEPDIR)/drumgizmo-jackaudio.Tpo -c -o drumgizmo-jackaudio.obj `if test -f 'output/jackaudio.cc'; then $(CYGPATH_W) 'output/jackaudio.cc'; else $(CYGPATH_W) '$(srcdir)/output/jackaudio.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo-jackaudio.Tpo $(DEPDIR)/drumgizmo-jackaudio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output/jackaudio.cc' object='drumgizmo-jackaudio.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo-jackaudio.obj `if test -f 'output/jackaudio.cc'; then $(CYGPATH_W) 'output/jackaudio.cc'; else $(CYGPATH_W) '$(srcdir)/output/jackaudio.cc'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
 
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
 ID: $(am__tagged_files)
 	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
+tags: tags-am
 TAGS: tags
 
 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
 	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
@@ -1185,7 +1366,7 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	      $$unique; \
 	  fi; \
 	fi
-ctags: ctags-recursive
+ctags: ctags-am
 
 CTAGS: ctags
 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
@@ -1198,7 +1379,7 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
+cscopelist: cscopelist-am
 
 cscopelist-am: $(am__tagged_files)
 	list='$(am__tagged_files)'; \
@@ -1247,48 +1428,22 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
 check-am: all-am
-check: check-recursive
+check: check-am
 all-am: Makefile $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
+installdirs:
 	for dir in "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
 
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-recursive
+installcheck: installcheck-am
 install-strip:
 	if test -z '$(STRIP)'; then \
 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
@@ -1310,92 +1465,91 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
+clean: clean-am
 
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
-distclean: distclean-recursive
+distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
 
-dvi: dvi-recursive
+dvi: dvi-am
 
 dvi-am:
 
-html: html-recursive
+html: html-am
 
 html-am:
 
-info: info-recursive
+info: info-am
 
 info-am:
 
 install-data-am:
 
-install-dvi: install-dvi-recursive
+install-dvi: install-dvi-am
 
 install-dvi-am:
 
 install-exec-am: install-binPROGRAMS
 
-install-html: install-html-recursive
+install-html: install-html-am
 
 install-html-am:
 
-install-info: install-info-recursive
+install-info: install-info-am
 
 install-info-am:
 
 install-man:
 
-install-pdf: install-pdf-recursive
+install-pdf: install-pdf-am
 
 install-pdf-am:
 
-install-ps: install-ps-recursive
+install-ps: install-ps-am
 
 install-ps-am:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-recursive
+maintainer-clean: maintainer-clean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-recursive
+mostlyclean: mostlyclean-am
 
 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
 	mostlyclean-libtool
 
-pdf: pdf-recursive
+pdf: pdf-am
 
 pdf-am:
 
-ps: ps-recursive
+ps: ps-am
 
 ps-am:
 
 uninstall-am: uninstall-binPROGRAMS
 
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-	check-am clean clean-binPROGRAMS clean-generic clean-libtool \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-binPROGRAMS
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/drumgizmo/audioinputenginedl.cc b/drumgizmo/audioinputenginedl.cc
deleted file mode 100644
index 93c7079..0000000
--- a/drumgizmo/audioinputenginedl.cc
+++ /dev/null
@@ -1,249 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audioinputenginedl.cc
- *
- *  Wed Jul 13 14:39:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "audioinputenginedl.h"
-
-#include <stdio.h>
-
-#include <dlfcn.h>
-
-#include <config.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "jackclient.h"
-
-AudioInputEngineDL::AudioInputEngineDL(std::string name)
-{
-  is_jack_plugin = strstr(name.c_str(), "jack");
-
-  std::string plugin = INPUT_PLUGIN_DIR"/" + name + ".so";
-  void *lib = dlopen(plugin.c_str(), RTLD_LAZY);
-  if(!lib) {
-    printf("Cannot load device: %s\n", dlerror());
-    return;
-  }
-
-  i_create = (input_create_func_t) dlsym(lib, "create");
-  const char* dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol create: %s\n", dlsym_error);
-    return;
-  }
-
-  i_destroy = (input_destroy_func_t) dlsym(lib, "destroy");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  i_init = (input_init_func_t) dlsym(lib, "init");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol init: %s\n", dlsym_error);
-    return;
-  }
-
-  i_setparm = (input_setparm_func_t) dlsym(lib, "setparm");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol setparm: %s\n", dlsym_error);
-    return;
-  }
-
-  i_start = (input_start_func_t) dlsym(lib, "start");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol start: %s\n", dlsym_error);
-    return;
-  }
-
-  i_stop = (input_stop_func_t) dlsym(lib, "stop");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol stop: %s\n", dlsym_error);
-    return;
-  }
-
-  i_pre = (input_pre_func_t) dlsym(lib, "pre");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol pre: %s\n", dlsym_error);
-    return;
-  }
-
-  i_run = (input_run_func_t) dlsym(lib, "run");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol run: %s\n", dlsym_error);
-    return;
-  }
-
-  i_post = (input_post_func_t) dlsym(lib, "post");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol post: %s\n", dlsym_error);
-    return;
-  }
-
-  ptr = i_create();
-
-  if(is_jack_plugin) {
-    char ptrbuf[32];
-    jackclient = init_jack_client();
-    sprintf(ptrbuf, "%p", jackclient);
-    setParm("jack_client", ptrbuf);
-  }
-}
-
-AudioInputEngineDL::~AudioInputEngineDL()
-{
-  i_destroy(ptr);
-  if(is_jack_plugin) close_jack_client();
-}
-
-bool AudioInputEngineDL::init(Instruments &instruments)
-{
-  char **n = (char**)malloc(sizeof(char*)*instruments.size());
-  for(size_t i = 0; i < instruments.size(); i++) {
-    n[i] = strdup(instruments[i]->name().c_str());
-  }
-
-  bool ret = i_init(ptr, instruments.size(), n);
-
-  for(size_t i = 0; i < instruments.size(); i++) {
-    free(n[i]);
-  }
-  free(n);
-
-  return ret;
-}
-
-void AudioInputEngineDL::setParm(std::string parm, std::string value)
-{
-  i_setparm(ptr, parm.c_str(), value.c_str());
-}
-
-bool AudioInputEngineDL::start()
-{
-  if(is_jack_plugin) jackclient->activate();
-  return i_start(ptr);
-}
-
-void AudioInputEngineDL::stop()
-{
-  return i_stop(ptr);
-}
-
-void AudioInputEngineDL::pre()
-{
-  return i_pre(ptr);
-}
-
-event_t *AudioInputEngineDL::run(size_t pos, size_t len, size_t *nevents)
-{
-  return i_run(ptr, pos, len, nevents);
-}
-
-void AudioInputEngineDL::post()
-{
-  return i_post(ptr);
-}
-
-//#include "audioinputenginedummy.h"
-//#include "audioinputenginejackmidi.h"
-//#include "audioinputenginemidifile.h"
-
-/*
-
-typedef Device* (*create_func_t)(void);
-typedef void (*destroy_func_t)(Device*);
-
-struct device_t {
-  Device* dev;
-  destroy_func_t destroyer;
-  void* lib;
-};
-
-int load_shared_device(device_t &dev, std::string devlib,
-                             std::string devfile, ConfMap devconfmap) {
-  // load library
-  dev.lib = dlopen(devlib.c_str(), RTLD_LAZY);
-  if(!dev.lib ) {
-    printf("Cannot load device: %s\n", dlerror());
-    return -1;
-  }
-
-  create_func_t create_device = (create_func_t) dlsym(dev.lib, "create");
-  const char* dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol create: %s\n", dlsym_error);
-    return -1;
-  }
-
-  dev.destroyer = (destroy_func_t) dlsym(dev.lib, "destroy");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return -1;
-  }
-
-  dev.dev = create_device();
-
-  // initialize device 
-  DevData devdata = dev.dev->init(devfile, devconfmap);
-  if(devdata.retval != DevData::VALUE_SUCCESS) {
-    printf("Error while initializing device: %s\n",  devdata.msg.c_str());
-    return -1;
-  }
-
-  return 0;
-}
-
-void unload_shared_device(device_t &dev) {
-  
-  dev.destroyer(dev.dev);
-  dlclose(dev.lib);
-}
-*/
-
-#ifdef TEST_AUDIOINPUTENGINEDL
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINEDL*/
diff --git a/drumgizmo/audioinputenginedl.h b/drumgizmo/audioinputenginedl.h
deleted file mode 100644
index ed1fb27..0000000
--- a/drumgizmo/audioinputenginedl.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audioinputenginedl.h
- *
- *  Wed Jul 13 14:39:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_AUDIOINPUTENGINEDL_H__
-#define __DRUMGIZMO_AUDIOINPUTENGINEDL_H__
-
-#include "audioinputengine.h"
-#include "jackclient.h"
-
-typedef void* (*input_create_func_t)(void);
-typedef void (*input_destroy_func_t)(void*);
-typedef bool (*input_init_func_t)(void*,int,char**);
-typedef void (*input_setparm_func_t)(void*,const char*,const char*);
-typedef bool (*input_start_func_t)(void*);
-typedef void (*input_stop_func_t)(void*);
-typedef void (*input_pre_func_t)(void*);
-typedef event_t* (*input_run_func_t)(void*,size_t,size_t,size_t*);
-typedef void (*input_post_func_t)(void*);
-  
-class AudioInputEngineDL : public AudioInputEngine {
-public:
-  AudioInputEngineDL(std::string name);
-  ~AudioInputEngineDL();
-
-  bool init(Instruments &instruments);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-private:
-  void *ptr;
-  input_create_func_t i_create;
-  input_destroy_func_t i_destroy;
-  input_init_func_t i_init;
-  input_setparm_func_t i_setparm;
-  input_start_func_t i_start;
-  input_stop_func_t i_stop;
-  input_pre_func_t i_pre;
-  input_run_func_t i_run;
-  input_post_func_t i_post;
-
-  bool is_jack_plugin;
-  JackClient *jackclient;
-};
-
-#endif/*__DRUMGIZMO_AUDIOINPUTENGINEDL_H__*/
diff --git a/drumgizmo/audiooutputenginedl.cc b/drumgizmo/audiooutputenginedl.cc
deleted file mode 100644
index dad2c5c..0000000
--- a/drumgizmo/audiooutputenginedl.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audiooutputenginedl.cc
- *
- *  Wed Jul 13 14:40:01 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "audiooutputenginedl.h"
-
-#include <dlfcn.h>
-#include <stdio.h>
-#include <config.h>
-#include <string.h>
-
-AudioOutputEngineDL::AudioOutputEngineDL(std::string name)
-{
-  is_jack_plugin = strstr(name.c_str(), "jack");
-
-  std::string plugin = OUTPUT_PLUGIN_DIR"/" + name + ".so";
-  void *lib = dlopen(plugin.c_str(), RTLD_LAZY);
-  if(!lib) {
-    printf("Cannot load device: %s\n", dlerror());
-    return;
-  }
-
-  o_create = (output_create_func_t) dlsym(lib, "create");
-  const char* dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol create: %s\n", dlsym_error);
-    return;
-  }
-
-  o_destroy = (output_destroy_func_t) dlsym(lib, "destroy");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_init = (output_init_func_t) dlsym(lib, "init");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_setparm = (output_setparm_func_t) dlsym(lib, "setparm");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_start = (output_start_func_t) dlsym(lib, "start");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_stop = (output_stop_func_t) dlsym(lib, "stop");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_pre = (output_pre_func_t) dlsym(lib, "pre");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_run = (output_run_func_t) dlsym(lib, "run");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_post = (output_post_func_t) dlsym(lib, "post");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol destroy: %s\n", dlsym_error);
-    return;
-  }
-
-  o_bufsize = (output_bufsize_func_t) dlsym(lib, "bufsize");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    o_bufsize = NULL;
-  }
-
-  o_samplerate = (output_samplerate_func_t) dlsym(lib, "samplerate");
-  dlsym_error = dlerror();
-  if(dlsym_error) {
-    printf("Cannot load symbol samplerate: %s\n", dlsym_error);
-    return;
-  }
-
-  ptr = o_create();
-
-  if(is_jack_plugin) {
-    char ptrbuf[32];
-    jackclient = init_jack_client();
-    sprintf(ptrbuf, "%p", jackclient);
-    setParm("jack_client", ptrbuf);
-  }
-}
-
-AudioOutputEngineDL::~AudioOutputEngineDL()
-{
-  o_destroy(ptr);
-  if(is_jack_plugin) close_jack_client();
-}
-
-bool AudioOutputEngineDL::init(Channels channels)
-{
-  char **n = (char**)malloc(sizeof(char*)*channels.size());
-  for(size_t i = 0; i < channels.size(); i++) {
-    n[i] = strdup(channels[i].name.c_str());
-  }
-
-  bool ret = o_init(ptr, channels.size(), n);
-
-  for(size_t i = 0; i < channels.size(); i++) {
-    free(n[i]);
-  }
-  free(n);
-
-  return ret;
-}
-
-void AudioOutputEngineDL::setParm(std::string parm, std::string value)
-{
-  o_setparm(ptr, parm.c_str(), value.c_str());
-}
-
-bool AudioOutputEngineDL::start()
-{
-  if(is_jack_plugin) jackclient->activate();
-  return o_start(ptr);
-}
-
-void AudioOutputEngineDL::stop()
-{
-  return o_stop(ptr);
-}
-
-void AudioOutputEngineDL::pre(size_t size)
-{
-  return o_pre(ptr, size);
-}
- 
-void AudioOutputEngineDL::run(int ch, sample_t *samples, size_t nsamples)
-{
-  o_run(ptr, ch, samples, nsamples);
-}
-
-void AudioOutputEngineDL::post(size_t size)
-{
-  return o_post(ptr, size);
-}
-
-size_t AudioOutputEngineDL::getBufferSize()
-{
-  if(o_bufsize) return o_bufsize(ptr);
-  return 1024;
-}
-
-size_t AudioOutputEngineDL::samplerate()
-{
-  if(o_samplerate) return o_samplerate(ptr);
-  return 44100;
-}
diff --git a/drumgizmo/audiooutputenginedl.h b/drumgizmo/audiooutputenginedl.h
deleted file mode 100644
index 75460f3..0000000
--- a/drumgizmo/audiooutputenginedl.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audiooutputenginedl.h
- *
- *  Wed Jul 13 14:40:01 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_AUDIOOUTPUTENGINEDL_H__
-#define __DRUMGIZMO_AUDIOOUTPUTENGINEDL_H__
-
-#include <string>
-#include <stdlib.h>
-#include <audiotypes.h>
-
-#include "channel.h"
-
-#include "audiooutputengine.h"
-#include "jackclient.h"
-
-typedef void* (*output_create_func_t)(void);
-typedef void (*output_destroy_func_t)(void*);
-typedef bool (*output_start_func_t)(void*);
-typedef void (*output_stop_func_t)(void*);
-typedef bool (*output_init_func_t)(void*,int,char**);
-typedef void (*output_setparm_func_t)(void*,const char*,const char*);
-typedef void (*output_pre_func_t)(void*, size_t);
-typedef void (*output_run_func_t)(void*,int,sample_t*,size_t);
-typedef void (*output_post_func_t)(void*, size_t);
-typedef size_t (*output_bufsize_func_t)(void*);
-typedef size_t (*output_samplerate_func_t)(void*);
-
-class AudioOutputEngineDL : public AudioOutputEngine {
-public:
-  AudioOutputEngineDL(std::string name);
-  ~AudioOutputEngineDL();
-
-  bool init(Channels channels);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre(size_t nsamples);
-  void run(int ch, sample_t *samples, size_t nsamples);
-  void post(size_t nsamples);
-
-  size_t getBufferSize();
-  size_t samplerate();
-
-private:
-  void *ptr;
-  output_create_func_t o_create;
-  output_destroy_func_t o_destroy;
-  output_init_func_t o_init;
-  output_setparm_func_t o_setparm;
-  output_start_func_t o_start;
-  output_stop_func_t o_stop;
-  output_pre_func_t o_pre;
-  output_run_func_t o_run;
-  output_post_func_t o_post;
-  output_bufsize_func_t o_bufsize;
-  output_samplerate_func_t o_samplerate;
-
-  bool is_jack_plugin;
-  JackClient *jackclient;
-};
-
-#endif/*__DRUMGIZMO_AUDIOOUTPUTENGINEDL_H__*/
diff --git a/drumgizmo/drumgizmoc.cc b/drumgizmo/drumgizmoc.cc
index 02e926e..14a71b3 100644
--- a/drumgizmo/drumgizmoc.cc
+++ b/drumgizmo/drumgizmoc.cc
@@ -1,6 +1,6 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
- *            cli.cc
+ *            drumgizmoc.cc
  *
  *  Thu Sep 16 10:23:22 CEST 2010
  *  Copyright 2010 Bent Bisballe Nyeng
@@ -11,19 +11,21 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
+#include <iostream>
+
 #include <config.h>
 #include <getopt.h>
 
@@ -32,306 +34,391 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <hugin.hpp>
+
 #include "drumgizmo.h"
 #include "drumgizmoc.h"
-
-#include "audiooutputenginedl.h"
-#include "audioinputenginedl.h"
+#include "enginefactory.h"
 
 #include "event.h"
 
-static const char version_str[] =
-"DrumGizmo v" VERSION "\n"
-;
+static const char version_str[] = "DrumGizmo v" VERSION "\n";
 
 static const char copyright_str[] =
-"Copyright (C) 2008-2011 Bent Bisballe Nyeng - Aasimon.org.\n"
-"This is free software.  You may redistribute copies of it under the terms of\n"
-"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
-"Written by Bent Bisballe Nyeng (deva at aasimon.org)\n"
-;
+    "Copyright (C) 2008-2011 Bent Bisballe Nyeng - Aasimon.org.\n"
+    "This is free software.  You may redistribute copies of it under the terms "
+    "of\n"
+    "the GNU Lesser General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+    "There is NO WARRANTY, to the extent permitted by law.\n"
+    "\n"
+    "Written by Bent Bisballe Nyeng (deva at aasimon.org)\n";
 
 static const char usage_str[] =
-"Usage: %s [options] drumkitfile\n"
-"Options:\n"
-"  -a, --async-load       Load drumkit in the background and start the engine immediately.\n"
-"  -i, --inputengine      dummy|test|jackmidi|midifile  Use said event input engine.\n"
-"  -I, --inputparms       parmlist  Set input engine parameters.\n"
-"  -o, --outputengine     dummy|alsa|jackaudio|wavfile  Use said audio output engine.\n"
-"  -O, --outputparms      parmlist  Set output engine parameters.\n"
-"  -e, --endpos           Number of samples to process, -1: infinite.\n"
-"  -v, --version          Print version information and exit.\n"
-"  -h, --help             Print this message and exit.\n"
-"\n"
-"Input engine parameters:\n"
-"  jackmidi:  midimap=<midimapfile>\n"
-"  midifile:  file=<midifile>, speed=<tempo> (default 1.0),\n"
-"             track=<miditrack> (default -1, all tracks)\n"
-"             midimap=<midimapfile>, loop=<true|false>\n"
-"  test:      p=<hit_propability> (default 0.1)\n"
-"             instr=<instrument> (default -1, random instrument)\n"
-"             len=<seconds> (default -1, forever)\n"
-"  dummy:\n"
-"\n"
-"Output engine parameters:\n"
-"  alsa:      dev=<device> (default 'default'), frames=<frames> (default 32)\n"
-"             srate=<samplerate> (default 441000)\n"
-"  wavfile:   file=<filename> (default 'output'), srate=<samplerate> (default 44100)\n"
-"  jackaudio:\n"
-"  dummy:\n"
-"\n"
-;
-
-CliMain::CliMain() : MessageReceiver(MSGRCV_UI)
+    "Usage: %s [options] drumkitfile\n"
+    "Options:\n"
+    "  -a, --async-load       Load drumkit in the background and start the "
+    "engine immediately.\n"
+    "  -i, --inputengine      dummy|test|jackmidi|midifile  Use said event "
+    "input engine.\n"
+    "  -I, --inputparms       parmlist  Set input engine parameters.\n"
+    "  -o, --outputengine     dummy|alsa|jackaudio|wavfile  Use said audio "
+    "output engine.\n"
+    "  -O, --outputparms      parmlist  Set output engine parameters.\n"
+    "  -e, --endpos           Number of samples to process, -1: infinite.\n"
+#ifndef DISABLE_HUGIN
+    "  -D, --debug ddd        Enable debug messages on 'ddd'; see hugin "
+    "documentation for details\n"
+#endif /*DISABLE_HUGIN*/
+    "  -v, --version          Print version information and exit.\n"
+    "  -h, --help             Print this message and exit.\n"
+    "\n"
+    "Input engine parameters:\n"
+    "  jackmidi:  midimap=<midimapfile>\n"
+    "  midifile:  file=<midifile>, speed=<tempo> (default 1.0),\n"
+    "             track=<miditrack> (default -1, all tracks)\n"
+    "             midimap=<midimapfile>, loop=<true|false>\n"
+    "  test:      p=<hit_propability> (default 0.1)\n"
+    "             instr=<instrument> (default -1, random instrument)\n"
+    "             len=<seconds> (default -1, forever)\n"
+    "  dummy:\n"
+    "\n"
+    "Output engine parameters:\n"
+    "  alsa:      dev=<device> (default 'default'), frames=<frames> (default "
+    "32)\n"
+    "             srate=<samplerate> (default 441000)\n"
+    "  wavfile:   file=<filename> (default 'output'), srate=<samplerate> "
+    "(default 44100)\n"
+    "  jackaudio:\n"
+    "  dummy:\n"
+    "\n";
+
+CliMain::CliMain()
+	: MessageReceiver(MSGRCV_UI)
 {
-  loading = true; // Block by default
+	loading = true; // Block by default
 }
 
 CliMain::~CliMain()
 {
+	hug_close();
 }
 
-void CliMain::handleMessage(Message *msg)
+void CliMain::handleMessage(Message* msg)
 {
-  switch(msg->type()) {
-  case Message::LoadStatus:
-    {
-      LoadStatusMessage *ls = (LoadStatusMessage*)msg;
-      if(ls->numer_of_files_loaded == ls->number_of_files) {
-        loading = false;
-      }
-    }
-    break;
-  default:
-    break;
-  }
+	switch(msg->type())
+	{
+	case Message::LoadStatus:
+		{
+			auto ls = static_cast<LoadStatusMessage*>(msg);
+			if(ls->numer_of_files_loaded == ls->number_of_files)
+			{
+				loading = false;
+			}
+		}
+		break;
+	default:
+		break;
+	}
 }
 
-int CliMain::run(int argc, char *argv[])
+int CliMain::run(int argc, char* argv[])
 {
-  int c;
-
-  std::string outputengine;
-  std::string inputengine;
-  std::string iparms;
-  std::string oparms;
-  bool async = false;
-  int endpos = -1;
-
-  int option_index = 0;
-  while(1) {
-    static struct option long_options[] = {
-      {"async-load", no_argument, 0, 'a'},
-      {"inputengine", required_argument, 0, 'i'},
-      {"inputparms", required_argument, 0, 'I'},
-      {"outputengine", required_argument, 0, 'o'},
-      {"outputparms", required_argument, 0, 'O'},
-      {"endpos", required_argument, 0, 'e'},
-      {"version", no_argument, 0, 'v'},
-      {"help", no_argument, 0, 'h'},
-      {0, 0, 0, 0}
-    };
-    
-    c = getopt_long (argc, argv, "hvpo:O:i:I:e:", long_options, &option_index);
-    
-    if (c == -1)
-      break;
-
-    switch(c) {
-    case 'i':
-      inputengine = optarg;
-      if(inputengine == "help") {
-        printf("Available input engines: jackmidi, midifile.\n");
-        return 0;
-      }
-      break;
-
-    case 'I':
-      iparms = optarg;
-      break;
-
-    case 'o':
-      outputengine = optarg;
-      if(outputengine == "help") {
-        printf("Available output engines: alsa, jackaudio, wavfile.\n");
-        return 0;
-      }
-      break;
-
-    case 'O':
-      oparms = optarg;
-      break;
-
-    case 'a':
-      async = true;
-      break;
- 
-    case 'e':
-      endpos = atoi(optarg);
-      break;
-
-    case '?':
-    case 'h':
-      printf("%s", version_str);
-      printf(usage_str, argv[0]);
-      return 0;
-
-    case 'v':
-      printf("%s", version_str);
-      printf("%s", copyright_str);
-      return 0;
-
-    default:
-      break;
-    }
-  }
-
-  if(inputengine == "") {
-    printf("Missing input engine\n");
-    return 1;
-  }
-
-  AudioInputEngine *ie = new AudioInputEngineDL(inputengine);
-
-  if(ie == NULL) {
-    printf("Invalid input engine: %s\n", inputengine.c_str());
-    return 1;
-  }
-
-  {
-  std::string parm;
-  std::string val;
-  bool inval = false;
-  for(size_t i = 0; i < iparms.size(); i++) {
-    if(iparms[i] == ',') {
-      ie->setParm(parm, val);
-      parm = "";
-      val = "";
-      inval = false;
-      continue;
-    }
-
-    if(iparms[i] == '=') {
-      inval = true;
-      continue;
-    }
-
-    if(inval) {
-      val += iparms[i];
-    } else {
-      parm += iparms[i];
-    }
-  }
-  if(parm != "") ie->setParm(parm, val);
-  }
-
-  if(outputengine == "") {
-    printf("Missing output engine\n");
-    return 1;
-  }
-
-  AudioOutputEngineDL *oe = new AudioOutputEngineDL(outputengine);
-
-  if(oe == NULL) {
-    printf("Invalid output engine: %s\n", outputengine.c_str());
-    return 1;
-  }
-
-  {
-  std::string parm;
-  std::string val;
-  bool inval = false;
-  for(size_t i = 0; i < oparms.size(); i++) {
-    if(oparms[i] == ',') {
-      oe->setParm(parm, val);
-      parm = "";
-      val = "";
-      inval = false;
-      continue;
-    }
-
-    if(oparms[i] == '=') {
-      inval = true;
-      continue;
-    }
-
-    if(inval) {
-      val += oparms[i];
-    } else {
-      parm += oparms[i];
-    }
-  }
-  if(parm != "") oe->setParm(parm, val);
-  }
-
-  std::string kitfile;
-
-  if(option_index < argc) {
-    printf("non-option ARGV-elements: ");
-    while (optind < argc) {
-      if(kitfile != "") {
-        fprintf(stderr, "Can only handle a single kitfile.\n");
-        printf(usage_str, argv[0]);
-        return 1;
-      }
-      kitfile = argv[optind++];
-    }
-    printf("\n");
-  } else {
-    fprintf(stderr, "Missing kitfile.\n");
-    printf(usage_str, argv[0]);
-    return 1;
-  }
-  
-  printf("Using kitfile: %s\n", kitfile.c_str());
-
-  DrumGizmo gizmo(oe, ie);
-
-  if(kitfile == "" || !gizmo.loadkit(kitfile)) {
-    printf("Failed to load \"%s\".\n", kitfile.c_str());
-    return 1;
-  }
-
-  printf("Loading drumkit, this may take a while...");
-  fflush(stdout);
-  loading = true;
-  while(async == false && loading) {
+	int c;
+
+	std::string hugin_filter;
+	unsigned int hugin_flags = 0;
+#ifndef DISABLE_HUGIN
+	hugin_flags = HUG_FLAG_DEFAULT;
+#endif /*DISABLE_HUGIN*/
+
+	std::string outputengine;
+	std::string inputengine;
+	std::string iparms;
+	std::string oparms;
+	bool async = false;
+	int endpos = -1;
+
+	EngineFactory factory;
+
+	int option_index = 0;
+	while(1)
+	{
+		static struct option long_options[] = {
+		    {"async-load", no_argument, 0, 'a'},
+		    {"inputengine", required_argument, 0, 'i'},
+		    {"inputparms", required_argument, 0, 'I'},
+		    {"outputengine", required_argument, 0, 'o'},
+		    {"outputparms", required_argument, 0, 'O'},
+		    {"endpos", required_argument, 0, 'e'},
+#ifndef DISABLE_HUGIN
+		    {"debug", required_argument, 0, 'D'},
+#endif /*DISABLE_HUGIN*/
+		    {"version", no_argument, 0, 'v'},
+		    {"help", no_argument, 0, 'h'},
+		    {0, 0, 0, 0}};
+
+		c = getopt_long(argc, argv, "hvpo:O:i:I:e:a"
+#ifndef DISABLE_HUGIN
+		                "D:"
+#endif /*DISABLE_HUGIN*/
+		                , long_options, &option_index);
+
+		if(c == -1)
+		{
+			break;
+		}
+
+		switch(c)
+		{
+		case 'i':
+			inputengine = optarg;
+			if(inputengine == "help")
+			{
+				std::cout << "Available Input Engines = { ";
+				for(auto const& name : factory.getInputEngines())
+				{
+					std::cout << name << " ";
+				}
+				std::cout << "}\n";
+				return 0;
+			}
+			break;
+
+#ifndef DISABLE_HUGIN
+		case 'D':
+			hugin_flags |= HUG_FLAG_USE_FILTER;
+			hugin_filter = optarg;
+			break;
+#endif /*DISABLE_HUGIN*/
+
+		case 'I':
+			iparms = optarg;
+			break;
+
+		case 'o':
+			outputengine = optarg;
+			if(outputengine == "help")
+			{
+				std::cout << "Available Output Engines = { ";
+				for(auto const& name : factory.getOutputEngines())
+				{
+					std::cout << name << " ";
+				}
+				std::cout << "}\n";
+				return 0;
+			}
+			break;
+
+		case 'O':
+			oparms = optarg;
+			break;
+
+		case 'a':
+			async = true;
+			break;
+
+		case 'e':
+			endpos = atoi(optarg);
+			break;
+
+		case '?':
+		case 'h':
+			printf("%s", version_str);
+			printf(usage_str, argv[0]);
+			return 0;
+
+		case 'v':
+			printf("%s", version_str);
+			printf("%s", copyright_str);
+			return 0;
+
+		default:
+			break;
+		}
+	}
+
+	hug_status_t status = hug_init(hugin_flags, HUG_OPTION_FILTER,
+	                               hugin_filter.c_str(), HUG_OPTION_END);
+	if(status != HUG_STATUS_OK)
+	{
+		printf("Error: %d\n", status);
+		return 1;
+	}
+
+	DEBUG(drumgizmo, "Debug enabled.");
+
+	if(inputengine == "")
+	{
+		printf("Missing input engine\n");
+		return 1;
+	}
+
+	auto ie = factory.createInput(inputengine);
+
+	if(ie == NULL)
+	{
+		printf("Invalid input engine: %s\n", inputengine.c_str());
+		return 1;
+	}
+
+	{
+		std::string parm;
+		std::string val;
+		bool inval = false;
+		for(size_t i = 0; i < iparms.size(); i++)
+		{
+			if(iparms[i] == ',')
+			{
+				ie->setParm(parm, val);
+				parm = "";
+				val = "";
+				inval = false;
+				continue;
+			}
+
+			if(iparms[i] == '=')
+			{
+				inval = true;
+				continue;
+			}
+
+			if(inval)
+			{
+				val += iparms[i];
+			}
+			else
+			{
+				parm += iparms[i];
+			}
+		}
+		if(parm != "")
+		{
+			ie->setParm(parm, val);
+		}
+	}
+
+	if(outputengine == "")
+	{
+		printf("Missing output engine\n");
+		return 1;
+	}
+
+	auto oe = factory.createOutput(outputengine);
+
+	if(oe == NULL)
+	{
+		printf("Invalid output engine: %s\n", outputengine.c_str());
+		return 1;
+	}
+
+	{
+		std::string parm;
+		std::string val;
+		bool inval = false;
+		for(size_t i = 0; i < oparms.size(); i++)
+		{
+			if(oparms[i] == ',')
+			{
+				oe->setParm(parm, val);
+				parm = "";
+				val = "";
+				inval = false;
+				continue;
+			}
+
+			if(oparms[i] == '=')
+			{
+				inval = true;
+				continue;
+			}
+
+			if(inval)
+			{
+				val += oparms[i];
+			}
+			else
+			{
+				parm += oparms[i];
+			}
+		}
+		if(parm != "")
+		{
+			oe->setParm(parm, val);
+		}
+	}
+
+	std::string kitfile;
+
+	if(option_index < argc)
+	{
+		while(optind < argc)
+		{
+			if(kitfile != "")
+			{
+				printf("Can only handle a single kitfile.\n");
+				printf(usage_str, argv[0]);
+				return 1;
+			}
+			kitfile = argv[optind++];
+		}
+		printf("\n");
+	}
+	else
+	{
+		printf("Missing kitfile.\n");
+		printf(usage_str, argv[0]);
+		return 1;
+	}
+
+	printf("Using kitfile: %s\n", kitfile.c_str());
+
+	DrumGizmo gizmo(oe.get(), ie.get());
+
+	gizmo.setFrameSize(oe->getBufferSize());
+
+	if(kitfile == "" || !gizmo.loadkit(kitfile))
+	{
+		printf("Failed to load \"%s\".\n", kitfile.c_str());
+		return 1;
+	}
+
+	printf("Loading drumkit, this may take a while...");
+	fflush(stdout);
+	loading = true;
+	while(async == false && loading)
+	{
 #ifdef WIN32
-    SleepEx(500, FALSE);
+		SleepEx(500, FALSE);
 #else
-    usleep(500000);
-#endif/*WIN32*/
-    handleMessages();
-    printf(".");
-    fflush(stdout);
-  }
-  printf("done.\n");
+		usleep(500000);
+#endif /*WIN32*/
+		handleMessages();
+		printf(".");
+		fflush(stdout);
+	}
+	printf("done.\n");
 
-  gizmo.setSamplerate(oe->samplerate());
+	gizmo.setSamplerate(oe->samplerate());
 
-  if(!gizmo.init()) {
-    printf("Failed init engine.\n");
-    return 1;
-  }
+	if(!gizmo.init())
+	{
+		printf("Failed init engine.\n");
+		return 1;
+	}
 
-  gizmo.run(endpos);
+	gizmo.run(endpos);
 
-  printf("Quit.\n"); fflush(stdout);
+	printf("Quit.\n");
+	fflush(stdout);
 
-  delete oe;
-  delete ie;
-
-  return 0;
+	return 0;
 }
 
-int main(int argc, char *argv[])
+int main(int argc, char* argv[])
 {
-  CliMain cli;
-
-  cli.run(argc, argv);
+	CliMain cli;
 
-  return 0;
+	cli.run(argc, argv);
 
+	return 0;
 }
diff --git a/drumgizmo/drumgizmoc.h b/drumgizmo/drumgizmoc.h
index 4b6d4a1..231aec6 100644
--- a/drumgizmo/drumgizmoc.h
+++ b/drumgizmo/drumgizmoc.h
@@ -11,35 +11,34 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 
-#ifndef __DRUMGIZMOC_H__
-#define __DRUMGIZMOC_H__
+#pragma once
 
 #include "messagereceiver.h"
 
-class CliMain : public MessageReceiver {
+class CliMain : public MessageReceiver
+{
 public:
-  CliMain();
-  virtual ~CliMain();
+	CliMain();
+	virtual ~CliMain();
+
+	int run(int argc, char* argv[]);
+	void handleMessage(Message* msg);
 
-  int run(int argc, char *argv[]);
-  void handleMessage(Message *msg);
 private:
-  bool loading;
+	bool loading;
 };
 
-#endif//__DRUMGIZMOC_H__
-
diff --git a/drumgizmo/enginefactory.cc b/drumgizmo/enginefactory.cc
new file mode 100644
index 0000000..d3e08c6
--- /dev/null
+++ b/drumgizmo/enginefactory.cc
@@ -0,0 +1,145 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            enginefactory.cc
+ *
+ *  Mi 20. Jan 10:46:07 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <iostream>
+
+#include "cpp11fix.h" // required for c++11
+#include "enginefactory.h"
+
+EngineFactory::EngineFactory()
+	: input{}
+	, output{}
+#ifdef USE_JACK
+	, jack{nullptr}
+#endif
+{
+// list available input engines
+#ifdef HAVE_INPUT_DUMMY
+	input.push_back("inputdummy");
+#endif
+#ifdef HAVE_INPUT_MIDIFILE
+	input.push_back("midifile");
+#endif
+#ifdef HAVE_INPUT_JACKMIDI
+	input.push_back("jackmidi");
+#endif
+
+// list available output engines
+#ifdef HAVE_OUTPUT_DUMMY
+	output.push_back("outputdummy");
+#endif
+#ifdef HAVE_OUTPUT_WAVFILE
+	output.push_back("wavfile");
+#endif
+#ifdef HAVE_OUTPUT_ALSA
+	output.push_back("alsa");
+#endif
+#ifdef HAVE_OUTPUT_JACKAUDIO
+	output.push_back("jackaudio");
+#endif
+}
+
+#ifdef USE_JACK
+void EngineFactory::prepareJack()
+{
+	if(jack == nullptr)
+	{
+		jack = std::make_unique<JackClient>();
+	}
+}
+#endif
+
+const std::list<std::string>& EngineFactory::getInputEngines() const
+{
+	return input;
+}
+
+const std::list<std::string>& EngineFactory::getOutputEngines() const
+{
+	return output;
+}
+
+std::unique_ptr<AudioInputEngine> EngineFactory::createInput(const std::string& name)
+{
+#ifdef HAVE_INPUT_DUMMY
+	if(name == "dummy")
+	{
+		return std::make_unique<DummyInputEngine>();
+	}
+#endif
+#ifdef HAVE_INPUT_MIDIFILE
+	if(name == "midifile")
+	{
+		return std::make_unique<MidifileInputEngine>();
+	}
+#endif
+#ifdef HAVE_INPUT_JACKMIDI
+	if(name == "jackmidi")
+	{
+		prepareJack();
+		return std::make_unique<JackMidiInputEngine>(*jack);
+	}
+#endif
+
+	// todo: add more engines
+
+	std::cerr << "[EngineFactory] Unsupported input engine '" << name << "'\n";
+	return nullptr;
+}
+
+std::unique_ptr<AudioOutputEngine> EngineFactory::createOutput(const std::string& name)
+{
+#ifdef HAVE_OUTPUT_DUMMY
+	if(name == "dummy")
+	{
+		return std::make_unique<DummyOutputEngine>();
+	}
+#endif
+#ifdef HAVE_OUTPUT_WAVFILE
+	if(name == "wavfile")
+	{
+		return std::make_unique<WavfileOutputEngine>();
+	}
+#endif
+#ifdef HAVE_OUTPUT_ALSA
+	if(name == "alsa")
+	{
+		return std::make_unique<AlsaOutputEngine>();
+	}
+#endif
+#ifdef HAVE_OUTPUT_JACKAUDIO
+	if(name == "jackaudio")
+	{
+		prepareJack();
+		return std::make_unique<JackAudioOutputEngine>(*jack);
+	}
+#endif
+
+	// todo: add more engines
+
+	std::cerr << "[EngineFactory] Unsupported output engine '" << name << "'\n";
+	return nullptr;
+}
diff --git a/drumgizmo/enginefactory.h b/drumgizmo/enginefactory.h
new file mode 100644
index 0000000..803f476
--- /dev/null
+++ b/drumgizmo/enginefactory.h
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            enginefactory.h
+ *
+ *  Mi 20. Jan 10:46:07 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <list>
+#include <string>
+#include <memory>
+
+#include "audioinputengine.h"
+#include "audiooutputengine.h"
+
+#if defined(HAVE_INPUT_JACKMIDI) || defined(HAVE_OUTPUT_JACKAUDIO)
+#define USE_JACK
+#include "jackclient.h"
+#endif
+
+#ifdef HAVE_INPUT_DUMMY
+#include "input/inputdummy.h"
+#endif
+
+#ifdef HAVE_INPUT_MIDIFILE
+#include "input/midifile.h"
+#endif
+
+#ifdef HAVE_INPUT_JACKMIDI
+#include "input/jackmidi.h"
+#endif
+
+#ifdef HAVE_OUTPUT_DUMMY
+#include "output/outputdummy.h"
+#endif
+
+#ifdef HAVE_OUTPUT_WAVFILE
+#include "output/wavfile.h"
+#endif
+
+#ifdef HAVE_OUTPUT_ALSA
+#include "output/alsa.h"
+#endif
+
+#ifdef HAVE_OUTPUT_JACKAUDIO
+#include "output/jackaudio.h"
+#endif
+
+//! Factory for various input- and output engines
+class EngineFactory
+{
+public:
+	//! Initialized lists of available engines (depending on enabled settings)
+	EngineFactory();
+
+	//! Query list of available input engines' names
+	//! \return const reference to the list
+	const std::list<std::string>& getInputEngines() const;
+
+	//! Query list of available output engines' names
+	//! \return const reference to the list
+	const std::list<std::string>& getOutputEngines() const;
+
+	//! Create input engine by name
+	//! \param name Name of the input engine that should be initialized
+	//! \return unique_ptr to input engine or nullptr if engine is not supported
+	std::unique_ptr<AudioInputEngine> createInput(const std::string& name);
+
+	//! Create input engine by name
+	//! \param name Name of the output engine that should be initialized
+	//! \return unique_ptr to input engine or nullptr if engine is not supported
+	std::unique_ptr<AudioOutputEngine> createOutput(const std::string& name);
+
+protected:
+	std::list<std::string> input, output; // available engines
+
+#ifdef USE_JACK
+	// Client that is used by all jack-related engines
+	std::unique_ptr<JackClient> jack;
+
+	// Utility to initialize jack (once)
+	void prepareJack();
+#endif
+};
diff --git a/drumgizmo/input/Makefile.am b/drumgizmo/input/Makefile.am
deleted file mode 100644
index ee82f63..0000000
--- a/drumgizmo/input/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-DISTDIRS = midifile jackmidi dummy test
-SUBDIRS = @INPUT_PLUGINS@
diff --git a/drumgizmo/input/Makefile.in b/drumgizmo/input/Makefile.in
deleted file mode 100644
index 46d7f18..0000000
--- a/drumgizmo/input/Makefile.in
+++ /dev/null
@@ -1,643 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/input
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-DISTDIRS = midifile jackmidi dummy test
-SUBDIRS = @INPUT_PLUGINS@
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/input/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/input/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-	check-am clean clean-generic clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/input/dummy/Makefile.am b/drumgizmo/input/dummy/Makefile.am
deleted file mode 100644
index dfe0a57..0000000
--- a/drumgizmo/input/dummy/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-dummysources = \
-	dummy.cc
-
-if HAVE_INPUT_DUMMY
-
-dummyltlibs = dummy.la
-dummybuildsources = $(dummysources)
-
-else
-
-dummyltlibs =
-dummybuildsources =
-
-endif
-
-EXTRA_DIST = $(dummysources)
-
-lib_LTLIBRARIES = $(dummyltlibs)
-
-libdir = $(INPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/include
-dummy_la_LDFLAGS = -module -avoid-version -shared
-dummy_la_LIBADD =
-dummy_la_SOURCES = $(dummybuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/dummy.la
diff --git a/drumgizmo/input/dummy/Makefile.in b/drumgizmo/input/dummy/Makefile.in
deleted file mode 100644
index 332710d..0000000
--- a/drumgizmo/input/dummy/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/input/dummy
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-dummy_la_DEPENDENCIES =
-am__dummy_la_SOURCES_DIST = dummy.cc
-am__objects_1 = dummy.lo
- at HAVE_INPUT_DUMMY_TRUE@am__objects_2 = $(am__objects_1)
-am_dummy_la_OBJECTS = $(am__objects_2)
-dummy_la_OBJECTS = $(am_dummy_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-dummy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(dummy_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_INPUT_DUMMY_TRUE@am_dummy_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(dummy_la_SOURCES)
-DIST_SOURCES = $(am__dummy_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(INPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-dummysources = \
-	dummy.cc
-
- at HAVE_INPUT_DUMMY_FALSE@dummyltlibs = 
- at HAVE_INPUT_DUMMY_TRUE@dummyltlibs = dummy.la
- at HAVE_INPUT_DUMMY_FALSE@dummybuildsources = 
- at HAVE_INPUT_DUMMY_TRUE@dummybuildsources = $(dummysources)
-EXTRA_DIST = $(dummysources)
-lib_LTLIBRARIES = $(dummyltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/include
-dummy_la_LDFLAGS = -module -avoid-version -shared
-dummy_la_LIBADD = 
-dummy_la_SOURCES = $(dummybuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/input/dummy/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/input/dummy/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-dummy.la: $(dummy_la_OBJECTS) $(dummy_la_DEPENDENCIES) $(EXTRA_dummy_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(dummy_la_LINK) $(am_dummy_la_rpath) $(dummy_la_OBJECTS) $(dummy_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dummy.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/dummy.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/input/dummy/dummy.cc b/drumgizmo/input/dummy/dummy.cc
deleted file mode 100644
index 4a570db..0000000
--- a/drumgizmo/input/dummy/dummy.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            dummy.cc
- *
- *  Sat Apr 30 21:11:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <string>
-#include <event.h>
-
-class Dummy {
-public:
-  Dummy() {}
-  ~Dummy() {}
-
-  bool init(int instruments, char *inames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-  
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-};
-
-bool Dummy::init(int instruments, char *inames[])
-{
-  return true;
-}
-
-void Dummy::setParm(std::string parm, std::string value)
-{
-}
-
-bool Dummy::start()
-{
-  return true;
-}
-
-void Dummy::stop()
-{
-}
-
-void Dummy::pre()
-{
-}
-
-event_t *Dummy::run(size_t pos, size_t len, size_t *nevents)
-{
-  *nevents = 0;
-  return NULL;
-  /*
-  if(rand() % 10 != 0) return;
-
-  Instrument *i = NULL;
-  int d = rand() % drumkit->instruments.size();
-  Instruments::iterator it = drumkit->instruments.begin();
-  while(d--) {
-    i = &(it->second);
-    it++;
-  }
-
-  if(i == NULL) return;
-
-  Sample *s = i->sample((double)rand()/(double)RAND_MAX);
-    
-  if(s == NULL) {
-    printf("Missing Sample.\n");
-    //    continue;
-  }
-
-  Channels::iterator j = drumkit->channels.begin();
-  while(j != drumkit->channels.end()) {
-    Channel &ch = *j;
-    AudioFile *af = s->getAudioFile(&ch);
-    if(af == NULL) {
-      printf("Missing AudioFile.\n");
-    } else {
-      printf("Adding event.\n");
-      Event *evt = new EventSample(ch.num, 1.0, af);
-      eventqueue->post(evt, pos);
-    }
-    j++;
-  }
-  */
-}
-
-void Dummy::post()
-{
-}
-
-extern "C" {
-  void *create()
-  {
-    return new Dummy();
-  }
-  
-  void destroy(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    delete dummy;
-  }
-
-  bool init(void *h, int i, char *inames[])
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->init(i, inames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->start();
-  }
-
-  void stop(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->stop();
-  }
-
-  void pre(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->pre();
-  }
-
-  event_t *run(void *h, size_t pos, size_t len, size_t *nev)
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->run(pos, len, nev);
-  }
-
-  void post(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->post();
-  }
-}
-
-#ifdef TEST_AUDIOINPUTENGINEDUMMY
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINEDUMMY*/
diff --git a/drumgizmo/input/inputdummy.cc b/drumgizmo/input/inputdummy.cc
new file mode 100644
index 0000000..74464ef
--- /dev/null
+++ b/drumgizmo/input/inputdummy.cc
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            inputdummy.cc
+ *
+ *  Fr 22. Jan 08:14:58 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "inputdummy.h"
+
+DummyInputEngine::DummyInputEngine()
+{
+}
+
+DummyInputEngine::~DummyInputEngine()
+{
+}
+
+bool DummyInputEngine::init(Instruments& instruments)
+{
+	return true;
+}
+
+void DummyInputEngine::setParm(std::string parm, std::string value)
+{
+}
+
+bool DummyInputEngine::start()
+{
+	return true;
+}
+
+void DummyInputEngine::stop()
+{
+}
+
+void DummyInputEngine::pre()
+{
+}
+
+void DummyInputEngine::run(size_t pos, size_t len, std::vector<event_t>& events)
+{
+}
+
+void DummyInputEngine::post()
+{
+}
diff --git a/drumgizmo/input/inputdummy.h b/drumgizmo/input/inputdummy.h
new file mode 100644
index 0000000..79f325a
--- /dev/null
+++ b/drumgizmo/input/inputdummy.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            inputdummy.h
+ *
+ *  Fr 22. Jan 08:14:58 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <audioinputengine.h>
+
+class DummyInputEngine
+	: public AudioInputEngine
+{
+public:
+	DummyInputEngine();
+	~DummyInputEngine();
+
+	// based on AudioInputEngine
+	bool init(Instruments& instruments) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre() override;
+	void run(size_t pos, size_t len, std::vector<event_t>& events) override;
+	void post() override;
+};
diff --git a/drumgizmo/input/jackmidi.cc b/drumgizmo/input/jackmidi.cc
new file mode 100644
index 0000000..ff2f030
--- /dev/null
+++ b/drumgizmo/input/jackmidi.cc
@@ -0,0 +1,135 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            jackmidi.cc
+ *
+ *  Mo 25. Jan 11:26:06 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <iostream>
+#include <cassert>
+
+#include "cpp11fix.h" // required for c++11
+#include "jackmidi.h"
+
+static int const NOTE_ON = 0x90;
+
+JackMidiInputEngine::JackMidiInputEngine(JackClient& client)
+	: AudioInputEngineMidi{}
+	, JackProcess{}
+	, client(client)
+	, port{nullptr}
+	, pos{0u}
+	, events{}
+{
+	client.add(*this);
+}
+
+JackMidiInputEngine::~JackMidiInputEngine()
+{
+	client.remove(*this);
+}
+
+bool JackMidiInputEngine::init(Instruments& instruments)
+{
+	if(!loadMidiMap(midimap, instruments))
+	{
+		std::cerr << "[MidifileInputEngine] Failed to parse midimap '"
+		          << midimap << "'\n";
+		return false;
+	}
+	port = std::make_unique<JackPort>(client, "drumgizmo_midiin",
+	                                  JACK_DEFAULT_MIDI_TYPE,
+	                                  JackPortIsInput);
+	return true;
+}
+
+void JackMidiInputEngine::setParm(std::string parm, std::string value)
+{
+	if(parm == "midimap")
+	{
+		// apply midimap filename
+		midimap = value;
+	}
+	else
+	{
+		std::cerr << "[JackMidiInputEngine] Unsupported parameter '" << parm
+		          << "'\n";
+	}
+}
+
+bool JackMidiInputEngine::start()
+{
+	client.activate();
+	return true;
+}
+
+void JackMidiInputEngine::stop()
+{
+}
+
+void JackMidiInputEngine::pre()
+{
+}
+
+void JackMidiInputEngine::run(size_t pos, size_t len,
+                              std::vector<event_t>& events)
+{
+	assert(events.empty());
+	std::swap(events, this->events);
+}
+
+void JackMidiInputEngine::post()
+{
+}
+
+void JackMidiInputEngine::process(jack_nframes_t num_frames)
+{
+	assert(port != nullptr);
+	void* buffer = jack_port_get_buffer(port->port, num_frames);
+	jack_nframes_t num_events = jack_midi_get_event_count(buffer);
+
+	assert(events.empty());
+	events.reserve(num_events);
+	for(jack_nframes_t i = 0; i < num_events; ++i)
+	{
+		jack_midi_event_t event;
+		jack_midi_event_get(&event, buffer, i);
+		if(event.size != 3)
+		{
+			continue;
+		}
+		if((event.buffer[0] & NOTE_ON) != NOTE_ON)
+		{
+			continue;
+		}
+		int key = event.buffer[1];
+		int velocity = event.buffer[2];
+		printf("Event key:%d vel:%d\n", key, velocity);
+		int k = mmap.lookup(key);
+		if(k != -1 && velocity)
+		{
+			events.push_back({TYPE_ONSET, (size_t)k, event.time, velocity / 127.f});
+		}
+	}
+	jack_midi_clear_buffer(buffer);
+	pos += num_frames;
+}
diff --git a/drumgizmo/input/jackmidi.h b/drumgizmo/input/jackmidi.h
new file mode 100644
index 0000000..fbf6ef1
--- /dev/null
+++ b/drumgizmo/input/jackmidi.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            jackmidi.h
+ *
+ *  Mo 25. Jan 11:26:06 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <memory>
+#include <jack/jack.h>
+#include <jack/midiport.h>
+
+#include "audioinputenginemidi.h"
+#include "midimapper.h"
+#include "midimapparser.h"
+#include "../jackclient.h"
+
+class JackMidiInputEngine
+	: public AudioInputEngineMidi
+	, public JackProcess
+{
+public:
+	JackMidiInputEngine(JackClient& client);
+	~JackMidiInputEngine();
+
+	// based on AudioInputEngineMidi
+	bool init(Instruments& instruments) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre() override;
+	void run(size_t pos, size_t len, std::vector<event_t>& events) override;
+	void post() override;
+
+	// based on JackProcess
+	void process(jack_nframes_t num_frames) override;
+
+private:
+	JackClient& client;
+	std::unique_ptr<JackPort> port;
+
+	std::size_t pos;
+	std::vector<event_t> events;
+};
diff --git a/drumgizmo/input/jackmidi/Makefile.am b/drumgizmo/input/jackmidi/Makefile.am
deleted file mode 100644
index fd63944..0000000
--- a/drumgizmo/input/jackmidi/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-
-jackmidisources = \
-	jackmidi.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/hugin/hugin.c
-
-if HAVE_INPUT_JACKMIDI
-
-jackmidiltlibs = jackmidi.la
-jackmidibuildsources = $(jackmidisources)
-
-else
-
-jackmidiltlibs =
-jackmidibuildsources =
-
-endif
-
-EXTRA_DIST = $(jackmidisources)
-
-lib_LTLIBRARIES = $(jackmidiltlibs)
-
-libdir = $(INPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/hugin
-jackmidi_la_LDFLAGS = -module -avoid-version -shared
-jackmidi_la_LIBADD =
-jackmidi_la_SOURCES = $(jackmidibuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/jackmidi.la
diff --git a/drumgizmo/input/jackmidi/Makefile.in b/drumgizmo/input/jackmidi/Makefile.in
deleted file mode 100644
index 1946673..0000000
--- a/drumgizmo/input/jackmidi/Makefile.in
+++ /dev/null
@@ -1,767 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/input/jackmidi
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-jackmidi_la_DEPENDENCIES =
-am__jackmidi_la_SOURCES_DIST = jackmidi.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc $(top_srcdir)/hugin/hugin.c
-am__objects_1 = jackmidi.lo midimapper.lo midimapparser.lo \
-	saxparser.lo hugin.lo
- at HAVE_INPUT_JACKMIDI_TRUE@am__objects_2 = $(am__objects_1)
-am_jackmidi_la_OBJECTS = $(am__objects_2)
-jackmidi_la_OBJECTS = $(am_jackmidi_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-jackmidi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(jackmidi_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_INPUT_JACKMIDI_TRUE@am_jackmidi_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(jackmidi_la_SOURCES)
-DIST_SOURCES = $(am__jackmidi_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(INPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-jackmidisources = \
-	jackmidi.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/hugin/hugin.c
-
- at HAVE_INPUT_JACKMIDI_FALSE@jackmidiltlibs = 
- at HAVE_INPUT_JACKMIDI_TRUE@jackmidiltlibs = jackmidi.la
- at HAVE_INPUT_JACKMIDI_FALSE@jackmidibuildsources = 
- at HAVE_INPUT_JACKMIDI_TRUE@jackmidibuildsources = $(jackmidisources)
-EXTRA_DIST = $(jackmidisources)
-lib_LTLIBRARIES = $(jackmidiltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/hugin
-jackmidi_la_LDFLAGS = -module -avoid-version -shared
-jackmidi_la_LIBADD = 
-jackmidi_la_SOURCES = $(jackmidibuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/input/jackmidi/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/input/jackmidi/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-jackmidi.la: $(jackmidi_la_OBJECTS) $(jackmidi_la_DEPENDENCIES) $(EXTRA_jackmidi_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(jackmidi_la_LINK) $(am_jackmidi_la_rpath) $(jackmidi_la_OBJECTS) $(jackmidi_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jackmidi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/midimapparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/midimapper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/saxparser.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-hugin.lo: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-midimapper.lo: $(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT midimapper.lo -MD -MP -MF $(DEPDIR)/midimapper.Tpo -c -o midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/midimapper.Tpo $(DEPDIR)/midimapper.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='midimapper.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
-
-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT midimapparser.lo -MD -MP -MF $(DEPDIR)/midimapparser.Tpo -c -o midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/midimapparser.Tpo $(DEPDIR)/midimapparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
-
-saxparser.lo: $(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT saxparser.lo -MD -MP -MF $(DEPDIR)/saxparser.Tpo -c -o saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/saxparser.Tpo $(DEPDIR)/saxparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='saxparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/jackmidi.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/input/jackmidi/jackmidi.cc b/drumgizmo/input/jackmidi/jackmidi.cc
deleted file mode 100644
index 5496195..0000000
--- a/drumgizmo/input/jackmidi/jackmidi.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            jackmidi.cc
- *
- *  Sat Apr 30 21:11:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <event.h>
-#include <string>
-
-#include <stdio.h>
-#include <midimapper.h>
-#include <midimapparser.h>
-
-#define NOTE_ON 0x90
-
-#include "../../jackclient.h"
-
-#include <jack/midiport.h>
-
-class JackMidi : public JackProcess {
-public:
-  JackMidi();
-  virtual ~JackMidi();
-
-  bool init(int instruments, char *inames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-  void jack_process(jack_nframes_t nframes);
-
-private:
-  void loadMap(std::string map) {}
-
-  JackClient *jackclient;
-  jack_port_t *midi_port;
-
-  size_t pos;
-
-  event_t *list;
-  size_t listsize;
-
-  std::string midimapfile;
-  MidiMapper mmap;
-};
-
-JackMidi::JackMidi()
-{
-  pos = 0;
-
-  list = (event_t *)malloc(sizeof(event_t) * 1000);
-  listsize = 0;
-}
-
-JackMidi::~JackMidi()
-{
-}
-
-bool JackMidi::init(int instruments, char *inames[])
-{
-	midi_port = jack_port_register(jackclient->jack_client,
-                                 "drumgizmo_midiin",
-                                 JACK_DEFAULT_MIDI_TYPE,
-                                 JackPortIsInput,// | JackPortIsTerminal,
-                                 0);
-
-  MidiMapParser p(midimapfile);
-  if(p.parse()) return false;
-  mmap.midimap = p.midimap;
-
-  for(int i = 0; i < instruments; i++) {
-    mmap.instrmap[inames[i]] = i;
-  }
-
-  return true;
-}
-
-void JackMidi::setParm(std::string parm, std::string value)
-{
-  if(parm == "midimap") midimapfile = value;
-  if(parm == "jack_client") {
-    sscanf(value.c_str(), "%p", &jackclient);
-    if(jackclient) jackclient->addJackProcess(this);
-  }
-}
-
-bool JackMidi::start()
-{
-  // jackclient->activate();
-  return true;
-}
-
-void JackMidi::stop()
-{
-}
-
-void JackMidi::pre()
-{
-}
-
-event_t *JackMidi::run(size_t pos, size_t len, size_t *nevents)
-{
-  *nevents = listsize;
-  event_t *l = list;
-  list = (event_t *)malloc(sizeof(event_t) * 1000);
-  listsize = 0;
-  return l;
-}
-
-void JackMidi::jack_process(jack_nframes_t nframes)
-{
-  // printf("i"); fflush(stdout);
-
-  void *midibuffer = jack_port_get_buffer(midi_port, nframes);
-
-  jack_nframes_t midievents = jack_midi_get_event_count(midibuffer);
-
-  for(jack_nframes_t i = 0; i < midievents; i++) {
-    jack_midi_event_t event;
-    jack_midi_event_get(&event, midibuffer, i);
-    
-    if(event.size != 3) continue;
-    if((event.buffer[0] & NOTE_ON) != NOTE_ON) continue;
-    
-    int key = event.buffer[1];
-    int velocity = event.buffer[2];
-    
-    printf("Event key:%d vel:%d\n", key, velocity);
-
-    int k = mmap.lookup(key);
-    if(k != -1) {
-
-      if(velocity) {
-        list[listsize].type = TYPE_ONSET;
-        list[listsize].instrument = k;
-        list[listsize].velocity = velocity / 127.0;
-        list[listsize].offset = event.time;
-        listsize++;
-      }
-    }
-  }
-  
-  jack_midi_clear_buffer(midibuffer);
-    
-  pos += nframes;
-}
-
-void JackMidi::post()
-{
-}
-
-extern "C" {
-  void *create()
-  {
-    return new JackMidi();
-  }
-  
-  void destroy(void *h)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    delete jackmidi;
-  }
-
-  bool init(void *h, int i, char *inames[])
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    return jackmidi->init(i, inames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    jackmidi->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    return jackmidi->start();
-  }
-
-  void stop(void *h)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    jackmidi->stop();
-  }
-
-  void pre(void *h)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    jackmidi->pre();
-  }
-
-  event_t *run(void *h, size_t pos, size_t len, size_t *nev)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    return jackmidi->run(pos, len, nev);
-  }
-
-  void post(void *h)
-  {
-    JackMidi *jackmidi = (JackMidi*)h;
-    jackmidi->post();
-  }
-}
-
-#ifdef TEST_AUDIOINPUTENGINEJACKMIDI
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINEJACKMIDI*/
diff --git a/drumgizmo/input/midifile.cc b/drumgizmo/input/midifile.cc
new file mode 100644
index 0000000..5fc1a42
--- /dev/null
+++ b/drumgizmo/input/midifile.cc
@@ -0,0 +1,192 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            midifile.cc
+ *
+ *  Mi 20. Jan 16:07:57 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <iostream>
+#include <cassert>
+
+#include "midifile.h"
+
+static int const NOTE_ON = 0x90;
+
+MidifileInputEngine::MidifileInputEngine()
+	: AudioInputEngineMidi{}
+	, smf{nullptr}
+	, current_event{nullptr}
+	, file{}
+	, speed{1.f}
+	, track{-1} // all tracks
+	, loop{false}
+	, offset{0.0}
+	, samplerate{44100.0} // todo: via ctor arg
+{
+}
+
+MidifileInputEngine::~MidifileInputEngine()
+{
+	if(smf != nullptr)
+	{
+		smf_delete(smf);
+	}
+}
+
+bool MidifileInputEngine::init(Instruments& instruments)
+{
+	if(file == "")
+	{
+		std::cerr << "[MidifileInputEngine] Missing midi filename\n";
+		return false;
+	}
+	if(midimap == "")
+	{
+		std::cerr << "[MidifileInputEngine] Missing midimap filename\n";
+		return false;
+	}
+	smf = smf_load(file.c_str());
+	if(smf == nullptr)
+	{
+		std::cerr << "[MidifileInputEngine] Failed to load midifile '" << file
+		          << "'\n";
+		return false;
+	}
+	if(!loadMidiMap(midimap, instruments))
+	{
+		std::cerr << "[MidifileInputEngine] Failed to parse midimap '"
+		          << midimap << "'\n";
+		return false;
+	}
+	return true;
+}
+
+void MidifileInputEngine::setParm(std::string parm, std::string value)
+{
+	if(parm == "file")
+	{
+		// apply midi input filename
+		file = value;
+	}
+	else if(parm == "speed")
+	{
+		// try to apply speed
+		try
+		{
+			speed = std::stof(value);
+		}
+		catch(...)
+		{
+			std::cerr << "[MidifileInputEngine] Invalid speed " << value
+			          << "\n";
+		}
+	}
+	else if(parm == "midimap")
+	{
+		// apply midimap filename
+		midimap = value;
+	}
+	else if(parm == "loop")
+	{
+		// apply looping
+		loop = true;
+	}
+	else
+	{
+		std::cerr << "[MidifileInputEngine] Unsupported parameter '" << parm
+		          << "'\n";
+	}
+}
+
+bool MidifileInputEngine::start()
+{
+	return true;
+}
+
+void MidifileInputEngine::stop()
+{
+}
+
+void MidifileInputEngine::pre()
+{
+}
+
+void MidifileInputEngine::run(size_t pos, size_t len, std::vector<event_t>& events)
+{
+	assert(events.empty());
+
+	double current_max_time = (1.0 + pos + len) / (samplerate / speed);
+	current_max_time -= offset;
+
+	if(!current_event)
+	{
+		current_event = smf_get_next_event(smf);
+	}
+
+	while(current_event && current_event->time_seconds < current_max_time)
+	{
+		if(!smf_event_is_metadata(current_event))
+		{
+			if((current_event->midi_buffer_length == 3) &&
+			    ((current_event->midi_buffer[0] & NOTE_ON) == NOTE_ON) &&
+			    (track == -1 || current_event->track_number == track) &&
+			    current_event->midi_buffer[2] > 0)
+			{
+				int key = current_event->midi_buffer[1];
+				int velocity = current_event->midi_buffer[2];
+
+				events.emplace_back();
+				auto& event = events.back();
+				event.type = TYPE_ONSET;
+				size_t evpos = current_event->time_seconds * (samplerate / speed);
+				event.offset = evpos - pos;
+
+				int i = mmap.lookup(key);
+				if(i != -1)
+				{
+					event.instrument = i;
+					event.velocity = velocity / 127.0;
+				}
+			}
+		}
+
+		current_event = smf_get_next_event(smf);
+	}
+
+	if(!current_event)
+	{
+		if(loop)
+		{
+			smf_rewind(smf);
+			offset += current_max_time;
+		}
+		else
+		{
+			assert(len >= 1);
+			events.push_back({TYPE_STOP, 0, len-1, 0.f});
+		}
+	}
+}
+
+void MidifileInputEngine::post()
+{
+}
diff --git a/drumgizmo/input/midifile.h b/drumgizmo/input/midifile.h
new file mode 100644
index 0000000..a5c79e4
--- /dev/null
+++ b/drumgizmo/input/midifile.h
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            minifile.h
+ *
+ *  Mi 20. Jan 16:07:57 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <string>
+
+#include <event.h>
+#include <smf.h>
+
+#include "audioinputenginemidi.h"
+#include "midimapper.h"
+#include "midimapparser.h"
+
+class MidifileInputEngine
+	: public AudioInputEngineMidi
+{
+public:
+	MidifileInputEngine();
+	~MidifileInputEngine();
+
+	// based on AudioInputEngineMidi
+	bool init(Instruments& instruments) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre() override;
+	void run(size_t pos, size_t len, std::vector<event_t>& events) override;
+	void post() override;
+
+private:
+	smf_t* smf;
+	smf_event_t* current_event;
+
+	std::string file;
+	float speed;
+	int track;
+	bool loop;
+	double offset, samplerate;
+};
diff --git a/drumgizmo/input/midifile/Makefile.am b/drumgizmo/input/midifile/Makefile.am
deleted file mode 100644
index f95a289..0000000
--- a/drumgizmo/input/midifile/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-
-midifilesources = \
-	midifile.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/hugin/hugin.c
-
-
-if HAVE_INPUT_MIDIFILE
-
-midifileltlibs = midifile.la
-midifilebuildsources = $(midifilesources)
-
-else
-
-midifileltlibs =
-midifilebuildsources =
-
-endif
-
-EXTRA_DIST = $(midifilesources)
-
-lib_LTLIBRARIES = $(midifileltlibs)
-
-libdir = $(INPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SMF_CFLAGS) \
-	$(EXPAT_CFLAGS) -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX
-midifile_la_LDFLAGS = $(SMF_LIBS) $(EXPAT_LIBS) -module -avoid-version -shared
-midifile_la_LIBADD =
-midifile_la_SOURCES = $(midifilebuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/midifile.la
diff --git a/drumgizmo/input/midifile/Makefile.in b/drumgizmo/input/midifile/Makefile.in
deleted file mode 100644
index 28d4ea9..0000000
--- a/drumgizmo/input/midifile/Makefile.in
+++ /dev/null
@@ -1,769 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/input/midifile
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-midifile_la_DEPENDENCIES =
-am__midifile_la_SOURCES_DIST = midifile.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc $(top_srcdir)/hugin/hugin.c
-am__objects_1 = midifile.lo midimapper.lo midimapparser.lo \
-	saxparser.lo hugin.lo
- at HAVE_INPUT_MIDIFILE_TRUE@am__objects_2 = $(am__objects_1)
-am_midifile_la_OBJECTS = $(am__objects_2)
-midifile_la_OBJECTS = $(am_midifile_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-midifile_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(midifile_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_INPUT_MIDIFILE_TRUE@am_midifile_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(midifile_la_SOURCES)
-DIST_SOURCES = $(am__midifile_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(INPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-midifilesources = \
-	midifile.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/hugin/hugin.c
-
- at HAVE_INPUT_MIDIFILE_FALSE@midifileltlibs = 
- at HAVE_INPUT_MIDIFILE_TRUE@midifileltlibs = midifile.la
- at HAVE_INPUT_MIDIFILE_FALSE@midifilebuildsources = 
- at HAVE_INPUT_MIDIFILE_TRUE@midifilebuildsources = $(midifilesources)
-EXTRA_DIST = $(midifilesources)
-lib_LTLIBRARIES = $(midifileltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SMF_CFLAGS) \
-	$(EXPAT_CFLAGS) -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX
-
-midifile_la_LDFLAGS = $(SMF_LIBS) $(EXPAT_LIBS) -module -avoid-version -shared
-midifile_la_LIBADD = 
-midifile_la_SOURCES = $(midifilebuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/input/midifile/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/input/midifile/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-midifile.la: $(midifile_la_OBJECTS) $(midifile_la_DEPENDENCIES) $(EXTRA_midifile_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(midifile_la_LINK) $(am_midifile_la_rpath) $(midifile_la_OBJECTS) $(midifile_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/midifile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/midimapparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/midimapper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/saxparser.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-hugin.lo: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-midimapper.lo: $(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT midimapper.lo -MD -MP -MF $(DEPDIR)/midimapper.Tpo -c -o midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/midimapper.Tpo $(DEPDIR)/midimapper.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='midimapper.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
-
-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT midimapparser.lo -MD -MP -MF $(DEPDIR)/midimapparser.Tpo -c -o midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/midimapparser.Tpo $(DEPDIR)/midimapparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
-
-saxparser.lo: $(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT saxparser.lo -MD -MP -MF $(DEPDIR)/saxparser.Tpo -c -o saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/saxparser.Tpo $(DEPDIR)/saxparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='saxparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/midifile.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/input/midifile/midifile.cc b/drumgizmo/input/midifile/midifile.cc
deleted file mode 100644
index d73d382..0000000
--- a/drumgizmo/input/midifile/midifile.cc
+++ /dev/null
@@ -1,271 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            dummy.cc
- *
- *  Sat Apr 30 21:11:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <string>
-#include <event.h>
-
-#include <smf.h>
-
-#include <midimapper.h>
-#include <midimapparser.h>
-
-#define NOTE_ON 0x90
-
-class MidiFile {
-public:
-  MidiFile();
-  ~MidiFile() {}
-
-  bool init(int instruments, char *inames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-  
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-private:
-  smf_t *smf;
-  smf_event_t *cur_event;
-
-  MidiMapper mmap;
-
-  // Parameters
-  std::string filename;
-  float speed;
-  int track;
-  std::string midimapfile;
-  bool loop;
-  double offset;
-};
-
-MidiFile::MidiFile()
-{
- cur_event = NULL;
- smf = NULL;
- 
- speed = 1.0;
- track = -1; // -1 is OMNI/all tracks
- loop = false;
- offset = 0;
-}
- 
-bool MidiFile::init(int instruments, char *inames[])
-{
-  if(filename == "") {
-    fprintf(stderr, "Missing midifile argument 'file'\n");
-    return false;
-  }
-
-  if(midimapfile == "") {
-    fprintf(stderr, "Missing midimapfile argument 'midimap'.\n");
-    return false;
-  }
-
-  smf = smf_load(filename.c_str());
-
-  if(!smf) {
-    fprintf(stderr, "Could not open midifile '%s'.\n", filename.c_str());
-    return false;
-  }
-
-  MidiMapParser p(midimapfile);
-  if(p.parse()) {
-    fprintf(stderr, "Could not parse midimapfile '%s'.\n", midimapfile.c_str());
-    return false;
-  }
-  mmap.midimap = p.midimap;
-
-  for(int i = 0; i < instruments; i++) {
-    mmap.instrmap[inames[i]] = i;
-  }
-
-  return true;
-}
-
-void MidiFile::setParm(std::string parm, std::string value)
-{
-  if(parm == "file") filename = value;
-  if(parm == "speed") speed = atof(value.c_str());
-  if(parm == "track") track = atoi(value.c_str());
-  if(parm == "midimap") midimapfile = value;
-  if(parm == "loop") loop = true;
-}
-
-bool MidiFile::start()
-{
-  return true;
-}
-
-void MidiFile::stop()
-{
-}
-
-void MidiFile::pre()
-{
-}
-
-event_t *MidiFile::run(size_t pos, size_t len, size_t *nevents)
-{
-  event_t *evs = NULL;
-  size_t nevs = 0;
-
-  double cur_max_time = (double)(pos + len) / (44100.0 / speed);
-  cur_max_time -= offset;
-  //  double cur_min_time = (double)(pos) / (44100.0 / speed);
-
-  if(!cur_event) cur_event = smf_get_next_event(smf);
-
-  while(cur_event && cur_event->time_seconds < cur_max_time) {
-    if(!smf_event_is_metadata(cur_event)) {
-      if( (cur_event->midi_buffer_length == 3) &&
-          ((cur_event->midi_buffer[0] & NOTE_ON) == NOTE_ON) &&
-          (track == -1 || cur_event->track_number == track) &&
-          cur_event->midi_buffer[2] > 0) {
-        
-        if(evs == NULL) evs = (event_t *)malloc(sizeof(event_t) * 1000);
-
-        int key = cur_event->midi_buffer[1];
-        int velocity = cur_event->midi_buffer[2];
-
-        evs[nevs].type = TYPE_ONSET;
-        size_t evpos = cur_event->time_seconds * (44100.0 / speed);
-        evs[nevs].offset = evpos - pos;
-
-        int i = mmap.lookup(key);
-        if(i != -1) {
-          evs[nevs].instrument = i;
-          evs[nevs].velocity = velocity / 127.0;
-        
-          nevs++;
-          if(nevs > 999) {
-            fprintf(stderr, "PANIC!\n");
-            break;
-          }
-        }
-      }
-    }
-    
-    cur_event = smf_get_next_event(smf);
-  }
-
-  if(!cur_event) {
-    if(loop) {
-       smf_rewind(smf);
-       offset += cur_max_time;
-    } else {
-      if(evs == NULL) evs = (event_t *)malloc(sizeof(event_t) * 1000);
-      evs[nevs].type = TYPE_STOP;
-      evs[nevs].offset = len - 1;
-      nevs++;
-    }
-  }
-
-  *nevents = nevs;
-
-  return evs;
-}
-
-void MidiFile::post()
-{
-}
-
-extern "C" {
-  void *create()
-  {
-    return new MidiFile();
-  }
-  
-  void destroy(void *h)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    delete midifile;
-  }
-
-  bool init(void *h, int i, char *inames[])
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    return midifile->init(i, inames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    midifile->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    return midifile->start();
-  }
-
-  void stop(void *h)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    midifile->stop();
-  }
-
-  void pre(void *h)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    midifile->pre();
-  }
-
-  event_t *run(void *h, size_t pos, size_t len, size_t *nev)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    return midifile->run(pos, len, nev);
-  }
-
-  void post(void *h)
-  {
-    MidiFile *midifile = (MidiFile*)h;
-    midifile->post();
-  }
-}
-
-#ifdef TEST_AUDIOINPUTENGINEMIDIFILE
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINEMIDIFILE*/
diff --git a/drumgizmo/input/test/Makefile.am b/drumgizmo/input/test/Makefile.am
deleted file mode 100644
index 35466ab..0000000
--- a/drumgizmo/input/test/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-testsources = \
-	test.cc
-
-if HAVE_INPUT_TEST
-
-testltlibs = test.la
-testbuildsources = $(testsources)
-
-else
-
-testltlibs =
-testbuildsources =
-
-endif
-
-EXTRA_DIST = $(testsources)
-
-lib_LTLIBRARIES = $(testltlibs)
-
-libdir = $(INPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/include
-test_la_LDFLAGS = -module -avoid-version -shared
-test_la_LIBADD = 
-test_la_SOURCES = $(testbuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/test.la
diff --git a/drumgizmo/input/test/Makefile.in b/drumgizmo/input/test/Makefile.in
deleted file mode 100644
index e429cb6..0000000
--- a/drumgizmo/input/test/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/input/test
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-test_la_DEPENDENCIES =
-am__test_la_SOURCES_DIST = test.cc
-am__objects_1 = test.lo
- at HAVE_INPUT_TEST_TRUE@am__objects_2 = $(am__objects_1)
-am_test_la_OBJECTS = $(am__objects_2)
-test_la_OBJECTS = $(am_test_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-test_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(test_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_INPUT_TEST_TRUE@am_test_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(test_la_SOURCES)
-DIST_SOURCES = $(am__test_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(INPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-testsources = \
-	test.cc
-
- at HAVE_INPUT_TEST_FALSE@testltlibs = 
- at HAVE_INPUT_TEST_TRUE@testltlibs = test.la
- at HAVE_INPUT_TEST_FALSE@testbuildsources = 
- at HAVE_INPUT_TEST_TRUE@testbuildsources = $(testsources)
-EXTRA_DIST = $(testsources)
-lib_LTLIBRARIES = $(testltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/include
-test_la_LDFLAGS = -module -avoid-version -shared
-test_la_LIBADD = 
-test_la_SOURCES = $(testbuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/input/test/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/input/test/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-test.la: $(test_la_OBJECTS) $(test_la_DEPENDENCIES) $(EXTRA_test_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(test_la_LINK) $(am_test_la_rpath) $(test_la_OBJECTS) $(test_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/test.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/input/test/test.cc b/drumgizmo/input/test/test.cc
deleted file mode 100644
index b7b4a7d..0000000
--- a/drumgizmo/input/test/test.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audioinputenginedummy.cc
- *
- *  Sat Apr 30 21:11:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <event.h>
-#include <string>
-
-class Test {
-public:
-  Test() { p = 0.1; instr = -1; len = -1; }
-  ~Test() {}
-
-  bool init(int instruments, char *inames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-  
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-private:
-  float p;
-  int instr;
-  int len;
-};
-
-bool Test::init(int instruments, char *inames[])
-{
-  return true;
-}
-
-void Test::setParm(std::string parm, std::string value)
-{
-  if(parm == "p") p = atof(value.c_str());
-  if(parm == "instr") instr = atoi(value.c_str());
-  if(parm == "len") len = atoi(value.c_str());
-}
-
-bool Test::start()
-{
-  return true;
-}
-
-void Test::stop()
-{
-}
-
-void Test::pre()
-{
-}
-
-event_t *Test::run(size_t pos, size_t nsamples, size_t *nevents)
-{
-  if((float)rand() / (float)RAND_MAX > p) {
-    *nevents = 0;
-    return NULL;
-  }
-
-  *nevents = 1;
-  event_t *evs = (event_t *)malloc(sizeof(event_t));
-  evs[0].type = TYPE_ONSET;
-  if(len != -1 && (int)pos > len * 44100) evs[0].type = TYPE_STOP;
-
-  if(instr != -1) evs[0].instrument = instr;
-  else evs[0].instrument = rand() % 32;
-
-  evs[0].velocity = (float)rand()/(float)RAND_MAX;
-  evs[0].offset = nsamples?rand()%nsamples:0;
-  return evs;
-}
-
-void Test::post()
-{
-}
-
-extern "C" {
-  void *create()
-  {
-    return new Test();
-  }
-  
-  void destroy(void *h)
-  {
-    Test *test = (Test*)h;
-    delete test;
-  }
-
-  bool init(void *h, int i, char *inames[])
-  {
-    Test *test = (Test*)h;
-    return test->init(i, inames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    Test *test = (Test*)h;
-    test->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    Test *test = (Test*)h;
-    return test->start();
-  }
-
-  void stop(void *h)
-  {
-    Test *test = (Test*)h;
-    test->stop();
-  }
-
-  void pre(void *h)
-  {
-    Test *test = (Test*)h;
-    test->pre();
-  }
-
-  event_t *run(void *h, size_t pos, size_t len, size_t *nev)
-  {
-    Test *test = (Test*)h;
-    return test->run(pos, len, nev);
-  }
-
-  void post(void *h)
-  {
-    Test *test = (Test*)h;
-    test->post();
-  }
-}
-
-#ifdef TEST_AUDIOINPUTENGINETEST
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINETEST*/
diff --git a/drumgizmo/jackclient.cc b/drumgizmo/jackclient.cc
index e4af141..e493e1b 100644
--- a/drumgizmo/jackclient.cc
+++ b/drumgizmo/jackclient.cc
@@ -11,90 +11,104 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
+#include <cassert>
+
 #include "jackclient.h"
 
-extern "C"
+JackProcess::~JackProcess()
 {
-  int _wrap_jack_process(jack_nframes_t nframes, void *arg){
-    return ((JackClient*)arg)->process(nframes);}
-}  // extern "C"
+}
 
-JackClient::JackClient()
-  : refcnt(0)
+// --------------------------------------------------------------------
+
+JackPort::JackPort(JackClient& client, const std::string& name,
+                   const char* type, JackPortFlags flags)
+	: client{client.client} // register jack port for given client
+	, port{jack_port_register(this->client, name.c_str(), type, flags, 0)}
 {
-	jack_status_t status;
+}
 
-	jack_client = jack_client_open("DrumGizmo", JackNullOption, &status);
+JackPort::~JackPort()
+{
+	if(port != nullptr)
+	{
+		assert(client != nullptr);
+		jack_port_unregister(client, port);
+	}
+}
 
-  jack_set_process_callback(jack_client, _wrap_jack_process, this);
+// --------------------------------------------------------------------
 
-  active = false;
+int JackClient::wrapJackProcess(jack_nframes_t nframes, void* arg)
+{
+	return static_cast<JackClient*>(arg)->process(nframes);
+}
+
+JackClient::JackClient()
+	: client{nullptr}
+	, processes{}
+	, is_active{false}
+{
+	jack_status_t status;
+	client = jack_client_open("DrumGizmo", JackNullOption, &status);
+	jack_set_process_callback(client, JackClient::wrapJackProcess, this);
 }
 
 JackClient::~JackClient()
 {
-	jack_client_close(jack_client);
+	if(client != nullptr)
+	{
+		jack_client_close(client);
+	}
 }
 
-/*
-void JackClient::addJackProcess(JackProcess *process)
+void JackClient::add(JackProcess& process)
 {
-  jack_processes.insert(process);
+	processes.insert(&process);
 }
-*/
 
-void JackClient::removeJackProcess(JackProcess *process)
+void JackClient::remove(JackProcess& process)
 {
-  jack_processes.erase(process);
+	processes.erase(&process);
 }
 
 void JackClient::activate()
 {
-	if(!active) jack_activate(jack_client);
-  active = true;
+	if(!is_active)
+	{
+		jack_activate(client);
+	}
+	is_active = true;
 }
 
-int JackClient::process(jack_nframes_t nframes)
+int JackClient::process(jack_nframes_t num_frames)
 {
-  std::set<JackProcess *>::iterator i = jack_processes.begin();
-  while(i != jack_processes.end()) {
-    JackProcess *jp = *i;
-    jp->jack_process(nframes);
-    i++;
-  }
-
+	for(auto& ptr : processes)
+	{
+		ptr->process(num_frames);
+	}
 	return 0;
 }
 
-JackClient *jackclient = NULL;
-
-JackClient *init_jack_client()
+std::size_t JackClient::getBufferSize() const
 {
-  if(jackclient == NULL) jackclient = new JackClient();
-  jackclient->refcnt++;
-  return jackclient;
-
+	return jack_get_buffer_size(client);
 }
-void close_jack_client()
+
+std::size_t JackClient::getSampleRate() const
 {
-  if(jackclient) {
-    jackclient->refcnt--;
-    if(jackclient->refcnt == 0) {
-      delete jackclient;
-      jackclient = NULL;
-    }
-  }
+	return jack_get_sample_rate(client);
 }
diff --git a/drumgizmo/jackclient.h b/drumgizmo/jackclient.h
index f093220..82cc0ed 100644
--- a/drumgizmo/jackclient.h
+++ b/drumgizmo/jackclient.h
@@ -11,57 +11,73 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_JACKCLIENT_H__
-#define __DRUMGIZMO_JACKCLIENT_H__
+#pragma once
+#include <vector>
+#include <string>
+#include <set>
 
 #include <jack/jack.h>
-#include <set>
 
-class JackProcess {
+#include <audiotypes.h>
+
+class JackClient;
+
+class JackProcess
+{
 public:
-  virtual ~JackProcess() {}
-  virtual void jack_process(jack_nframes_t nframes) = 0;
+	virtual ~JackProcess();
+	virtual void process(jack_nframes_t num_frames) = 0;
 };
 
-class JackClient {
-public:
-  JackClient();
-  ~JackClient();
+// --------------------------------------------------------------------
 
-  void addJackProcess(JackProcess *process)
-  {
-    jack_processes.insert(process);
-  }
+// RAII-wrapper for jack_port_t
+struct JackPort
+{
+	JackPort(JackClient& client, const std::string& name, const char* type,
+	         JackPortFlags flags);
+	~JackPort();
 
-  void removeJackProcess(JackProcess *process);
+	jack_client_t* const client;
+	jack_port_t* const port;
+};
 
-  void activate();
-  int process(jack_nframes_t nframes);
+// --------------------------------------------------------------------
 
-	jack_client_t *jack_client;
+class JackClient
+{
+	friend struct JackPort;
 
-  // Sort of private...
-  int refcnt;
+public:
+	JackClient();
+	~JackClient();
+
+	void add(JackProcess& process);
+	void remove(JackProcess& process);
+	void activate();
+
+	std::size_t getBufferSize() const;
+	std::size_t getSampleRate() const;
 
 private:
-  std::set<JackProcess *> jack_processes;
-  bool active;
-};
+	jack_client_t* client;
+	std::set<JackProcess*> processes;
+	bool is_active;
 
-JackClient *init_jack_client();
-void close_jack_client();
+	int process(jack_nframes_t num_frames);
 
-#endif/*__DRUMGIZMO_JACKCLIENT_H__*/
+	static int wrapJackProcess(jack_nframes_t nframes, void* arg);
+};
diff --git a/drumgizmo/output/Makefile.am b/drumgizmo/output/Makefile.am
deleted file mode 100644
index 61b447a..0000000
--- a/drumgizmo/output/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-DISTDIRS = dummy alsa wavfile jackaudio
-SUBDIRS = @OUTPUT_PLUGINS@
diff --git a/drumgizmo/output/Makefile.in b/drumgizmo/output/Makefile.in
deleted file mode 100644
index 027a849..0000000
--- a/drumgizmo/output/Makefile.in
+++ /dev/null
@@ -1,643 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/output
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-DISTDIRS = dummy alsa wavfile jackaudio
-SUBDIRS = @OUTPUT_PLUGINS@
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/output/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/output/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-	check-am clean clean-generic clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/output/alsa.cc b/drumgizmo/output/alsa.cc
new file mode 100644
index 0000000..20a5366
--- /dev/null
+++ b/drumgizmo/output/alsa.cc
@@ -0,0 +1,193 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            alsa.cc
+ *
+ *  Do 21. Jan 16:48:32 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <iostream>
+
+#include "alsa.h"
+
+int const BUFFER_SIZE = 40960;
+
+struct AlsaInitError
+{
+	int const code;
+	const std::string msg;
+
+	AlsaInitError(int op_code, const std::string& msg)
+		: code{code}
+		, msg{msg}
+	{
+	}
+
+	static inline void test(int code, const std::string& msg)
+	{
+		if(code < 0)
+		{
+			throw AlsaInitError(code, msg);
+		}
+	}
+};
+
+AlsaOutputEngine::AlsaOutputEngine()
+	: handle{nullptr}
+	, params{nullptr}
+	, data{}
+	, num_channels{0u}
+	, dev{"default"}
+	, srate{44100}
+	, frames{32}
+{
+}
+
+AlsaOutputEngine::~AlsaOutputEngine()
+{
+	// note: do NOT release `params`, it was allocated by `alloca()`
+
+	if(handle != nullptr)
+	{
+		snd_pcm_close(handle);
+	}
+}
+
+bool AlsaOutputEngine::init(Channels channels)
+{
+	// try to initialize alsa
+	try
+	{
+		int value =
+		    snd_pcm_open(&handle, dev.c_str(), SND_PCM_STREAM_PLAYBACK, 0);
+		AlsaInitError::test(value, "snd_pcm_open");
+		num_channels = channels.size();
+		if(handle == nullptr)
+		{
+			std::cerr << "[AlsaOutputEngine] Failed to acquire "
+			          << "hardware handle\n";
+			return false;
+		}
+		// Allocate and init a hardware parameters object
+		snd_pcm_hw_params_alloca(&params);
+		value = snd_pcm_hw_params_any(handle, params);
+		AlsaInitError::test(value, "snd_pcm_hw_params_any");
+
+		value = snd_pcm_hw_params_set_access(
+		    handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
+		AlsaInitError::test(value, "snd_pcm_hw_params_set_access");
+		value =
+		    snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_FLOAT);
+		AlsaInitError::test(value, "snd_pcm_hw_params_set_format");
+		value = snd_pcm_hw_params_set_channels(handle, params, num_channels);
+		AlsaInitError::test(value, "snd_pcm_hw_params_set_channels");
+		value = snd_pcm_hw_params_set_rate_near(handle, params, &srate, 0);
+		AlsaInitError::test(value, "snd_pcm_hw_params_set_rate_near");
+		value =
+		    snd_pcm_hw_params_set_period_size_near(handle, params, &frames, 0);
+		AlsaInitError::test(value, "snd_pcm_hw_params_set_period_size_near");
+		value = snd_pcm_hw_params(handle, params);
+		AlsaInitError::test(value, "snd_pcm_hw_params");
+	}
+	catch(AlsaInitError const& error)
+	{
+		std::cerr << "[AlsaOutputEngine] " << error.msg
+		          << " failed: " << snd_strerror(error.code) << std::endl;
+		return false;
+	}
+
+	data.clear();
+	data.resize(BUFFER_SIZE * num_channels);
+
+	return true;
+}
+
+void AlsaOutputEngine::setParm(std::string parm, std::string value)
+{
+	if(parm == "dev")
+	{
+		// apply hardware device name
+		dev = value;
+	}
+	else if(parm == "frames")
+	{
+		// try to apply hardware buffer size
+		try
+		{
+			frames = std::stoi(value);
+		}
+		catch(...)
+		{
+			std::cerr << "[AlsaOutputEngine] Invalid buffer size " << value
+			          << "\n";
+		}
+	}
+	else if(parm == "srate")
+	{
+		try
+		{
+			srate = std::stoi(value);
+		}
+		catch(...)
+		{
+			std::cerr << "[AlsaOutputEngine] Invalid samplerate " << value
+			          << "\n";
+		}
+	}
+	else
+	{
+		std::cerr << "[AlsaOutputEngine] Unsupported parameter '" << parm
+		          << "'\n";
+	}
+}
+
+bool AlsaOutputEngine::start()
+{
+	return true;
+}
+
+void AlsaOutputEngine::stop()
+{
+}
+
+void AlsaOutputEngine::pre(size_t nsamples)
+{
+}
+
+void AlsaOutputEngine::run(int ch, sample_t* samples, size_t nsamples)
+{
+	// Write channel data in interleaved buffer
+	for(auto i = 0u; i < nsamples; ++i)
+	{
+		data[i * num_channels + ch] = samples[i];
+	}
+}
+
+void AlsaOutputEngine::post(size_t nsamples)
+{
+	// Write the interleaved buffer to the soundcard
+	snd_pcm_writei(handle, data.data(), nsamples);
+}
+
+size_t AlsaOutputEngine::samplerate()
+{
+	return srate;
+}
diff --git a/drumgizmo/output/alsa.h b/drumgizmo/output/alsa.h
new file mode 100644
index 0000000..f3fb457
--- /dev/null
+++ b/drumgizmo/output/alsa.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            alsa.h
+ *
+ *  Do 21. Jan 16:48:32 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+// Use the newer ALSA API
+#define ALSA_PCM_NEW_HW_PARAMS_API
+
+#include <audiotypes.h>
+#include <alsa/asoundlib.h>
+
+#include "audiooutputengine.h"
+
+class AlsaOutputEngine
+	: public AudioOutputEngine
+{
+public:
+	AlsaOutputEngine();
+	~AlsaOutputEngine();
+
+	// based on AudioOutputEngine
+	bool init(Channels chan) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre(size_t nsamples) override;
+	void run(int ch, sample_t* samples, size_t nsamples) override;
+	void post(size_t nsamples) override;
+	size_t samplerate() override;
+
+private:
+	snd_pcm_t* handle;
+	snd_pcm_hw_params_t* params;
+	std::vector<sample_t> data;
+	size_t num_channels;
+
+	std::string dev;
+	unsigned int srate; // samplerate
+	snd_pcm_uframes_t frames;
+};
diff --git a/drumgizmo/output/alsa/Makefile.am b/drumgizmo/output/alsa/Makefile.am
deleted file mode 100644
index 9f20844..0000000
--- a/drumgizmo/output/alsa/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-alsasources = \
-	alsa.cc
-
-if HAVE_OUTPUT_ALSA
-
-alsaltlibs = alsa.la
-alsabuildsources = $(alsasources)
-
-else
-
-alsaltlibs =
-alsabuildsources =
-
-endif
-
-EXTRA_DIST = $(alsasources)
-
-lib_LTLIBRARIES = $(alsaltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(ALSA_CFLAGS)
-alsa_la_LDFLAGS = $(ALSA_LIBS) -module -avoid-version -shared
-alsa_la_LIBADD =
-alsa_la_SOURCES = $(alsabuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/alsa.la
diff --git a/drumgizmo/output/alsa/Makefile.in b/drumgizmo/output/alsa/Makefile.in
deleted file mode 100644
index e6d49d4..0000000
--- a/drumgizmo/output/alsa/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/output/alsa
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-alsa_la_DEPENDENCIES =
-am__alsa_la_SOURCES_DIST = alsa.cc
-am__objects_1 = alsa.lo
- at HAVE_OUTPUT_ALSA_TRUE@am__objects_2 = $(am__objects_1)
-am_alsa_la_OBJECTS = $(am__objects_2)
-alsa_la_OBJECTS = $(am_alsa_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-alsa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(alsa_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_OUTPUT_ALSA_TRUE@am_alsa_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(alsa_la_SOURCES)
-DIST_SOURCES = $(am__alsa_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(OUTPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-alsasources = \
-	alsa.cc
-
- at HAVE_OUTPUT_ALSA_FALSE@alsaltlibs = 
- at HAVE_OUTPUT_ALSA_TRUE@alsaltlibs = alsa.la
- at HAVE_OUTPUT_ALSA_FALSE@alsabuildsources = 
- at HAVE_OUTPUT_ALSA_TRUE@alsabuildsources = $(alsasources)
-EXTRA_DIST = $(alsasources)
-lib_LTLIBRARIES = $(alsaltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(ALSA_CFLAGS)
-alsa_la_LDFLAGS = $(ALSA_LIBS) -module -avoid-version -shared
-alsa_la_LIBADD = 
-alsa_la_SOURCES = $(alsabuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/output/alsa/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/output/alsa/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-alsa.la: $(alsa_la_OBJECTS) $(alsa_la_DEPENDENCIES) $(EXTRA_alsa_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(alsa_la_LINK) $(am_alsa_la_rpath) $(alsa_la_OBJECTS) $(alsa_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/alsa.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/alsa.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/output/alsa/alsa.cc b/drumgizmo/output/alsa/alsa.cc
deleted file mode 100644
index dc2ac73..0000000
--- a/drumgizmo/output/alsa/alsa.cc
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audiooutputenginedummy.cc
- *
- *  Sat Apr 30 21:12:02 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-
-// Use the newer ALSA API
-#define ALSA_PCM_NEW_HW_PARAMS_API
-
-#include <asoundlib.h>
-
-#define T(x, msg) if(x < 0) { printf("%s failed: %s\n", msg, snd_strerror(x)); fflush(stdout); return false; }
-
-#define BUFSZ 40960
-
-class Alsa {
-public:
-  Alsa();
-  ~Alsa();
-  bool init(int channels, char *cnames[]);
-  void setParm(std::string parm, std::string value);
-  bool start();
-  void stop();
-  void pre(size_t size);
-  void run(int channel, sample_t* data, size_t size);
-  void post(size_t size);
-  size_t samplerate();
-
-private:
-  snd_pcm_t *handle;
-  snd_pcm_hw_params_t *params;
-  sample_t *data;
-  size_t channels;
-
-  // Parameters
-  std::string device;
-  unsigned int srate;
-  snd_pcm_uframes_t frames;
-};
-
-Alsa::Alsa()
-{
-  handle = NULL;
-  data = NULL;
-
-  device = "default";
-  srate = 44100;
-  frames = 32;
-}
-
-Alsa::~Alsa()
-{
-  if(handle) snd_pcm_close(handle);
-  if(data) free(data);
-}
-
-bool Alsa::init(int channels, char *cnames[])
-{
-  int rc;
-
-  rc = snd_pcm_open(&handle, device.c_str(), SND_PCM_STREAM_PLAYBACK, 0);
-  T(rc, "snd_pcm_open");
-
-  this->channels = channels;
-  if(!handle) {
-    printf("No handle!\n");
-    return false;
-  }
-
-  // Allocate a hardware parameters object.
-  snd_pcm_hw_params_alloca(&params);
-  //  if(rc < 0) return false;
-
-  // Fill it in with default values.
-  rc = snd_pcm_hw_params_any(handle, params);
-  T(rc, "snd_pcm_hw_params_any");
-
-  rc = snd_pcm_hw_params_set_access(handle, params,
-                                    SND_PCM_ACCESS_RW_INTERLEAVED);
-  T(rc, "snd_pcm_hw_params_set_access");
-
-  rc = snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_FLOAT);
-  T(rc, "snd_pcm_hw_params_set_format");
-
-  rc = snd_pcm_hw_params_set_channels(handle, params, channels);
-  T(rc, "snd_pcm_hw_params_set_channels");
-
-  rc = snd_pcm_hw_params_set_rate_near(handle, params, &srate, 0);
-  T(rc, "snd_pcm_hw_params_set_rate_near");
-
-  rc = snd_pcm_hw_params_set_period_size_near(handle, params, &frames, 0);
-  T(rc, "snd_pcm_hw_params_set_period_size_near");
-  
-  rc = snd_pcm_hw_params(handle, params);
-  T(rc, "snd_pcm_hw_params");
-
-  data = (sample_t*)malloc(sizeof(sample_t) * BUFSZ * channels);
-
-  return true;
-}
-
-void Alsa::setParm(std::string parm, std::string value)
-{
-  if(parm == "dev") device = value;
-  if(parm == "frames") frames = atoi(value.c_str());
-  if(parm == "srate") srate = atoi(value.c_str());
-}
-
-bool Alsa::start()
-{
-  return true;
-}
-
-void Alsa::stop()
-{
-}
-
-void Alsa::pre(size_t size)
-{
-}
-
-void Alsa::run(int channel, sample_t* cdata, size_t csize)
-{
-  // Write channel data in interleaved buffer.
-  for(size_t i = 0; i < csize; i++) {
-    data[i * channels + channel] = cdata[i];
-  }
-}
-
-void Alsa::post(size_t size)
-{
-  // Write the interleaved buffer to the soundcard
-  snd_pcm_writei(handle, data, size);
-}
-
-size_t Alsa::samplerate()
-{
-  return srate;
-}
-
-extern "C" {
-  void *create()
-  {
-    return new Alsa();
-  }
-  
-  void destroy(void *h)
-  {
-    Alsa *alsa = (Alsa*)h;
-    delete alsa;
-  }
-
-  bool init(void *h, int cs, char *cnames[])
-  {
-    Alsa *alsa = (Alsa*)h;
-    return alsa->init(cs, cnames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    Alsa *alsa = (Alsa*)h;
-    alsa->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    Alsa *alsa = (Alsa*)h;
-    return alsa->start();
-  }
-
-  void stop(void *h)
-  {
-    Alsa *alsa = (Alsa*)h;
-    alsa->stop();
-  }
-
-  void pre(void *h, size_t s)
-  {
-    Alsa *alsa = (Alsa*)h;
-    alsa->pre(s);
-  }
-
-  void run(void *h, int ch, sample_t *data, size_t size)
-  {
-    Alsa *alsa = (Alsa*)h;
-    alsa->run(ch, data, size);
-  }
-
-  void post(void *h, size_t s)
-  {
-    Alsa *alsa = (Alsa*)h;
-    alsa->post(s);
-  }
-
-  size_t samplerate(void *h)
-  {
-    Alsa *alsa = (Alsa*)h;
-    return alsa->samplerate();
-  }
-}
diff --git a/drumgizmo/output/dummy/Makefile.am b/drumgizmo/output/dummy/Makefile.am
deleted file mode 100644
index bff3daf..0000000
--- a/drumgizmo/output/dummy/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-dummysources = \
-	dummy.cc
-
-if HAVE_OUTPUT_DUMMY
-
-dummyltlibs = dummy.la
-dummybuildsources = $(dummysources)
-
-else
-
-dummyltlibs =
-dummybuildsources =
-
-endif
-
-EXTRA_DIST = $(dummysources)
-
-lib_LTLIBRARIES = $(dummyltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-dummy_la_LDFLAGS = -module -avoid-version -shared
-dummy_la_LIBADD =
-dummy_la_SOURCES = $(dummybuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/dummy.la
diff --git a/drumgizmo/output/dummy/Makefile.in b/drumgizmo/output/dummy/Makefile.in
deleted file mode 100644
index e978718..0000000
--- a/drumgizmo/output/dummy/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/output/dummy
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-dummy_la_DEPENDENCIES =
-am__dummy_la_SOURCES_DIST = dummy.cc
-am__objects_1 = dummy.lo
- at HAVE_OUTPUT_DUMMY_TRUE@am__objects_2 = $(am__objects_1)
-am_dummy_la_OBJECTS = $(am__objects_2)
-dummy_la_OBJECTS = $(am_dummy_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-dummy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(dummy_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_OUTPUT_DUMMY_TRUE@am_dummy_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(dummy_la_SOURCES)
-DIST_SOURCES = $(am__dummy_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(OUTPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-dummysources = \
-	dummy.cc
-
- at HAVE_OUTPUT_DUMMY_FALSE@dummyltlibs = 
- at HAVE_OUTPUT_DUMMY_TRUE@dummyltlibs = dummy.la
- at HAVE_OUTPUT_DUMMY_FALSE@dummybuildsources = 
- at HAVE_OUTPUT_DUMMY_TRUE@dummybuildsources = $(dummysources)
-EXTRA_DIST = $(dummysources)
-lib_LTLIBRARIES = $(dummyltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-dummy_la_LDFLAGS = -module -avoid-version -shared
-dummy_la_LIBADD = 
-dummy_la_SOURCES = $(dummybuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/output/dummy/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/output/dummy/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-dummy.la: $(dummy_la_OBJECTS) $(dummy_la_DEPENDENCIES) $(EXTRA_dummy_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(dummy_la_LINK) $(am_dummy_la_rpath) $(dummy_la_OBJECTS) $(dummy_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dummy.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/dummy.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/output/dummy/dummy.cc b/drumgizmo/output/dummy/dummy.cc
deleted file mode 100644
index e60f2b7..0000000
--- a/drumgizmo/output/dummy/dummy.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            audiooutputenginedummy.cc
- *
- *  Sat Apr 30 21:12:02 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-
-class Dummy {
-public:
-  Dummy();
-  ~Dummy();
-  bool init(int channels, char *cnames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre(size_t size);
-  void run(int channel, sample_t* data, size_t size);
-  void post(size_t size);
-
-  size_t samplerate();
-};
-
-Dummy::Dummy()
-{
-}
-
-Dummy::~Dummy()
-{
-}
-
-bool Dummy::init(int channels, char *cnames[])
-{
-  return true;
-}
-
-void Dummy::setParm(std::string parm, std::string value)
-{
-}
-
-bool Dummy::start()
-{
-  return true;
-}
-
-void Dummy::stop()
-{
-}
-
-void Dummy::pre(size_t size)
-{
-}
-
-void Dummy::run(int channel, sample_t* data, size_t size)
-{
-}
-
-void Dummy::post(size_t size)
-{
-}
-
-size_t Dummy::samplerate()
-{
-  return 44100;
-}
-
-extern "C" {
-  void *create()
-  {
-    return new Dummy();
-  }
-  
-  void destroy(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    delete dummy;
-  }
-
-  bool init(void *h, int cs, char *cnames[])
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->init(cs, cnames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->start();
-  }
-
-  void stop(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->stop();
-  }
-
-  void pre(void *h, size_t size)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->pre(size);
-  }
-
-  void run(void *h, int ch, sample_t *data, size_t size)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->run(ch, data, size);
-  }
-
-  void post(void *h, size_t size)
-  {
-    Dummy *dummy = (Dummy*)h;
-    dummy->post(size);
-  }
-
-  size_t samplerate(void *h)
-  {
-    Dummy *dummy = (Dummy*)h;
-    return dummy->samplerate();
-  }
-}
diff --git a/drumgizmo/output/jackaudio.cc b/drumgizmo/output/jackaudio.cc
new file mode 100644
index 0000000..90ac63b
--- /dev/null
+++ b/drumgizmo/output/jackaudio.cc
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            jackaudio.cc
+ *
+ *  Fr 22. Jan 09:43:30 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cassert>
+#include <iostream>
+
+#include "jackaudio.h"
+
+JackAudioOutputEngine::JackAudioOutputEngine(JackClient& client)
+	: AudioOutputEngine{}
+	, client(client)
+	, channels{}
+	, sema{"jackaudio"}
+{
+	client.add(*this);
+}
+
+JackAudioOutputEngine::~JackAudioOutputEngine()
+{
+	client.remove(*this);
+}
+
+bool JackAudioOutputEngine::init(Channels data)
+{
+	channels.clear();
+	channels.reserve(data.size());
+	auto i = 0u;
+	auto const buffer_size = getBufferSize();
+
+	for(auto const& elem : data)
+	{
+		auto name = std::to_string(i) + "-" + elem.name;
+		// initialize new channel
+		channels.emplace_back(client, name, buffer_size);
+
+		if(channels.back().port.port == nullptr)
+		{
+			std::cerr << "[JackAudioOutputEngine] Cannot create jack "
+			          << "port for channel #" << i << "\n";
+			return false;
+		}
+		++i;
+	}
+	return true;
+}
+
+void JackAudioOutputEngine::setParm(std::string parm, std::string value)
+{
+}
+
+bool JackAudioOutputEngine::start()
+{
+	client.activate();
+	return true;
+}
+
+void JackAudioOutputEngine::stop()
+{
+}
+
+void JackAudioOutputEngine::pre(size_t nsamples)
+{
+}
+
+void JackAudioOutputEngine::run(int ch, sample_t* samples, size_t nsamples)
+{
+	for(auto i = 0u; i < nsamples; ++i)
+	{
+		channels[ch].samples[i] = samples[i];
+	}
+}
+
+void JackAudioOutputEngine::post(size_t nsamples)
+{
+	sema.wait();
+}
+
+void JackAudioOutputEngine::process(jack_nframes_t num_frames)
+{
+	assert(num_frames == getBufferSize());
+
+	for(auto& channel : channels)
+	{
+		auto ptr = static_cast<jack_default_audio_sample_t*>(jack_port_get_buffer(channel.port.port, num_frames));
+		for(auto i = 0u; i < num_frames; ++i)
+		{
+			ptr[i] = channel.samples[i];
+		}
+	}
+	sema.post();
+}
+
+size_t JackAudioOutputEngine::getBufferSize()
+{
+	return client.getBufferSize();
+}
+
+size_t JackAudioOutputEngine::samplerate()
+{
+	return client.getSampleRate();
+}
+
+JackAudioOutputEngine::Channel::Channel(JackClient& client,
+                                        const std::string& name,
+                                        std::size_t buffer_size)
+	: port{client, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput}
+	, samples{}
+{
+	samples.resize(buffer_size);
+}
diff --git a/drumgizmo/output/jackaudio.h b/drumgizmo/output/jackaudio.h
new file mode 100644
index 0000000..e22d978
--- /dev/null
+++ b/drumgizmo/output/jackaudio.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            jackaudio.h
+ *
+ *  Fr 22. Jan 09:43:30 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <vector>
+#include <semaphore.h>
+
+#include "audiooutputengine.h"
+#include "../jackclient.h"
+
+class JackAudioOutputEngine
+	: public AudioOutputEngine
+	, public JackProcess
+{
+public:
+	JackAudioOutputEngine(JackClient& client);
+	~JackAudioOutputEngine();
+
+	// based on AudioOutputEngine
+	bool init(Channels chan) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre(size_t nsamples) override;
+	void run(int ch, sample_t* samples, size_t nsamples) override;
+	void post(size_t nsamples) override;
+	size_t getBufferSize() override;
+	size_t samplerate() override;
+
+	// based on JackProcess
+	void process(jack_nframes_t num_frames) override;
+
+private:
+	struct Channel
+	{
+		JackPort port;
+		std::vector<sample_t> samples;
+
+		Channel(JackClient& client, const std::string& name,
+		        std::size_t buffer_size);
+	};
+
+	JackClient& client;
+	std::vector<Channel> channels;
+	Semaphore sema;
+};
diff --git a/drumgizmo/output/jackaudio/Makefile.am b/drumgizmo/output/jackaudio/Makefile.am
deleted file mode 100644
index 46cdb23..0000000
--- a/drumgizmo/output/jackaudio/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-
-jackaudiosources = \
-	jackaudio.cc \
-	$(top_srcdir)/src/semaphore.cc \
-	$(top_srcdir)/hugin/hugin.c
-
-if HAVE_OUTPUT_JACKAUDIO
-
-jackaudioltlibs = jackaudio.la
-jackaudiobuildsources = $(jackaudiosources)
-
-else
-
-jackaudioltlibs =
-jackaudiobuildsources =
-
-endif
-
-EXTRA_DIST = $(jackaudiosources)
-
-lib_LTLIBRARIES = $(jackaudioltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/include $(JACK_CFLAGS) -I$(top_srcdir)/hugin -I$(top_srcdir)/src
-jackaudio_la_LDFLAGS = $(JACK_LIBS) -module -avoid-version -shared
-jackaudio_la_LIBADD =
-jackaudio_la_SOURCES = $(jackaudiobuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/jackaudio.la
diff --git a/drumgizmo/output/jackaudio/Makefile.in b/drumgizmo/output/jackaudio/Makefile.in
deleted file mode 100644
index dfd287b..0000000
--- a/drumgizmo/output/jackaudio/Makefile.in
+++ /dev/null
@@ -1,746 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/output/jackaudio
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-jackaudio_la_DEPENDENCIES =
-am__jackaudio_la_SOURCES_DIST = jackaudio.cc \
-	$(top_srcdir)/src/semaphore.cc $(top_srcdir)/hugin/hugin.c
-am__objects_1 = jackaudio.lo semaphore.lo hugin.lo
- at HAVE_OUTPUT_JACKAUDIO_TRUE@am__objects_2 = $(am__objects_1)
-am_jackaudio_la_OBJECTS = $(am__objects_2)
-jackaudio_la_OBJECTS = $(am_jackaudio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-jackaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(jackaudio_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_OUTPUT_JACKAUDIO_TRUE@am_jackaudio_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(jackaudio_la_SOURCES)
-DIST_SOURCES = $(am__jackaudio_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(OUTPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-jackaudiosources = \
-	jackaudio.cc \
-	$(top_srcdir)/src/semaphore.cc \
-	$(top_srcdir)/hugin/hugin.c
-
- at HAVE_OUTPUT_JACKAUDIO_FALSE@jackaudioltlibs = 
- at HAVE_OUTPUT_JACKAUDIO_TRUE@jackaudioltlibs = jackaudio.la
- at HAVE_OUTPUT_JACKAUDIO_FALSE@jackaudiobuildsources = 
- at HAVE_OUTPUT_JACKAUDIO_TRUE@jackaudiobuildsources = $(jackaudiosources)
-EXTRA_DIST = $(jackaudiosources)
-lib_LTLIBRARIES = $(jackaudioltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/include $(JACK_CFLAGS) -I$(top_srcdir)/hugin -I$(top_srcdir)/src
-jackaudio_la_LDFLAGS = $(JACK_LIBS) -module -avoid-version -shared
-jackaudio_la_LIBADD = 
-jackaudio_la_SOURCES = $(jackaudiobuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/output/jackaudio/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/output/jackaudio/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-jackaudio.la: $(jackaudio_la_OBJECTS) $(jackaudio_la_DEPENDENCIES) $(EXTRA_jackaudio_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(jackaudio_la_LINK) $(am_jackaudio_la_rpath) $(jackaudio_la_OBJECTS) $(jackaudio_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jackaudio.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/semaphore.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-hugin.lo: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-semaphore.lo: $(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT semaphore.lo -MD -MP -MF $(DEPDIR)/semaphore.Tpo -c -o semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/semaphore.Tpo $(DEPDIR)/semaphore.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='semaphore.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/jackaudio.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/output/jackaudio/jackaudio.cc b/drumgizmo/output/jackaudio/jackaudio.cc
deleted file mode 100644
index 5c04146..0000000
--- a/drumgizmo/output/jackaudio/jackaudio.cc
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            jackaudio.cc
- *
- *  Sat Apr 30 21:11:54 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <string>
-#include <audiotypes.h>
-#include <semaphore.h>
-#include <stdlib.h>
-
-#define NOTE_ON 0x90
-
-#include "../../jackclient.h"
-#include <stdio.h>
-
-class JackAudio : public JackProcess {
-public:
-  JackAudio();
-  ~JackAudio();
-  bool init(int channels, char *cnames[]);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre(size_t size);
-  void run(int channel, sample_t* data, size_t size);
-  void post(size_t size);
-
-  void jack_process(jack_nframes_t nframes);
-
-  size_t bufsize();
-  size_t samplerate();
-
-private:
-  JackClient *jackclient;
-  jack_port_t *output_port[64];
-  size_t nchannels;
-  sample_t **channels;
-  Semaphore sem;
-};
-
-JackAudio::JackAudio() : sem("jackaudio")
-{
-}
-
-JackAudio::~JackAudio()
-{
-}
-
-bool JackAudio::init(int nchannels, char *cnames[])
-{
-  this->nchannels = nchannels;
-  channels = (sample_t**)malloc(nchannels * sizeof(sample_t*));
-
-  for(int i = 0; i < nchannels; i++) {
-    char buf[32];
-    sprintf(buf, "%d", i + 1);
-    std::string name;
-    name += buf;
-    name += "-";
-    name += cnames[i];
-    output_port[i] = jack_port_register(jackclient->jack_client,
-                                        name.c_str(),
-                                        JACK_DEFAULT_AUDIO_TYPE,
-                                        JackPortIsOutput, 0);
-    channels[i] = (sample_t*)malloc(bufsize() * sizeof(sample_t));
-  }
-  return true;
-}
-
-void JackAudio::setParm(std::string parm, std::string value)
-{
-  if(parm == "jack_client") {
-    sscanf(value.c_str(), "%p", &jackclient);
-    if(jackclient) jackclient->addJackProcess(this);
-  }
-}
-
-bool JackAudio::start()
-{
-  //jackclient->activate();
-  return true;
-}
-
-void JackAudio::stop()
-{
-}
-
-void JackAudio::pre(size_t size)
-{
-}
-
-void JackAudio::run(int channel, sample_t* data, size_t size)
-{
-  // Copy engine data to ringbuffer.
-  for(size_t i = 0; i < size; i++) {
-    channels[channel][i] = data[i];
-  }
-}
-
-void JackAudio::post(size_t size)
-{
-  sem.wait();
-}
-
-void JackAudio::jack_process(jack_nframes_t nframes)
-{
-  //printf("o"); fflush(stdout);
-  for(size_t c = 0; c < nchannels; c++) {
-    jack_default_audio_sample_t *out =
-      (jack_default_audio_sample_t *) jack_port_get_buffer(output_port[c],
-                                                           nframes);
-    for(size_t i = 0; i < nframes; i++) {
-      out[i] = channels[c][i];
-    }
-  }
-  sem.post();
-}
-
-size_t JackAudio::bufsize()
-{
-  return jack_get_buffer_size(jackclient->jack_client);
-}
-
-size_t JackAudio::samplerate()
-{
-  return jack_get_sample_rate(jackclient->jack_client);
-}
-
-extern "C" {
-  void *create()
-  {
-    return new JackAudio();
-  }
-  
-  void destroy(void *h)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    delete jack;
-  }
-
-  bool init(void *h, int cs, char *cnames[])
-  {
-    JackAudio *jack = (JackAudio*)h;
-    return jack->init(cs, cnames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    jack->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    return jack->start();
-  }
-
-  void stop(void *h)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    jack->stop();
-  }
-
-  void pre(void *h, size_t s)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    jack->pre(s);
-  }
-
-  void run(void *h, int ch, sample_t *data, size_t size)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    jack->run(ch, data, size);
-  }
-
-  void post(void *h, size_t s)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    jack->post(s);
-  }
-
-  size_t bufsize(void *h)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    return jack->bufsize();
-  }
-
-  size_t samplerate(void *h)
-  {
-    JackAudio *jack = (JackAudio*)h;
-    return jack->samplerate();
-  }
-}
diff --git a/drumgizmo/output/outputdummy.cc b/drumgizmo/output/outputdummy.cc
new file mode 100644
index 0000000..2edcc28
--- /dev/null
+++ b/drumgizmo/output/outputdummy.cc
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            outputdummy.cc
+ *
+ *  Fr 22. Jan 08:15:04 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "outputdummy.h"
+
+DummyOutputEngine::DummyOutputEngine()
+{
+}
+
+DummyOutputEngine::~DummyOutputEngine()
+{
+}
+
+bool DummyOutputEngine::init(Channels data)
+{
+	return true;
+}
+
+void DummyOutputEngine::setParm(std::string parm, std::string value)
+{
+}
+
+bool DummyOutputEngine::start()
+{
+	return true;
+}
+
+void DummyOutputEngine::stop()
+{
+}
+
+void DummyOutputEngine::pre(size_t nsamples)
+{
+}
+
+void DummyOutputEngine::run(int ch, sample_t* samples, size_t nsamples)
+{
+}
+
+void DummyOutputEngine::post(size_t nsamples)
+{
+}
diff --git a/drumgizmo/output/outputdummy.h b/drumgizmo/output/outputdummy.h
new file mode 100644
index 0000000..023ba42
--- /dev/null
+++ b/drumgizmo/output/outputdummy.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            outputdummy.h
+ *
+ *  Fr 22. Jan 08:15:04 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include "audiooutputengine.h"
+
+class DummyOutputEngine
+	: public AudioOutputEngine
+{
+public:
+	DummyOutputEngine();
+	~DummyOutputEngine();
+
+	// based on AudioOutputEngine
+	bool init(Channels chan) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre(size_t nsamples) override;
+	void run(int ch, sample_t* samples, size_t nsamples) override;
+	void post(size_t nsamples) override;
+};
diff --git a/drumgizmo/output/wavfile.cc b/drumgizmo/output/wavfile.cc
new file mode 100644
index 0000000..b19f700
--- /dev/null
+++ b/drumgizmo/output/wavfile.cc
@@ -0,0 +1,131 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            wavfile.cc
+ *
+ *  Mi 20. Jan 16:57:16 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <iostream>
+
+#include "wavfile.h"
+
+WavfileOutputEngine::WavfileOutputEngine()
+	: AudioOutputEngine{}
+	, info{}
+	, channels{}
+	, file{"output"}
+{
+	info.samplerate = 44100;
+	info.channels = 1;
+	info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
+}
+
+WavfileOutputEngine::~WavfileOutputEngine()
+{
+	for(auto& ptr : channels)
+	{
+		if(ptr != nullptr)
+		{
+			sf_close(ptr);
+		}
+	}
+}
+
+bool WavfileOutputEngine::init(Channels data)
+{
+	channels.clear();
+	channels.resize(data.size()); // value-initialized with null
+	for(auto i = 0u; i < data.size(); ++i)
+	{
+		// write channel to file
+		auto fname = file + data[i].name + "-" + std::to_string(i) + ".wav";
+		channels[i] = sf_open(fname.c_str(), SFM_WRITE, &info);
+		if(channels[i] == nullptr)
+		{
+			std::cerr << "[WaffileOutputEngine] Failed to initialize "
+			          << "channel #" << i << "\n";
+			return false;
+		}
+	}
+	return true;
+}
+
+void WavfileOutputEngine::setParm(std::string parm, std::string value)
+{
+	if(parm == "file")
+	{
+		// apply output filename prefix
+		file = value;
+	}
+	else if(parm == "srate")
+	{
+		// try to apply samplerate
+		try
+		{
+			info.samplerate = std::stoi(value);
+		}
+		catch(...)
+		{
+			std::cerr << "[WavfileOutputEngine] Invalid samplerate " << value
+			          << "\n";
+		}
+	}
+	else
+	{
+		std::cerr << "[WavfileOutputEngine] Unsupported parameter '" << parm
+		          << "'\n";
+	}
+}
+
+bool WavfileOutputEngine::start()
+{
+	return true;
+}
+
+void WavfileOutputEngine::stop()
+{
+}
+
+void WavfileOutputEngine::pre(size_t nsamples)
+{
+}
+
+void WavfileOutputEngine::run(int ch, sample_t* samples, size_t nsamples)
+{
+	if(static_cast<unsigned int>(ch) >= channels.size())
+	{
+		std::cerr << "[WavfileOutputEngine] cannot access channel #" << ch
+		          << " (" << channels.size() << " channels available)\n";
+		return;
+	}
+
+	sf_writef_float(channels[ch], samples, nsamples);
+}
+
+void WavfileOutputEngine::post(size_t nsamples)
+{
+}
+
+size_t WavfileOutputEngine::samplerate()
+{
+	return info.samplerate;
+}
diff --git a/drumgizmo/output/wavfile.h b/drumgizmo/output/wavfile.h
new file mode 100644
index 0000000..1dddfa1
--- /dev/null
+++ b/drumgizmo/output/wavfile.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            wavfile.h
+ *
+ *  Mi 20. Jan 16:57:16 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+#include <string>
+#include <vector>
+
+#include <sndfile.h>
+
+#include "audiooutputengine.h"
+
+class WavfileOutputEngine
+	: public AudioOutputEngine
+{
+public:
+	WavfileOutputEngine();
+	~WavfileOutputEngine();
+
+	// based on AudioOutputEngine
+	bool init(Channels data) override;
+	void setParm(std::string parm, std::string value) override;
+	bool start() override;
+	void stop() override;
+	void pre(size_t nsamples) override;
+	void run(int ch, sample_t* samples, size_t nsamples) override;
+	void post(size_t nsamples) override;
+	size_t samplerate() override;
+
+private:
+	SF_INFO info;
+	std::vector<SNDFILE*> channels;
+	size_t num_channels;
+
+	std::string file;
+};
diff --git a/drumgizmo/output/wavfile/Makefile.am b/drumgizmo/output/wavfile/Makefile.am
deleted file mode 100644
index ad26294..0000000
--- a/drumgizmo/output/wavfile/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-wavfilesources = \
-	wavfile.cc
-
-if HAVE_OUTPUT_WAVFILE
-
-wavfileltlibs = wavfile.la
-wavfilebuildsources = $(wavfilesources)
-
-else
-
-wavfileltlibs =
-wavfilebuildsources =
-
-endif
-
-EXTRA_DIST = $(wavfilesources)
-
-lib_LTLIBRARIES = $(wavfileltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SNDFILE_CFLAGS)
-wavfile_la_LDFLAGS = $(SNDFILE_LIBS) -module -avoid-version -shared
-wavfile_la_LIBADD =
-wavfile_la_SOURCES = $(wavfilebuildsources)
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/wavfile.la
diff --git a/drumgizmo/output/wavfile/Makefile.in b/drumgizmo/output/wavfile/Makefile.in
deleted file mode 100644
index e319d4f..0000000
--- a/drumgizmo/output/wavfile/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = drumgizmo/output/wavfile
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-wavfile_la_DEPENDENCIES =
-am__wavfile_la_SOURCES_DIST = wavfile.cc
-am__objects_1 = wavfile.lo
- at HAVE_OUTPUT_WAVFILE_TRUE@am__objects_2 = $(am__objects_1)
-am_wavfile_la_OBJECTS = $(am__objects_2)
-wavfile_la_OBJECTS = $(am_wavfile_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-wavfile_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(wavfile_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_OUTPUT_WAVFILE_TRUE@am_wavfile_la_rpath = -rpath $(libdir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(wavfile_la_SOURCES)
-DIST_SOURCES = $(am__wavfile_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = $(OUTPUT_PLUGIN_DIR)
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-wavfilesources = \
-	wavfile.cc
-
- at HAVE_OUTPUT_WAVFILE_FALSE@wavfileltlibs = 
- at HAVE_OUTPUT_WAVFILE_TRUE@wavfileltlibs = wavfile.la
- at HAVE_OUTPUT_WAVFILE_FALSE@wavfilebuildsources = 
- at HAVE_OUTPUT_WAVFILE_TRUE@wavfilebuildsources = $(wavfilesources)
-EXTRA_DIST = $(wavfilesources)
-lib_LTLIBRARIES = $(wavfileltlibs)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SNDFILE_CFLAGS)
-wavfile_la_LDFLAGS = $(SNDFILE_LIBS) -module -avoid-version -shared
-wavfile_la_LIBADD = 
-wavfile_la_SOURCES = $(wavfilebuildsources)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu drumgizmo/output/wavfile/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu drumgizmo/output/wavfile/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-wavfile.la: $(wavfile_la_OBJECTS) $(wavfile_la_DEPENDENCIES) $(EXTRA_wavfile_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(wavfile_la_LINK) $(am_wavfile_la_rpath) $(wavfile_la_OBJECTS) $(wavfile_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wavfile.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-libLTLIBRARIES
-
-
-install-exec-hook:
-	rm -f $(DESTDIR)$(libdir)/wavfile.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/drumgizmo/output/wavfile/wavfile.cc b/drumgizmo/output/wavfile/wavfile.cc
deleted file mode 100644
index fa4128e..0000000
--- a/drumgizmo/output/wavfile/wavfile.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            wavfile.cc
- *
- *  Sat Apr 30 21:12:02 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-
-#include <sndfile.h>
-
-#define T(x, msg) if(x < 0) { printf("%s failed: %s\n", msg, snd_strerror(x)); fflush(stdout); return false; }
-
-class WavFile {
-public:
-  WavFile();
-  ~WavFile();
-  bool init(int channels, char *cnames[]);
-  void setParm(std::string parm, std::string value);
-  bool start();
-  void stop();
-  void pre(size_t size);
-  void run(int channel, sample_t* data, size_t size);
-  void post(size_t size);
-  size_t samplerate();
-
-private:
-  SF_INFO sf_info;
-  SNDFILE **fh;
-  size_t channels;
-
-  // Parameters
-  std::string filename;
-};
-
-WavFile::WavFile()
-{
-  fh = NULL;
-  filename = "output";
-
-  sf_info.channels = 1;//channels;
-  sf_info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
-  sf_info.samplerate = 44100;
-}
-
-WavFile::~WavFile()
-{
-  if(fh == NULL) return;
-
-  for(size_t i = 0; i < channels; i++) {
-    if(fh[i]) sf_close(fh[i]);
-  }
-
-  if(fh) free(fh);
-}
-
-bool WavFile::init(int channels, char *cnames[])
-{
-  this->channels = channels;
-
-  fh = (SNDFILE **)malloc(sizeof(SNDFILE *)*channels);
-
-  for(size_t i = 0; i < this->channels; i++) fh[i] = NULL;
-
-  for(size_t i = 0; i < this->channels; i++) {
-    char fname[512];
-
-    sprintf(fname, "%s%s-%d.wav", filename.c_str(), cnames[i], (int)i);
-    //    printf("[%s]\n", fname);
-
-    fh[i] = sf_open(fname, SFM_WRITE, &sf_info);
-    if(!fh[i]) {
-      printf("Write error...\n");
-      return false;
-    }
-  }
-
-  return true;
-}
-
-void WavFile::setParm(std::string parm, std::string value)
-{
-  if(parm == "file") filename = value;
-  if(parm == "srate") sf_info.samplerate = atoi(value.c_str());
-}
-
-bool WavFile::start()
-{
-  return true;
-}
-
-void WavFile::stop()
-{
-}
-
-void WavFile::pre(size_t size)
-{
-}
-
-void WavFile::run(int channel, sample_t* cdata, size_t csize)
-{
-  if(channel < (int)channels) sf_writef_float(fh[channel], cdata, csize); 
-}
-
-void WavFile::post(size_t size)
-{
-}
-
-size_t WavFile::samplerate()
-{
-  return sf_info.samplerate;
-}
-
-extern "C" {
-  void *create()
-  {
-    return new WavFile();
-  }
-  
-  void destroy(void *h)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    delete sndfile;
-  }
-
-  bool init(void *h, int cs, char *cnames[])
-  {
-    WavFile *sndfile = (WavFile*)h;
-    return sndfile->init(cs, cnames);
-  }
-
-  void setparm(void *h, const char *parm, const char *value)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    sndfile->setParm(parm, value);
-  }
-
-  bool start(void *h)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    return sndfile->start();
-  }
-
-  void stop(void *h)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    sndfile->stop();
-  }
-
-  void pre(void *h, size_t s)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    sndfile->pre(s);
-  }
-
-  void run(void *h, int ch, sample_t *data, size_t size)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    sndfile->run(ch, data, size);
-  }
-
-  void post(void *h, size_t s)
-  {
-    WavFile *sndfile = (WavFile*)h;
-    sndfile->post(s);
-  }
-
-  size_t samplerate(void *h)
-  {
-    WavFile *wavfile = (WavFile*)h;
-    return wavfile->samplerate();
-  }
-}
diff --git a/hugin/hugin_filter.c b/hugin/hugin_filter.c
new file mode 100644
index 0000000..8297c91
--- /dev/null
+++ b/hugin/hugin_filter.c
@@ -0,0 +1,135 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ *            debug_filter.c
+ *
+ *  Fri Dec  7 14:24:27 CET 2012
+ *  Copyright 2012 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of Hugin.
+ *
+ *  Hugin 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 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Hugin 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 Hugin; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "hugin_filter.h"
+
+#ifndef DISABLE_HUGIN
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef WITH_HUG_FILTER
+#warning hugin_filter.c compiled but WITH_HUG_FILTER not defined
+#endif
+
+#define NELEM(x)	(sizeof(x)/sizeof((x)[0]))
+struct __debug_channel
+{
+	char name[32];
+	unsigned flags;
+};
+
+#define __DEBUG_CHANNEL_MAX 256
+
+static struct __debug_channel debug_channel[__DEBUG_CHANNEL_MAX];
+static unsigned n_debug_channel = 0;
+
+// Default is to enable everything...
+static unsigned debug_flags = 0xffffffff;//(1<<__class_err)|(1<<__class_fixme);
+
+int hug_filter_enabled(const enum __debug_class cl, const char *ch)
+{
+	unsigned i;
+	for(i = 0; i < n_debug_channel; i++) {
+		if(!strcmp(ch, debug_channel[i].name)) {
+			return (debug_channel[i].flags & (1 << cl)) != 0;
+		}
+	}
+	return debug_flags & (1 << cl);
+}
+
+/*
+ * fmt := [set[,set]*]*
+ * set := [+-]channel
+ *     |  class[+-]channel
+ *     |  [+-]all
+ */
+int hug_filter_parse(const char *filter)
+{
+	char *s;
+	char *next;
+	char *opt;
+
+  // NOTE: This must be identical to the debug_class_str in debug.c
+  const char * const debug_class_str[] =
+    { "fixme", "err", "warn", "info", "debug" };
+
+	if(!(s = strdup(filter))) return 1;
+
+	for(opt = s; opt; opt = next) {
+		int set = 0;
+		int clr = 0;
+		unsigned i;
+		if((next = strchr(opt, ','))) *next++ = '\0';
+		char *p = opt + strcspn(opt, "+-");
+		if(!*p) p = opt;	// All chars -> a channel name
+		if(p > opt) {
+			// we have a class
+			for(i = 0; i < NELEM(debug_class_str); i++) {
+				int n = strlen(debug_class_str[i]);
+				if(n != (p - opt)) continue;
+				if(!memcmp(opt, debug_class_str[i], n)) {
+					// Found the class
+					if(*p == '+')
+						set = 1 << i;
+					else
+						clr = 1 << i;
+					break;
+				}
+			}
+			if(i == NELEM(debug_class_str)) continue;
+		} else {
+			if(*p == '-')
+				clr = ~0;
+			else
+				set = ~0;
+		}
+		if(*p == '+' || *p == '-') p++;
+		if(!*p) continue;
+		if(!strcmp("all", p)) {
+			debug_flags = (debug_flags & ~clr) | set;
+		} else {
+			if(strlen(p) >= sizeof(debug_channel[0].name)) continue;
+			for(i = 0; i < n_debug_channel; i++) {
+				if(!strcmp(p, debug_channel[i].name)) {
+					debug_channel[i].flags = (debug_channel[i].flags & ~clr) | set;
+					break;
+				}
+			}
+			if(i == n_debug_channel && n_debug_channel < __DEBUG_CHANNEL_MAX) {
+				strcpy(debug_channel[i].name, p);
+				debug_channel[i].flags = (debug_flags & ~clr) | set;
+				n_debug_channel++;
+			}
+		}
+	}
+	free(s);
+
+  return 0;
+}
+
+#endif/*DISABLE_HUGIN*/
diff --git a/hugin/hugin.hpp b/hugin/hugin_filter.h
similarity index 77%
copy from hugin/hugin.hpp
copy to hugin/hugin_filter.h
index cfd0983..b15d816 100644
--- a/hugin/hugin.hpp
+++ b/hugin/hugin_filter.h
@@ -1,9 +1,9 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set et sw=2 ts=2: */
 /***************************************************************************
- *            hugin.hpp
+ *            hugin_filter.h
  *
- *  Thu Nov  1 13:38:47 CET 2012
+ *  Fri Dec  7 14:24:27 CET 2012
  *  Copyright 2012 Bent Bisballe Nyeng
  *  deva at aasimon.org
  ****************************************************************************/
@@ -25,15 +25,16 @@
  *  along with Hugin; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __HUGIN_HUGIN_HPP__
-#define __HUGIN_HUGIN_HPP__
+#ifndef __HUGIN_HUGIN_FILTER_H__
+#define __HUGIN_HUGIN_FILTER_H__
+
+#ifndef DISABLE_HUGIN
 
-#ifdef __cplusplus
-extern "C" {
-#endif
 #include "hugin.h"
-#ifdef __cplusplus
-}
-#endif
 
-#endif/*__HUGIN_HUGIN_HPP__*/
+int hug_filter_enabled(const enum __debug_class cl, const char *ch);
+int hug_filter_parse(const char *filter);
+
+#endif/*DISABLE_HUGIN*/
+
+#endif/*__HUGIN_HUGIN_FILTER_H__*/
diff --git a/include/Makefile.in b/include/Makefile.in
index fc771ff..56b9f1a 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -145,7 +145,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -209,8 +209,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/include/audiotypes.h b/include/audiotypes.h
index f2bd279..9efe6c5 100644
--- a/include/audiotypes.h
+++ b/include/audiotypes.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/include/event.h b/include/event.h
index 7447f0d..f8bced3 100644
--- a/include/event.h
+++ b/include/event.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -31,9 +31,9 @@
 #define TYPE_STOP  1
 
 typedef struct {
-  int type;
-  int instrument;
-  int offset;
+  size_t type;
+  size_t instrument;
+  size_t offset;
   float velocity;
 } event_t;
 
diff --git a/lv2/Makefile.am b/lv2/Makefile.am
deleted file mode 100644
index 09ef24c..0000000
--- a/lv2/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-include $(top_srcdir)/plugingui/Makefile.am.plugingui
-include $(top_srcdir)/src/Makefile.am.drumgizmo
-
-plugindir = $(libdir)/lv2/drumgizmo.lv2
-
-if ENABLE_LV2
-plugin_LTLIBRARIES = drumgizmo.la
-endif
-
-plugin_DATA = manifest.ttl drumgizmo.ttl
-
-EXTRA_DIST = \
-	$(plugin_DATA) \
-	input_lv2.h \
-	output_lv2.h \
-	lv2_event.h \
-	lv2_gui.h \
-	lv2_instance.h
-
-drumgizmo_la_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \
-	-I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \
-	$(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(LV2_CFLAGS) \
-	$(PLUGIN_GUI_CFLAGS) $(SSEFLAGS) $(ZITA_CPPFLAGS) \
-	-DUSE_THREAD $(SAMPLERATE_CFLAGS)
-
-drumgizmo_la_SOURCES = \
-	$(DRUMGIZMO_SOURCES) \
-	$(PLUGIN_GUI_SOURCES) \
-	lv2.cc \
-	lv2_gui.cc \
-	input_lv2.cc \
-	output_lv2.cc
-
-drumgizmo_la_LDFLAGS = -module -avoid-version
-drumgizmo_la_LIBADD = $(LV2_LIBS) $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
-
diff --git a/lv2/Makefile.in b/lv2/Makefile.in
deleted file mode 100644
index 7df306c..0000000
--- a/lv2/Makefile.in
+++ /dev/null
@@ -1,1409 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(top_srcdir)/plugingui/Makefile.am.plugingui \
-	$(top_srcdir)/src/Makefile.am.drumgizmo $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(top_srcdir)/depcomp
-subdir = lv2
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-drumgizmo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3)
-am__objects_1 = drumgizmo_la-audioinputenginemidi.lo \
-	drumgizmo_la-audiofile.lo drumgizmo_la-channel.lo \
-	drumgizmo_la-channelmixer.lo drumgizmo_la-chresampler.lo \
-	drumgizmo_la-configuration.lo drumgizmo_la-configparser.lo \
-	drumgizmo_la-drumgizmo.lo drumgizmo_la-drumkit.lo \
-	drumgizmo_la-drumkitloader.lo drumgizmo_la-drumkitparser.lo \
-	drumgizmo_la-events.lo drumgizmo_la-instrument.lo \
-	drumgizmo_la-instrumentparser.lo \
-	drumgizmo_la-messagehandler.lo drumgizmo_la-messagereceiver.lo \
-	drumgizmo_la-midimapparser.lo drumgizmo_la-midimapper.lo \
-	drumgizmo_la-mutex.lo drumgizmo_la-path.lo \
-	drumgizmo_la-powerlist.lo drumgizmo_la-sample.lo \
-	drumgizmo_la-semaphore.lo drumgizmo_la-saxparser.lo \
-	drumgizmo_la-thread.lo drumgizmo_la-velocity.lo \
-	drumgizmo_la-versionstr.lo
-am__objects_2 =
-am__objects_3 = hugin.lo hugin_syslog.lo $(am__objects_2) \
-	drumgizmo_la-nativewindow_x11.lo \
-	drumgizmo_la-nativewindow_win32.lo drumgizmo_la-plugingui.lo \
-	drumgizmo_la-label.lo drumgizmo_la-eventhandler.lo \
-	drumgizmo_la-font.lo drumgizmo_la-window.lo \
-	drumgizmo_la-widget.lo drumgizmo_la-colour.lo \
-	drumgizmo_la-painter.lo drumgizmo_la-button.lo \
-	drumgizmo_la-pixelbuffer.lo drumgizmo_la-lineedit.lo \
-	drumgizmo_la-led.lo drumgizmo_la-checkbox.lo \
-	drumgizmo_la-slider.lo drumgizmo_la-scrollbar.lo \
-	drumgizmo_la-listbox.lo drumgizmo_la-listboxthin.lo \
-	drumgizmo_la-listboxbasic.lo drumgizmo_la-knob.lo \
-	drumgizmo_la-filebrowser.lo drumgizmo_la-directory.lo \
-	drumgizmo_la-pluginconfig.lo drumgizmo_la-image.lo \
-	drumgizmo_la-combobox.lo drumgizmo_la-progressbar.lo \
-	drumgizmo_la-verticalline.lo drumgizmo_la-resource.lo \
-	drumgizmo_la-resource_data.lo drumgizmo_la-lodepng.lo
-am_drumgizmo_la_OBJECTS = $(am__objects_1) $(am__objects_3) \
-	drumgizmo_la-lv2.lo drumgizmo_la-lv2_gui.lo \
-	drumgizmo_la-input_lv2.lo drumgizmo_la-output_lv2.lo
-drumgizmo_la_OBJECTS = $(am_drumgizmo_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-drumgizmo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(drumgizmo_la_CXXFLAGS) \
-	$(CXXFLAGS) $(drumgizmo_la_LDFLAGS) $(LDFLAGS) -o $@
- at ENABLE_LV2_TRUE@am_drumgizmo_la_rpath = -rpath $(plugindir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(drumgizmo_la_SOURCES)
-DIST_SOURCES = $(drumgizmo_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DATA = $(plugin_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-puglsources = 
-PLUGIN_GUI_SOURCES = \
-	$(top_srcdir)/hugin/hugin.c \
-	$(top_srcdir)/hugin/hugin_syslog.c \
-	$(puglsources) \
-	$(top_srcdir)/plugingui/nativewindow_x11.cc \
-	$(top_srcdir)/plugingui/nativewindow_win32.cc \
-	$(top_srcdir)/plugingui/plugingui.cc \
-	$(top_srcdir)/plugingui/label.cc \
-	$(top_srcdir)/plugingui/eventhandler.cc \
-	$(top_srcdir)/plugingui/font.cc \
-	$(top_srcdir)/plugingui/window.cc \
-	$(top_srcdir)/plugingui/widget.cc \
-	$(top_srcdir)/plugingui/colour.cc \
-	$(top_srcdir)/plugingui/painter.cc \
-	$(top_srcdir)/plugingui/button.cc \
-	$(top_srcdir)/plugingui/pixelbuffer.cc \
-	$(top_srcdir)/plugingui/lineedit.cc \
-	$(top_srcdir)/plugingui/led.cc \
-	$(top_srcdir)/plugingui/checkbox.cc \
-	$(top_srcdir)/plugingui/slider.cc \
-	$(top_srcdir)/plugingui/scrollbar.cc \
-	$(top_srcdir)/plugingui/listbox.cc \
-	$(top_srcdir)/plugingui/listboxthin.cc \
-	$(top_srcdir)/plugingui/listboxbasic.cc \
-	$(top_srcdir)/plugingui/knob.cc \
-	$(top_srcdir)/plugingui/filebrowser.cc \
-	$(top_srcdir)/plugingui/directory.cc \
-	$(top_srcdir)/plugingui/pluginconfig.cc \
-	$(top_srcdir)/plugingui/image.cc \
-	$(top_srcdir)/plugingui/combobox.cc \
-	$(top_srcdir)/plugingui/progressbar.cc \
-	$(top_srcdir)/plugingui/verticalline.cc \
-	$(top_srcdir)/plugingui/resource.cc \
-	$(top_srcdir)/plugingui/resource_data.cc \
-	$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-
-PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS) $(ZLIB_LIBS)
-PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) $(ZLIB_CFLAGS) -I$(top_srcdir)/hugin \
-									-DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
-									-I$(top_srcdir)/pugl/pugl \
-									-DLODEPNG_NO_COMPILE_ENCODER \
-									-DLODEPNG_NO_COMPILE_DISK \
-									-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
-									-DLODEPNG_NO_COMPILE_ERROR_TEXT \
-									-DLODEPNG_NO_COMPILE_CPP
-
-DRUMGIZMO_SOURCES = \
-	$(top_srcdir)/src/audioinputenginemidi.cc \
-	$(top_srcdir)/src/audiofile.cc \
-	$(top_srcdir)/src/channel.cc \
-	$(top_srcdir)/src/channelmixer.cc \
-	$(top_srcdir)/src/chresampler.cc \
-	$(top_srcdir)/src/configuration.cc \
-	$(top_srcdir)/src/configparser.cc \
-	$(top_srcdir)/src/drumgizmo.cc \
-	$(top_srcdir)/src/drumkit.cc \
-	$(top_srcdir)/src/drumkitloader.cc \
-	$(top_srcdir)/src/drumkitparser.cc \
-	$(top_srcdir)/src/events.cc \
-	$(top_srcdir)/src/instrument.cc \
-	$(top_srcdir)/src/instrumentparser.cc \
-	$(top_srcdir)/src/messagehandler.cc \
-	$(top_srcdir)/src/messagereceiver.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/mutex.cc \
-	$(top_srcdir)/src/path.cc \
-	$(top_srcdir)/src/powerlist.cc \
-	$(top_srcdir)/src/sample.cc \
-	$(top_srcdir)/src/semaphore.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/src/thread.cc \
-	$(top_srcdir)/src/velocity.cc \
-	$(top_srcdir)/src/versionstr.cc
-
-DRUMGIZMO_LIBS = $(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS)
-plugindir = $(libdir)/lv2/drumgizmo.lv2
- at ENABLE_LV2_TRUE@plugin_LTLIBRARIES = drumgizmo.la
-plugin_DATA = manifest.ttl drumgizmo.ttl
-EXTRA_DIST = \
-	$(plugin_DATA) \
-	input_lv2.h \
-	output_lv2.h \
-	lv2_event.h \
-	lv2_gui.h \
-	lv2_instance.h
-
-drumgizmo_la_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \
-	-I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \
-	$(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(LV2_CFLAGS) \
-	$(PLUGIN_GUI_CFLAGS) $(SSEFLAGS) $(ZITA_CPPFLAGS) \
-	-DUSE_THREAD $(SAMPLERATE_CFLAGS)
-
-drumgizmo_la_SOURCES = \
-	$(DRUMGIZMO_SOURCES) \
-	$(PLUGIN_GUI_SOURCES) \
-	lv2.cc \
-	lv2_gui.cc \
-	input_lv2.cc \
-	output_lv2.cc
-
-drumgizmo_la_LDFLAGS = -module -avoid-version
-drumgizmo_la_LIBADD = $(LV2_LIBS) $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .cpp .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lv2/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu lv2/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-$(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-drumgizmo.la: $(drumgizmo_la_OBJECTS) $(drumgizmo_la_DEPENDENCIES) $(EXTRA_drumgizmo_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(drumgizmo_la_LINK) $(am_drumgizmo_la_rpath) $(drumgizmo_la_OBJECTS) $(drumgizmo_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiofile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audioinputenginemidi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-button.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-channel.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-channelmixer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-checkbox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-chresampler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-colour.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-combobox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-configparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-configuration.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-directory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumgizmo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkitloader.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkitparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-eventhandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-events.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-filebrowser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-font.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-image.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-input_lv2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-instrument.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-instrumentparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-knob.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-label.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-led.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lineedit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listbox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listboxbasic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listboxthin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lodepng.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lv2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lv2_gui.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-messagehandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-messagereceiver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-midimapparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-midimapper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-mutex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-nativewindow_win32.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-nativewindow_x11.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-output_lv2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-painter.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-path.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-pixelbuffer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-pluginconfig.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-plugingui.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-powerlist.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-progressbar.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-resource.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-resource_data.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-sample.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-saxparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-scrollbar.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-semaphore.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-slider.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-thread.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-velocity.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-versionstr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-verticalline.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-widget.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-window.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin_syslog.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-hugin.lo: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
-
-hugin_syslog.lo: $(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin_syslog.lo -MD -MP -MF $(DEPDIR)/hugin_syslog.Tpo -c -o hugin_syslog.lo `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin_syslog.Tpo $(DEPDIR)/hugin_syslog.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_syslog.c' object='hugin_syslog.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin_syslog.lo `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-drumgizmo_la-audioinputenginemidi.lo: $(top_srcdir)/src/audioinputenginemidi.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audioinputenginemidi.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Tpo -c -o drumgizmo_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Tpo $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='drumgizmo_la-audioinputenginemidi.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
-
-drumgizmo_la-audiofile.lo: $(top_srcdir)/src/audiofile.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiofile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiofile.Tpo -c -o drumgizmo_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiofile.Tpo $(DEPDIR)/drumgizmo_la-audiofile.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='drumgizmo_la-audiofile.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
-
-drumgizmo_la-channel.lo: $(top_srcdir)/src/channel.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-channel.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-channel.Tpo -c -o drumgizmo_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-channel.Tpo $(DEPDIR)/drumgizmo_la-channel.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='drumgizmo_la-channel.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
-
-drumgizmo_la-channelmixer.lo: $(top_srcdir)/src/channelmixer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-channelmixer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-channelmixer.Tpo -c -o drumgizmo_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-channelmixer.Tpo $(DEPDIR)/drumgizmo_la-channelmixer.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='drumgizmo_la-channelmixer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
-
-drumgizmo_la-chresampler.lo: $(top_srcdir)/src/chresampler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-chresampler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-chresampler.Tpo -c -o drumgizmo_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-chresampler.Tpo $(DEPDIR)/drumgizmo_la-chresampler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='drumgizmo_la-chresampler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
-
-drumgizmo_la-configuration.lo: $(top_srcdir)/src/configuration.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-configuration.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-configuration.Tpo -c -o drumgizmo_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-configuration.Tpo $(DEPDIR)/drumgizmo_la-configuration.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='drumgizmo_la-configuration.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
-
-drumgizmo_la-configparser.lo: $(top_srcdir)/src/configparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-configparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-configparser.Tpo -c -o drumgizmo_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-configparser.Tpo $(DEPDIR)/drumgizmo_la-configparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='drumgizmo_la-configparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
-
-drumgizmo_la-drumgizmo.lo: $(top_srcdir)/src/drumgizmo.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumgizmo.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumgizmo.Tpo -c -o drumgizmo_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumgizmo.Tpo $(DEPDIR)/drumgizmo_la-drumgizmo.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='drumgizmo_la-drumgizmo.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
-
-drumgizmo_la-drumkit.lo: $(top_srcdir)/src/drumkit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkit.Tpo -c -o drumgizmo_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkit.Tpo $(DEPDIR)/drumgizmo_la-drumkit.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='drumgizmo_la-drumkit.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
-
-drumgizmo_la-drumkitloader.lo: $(top_srcdir)/src/drumkitloader.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkitloader.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkitloader.Tpo -c -o drumgizmo_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkitloader.Tpo $(DEPDIR)/drumgizmo_la-drumkitloader.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='drumgizmo_la-drumkitloader.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
-
-drumgizmo_la-drumkitparser.lo: $(top_srcdir)/src/drumkitparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkitparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkitparser.Tpo -c -o drumgizmo_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkitparser.Tpo $(DEPDIR)/drumgizmo_la-drumkitparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='drumgizmo_la-drumkitparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
-
-drumgizmo_la-events.lo: $(top_srcdir)/src/events.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-events.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-events.Tpo -c -o drumgizmo_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-events.Tpo $(DEPDIR)/drumgizmo_la-events.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='drumgizmo_la-events.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
-
-drumgizmo_la-instrument.lo: $(top_srcdir)/src/instrument.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-instrument.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-instrument.Tpo -c -o drumgizmo_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-instrument.Tpo $(DEPDIR)/drumgizmo_la-instrument.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='drumgizmo_la-instrument.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
-
-drumgizmo_la-instrumentparser.lo: $(top_srcdir)/src/instrumentparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-instrumentparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-instrumentparser.Tpo -c -o drumgizmo_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-instrumentparser.Tpo $(DEPDIR)/drumgizmo_la-instrumentparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='drumgizmo_la-instrumentparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
-
-drumgizmo_la-messagehandler.lo: $(top_srcdir)/src/messagehandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-messagehandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-messagehandler.Tpo -c -o drumgizmo_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-messagehandler.Tpo $(DEPDIR)/drumgizmo_la-messagehandler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='drumgizmo_la-messagehandler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
-
-drumgizmo_la-messagereceiver.lo: $(top_srcdir)/src/messagereceiver.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-messagereceiver.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-messagereceiver.Tpo -c -o drumgizmo_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-messagereceiver.Tpo $(DEPDIR)/drumgizmo_la-messagereceiver.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='drumgizmo_la-messagereceiver.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
-
-drumgizmo_la-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-midimapparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-midimapparser.Tpo -c -o drumgizmo_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-midimapparser.Tpo $(DEPDIR)/drumgizmo_la-midimapparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='drumgizmo_la-midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
-
-drumgizmo_la-midimapper.lo: $(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-midimapper.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-midimapper.Tpo -c -o drumgizmo_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-midimapper.Tpo $(DEPDIR)/drumgizmo_la-midimapper.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='drumgizmo_la-midimapper.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
-
-drumgizmo_la-mutex.lo: $(top_srcdir)/src/mutex.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-mutex.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-mutex.Tpo -c -o drumgizmo_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-mutex.Tpo $(DEPDIR)/drumgizmo_la-mutex.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='drumgizmo_la-mutex.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
-
-drumgizmo_la-path.lo: $(top_srcdir)/src/path.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-path.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-path.Tpo -c -o drumgizmo_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-path.Tpo $(DEPDIR)/drumgizmo_la-path.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='drumgizmo_la-path.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
-
-drumgizmo_la-powerlist.lo: $(top_srcdir)/src/powerlist.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-powerlist.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-powerlist.Tpo -c -o drumgizmo_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-powerlist.Tpo $(DEPDIR)/drumgizmo_la-powerlist.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='drumgizmo_la-powerlist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
-
-drumgizmo_la-sample.lo: $(top_srcdir)/src/sample.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-sample.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-sample.Tpo -c -o drumgizmo_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-sample.Tpo $(DEPDIR)/drumgizmo_la-sample.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='drumgizmo_la-sample.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
-
-drumgizmo_la-semaphore.lo: $(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-semaphore.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-semaphore.Tpo -c -o drumgizmo_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-semaphore.Tpo $(DEPDIR)/drumgizmo_la-semaphore.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='drumgizmo_la-semaphore.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
-
-drumgizmo_la-saxparser.lo: $(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-saxparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-saxparser.Tpo -c -o drumgizmo_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-saxparser.Tpo $(DEPDIR)/drumgizmo_la-saxparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='drumgizmo_la-saxparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
-
-drumgizmo_la-thread.lo: $(top_srcdir)/src/thread.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-thread.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-thread.Tpo -c -o drumgizmo_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-thread.Tpo $(DEPDIR)/drumgizmo_la-thread.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='drumgizmo_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
-
-drumgizmo_la-velocity.lo: $(top_srcdir)/src/velocity.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-velocity.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-velocity.Tpo -c -o drumgizmo_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-velocity.Tpo $(DEPDIR)/drumgizmo_la-velocity.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='drumgizmo_la-velocity.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
-
-drumgizmo_la-versionstr.lo: $(top_srcdir)/src/versionstr.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-versionstr.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-versionstr.Tpo -c -o drumgizmo_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-versionstr.Tpo $(DEPDIR)/drumgizmo_la-versionstr.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='drumgizmo_la-versionstr.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
-
-drumgizmo_la-nativewindow_x11.lo: $(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-nativewindow_x11.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-nativewindow_x11.Tpo -c -o drumgizmo_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-nativewindow_x11.Tpo $(DEPDIR)/drumgizmo_la-nativewindow_x11.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='drumgizmo_la-nativewindow_x11.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
-
-drumgizmo_la-nativewindow_win32.lo: $(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-nativewindow_win32.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-nativewindow_win32.Tpo -c -o drumgizmo_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-nativewindow_win32.Tpo $(DEPDIR)/drumgizmo_la-nativewindow_win32.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='drumgizmo_la-nativewindow_win32.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
-
-drumgizmo_la-plugingui.lo: $(top_srcdir)/plugingui/plugingui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-plugingui.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-plugingui.Tpo -c -o drumgizmo_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-plugingui.Tpo $(DEPDIR)/drumgizmo_la-plugingui.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/plugingui.cc' object='drumgizmo_la-plugingui.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
-
-drumgizmo_la-label.lo: $(top_srcdir)/plugingui/label.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-label.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-label.Tpo -c -o drumgizmo_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-label.Tpo $(DEPDIR)/drumgizmo_la-label.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/label.cc' object='drumgizmo_la-label.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
-
-drumgizmo_la-eventhandler.lo: $(top_srcdir)/plugingui/eventhandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-eventhandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-eventhandler.Tpo -c -o drumgizmo_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-eventhandler.Tpo $(DEPDIR)/drumgizmo_la-eventhandler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/eventhandler.cc' object='drumgizmo_la-eventhandler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
-
-drumgizmo_la-font.lo: $(top_srcdir)/plugingui/font.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-font.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-font.Tpo -c -o drumgizmo_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-font.Tpo $(DEPDIR)/drumgizmo_la-font.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/font.cc' object='drumgizmo_la-font.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
-
-drumgizmo_la-window.lo: $(top_srcdir)/plugingui/window.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-window.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-window.Tpo -c -o drumgizmo_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-window.Tpo $(DEPDIR)/drumgizmo_la-window.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/window.cc' object='drumgizmo_la-window.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
-
-drumgizmo_la-widget.lo: $(top_srcdir)/plugingui/widget.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-widget.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-widget.Tpo -c -o drumgizmo_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-widget.Tpo $(DEPDIR)/drumgizmo_la-widget.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/widget.cc' object='drumgizmo_la-widget.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
-
-drumgizmo_la-colour.lo: $(top_srcdir)/plugingui/colour.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-colour.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-colour.Tpo -c -o drumgizmo_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-colour.Tpo $(DEPDIR)/drumgizmo_la-colour.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/colour.cc' object='drumgizmo_la-colour.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
-
-drumgizmo_la-painter.lo: $(top_srcdir)/plugingui/painter.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-painter.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-painter.Tpo -c -o drumgizmo_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-painter.Tpo $(DEPDIR)/drumgizmo_la-painter.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/painter.cc' object='drumgizmo_la-painter.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
-
-drumgizmo_la-button.lo: $(top_srcdir)/plugingui/button.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-button.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-button.Tpo -c -o drumgizmo_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-button.Tpo $(DEPDIR)/drumgizmo_la-button.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/button.cc' object='drumgizmo_la-button.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
-
-drumgizmo_la-pixelbuffer.lo: $(top_srcdir)/plugingui/pixelbuffer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-pixelbuffer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-pixelbuffer.Tpo -c -o drumgizmo_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-pixelbuffer.Tpo $(DEPDIR)/drumgizmo_la-pixelbuffer.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pixelbuffer.cc' object='drumgizmo_la-pixelbuffer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
-
-drumgizmo_la-lineedit.lo: $(top_srcdir)/plugingui/lineedit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lineedit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lineedit.Tpo -c -o drumgizmo_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lineedit.Tpo $(DEPDIR)/drumgizmo_la-lineedit.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lineedit.cc' object='drumgizmo_la-lineedit.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
-
-drumgizmo_la-led.lo: $(top_srcdir)/plugingui/led.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-led.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-led.Tpo -c -o drumgizmo_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-led.Tpo $(DEPDIR)/drumgizmo_la-led.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/led.cc' object='drumgizmo_la-led.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
-
-drumgizmo_la-checkbox.lo: $(top_srcdir)/plugingui/checkbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-checkbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-checkbox.Tpo -c -o drumgizmo_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-checkbox.Tpo $(DEPDIR)/drumgizmo_la-checkbox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/checkbox.cc' object='drumgizmo_la-checkbox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
-
-drumgizmo_la-slider.lo: $(top_srcdir)/plugingui/slider.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-slider.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-slider.Tpo -c -o drumgizmo_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-slider.Tpo $(DEPDIR)/drumgizmo_la-slider.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/slider.cc' object='drumgizmo_la-slider.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
-
-drumgizmo_la-scrollbar.lo: $(top_srcdir)/plugingui/scrollbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-scrollbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-scrollbar.Tpo -c -o drumgizmo_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-scrollbar.Tpo $(DEPDIR)/drumgizmo_la-scrollbar.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/scrollbar.cc' object='drumgizmo_la-scrollbar.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
-
-drumgizmo_la-listbox.lo: $(top_srcdir)/plugingui/listbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listbox.Tpo -c -o drumgizmo_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listbox.Tpo $(DEPDIR)/drumgizmo_la-listbox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listbox.cc' object='drumgizmo_la-listbox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
-
-drumgizmo_la-listboxthin.lo: $(top_srcdir)/plugingui/listboxthin.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listboxthin.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listboxthin.Tpo -c -o drumgizmo_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listboxthin.Tpo $(DEPDIR)/drumgizmo_la-listboxthin.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxthin.cc' object='drumgizmo_la-listboxthin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
-
-drumgizmo_la-listboxbasic.lo: $(top_srcdir)/plugingui/listboxbasic.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listboxbasic.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listboxbasic.Tpo -c -o drumgizmo_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listboxbasic.Tpo $(DEPDIR)/drumgizmo_la-listboxbasic.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxbasic.cc' object='drumgizmo_la-listboxbasic.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
-
-drumgizmo_la-knob.lo: $(top_srcdir)/plugingui/knob.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-knob.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-knob.Tpo -c -o drumgizmo_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-knob.Tpo $(DEPDIR)/drumgizmo_la-knob.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/knob.cc' object='drumgizmo_la-knob.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
-
-drumgizmo_la-filebrowser.lo: $(top_srcdir)/plugingui/filebrowser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-filebrowser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-filebrowser.Tpo -c -o drumgizmo_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-filebrowser.Tpo $(DEPDIR)/drumgizmo_la-filebrowser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/filebrowser.cc' object='drumgizmo_la-filebrowser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
-
-drumgizmo_la-directory.lo: $(top_srcdir)/plugingui/directory.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-directory.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-directory.Tpo -c -o drumgizmo_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-directory.Tpo $(DEPDIR)/drumgizmo_la-directory.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/directory.cc' object='drumgizmo_la-directory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
-
-drumgizmo_la-pluginconfig.lo: $(top_srcdir)/plugingui/pluginconfig.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-pluginconfig.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-pluginconfig.Tpo -c -o drumgizmo_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-pluginconfig.Tpo $(DEPDIR)/drumgizmo_la-pluginconfig.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pluginconfig.cc' object='drumgizmo_la-pluginconfig.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
-
-drumgizmo_la-image.lo: $(top_srcdir)/plugingui/image.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-image.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-image.Tpo -c -o drumgizmo_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-image.Tpo $(DEPDIR)/drumgizmo_la-image.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/image.cc' object='drumgizmo_la-image.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
-
-drumgizmo_la-combobox.lo: $(top_srcdir)/plugingui/combobox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-combobox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-combobox.Tpo -c -o drumgizmo_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-combobox.Tpo $(DEPDIR)/drumgizmo_la-combobox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/combobox.cc' object='drumgizmo_la-combobox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
-
-drumgizmo_la-progressbar.lo: $(top_srcdir)/plugingui/progressbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-progressbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-progressbar.Tpo -c -o drumgizmo_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-progressbar.Tpo $(DEPDIR)/drumgizmo_la-progressbar.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/progressbar.cc' object='drumgizmo_la-progressbar.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
-
-drumgizmo_la-verticalline.lo: $(top_srcdir)/plugingui/verticalline.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-verticalline.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-verticalline.Tpo -c -o drumgizmo_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-verticalline.Tpo $(DEPDIR)/drumgizmo_la-verticalline.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/verticalline.cc' object='drumgizmo_la-verticalline.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
-
-drumgizmo_la-resource.lo: $(top_srcdir)/plugingui/resource.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-resource.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-resource.Tpo -c -o drumgizmo_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-resource.Tpo $(DEPDIR)/drumgizmo_la-resource.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='drumgizmo_la-resource.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
-
-drumgizmo_la-resource_data.lo: $(top_srcdir)/plugingui/resource_data.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-resource_data.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-resource_data.Tpo -c -o drumgizmo_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-resource_data.Tpo $(DEPDIR)/drumgizmo_la-resource_data.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='drumgizmo_la-resource_data.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
-
-drumgizmo_la-lodepng.lo: $(top_srcdir)/plugingui/lodepng/lodepng.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lodepng.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lodepng.Tpo -c -o drumgizmo_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lodepng.Tpo $(DEPDIR)/drumgizmo_la-lodepng.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lodepng/lodepng.cpp' object='drumgizmo_la-lodepng.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-
-drumgizmo_la-lv2.lo: lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lv2.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lv2.Tpo -c -o drumgizmo_la-lv2.lo `test -f 'lv2.cc' || echo '$(srcdir)/'`lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lv2.Tpo $(DEPDIR)/drumgizmo_la-lv2.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='lv2.cc' object='drumgizmo_la-lv2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lv2.lo `test -f 'lv2.cc' || echo '$(srcdir)/'`lv2.cc
-
-drumgizmo_la-lv2_gui.lo: lv2_gui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lv2_gui.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lv2_gui.Tpo -c -o drumgizmo_la-lv2_gui.lo `test -f 'lv2_gui.cc' || echo '$(srcdir)/'`lv2_gui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lv2_gui.Tpo $(DEPDIR)/drumgizmo_la-lv2_gui.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='lv2_gui.cc' object='drumgizmo_la-lv2_gui.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lv2_gui.lo `test -f 'lv2_gui.cc' || echo '$(srcdir)/'`lv2_gui.cc
-
-drumgizmo_la-input_lv2.lo: input_lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-input_lv2.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-input_lv2.Tpo -c -o drumgizmo_la-input_lv2.lo `test -f 'input_lv2.cc' || echo '$(srcdir)/'`input_lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-input_lv2.Tpo $(DEPDIR)/drumgizmo_la-input_lv2.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input_lv2.cc' object='drumgizmo_la-input_lv2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-input_lv2.lo `test -f 'input_lv2.cc' || echo '$(srcdir)/'`input_lv2.cc
-
-drumgizmo_la-output_lv2.lo: output_lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-output_lv2.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-output_lv2.Tpo -c -o drumgizmo_la-output_lv2.lo `test -f 'output_lv2.cc' || echo '$(srcdir)/'`output_lv2.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-output_lv2.Tpo $(DEPDIR)/drumgizmo_la-output_lv2.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output_lv2.cc' object='drumgizmo_la-output_lv2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-output_lv2.lo `test -f 'output_lv2.cc' || echo '$(srcdir)/'`output_lv2.cc
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-pluginDATA: $(plugin_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_DATA)'; test -n "$(plugindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(plugindir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(plugindir)" || exit $$?; \
-	done
-
-uninstall-pluginDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_DATA)'; test -n "$(plugindir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(plugindir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginDATA install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginDATA uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginDATA install-pluginLTLIBRARIES install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-pluginDATA uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/lv2/input_lv2.cc b/lv2/input_lv2.cc
deleted file mode 100644
index e70d293..0000000
--- a/lv2/input_lv2.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            input_lv2.cc
- *
- *  Wed Jul 13 14:27:02 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "input_lv2.h"
-
-#include "lv2/lv2plug.in/ns/ext/atom/util.h"
-
-#include <midimapparser.h>
-
-#include <hugin.hpp>
-
-InputLV2::InputLV2()
-{
-  eventPort = NULL;
-}
-
-InputLV2::~InputLV2()
-{
-}
-
-bool InputLV2::init(Instruments &i)
-{
-  instruments = &i;
-  return true;
-}
-
-void InputLV2::setParm(std::string parm, std::string value)
-{
-}
-
-bool InputLV2::start()
-{
-  return true;
-}
-
-void InputLV2::stop()
-{
-}
-
-void InputLV2::pre()
-{
-}
-
-event_t *InputLV2::run(size_t pos, size_t len, size_t *nevents)
-{
-  if(eventPort == NULL) {
-    *nevents = 0;
-    return NULL;
-  }
-
-  event_t *list;
-  size_t listsize;
-
-  list = (event_t *)malloc(sizeof(event_t) * 1000);
-  listsize = 0;
-
-  LV2_Atom_Event* ev = lv2_atom_sequence_begin(&eventPort->body);
-
-  while(!lv2_atom_sequence_is_end(&eventPort->body,
-                                  eventPort->atom.size, 
-                                  ev)) {
-    uint8_t* const data = (uint8_t*)(ev+1);
-
-    if ((data[0] & 0xF0) == 0x80) { // note off
-      int key = data[1];
-    
-      DEBUG(lv2input, "Event (off) key:%d\n", key);
-    }
-
-    if ((data[0] & 0xF0) == 0x90) { // note on
-      int key = data[1];
-      int velocity = data[2];
-    
-      DEBUG(lv2input, "Event key:%d vel:%d\n", key, velocity);
-    
-      int i = mmap.lookup(key);
-      if(velocity && i != -1) {
-        list[listsize].type = TYPE_ONSET;
-        list[listsize].instrument = i;
-        list[listsize].velocity = velocity / 127.0;
-        list[listsize].offset = ev->time.frames;
-        listsize++;
-      }
-    }
-    ev = lv2_atom_sequence_next(ev);
-  }
-
-  *nevents = listsize;
-  return list;
-}
-
-void InputLV2::post()
-{
-}
diff --git a/lv2/input_lv2.h b/lv2/input_lv2.h
deleted file mode 100644
index 32e2fd8..0000000
--- a/lv2/input_lv2.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            input_lv2.h
- *
- *  Wed Jul 13 14:27:02 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_INPUT_LV2_H__
-#define __DRUMGIZMO_INPUT_LV2_H__
-
-#include <audioinputenginemidi.h>
-
-#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
-
-class InputLV2 : public AudioInputEngineMidi {
-public:
-  InputLV2();
-  ~InputLV2();
-
-  bool init(Instruments &instruments);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-  LV2_Atom_Sequence *eventPort;
-
-private:
-  Instruments *instruments;
-};
-
-#endif/*__DRUMGIZMO_INPUT_LV2_H__*/
diff --git a/lv2/lv2.cc b/lv2/lv2.cc
deleted file mode 100644
index d87665d..0000000
--- a/lv2/lv2.cc
+++ /dev/null
@@ -1,235 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            lv2.cc
- *
- *  Wed Jul 13 13:50:33 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "lv2_gui.h"
-#include "lv2_instance.h"
-
-#include <hugin.hpp>
-
-#define DRUMGIZMO_URI "http://drumgizmo.org/lv2"
-#define NS_DG DRUMGIZMO_URI "/atom#"
-
-// Stuff to handle DrumGizmo* transmission from instance to GUI.
-static LV2_DrumGizmo_Descriptor dg_descriptor;
-
-static DrumGizmo *dg_get_pci(LV2_Handle instance)
-{
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-  return dglv2->dg;
-}
-
-LV2_State_Status
-dg_save(LV2_Handle                 instance,
-        LV2_State_Store_Function   store,
-        LV2_State_Handle           handle,
-        uint32_t                   flags,
-        const LV2_Feature *const * features)
-{
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-
-  if(!dglv2 || !dglv2->map || !dglv2->map->map) {
-    // Missing urid feature?
-    return  LV2_STATE_ERR_NO_FEATURE;
-  }
-
-  std::string config = dglv2->dg->configString();
-
-  // Backwards compatible fix for errornously stored '\0' byte in < v0.9.8.
-  // Remove when we reach v1.0
-  config += "\n";
-
-  store(handle,
-        dglv2->map->map(dglv2->map->handle, NS_DG "config"),
-        config.data(),
-        config.length(),
-        dglv2->map->map(dglv2->map->handle, LV2_ATOM__Chunk),
-        LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE);
-
-  return LV2_STATE_SUCCESS;
-}
-
-LV2_State_Status
-dg_restore(LV2_Handle                  instance,
-           LV2_State_Retrieve_Function retrieve,
-           LV2_State_Handle            handle,
-           uint32_t                    flags,
-           const LV2_Feature *const *  features)
-{
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-
-  if(!dglv2 || !dglv2->map || !dglv2->map->map) {
-    // Missing urid feature?
-    return  LV2_STATE_ERR_NO_FEATURE;
-  }
-
-  size_t size;
-  uint32_t type;
-
-  const char* data =
-    (const char*)retrieve(handle,
-                          dglv2->map->map(dglv2->map->handle, NS_DG "config"),
-                          &size, &type, &flags);
-
-  DEBUG(lv2, "Config string size: %d, data*: %p\n", (int)size, data);
-
-  if(data && size) {
-    std::string config;
-
-    // Fix for errornously stored '\0' byte in < v0.9.8.
-    // Remove when we reach v1.0
-    if(data[size - 1] == '\0') size--;
-
-    config.append(data, size);
-    dglv2->dg->setConfigString(config);
-  }
-
-  return LV2_STATE_SUCCESS;
-}
-
-static LV2_State_Interface dg_persist = {
-  dg_save,
-  dg_restore
-};
-
-LV2_Handle instantiate(const struct _LV2_Descriptor *descriptor,
-                       double sample_rate,
-                       const char *bundle_path,
-                       const LV2_Feature *const *features)
-{
-  DGLV2 *dglv2 = new DGLV2;
-
-  dglv2->map = NULL;
-  for (int i = 0 ; features[i] ; i++) {
-    if (!strcmp(features[i]->URI,  LV2_URID_URI "#map")) {
-      dglv2->map = (LV2_URID_Map*)features[i]->data;
-    }
- }
-
-  dg_descriptor.get_pci = dg_get_pci;
-
-  dglv2->in = new InputLV2();
-  dglv2->out = new OutputLV2();
-
-  dglv2->buffer = NULL;
-  dglv2->buffer_size = 0;
-
-  dglv2->dg = new DrumGizmo(dglv2->out, dglv2->in);
-  dglv2->dg->setSamplerate(sample_rate);
-
-  return (LV2_Handle)dglv2;
-}
-
-void connect_port(LV2_Handle instance,
-                  uint32_t port,
-                  void *data_location)
-{
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-
-  if(port == 0) {// MIDI in
-    dglv2->in->eventPort = (LV2_Atom_Sequence*)data_location;
-  } else {// Audio Port
-    if(port - 1 < NUM_OUTPUTS) {
-      dglv2->out->outputPorts[port - 1].samples = (sample_t*)data_location;
-      dglv2->out->outputPorts[port - 1].size = 0;
-    }
-  }
-}
-
-void activate(LV2_Handle instance)
-{
-  // We don't really need to do anything here.
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-  (void)dglv2;
-}
-
-void run(LV2_Handle instance,
-         uint32_t sample_count)
-{
-  static size_t pos = 0;
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-
-  dglv2->dg->run(pos, dglv2->buffer, sample_count);
-
-  pos += sample_count;
-}
-
-void deactivate(LV2_Handle instance)
-{
-  // We don't really need to do anything here.
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-  dglv2->dg->stop();
-}
-
-void cleanup(LV2_Handle instance)
-{
-  DGLV2 *dglv2 = (DGLV2 *)instance;
-  delete dglv2->dg;
-  delete dglv2->in;
-  delete dglv2->out;
-}
-
-const void* extension_data(const char *uri)
-{
-  if(!strcmp(uri, PLUGIN_INSTANCE_URI)) return &dg_descriptor;
-  if(!strcmp(uri, LV2_STATE__interface)) return &dg_persist;
-  return NULL;
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static const LV2_Descriptor descriptor = {
-	DRUMGIZMO_URI,
-	instantiate,
-	connect_port,
-  activate,
-	run,
-  deactivate,
-	cleanup,
-	extension_data
-};
-
-LV2_SYMBOL_EXPORT
-const LV2_Descriptor* lv2_descriptor(uint32_t index)
-{
-	switch (index) {
-	case 0:
-		return &descriptor;
-	default:
-		return NULL;
-	}
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/lv2/lv2_event.h b/lv2/lv2_event.h
deleted file mode 100644
index 2c340ba..0000000
--- a/lv2/lv2_event.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
-  LV2 Event Extension
-  Copyright 2008-2011 David Robillard <http://drobilla.net>
-  Copyright 2006-2007 Lars Luthman <lars.luthman at gmail.com>
-
-  Permission to use, copy, modify, and/or distribute this software for any
-  purpose with or without fee is hereby granted, provided that the above
-  copyright notice and this permission notice appear in all copies.
-
-  THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-
-#ifndef LV2_EVENT_H
-#define LV2_EVENT_H
-
-#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event"
-#define LV2_EVENT_AUDIO_STAMP 0
-
-#include <stdint.h>
-
-/**
-   @file event.h
-   C API for the LV2 Event extension <http://lv2plug.in/ns/ext/event>.
- 
-   This extension is a generic transport mechanism for time stamped events
-   of any type (e.g. MIDI, OSC, ramps, etc). Each port can transport mixed
-   events of any type; the type of events and timestamps are defined by a URI
-   which is mapped to an integer by the host for performance reasons.
- 
-   This extension requires the host to support the LV2 URI Map extension.
-   Any host which supports this extension MUST guarantee that any call to
-   the LV2 URI Map uri_to_id function with the URI of this extension as the
-   'map' argument returns a value within the range of uint16_t.
-*/
-
-/**
-   The best Pulses Per Quarter Note for tempo-based uint32_t timestamps.
-   Equal to 2^12 * 5 * 7 * 9 * 11 * 13 * 17, which is evenly divisble
-   by all integers from 1 through 18 inclusive, and powers of 2 up to 2^12.
-*/
-static const uint32_t LV2_EVENT_PPQN = 3136573440U;
-
-/**
-   An LV2 event (header only).
- 
-   LV2 events are generic time-stamped containers for any type of event.
-   The type field defines the format of a given event's contents.
- 
-   This struct defines the header of an LV2 event. An LV2 event is a single
-   chunk of POD (plain old data), usually contained in a flat buffer (see
-   LV2_EventBuffer below). Unless a required feature says otherwise, hosts may
-   assume a deep copy of an LV2 event can be created safely using a simple:
- 
-   memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size);  (or equivalent)
-*/
-typedef struct {
-
-	/**
-	   The frames portion of timestamp. The units used here can optionally be
-	   set for a port (with the lv2ev:timeUnits property), otherwise this is
-	   audio frames, corresponding to the sample_count parameter of the LV2 run
-	   method (e.g. frame 0 is the first frame for that call to run).
-	*/
-	uint32_t frames;
-
-	/**
-	   The sub-frames portion of timestamp. The units used here can optionally
-	   be set for a port (with the lv2ev:timeUnits property), otherwise this is
-	   1/(2^32) of an audio frame.
-	*/
-	uint32_t subframes;
-
-	/**
-	   The type of this event, as a number which represents some URI
-	   defining an event type. This value MUST be some value previously
-	   returned from a call to the uri_to_id function defined in the LV2
-	   URI map extension (see lv2_uri_map.h).
-	   There are special rules which must be followed depending on the type
-	   of an event. If the plugin recognizes an event type, the definition
-	   of that event type will describe how to interpret the event, and
-	   any required behaviour. Otherwise, if the type is 0, this event is a
-	   non-POD event and lv2_event_unref MUST be called if the event is
-	   'dropped' (see above). Even if the plugin does not understand an event,
-	   it may pass the event through to an output by simply copying (and NOT
-	   calling lv2_event_unref). These rules are designed to allow for generic
-	   event handling plugins and large non-POD events, but with minimal hassle
-	   on simple plugins that "don't care" about these more advanced features.
-	*/
-	uint16_t type;
-
-	/**
-	   The size of the data portion of this event in bytes, which immediately
-	   follows. The header size (12 bytes) is not included in this value.
-	*/
-	uint16_t size;
-
-	/* size bytes of data follow here */
-
-} LV2_Event;
-
-
-/**
-   A buffer of LV2 events (header only).
- 
-   Like events (which this contains) an event buffer is a single chunk of POD:
-   the entire buffer (including contents) can be copied with a single memcpy.
-   The first contained event begins sizeof(LV2_EventBuffer) bytes after the
-   start of this struct.
- 
-   After this header, the buffer contains an event header (defined by struct
-   LV2_Event), followed by that event's contents (padded to 64 bits), followed
-   by another header, etc:
- 
-   |       |       |       |       |       |       |
-   | | | | | | | | | | | | | | | | | | | | | | | | |
-   |FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ...
-*/
-typedef struct {
-
-	/**
-	   The contents of the event buffer. This may or may not reside in the
-	   same block of memory as this header, plugins must not assume either.
-	   The host guarantees this points to at least capacity bytes of allocated
-	   memory (though only size bytes of that are valid events).
-	*/
-	uint8_t* data;
-
-	/**
-	   The size of this event header in bytes (including everything).
-	 
-	   This is to allow for extending this header in the future without
-	   breaking binary compatibility. Whenever this header is copied,
-	   it MUST be done using this field (and NOT the sizeof this struct).
-	*/
-	uint16_t header_size;
-
-	/**
-	   The type of the time stamps for events in this buffer.
-	   As a special exception, '0' always means audio frames and subframes
-	   (1/UINT32_MAX'th of a frame) in the sample rate passed to instantiate.
-
-	   INPUTS: The host must set this field to the numeric ID of some URI
-	   defining the meaning of the frames/subframes fields of contained events
-	   (obtained by the LV2 URI Map uri_to_id function with the URI of this
-	   extension as the 'map' argument, see lv2_uri_map.h).  The host must
-	   never pass a plugin a buffer which uses a stamp type the plugin does not
-	   'understand'. The value of this field must never change, except when
-	   connect_port is called on the input port, at which time the host MUST
-	   have set the stamp_type field to the value that will be used for all
-	   subsequent run calls.
-	   
-	   OUTPUTS: The plugin may set this to any value that has been returned
-	   from uri_to_id with the URI of this extension for a 'map' argument.
-	   When connected to a buffer with connect_port, output ports MUST set this
-	   field to the type of time stamp they will be writing. On any call to
-	   connect_port on an event input port, the plugin may change this field on
-	   any output port, it is the responsibility of the host to check if any of
-	   these values have changed and act accordingly.
-	*/
-	uint16_t stamp_type;
-
-	/**
-	   The number of events in this buffer.
-
-	   INPUTS: The host must set this field to the number of events contained
-	   in the data buffer before calling run(). The plugin must not change
-	   this field.
-
-	   OUTPUTS: The plugin must set this field to the number of events it has
-	   written to the buffer before returning from run(). Any initial value
-	   should be ignored by the plugin.
-	*/
-	uint32_t event_count;
-
-	/**
-	   The size of the data buffer in bytes.
-	   This is set by the host and must not be changed by the plugin.
-	   The host is allowed to change this between run() calls.
-	*/
-	uint32_t capacity;
-
-	/**
-	   The size of the initial portion of the data buffer containing data.
-
-	   INPUTS: The host must set this field to the number of bytes used
-	   by all events it has written to the buffer (including headers)
-	   before calling the plugin's run().
-	   The plugin must not change this field.
-
-	   OUTPUTS: The plugin must set this field to the number of bytes
-	   used by all events it has written to the buffer (including headers)
-	   before returning from run().
-	   Any initial value should be ignored by the plugin.
-	*/
-	uint32_t size;
-
-} LV2_Event_Buffer;
-
-
-/**
-   Opaque pointer to host data.
-*/
-typedef void* LV2_Event_Callback_Data;
-
-
-/**
-   Non-POD events feature.
- 
-   To support this feature the host must pass an LV2_Feature struct to the
-   plugin's instantiate method with URI "http://lv2plug.in/ns/ext/event"
-   and data pointed to an instance of this struct.  Note this feature
-   is not mandatory to support the event extension.
-*/
-typedef struct {
-
-	/**
-	   Opaque pointer to host data.
-	 
-	   The plugin MUST pass this to any call to functions in this struct.
-	   Otherwise, it must not be interpreted in any way.
-	*/
-	LV2_Event_Callback_Data callback_data;
-
-	/**
-	   Take a reference to a non-POD event.
-	 
-	   If a plugin receives an event with type 0, it means the event is a
-	   pointer to some object in memory and not a flat sequence of bytes
-	   in the buffer. When receiving a non-POD event, the plugin already
-	   has an implicit reference to the event. If the event is stored AND
-	   passed to an output, lv2_event_ref MUST be called on that event.
-	   If the event is only stored OR passed through, this is not necessary
-	   (as the plugin already has 1 implicit reference).
-	 
-	   @param event An event received at an input that will not be copied to
-	   an output or stored in any way.
-	   
-	   @param context The calling context. Like event types, this is a mapped
-	   URI, see lv2_context.h. Simple plugin with just a run() method should
-	   pass 0 here (the ID of the 'standard' LV2 run context). The host
-	   guarantees that this function is realtime safe iff @a context is
-	   realtime safe.
-	 
-	   PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS.
-	*/
-	uint32_t (*lv2_event_ref)(LV2_Event_Callback_Data callback_data,
-	                          LV2_Event*              event);
-
-	/**
-	   Drop a reference to a non-POD event.
-	 
-	   If a plugin receives an event with type 0, it means the event is a
-	   pointer to some object in memory and not a flat sequence of bytes
-	   in the buffer. If the plugin does not pass the event through to
-	   an output or store it internally somehow, it MUST call this function
-	   on the event (more information on using non-POD events below).
-	 
-	   @param event An event received at an input that will not be copied to an
-	   output or stored in any way.
-	   
-	   @param context The calling context. Like event types, this is a mapped
-	   URI, see lv2_context.h. Simple plugin with just a run() method should
-	   pass 0 here (the ID of the 'standard' LV2 run context). The host
-	   guarantees that this function is realtime safe iff @a context is
-	   realtime safe.
-	 
-	   PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS.
-	*/
-	uint32_t (*lv2_event_unref)(LV2_Event_Callback_Data callback_data,
-	                            LV2_Event*              event);
-
-} LV2_Event_Feature;
-
-
-#endif /* LV2_EVENT_H */
diff --git a/lv2/lv2_gui.cc b/lv2/lv2_gui.cc
deleted file mode 100644
index 7b56c5b..0000000
--- a/lv2/lv2_gui.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            lv2.cc
- *
- *  Wed Jul 13 13:50:33 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "lv2_gui.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include <lv2/lv2plug.in/ns/ext/instance-access/instance-access.h>
-#include <lv2/lv2plug.in/ns/extensions/ui/ui.h>
-
-#include "lv2_instance.h"
-
-// From: http://codesearch.google.com/#50sg5qT6WNE/src/lv2_ui_dssi.c
-// git://repo.or.cz/nekobee.git/src/lv2_ui_dssi.c
-
-#define DRUMGIZMO_UI_URI "http://drumgizmo.org/lv2-gui"
-
-#include <plugingui.h>
-
-/**
- * When LV2_EXTERNAL_UI_URI UI is instantiated, the returned
- * LV2UI_Widget handle must be cast to pointer to struct lv2_external_ui.
- * UI is created in invisible state.
- */
-struct lv2_external_ui
-{
-  /**
-   * Host calls this function regulary. UI library implementing the
-   * callback may do IPC or redraw the UI.
-   *
-   * @param _this_ the UI context
-   */
-  void (* run)(struct lv2_external_ui * _this_);
-
-  /**
-   * Host calls this function to make the plugin UI visible.
-   *
-   * @param _this_ the UI context
-   */
-  void (* show)(struct lv2_external_ui * _this_);
-
-  /**
-   * Host calls this function to make the plugin UI invisible again.
-   *
-   * @param _this_ the UI context
-   */
-  void (* hide)(struct lv2_external_ui * _this_);
-};
-
-/** UI extension suitable for out-of-process UIs */
-#define LV2_EXTERNAL_UI_URI "http://lv2plug.in/ns/extensions/ui#external"
-
-/**
- * On UI instantiation, host must supply LV2_EXTERNAL_UI_URI
- * feature. LV2_Feature::data must be pointer to struct lv2_external_ui_host. */
-struct lv2_external_ui_host
-{
-  /**
-   * Callback that plugin UI will call
-   * when UI (GUI window) is closed by user.
-   * This callback wil; be called during execution of lv2_external_ui::run()
-   * (i.e. not from background thread).
-   *
-   * After this callback is called, UI is defunct. Host must call
-   * LV2UI_Descriptor::cleanup(). If host wants to make the UI visible
-   * again UI must be reinstantiated.
-   *
-   * @param controller Host context associated with plugin UI, as
-   * supplied to LV2UI_Descriptor::instantiate()
-   */
-  void (* ui_closed)(LV2UI_Controller controller);
-
-  /**
-   * Optional (may be NULL) "user friendly" identifier which the UI
-   * may display to allow a user to easily associate this particular
-   * UI instance with the correct plugin instance as it is represented
-   * by the host (e.g. "track 1" or "channel 4").
-   *
-   * If supplied by host, the string will be referenced only during
-   * LV2UI_Descriptor::instantiate()
-   */
-  const char * plugin_human_id;
-};
-
-struct DG_GUI {
-  struct lv2_external_ui virt;
-
-  LV2_Handle instance_handle;
-  LV2_Extension_Data_Feature *data_access;
-  DrumGizmo *instance;
-  LV2UI_Controller controller;
-
-  PluginGUI *gui;
-  struct lv2_external_ui_host *ui_host_ptr;
-};
-
-static void ui_run(struct lv2_external_ui * _this_)
-{
-  struct DG_GUI *dggui = (struct DG_GUI *)_this_;
-  dggui->gui->processEvents();
-}
-
-static void ui_show(struct lv2_external_ui * _this_)
-{
-  struct DG_GUI *dggui = (struct DG_GUI *)_this_;
-  dggui->gui->show();
-}
-
-static void ui_hide(struct lv2_external_ui * _this_)
-{
-  struct DG_GUI *dggui = (struct DG_GUI *)_this_;
-  if(dggui->gui) dggui->gui->hide();
-}
-
-static void closeHandler(void *ptr)
-{
-  struct DG_GUI *gui = (struct DG_GUI *)ptr;
-
-  if(gui->ui_host_ptr && gui->ui_host_ptr->ui_closed) {
-    gui->ui_host_ptr->ui_closed(gui->controller);
-  }
-
-  delete gui->gui;
-  gui->gui = NULL;
-}
-
-static LV2UI_Handle ui_instantiate(const struct _LV2UI_Descriptor * descriptor,
-                                   const char * plugin_uri,
-                                   const char * bundle_path,
-                                   LV2UI_Write_Function write_function,
-                                   LV2UI_Controller controller,
-                                   LV2UI_Widget * widget,
-                                   const LV2_Feature * const * features)
-{
-  printf("ui_instantiate\n");
-
-  struct DG_GUI* pt = new struct DG_GUI;
-
-  pt->ui_host_ptr = NULL;
-  pt->controller = controller;
-
-  while (*features != NULL) {
-    std::string uri = (*features)->URI;
-    void *data = (*features)->data;
-
-    printf("DGUI: feature: %s\n", uri.c_str());
-
-    if(uri == LV2_INSTANCE_ACCESS_URI) {
-      pt->instance_handle = data;
-    }
-
-    if(uri == LV2_DATA_ACCESS_URI) {
-      pt->data_access = (LV2_Extension_Data_Feature *)data;
-    }
-
-    if(uri == LV2_EXTERNAL_UI_URI) {
-      pt->ui_host_ptr = (struct lv2_external_ui_host *)data;
-    }
-    features++;
-  }
-
-  LV2_DrumGizmo_Descriptor *dgd =
-    (LV2_DrumGizmo_Descriptor *)(*pt->data_access->data_access)(PLUGIN_INSTANCE_URI);
-
-  pt->instance = dgd->get_pci(pt->instance_handle);
-  pt->virt.run = ui_run;
-  pt->virt.show = ui_show;
-  pt->virt.hide = ui_hide;
-  pt->gui = new PluginGUI();
-  pt->gui->setWindowClosedCallback(closeHandler, pt);
-
-  *widget = (LV2UI_Widget)pt;
-
-  return pt;
-}
-
-static void ui_cleanup(LV2UI_Handle ui)
-{
-  struct DG_GUI* pt = (struct DG_GUI*)ui;
-  delete pt->gui;
-  pt->gui = NULL;
-  delete pt;
-}
-
-static void ui_port_event(LV2UI_Handle ui,
-                          uint32_t port_index,
-                          uint32_t buffer_size,
-                          uint32_t format,
-                          const void * buffer)
-{
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static LV2UI_Descriptor descriptor = {
-  DRUMGIZMO_UI_URI,
-  ui_instantiate,
-  ui_cleanup,
-  ui_port_event,
-  NULL
-};
-
-const LV2UI_Descriptor *lv2ui_descriptor(uint32_t index)
-{
-  if(index == 0) return &descriptor;
-  return NULL;
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/lv2/lv2_gui.h b/lv2/lv2_gui.h
deleted file mode 100644
index 2857445..0000000
--- a/lv2/lv2_gui.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            lv2_gui.h
- *
- *  Fri Oct 21 10:48:53 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_LV2_GUI_H__
-#define __DRUMGIZMO_LV2_GUI_H__
-
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/data-access/data-access.h>
-
-#define PLUGIN_INSTANCE_URI "http://drumgizmo.org/ns/drumgizmo-plugin-instance"
-
-class DrumGizmo;
-struct LV2_DrumGizmo_Descriptor {
-  DrumGizmo *(*get_pci)(LV2_Handle instance);
-};
-
-#endif/*__DRUMGIZMO_LV2_GUI_H__*/
diff --git a/lv2/lv2_instance.h b/lv2/lv2_instance.h
deleted file mode 100644
index e050e22..0000000
--- a/lv2/lv2_instance.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            lv2_instance.h
- *
- *  Sun Nov 20 15:27:41 CET 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_LV2_INSTANCE_H__
-#define __DRUMGIZMO_LV2_INSTANCE_H__
-
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/state/state.h>
-#include <lv2/lv2plug.in/ns/ext/urid/urid.h>
-
-#include "input_lv2.h"
-#include "output_lv2.h"
-
-#include <drumgizmo.h>
-
-typedef struct {
-  InputLV2 *in;
-  OutputLV2 *out;
-  DrumGizmo *dg;
-  sample_t *buffer;
-  size_t buffer_size;
-  LV2_URID_Map* map;
-} DGLV2;
-
-#endif/*__DRUMGIZMO_LV2_INSTANCE_H__*/
diff --git a/lv2/output_lv2.cc b/lv2/output_lv2.cc
deleted file mode 100644
index 09999cb..0000000
--- a/lv2/output_lv2.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            output_lv2.cc
- *
- *  Wed Jul 13 14:27:06 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "output_lv2.h"
-
-#include <string.h>
-
-OutputLV2::OutputLV2()
-{
-  for(size_t i = 0; i < NUM_OUTPUTS; i++) {
-    outputPorts[i].size = 0;
-    outputPorts[i].samples = NULL;
-  }
-}
-
-OutputLV2::~OutputLV2()
-{
-}
-
-bool OutputLV2::init(Channels channels)
-{
-  return true;
-}
-
-void OutputLV2::setParm(std::string parm, std::string value)
-{
-}
-
-bool OutputLV2::start()
-{
-  return true;
-}
-
-void OutputLV2::stop()
-{
-}
-
-void OutputLV2::pre(size_t nsamples)
-{
-}
-
-void OutputLV2::run(int ch, sample_t *samples, size_t nsamples)
-{
-  if(ch < NUM_OUTPUTS) {
-    if(outputPorts[ch].samples) {
-      memcpy(outputPorts[ch].samples, samples, nsamples * sizeof(sample_t));
-    }
-  }
-}
-
-void OutputLV2::post(size_t nsamples)
-{
-}
-
-sample_t *OutputLV2::getBuffer(int ch)
-{
-  if(ch < NUM_OUTPUTS) return outputPorts[ch].samples;
-  return NULL;
-}
diff --git a/lv2/output_lv2.h b/lv2/output_lv2.h
deleted file mode 100644
index a3a2555..0000000
--- a/lv2/output_lv2.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            output_lv2.h
- *
- *  Wed Jul 13 14:27:06 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_OUTPUT_LV2_H__
-#define __DRUMGIZMO_OUTPUT_LV2_H__
-
-#include <audiooutputengine.h>
-
-#define NUM_OUTPUTS 64
-
-class OutputPort {
-public:
-  size_t size;
-  sample_t *samples;
-};
-
-class OutputLV2 : public AudioOutputEngine {
-public:
-  OutputLV2();
-  ~OutputLV2();
-
-  bool init(Channels channels);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre(size_t nsamples);
-  void run(int ch, sample_t *samples, size_t nsamples);
-  void post(size_t nsamples);
-
-  sample_t *getBuffer(int c);
-
-  OutputPort outputPorts[NUM_OUTPUTS];
-};
-
-#endif/*__DRUMGIZMO_OUTPUT_LV2_H__*/
diff --git a/man/Makefile.in b/man/Makefile.in
index b8792ad..71f26f8 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -176,7 +176,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -240,8 +240,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/man/drumgizmo.1 b/man/drumgizmo.1
index e14f7fe..2d118a3 100644
--- a/man/drumgizmo.1
+++ b/man/drumgizmo.1
@@ -1,4 +1,4 @@
-.TH "DRUMGIZMO" "1" "4 February 2015" "drumgizmo 0.9.7" ""
+.TH "DRUMGIZMO" "1" "4 February 2015" "drumgizmo" ""
 
 .SH NAME
 drumgizmo \- drum application
diff --git a/plugin/Makefile.am b/plugin/Makefile.am
new file mode 100644
index 0000000..15ca7d0
--- /dev/null
+++ b/plugin/Makefile.am
@@ -0,0 +1,76 @@
+include $(top_srcdir)/plugingui/Makefile.am.plugingui
+include $(top_srcdir)/src/Makefile.am.drumgizmo
+
+
+#######
+# LV2
+###
+if ENABLE_LV2
+lv2plugindir = $(libdir)/lv2/drumgizmo.lv2
+lv2plugin_LTLIBRARIES = drumgizmo.la
+lv2plugin_DATA = manifest.ttl drumgizmo.ttl
+endif
+
+drumgizmo_la_CXXFLAGS = -DLV2 -DLV2_PLUGIN_URI=\"http://drumgizmo.org/lv2\" \
+	-I$(top_srcdir)/plugin/plugingizmo $(DRUMGIZMO_CPPFLAGS) \
+	$(PLUGIN_GUI_CPPFLAGS)
+
+drumgizmo_la_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc \
+	drumgizmo_plugin.cc
+
+drumgizmo_la_LDFLAGS = -shared -module -avoid-version
+drumgizmo_la_LIBADD = $(LV2_LIBS) $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
+
+
+#######
+# VST
+###
+if ENABLE_VST
+vstplugindir = $(libdir)/vst
+vstplugin_LTLIBRARIES = drumgizmo_vst.la
+vstplugin_DATA =
+noinst_LTLIBRARIES = libvstsdk.la
+endif
+
+VST_BASE = ${VST_SOURCE_PATH}
+VST_SRC_BASE = ${VST_BASE}/public.sdk/source/vst2.x/
+
+# Hack to compile vst sources without -Wall -Werror
+libvstsdk_la_CXXFLAGS = -w $(VST_CPPFLAGS)
+nodist_libvstsdk_la_SOURCES = \
+	${VST_SRC_BASE}/audioeffectx.cpp \
+	${VST_SRC_BASE}/audioeffect.cpp \
+	${VST_SRC_BASE}/vstplugmain.cpp
+
+drumgizmo_vst_la_CXXFLAGS = -DVST \
+	-I$(top_srcdir)/plugin/plugingizmo $(DRUMGIZMO_CPPFLAGS) \
+	$(PLUGIN_GUI_CPPFLAGS) $(VST_CPPFLAGS)
+
+drumgizmo_vst_la_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginvst.cc \
+	drumgizmo_plugin.cc
+
+drumgizmo_vst_la_LDFLAGS = -shared -module -avoid-version
+drumgizmo_vst_la_LIBADD = libvstsdk.la $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
+
+
+install-exec-hook:
+	rm -f $(DESTDIR)$(libdir)/lv2/drumgizmo.lv2/drumgizmo.la
+	rm -f $(DESTDIR)$(libdir)/vst/drumgizmo_vst.la
+
+
+EXTRA_DIST = \
+	$(lv2plugin_DATA) \
+	$(vstplugin_DATA) \
+	drumgizmo_plugin.h \
+	$(top_srcdir)/plugin/plugingizmo/plugin.h \
+	$(top_srcdir)/plugin/plugingizmo/midievent.h \
+	$(top_srcdir)/plugin/plugingizmo/pluginlv2.h \
+	$(top_srcdir)/plugin/plugingizmo/pluginvst.h
diff --git a/plugin/Makefile.in b/plugin/Makefile.in
new file mode 100644
index 0000000..95584d3
--- /dev/null
+++ b/plugin/Makefile.in
@@ -0,0 +1,2423 @@
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# -*- Makefile -*-
+
+# -*- Makefile -*-
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/plugingui/Makefile.am.plugingui \
+	$(top_srcdir)/src/Makefile.am.drumgizmo $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(srcdir)/Makefile.mingw32.in \
+	$(top_srcdir)/depcomp
+ at ENABLE_X11_TRUE@am__append_1 = $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at ENABLE_WIN32_TRUE@am__append_2 = $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at ENABLE_PUGL_TRUE@am__append_3 = \
+ at ENABLE_PUGL_TRUE@	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+ at ENABLE_PUGL_TRUE@	$(top_srcdir)/pugl/pugl/pugl_x11.c
+
+ at ENABLE_PUGL_TRUE@am__append_4 = -I$(top_srcdir)/pugl/pugl
+subdir = plugin
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = Makefile.mingw32
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(lv2plugindir)" \
+	"$(DESTDIR)$(vstplugindir)" "$(DESTDIR)$(lv2plugindir)" \
+	"$(DESTDIR)$(vstplugindir)"
+LTLIBRARIES = $(lv2plugin_LTLIBRARIES) $(noinst_LTLIBRARIES) \
+	$(vstplugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
+drumgizmo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3)
+am__drumgizmo_la_SOURCES_DIST = $(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/audioinputenginemidi.cc \
+	$(top_srcdir)/src/audiofile.cc $(top_srcdir)/src/channel.cc \
+	$(top_srcdir)/src/channelmixer.cc \
+	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/configparser.cc \
+	$(top_srcdir)/src/drumgizmo.cc $(top_srcdir)/src/drumkit.cc \
+	$(top_srcdir)/src/drumkitloader.cc \
+	$(top_srcdir)/src/drumkitparser.cc $(top_srcdir)/src/events.cc \
+	$(top_srcdir)/src/instrument.cc \
+	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
+	$(top_srcdir)/src/messagehandler.cc \
+	$(top_srcdir)/src/messagereceiver.cc \
+	$(top_srcdir)/src/midimapparser.cc \
+	$(top_srcdir)/src/midimapper.cc $(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/path.cc $(top_srcdir)/src/powerlist.cc \
+	$(top_srcdir)/src/sample.cc $(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/saxparser.cc $(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/velocity.cc $(top_srcdir)/src/versionstr.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/plugingui/dgwindow.cc \
+	$(top_srcdir)/plugingui/plugingui.cc \
+	$(top_srcdir)/plugingui/label.cc \
+	$(top_srcdir)/plugingui/eventhandler.cc \
+	$(top_srcdir)/plugingui/font.cc \
+	$(top_srcdir)/plugingui/window.cc \
+	$(top_srcdir)/plugingui/widget.cc \
+	$(top_srcdir)/plugingui/colour.cc \
+	$(top_srcdir)/plugingui/painter.cc \
+	$(top_srcdir)/plugingui/button.cc \
+	$(top_srcdir)/plugingui/pixelbuffer.cc \
+	$(top_srcdir)/plugingui/lineedit.cc \
+	$(top_srcdir)/plugingui/led.cc \
+	$(top_srcdir)/plugingui/checkbox.cc \
+	$(top_srcdir)/plugingui/slider.cc \
+	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
+	$(top_srcdir)/plugingui/listbox.cc \
+	$(top_srcdir)/plugingui/listboxthin.cc \
+	$(top_srcdir)/plugingui/listboxbasic.cc \
+	$(top_srcdir)/plugingui/knob.cc \
+	$(top_srcdir)/plugingui/filebrowser.cc \
+	$(top_srcdir)/plugingui/directory.cc \
+	$(top_srcdir)/plugingui/pluginconfig.cc \
+	$(top_srcdir)/plugingui/image.cc \
+	$(top_srcdir)/plugingui/combobox.cc \
+	$(top_srcdir)/plugingui/progressbar.cc \
+	$(top_srcdir)/plugingui/verticalline.cc \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/plugingui/lodepng/lodepng.cpp \
+	$(top_srcdir)/plugingui/nativewindow_x11.cc \
+	$(top_srcdir)/plugingui/nativewindow_win32.cc \
+	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+	$(top_srcdir)/pugl/pugl/pugl_x11.c \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc \
+	drumgizmo_plugin.cc
+am__objects_1 = drumgizmo_la-audiocachefile.lo \
+	drumgizmo_la-audiocache.lo \
+	drumgizmo_la-audiocacheeventhandler.lo \
+	drumgizmo_la-audiocacheidmanager.lo \
+	drumgizmo_la-audioinputenginemidi.lo drumgizmo_la-audiofile.lo \
+	drumgizmo_la-channel.lo drumgizmo_la-channelmixer.lo \
+	drumgizmo_la-chresampler.lo drumgizmo_la-configfile.lo \
+	drumgizmo_la-configuration.lo drumgizmo_la-configparser.lo \
+	drumgizmo_la-drumgizmo.lo drumgizmo_la-drumkit.lo \
+	drumgizmo_la-drumkitloader.lo drumgizmo_la-drumkitparser.lo \
+	drumgizmo_la-events.lo drumgizmo_la-instrument.lo \
+	drumgizmo_la-instrumentparser.lo drumgizmo_la-memchecker.lo \
+	drumgizmo_la-messagehandler.lo drumgizmo_la-messagereceiver.lo \
+	drumgizmo_la-midimapparser.lo drumgizmo_la-midimapper.lo \
+	drumgizmo_la-mutex.lo drumgizmo_la-path.lo \
+	drumgizmo_la-powerlist.lo drumgizmo_la-sample.lo \
+	drumgizmo_la-semaphore.lo drumgizmo_la-saxparser.lo \
+	drumgizmo_la-thread.lo drumgizmo_la-velocity.lo \
+	drumgizmo_la-versionstr.lo
+ at ENABLE_X11_TRUE@am__objects_2 = drumgizmo_la-nativewindow_x11.lo
+ at ENABLE_WIN32_TRUE@am__objects_3 = drumgizmo_la-nativewindow_win32.lo
+ at ENABLE_PUGL_TRUE@am__objects_4 = drumgizmo_la-nativewindow_pugl.lo \
+ at ENABLE_PUGL_TRUE@	pugl_x11.lo
+am__objects_5 = hugin.lo drumgizmo_la-dgwindow.lo \
+	drumgizmo_la-plugingui.lo drumgizmo_la-label.lo \
+	drumgizmo_la-eventhandler.lo drumgizmo_la-font.lo \
+	drumgizmo_la-window.lo drumgizmo_la-widget.lo \
+	drumgizmo_la-colour.lo drumgizmo_la-painter.lo \
+	drumgizmo_la-button.lo drumgizmo_la-pixelbuffer.lo \
+	drumgizmo_la-lineedit.lo drumgizmo_la-led.lo \
+	drumgizmo_la-checkbox.lo drumgizmo_la-slider.lo \
+	drumgizmo_la-scrollbar.lo drumgizmo_la-textedit.lo \
+	drumgizmo_la-layout.lo drumgizmo_la-listbox.lo \
+	drumgizmo_la-listboxthin.lo drumgizmo_la-listboxbasic.lo \
+	drumgizmo_la-knob.lo drumgizmo_la-filebrowser.lo \
+	drumgizmo_la-directory.lo drumgizmo_la-pluginconfig.lo \
+	drumgizmo_la-image.lo drumgizmo_la-combobox.lo \
+	drumgizmo_la-progressbar.lo drumgizmo_la-verticalline.lo \
+	drumgizmo_la-resource.lo drumgizmo_la-resource_data.lo \
+	drumgizmo_la-lodepng.lo $(am__objects_2) $(am__objects_3) \
+	$(am__objects_4)
+am_drumgizmo_la_OBJECTS = $(am__objects_1) $(am__objects_5) \
+	drumgizmo_la-midievent.lo drumgizmo_la-pluginlv2.lo \
+	drumgizmo_la-drumgizmo_plugin.lo
+drumgizmo_la_OBJECTS = $(am_drumgizmo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+drumgizmo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(drumgizmo_la_CXXFLAGS) \
+	$(CXXFLAGS) $(drumgizmo_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_LV2_TRUE@am_drumgizmo_la_rpath = -rpath $(lv2plugindir)
+drumgizmo_vst_la_DEPENDENCIES = libvstsdk.la $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3)
+am__drumgizmo_vst_la_SOURCES_DIST =  \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/audioinputenginemidi.cc \
+	$(top_srcdir)/src/audiofile.cc $(top_srcdir)/src/channel.cc \
+	$(top_srcdir)/src/channelmixer.cc \
+	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/configparser.cc \
+	$(top_srcdir)/src/drumgizmo.cc $(top_srcdir)/src/drumkit.cc \
+	$(top_srcdir)/src/drumkitloader.cc \
+	$(top_srcdir)/src/drumkitparser.cc $(top_srcdir)/src/events.cc \
+	$(top_srcdir)/src/instrument.cc \
+	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
+	$(top_srcdir)/src/messagehandler.cc \
+	$(top_srcdir)/src/messagereceiver.cc \
+	$(top_srcdir)/src/midimapparser.cc \
+	$(top_srcdir)/src/midimapper.cc $(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/path.cc $(top_srcdir)/src/powerlist.cc \
+	$(top_srcdir)/src/sample.cc $(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/saxparser.cc $(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/velocity.cc $(top_srcdir)/src/versionstr.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/plugingui/dgwindow.cc \
+	$(top_srcdir)/plugingui/plugingui.cc \
+	$(top_srcdir)/plugingui/label.cc \
+	$(top_srcdir)/plugingui/eventhandler.cc \
+	$(top_srcdir)/plugingui/font.cc \
+	$(top_srcdir)/plugingui/window.cc \
+	$(top_srcdir)/plugingui/widget.cc \
+	$(top_srcdir)/plugingui/colour.cc \
+	$(top_srcdir)/plugingui/painter.cc \
+	$(top_srcdir)/plugingui/button.cc \
+	$(top_srcdir)/plugingui/pixelbuffer.cc \
+	$(top_srcdir)/plugingui/lineedit.cc \
+	$(top_srcdir)/plugingui/led.cc \
+	$(top_srcdir)/plugingui/checkbox.cc \
+	$(top_srcdir)/plugingui/slider.cc \
+	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
+	$(top_srcdir)/plugingui/listbox.cc \
+	$(top_srcdir)/plugingui/listboxthin.cc \
+	$(top_srcdir)/plugingui/listboxbasic.cc \
+	$(top_srcdir)/plugingui/knob.cc \
+	$(top_srcdir)/plugingui/filebrowser.cc \
+	$(top_srcdir)/plugingui/directory.cc \
+	$(top_srcdir)/plugingui/pluginconfig.cc \
+	$(top_srcdir)/plugingui/image.cc \
+	$(top_srcdir)/plugingui/combobox.cc \
+	$(top_srcdir)/plugingui/progressbar.cc \
+	$(top_srcdir)/plugingui/verticalline.cc \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/plugingui/lodepng/lodepng.cpp \
+	$(top_srcdir)/plugingui/nativewindow_x11.cc \
+	$(top_srcdir)/plugingui/nativewindow_win32.cc \
+	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+	$(top_srcdir)/pugl/pugl/pugl_x11.c \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginvst.cc \
+	drumgizmo_plugin.cc
+am__objects_6 = drumgizmo_vst_la-audiocachefile.lo \
+	drumgizmo_vst_la-audiocache.lo \
+	drumgizmo_vst_la-audiocacheeventhandler.lo \
+	drumgizmo_vst_la-audiocacheidmanager.lo \
+	drumgizmo_vst_la-audioinputenginemidi.lo \
+	drumgizmo_vst_la-audiofile.lo drumgizmo_vst_la-channel.lo \
+	drumgizmo_vst_la-channelmixer.lo \
+	drumgizmo_vst_la-chresampler.lo drumgizmo_vst_la-configfile.lo \
+	drumgizmo_vst_la-configuration.lo \
+	drumgizmo_vst_la-configparser.lo drumgizmo_vst_la-drumgizmo.lo \
+	drumgizmo_vst_la-drumkit.lo drumgizmo_vst_la-drumkitloader.lo \
+	drumgizmo_vst_la-drumkitparser.lo drumgizmo_vst_la-events.lo \
+	drumgizmo_vst_la-instrument.lo \
+	drumgizmo_vst_la-instrumentparser.lo \
+	drumgizmo_vst_la-memchecker.lo \
+	drumgizmo_vst_la-messagehandler.lo \
+	drumgizmo_vst_la-messagereceiver.lo \
+	drumgizmo_vst_la-midimapparser.lo \
+	drumgizmo_vst_la-midimapper.lo drumgizmo_vst_la-mutex.lo \
+	drumgizmo_vst_la-path.lo drumgizmo_vst_la-powerlist.lo \
+	drumgizmo_vst_la-sample.lo drumgizmo_vst_la-semaphore.lo \
+	drumgizmo_vst_la-saxparser.lo drumgizmo_vst_la-thread.lo \
+	drumgizmo_vst_la-velocity.lo drumgizmo_vst_la-versionstr.lo
+ at ENABLE_X11_TRUE@am__objects_7 = drumgizmo_vst_la-nativewindow_x11.lo
+ at ENABLE_WIN32_TRUE@am__objects_8 =  \
+ at ENABLE_WIN32_TRUE@	drumgizmo_vst_la-nativewindow_win32.lo
+ at ENABLE_PUGL_TRUE@am__objects_9 =  \
+ at ENABLE_PUGL_TRUE@	drumgizmo_vst_la-nativewindow_pugl.lo \
+ at ENABLE_PUGL_TRUE@	pugl_x11.lo
+am__objects_10 = hugin.lo drumgizmo_vst_la-dgwindow.lo \
+	drumgizmo_vst_la-plugingui.lo drumgizmo_vst_la-label.lo \
+	drumgizmo_vst_la-eventhandler.lo drumgizmo_vst_la-font.lo \
+	drumgizmo_vst_la-window.lo drumgizmo_vst_la-widget.lo \
+	drumgizmo_vst_la-colour.lo drumgizmo_vst_la-painter.lo \
+	drumgizmo_vst_la-button.lo drumgizmo_vst_la-pixelbuffer.lo \
+	drumgizmo_vst_la-lineedit.lo drumgizmo_vst_la-led.lo \
+	drumgizmo_vst_la-checkbox.lo drumgizmo_vst_la-slider.lo \
+	drumgizmo_vst_la-scrollbar.lo drumgizmo_vst_la-textedit.lo \
+	drumgizmo_vst_la-layout.lo drumgizmo_vst_la-listbox.lo \
+	drumgizmo_vst_la-listboxthin.lo \
+	drumgizmo_vst_la-listboxbasic.lo drumgizmo_vst_la-knob.lo \
+	drumgizmo_vst_la-filebrowser.lo drumgizmo_vst_la-directory.lo \
+	drumgizmo_vst_la-pluginconfig.lo drumgizmo_vst_la-image.lo \
+	drumgizmo_vst_la-combobox.lo drumgizmo_vst_la-progressbar.lo \
+	drumgizmo_vst_la-verticalline.lo drumgizmo_vst_la-resource.lo \
+	drumgizmo_vst_la-resource_data.lo drumgizmo_vst_la-lodepng.lo \
+	$(am__objects_7) $(am__objects_8) $(am__objects_9)
+am_drumgizmo_vst_la_OBJECTS = $(am__objects_6) $(am__objects_10) \
+	drumgizmo_vst_la-midievent.lo drumgizmo_vst_la-pluginvst.lo \
+	drumgizmo_vst_la-drumgizmo_plugin.lo
+drumgizmo_vst_la_OBJECTS = $(am_drumgizmo_vst_la_OBJECTS)
+drumgizmo_vst_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) \
+	$(drumgizmo_vst_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_VST_TRUE@am_drumgizmo_vst_la_rpath = -rpath $(vstplugindir)
+libvstsdk_la_LIBADD =
+nodist_libvstsdk_la_OBJECTS = libvstsdk_la-audioeffectx.lo \
+	libvstsdk_la-audioeffect.lo libvstsdk_la-vstplugmain.lo
+libvstsdk_la_OBJECTS = $(nodist_libvstsdk_la_OBJECTS)
+libvstsdk_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libvstsdk_la_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_VST_TRUE@am_libvstsdk_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(drumgizmo_la_SOURCES) $(drumgizmo_vst_la_SOURCES) \
+	$(nodist_libvstsdk_la_SOURCES)
+DIST_SOURCES = $(am__drumgizmo_la_SOURCES_DIST) \
+	$(am__drumgizmo_vst_la_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(lv2plugin_DATA) $(vstplugin_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXPAT_CFLAGS = @EXPAT_CFLAGS@
+EXPAT_LIBS = @EXPAT_LIBS@
+FGREP = @FGREP@
+GREP = @GREP@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
+GUI_LIBS = @GUI_LIBS@
+INPUT_PLUGINS = @INPUT_PLUGINS@
+INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JACK_CFLAGS = @JACK_CFLAGS@
+JACK_LIBS = @JACK_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LV2_CFLAGS = @LV2_CFLAGS@
+LV2_LIBS = @LV2_LIBS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
+OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
+SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SMF_CFLAGS = @SMF_CFLAGS@
+SMF_LIBS = @SMF_LIBS@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+SSEFLAGS = @SSEFLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VST_CPPFLAGS = @VST_CPPFLAGS@
+VST_SOURCE_PATH = @VST_SOURCE_PATH@
+X11_CFLAGS = @X11_CFLAGS@
+X11_LIBS = @X11_LIBS@
+ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
+ZITA_LIBS = @ZITA_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+dgplugindir = @dgplugindir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+PLUGIN_GUI_SOURCES = $(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/plugingui/dgwindow.cc \
+	$(top_srcdir)/plugingui/plugingui.cc \
+	$(top_srcdir)/plugingui/label.cc \
+	$(top_srcdir)/plugingui/eventhandler.cc \
+	$(top_srcdir)/plugingui/font.cc \
+	$(top_srcdir)/plugingui/window.cc \
+	$(top_srcdir)/plugingui/widget.cc \
+	$(top_srcdir)/plugingui/colour.cc \
+	$(top_srcdir)/plugingui/painter.cc \
+	$(top_srcdir)/plugingui/button.cc \
+	$(top_srcdir)/plugingui/pixelbuffer.cc \
+	$(top_srcdir)/plugingui/lineedit.cc \
+	$(top_srcdir)/plugingui/led.cc \
+	$(top_srcdir)/plugingui/checkbox.cc \
+	$(top_srcdir)/plugingui/slider.cc \
+	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
+	$(top_srcdir)/plugingui/listbox.cc \
+	$(top_srcdir)/plugingui/listboxthin.cc \
+	$(top_srcdir)/plugingui/listboxbasic.cc \
+	$(top_srcdir)/plugingui/knob.cc \
+	$(top_srcdir)/plugingui/filebrowser.cc \
+	$(top_srcdir)/plugingui/directory.cc \
+	$(top_srcdir)/plugingui/pluginconfig.cc \
+	$(top_srcdir)/plugingui/image.cc \
+	$(top_srcdir)/plugingui/combobox.cc \
+	$(top_srcdir)/plugingui/progressbar.cc \
+	$(top_srcdir)/plugingui/verticalline.cc \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/plugingui/lodepng/lodepng.cpp $(am__append_1) \
+	$(am__append_2) $(am__append_3)
+PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS)
+PLUGIN_GUI_CPPFLAGS = $(GUI_CPPFLAGS) -I$(top_srcdir)/hugin \
+	-I$(top_srcdir)/plugingui -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
+	-DLODEPNG_NO_COMPILE_ENCODER -DLODEPNG_NO_COMPILE_DISK \
+	-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
+	-DLODEPNG_NO_COMPILE_ERROR_TEXT -DLODEPNG_NO_COMPILE_CPP \
+	$(am__append_4)
+DRUMGIZMO_SOURCES = \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/audioinputenginemidi.cc \
+	$(top_srcdir)/src/audiofile.cc \
+	$(top_srcdir)/src/channel.cc \
+	$(top_srcdir)/src/channelmixer.cc \
+	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/configparser.cc \
+	$(top_srcdir)/src/drumgizmo.cc \
+	$(top_srcdir)/src/drumkit.cc \
+	$(top_srcdir)/src/drumkitloader.cc \
+	$(top_srcdir)/src/drumkitparser.cc \
+	$(top_srcdir)/src/events.cc \
+	$(top_srcdir)/src/instrument.cc \
+	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
+	$(top_srcdir)/src/messagehandler.cc \
+	$(top_srcdir)/src/messagereceiver.cc \
+	$(top_srcdir)/src/midimapparser.cc \
+	$(top_srcdir)/src/midimapper.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/path.cc \
+	$(top_srcdir)/src/powerlist.cc \
+	$(top_srcdir)/src/sample.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/saxparser.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/velocity.cc \
+	$(top_srcdir)/src/versionstr.cc
+
+DRUMGIZMO_LIBS = \
+	$(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS) \
+	$(PTHREAD_LIBS)
+
+DRUMGIZMO_CPPFLAGS = \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/hugin \
+	$(SSEFLAGS) \
+	$(ZITA_CPPFLAGS) $(SNDFILE_CXXFLAGS) $(EXPAT_CFLAGS) $(SAMPLERATE_CFLAGS) \
+	$(PTHREAD_CFLAGS)
+
+
+#######
+# LV2
+###
+ at ENABLE_LV2_TRUE@lv2plugindir = $(libdir)/lv2/drumgizmo.lv2
+ at ENABLE_LV2_TRUE@lv2plugin_LTLIBRARIES = drumgizmo.la
+ at ENABLE_LV2_TRUE@lv2plugin_DATA = manifest.ttl drumgizmo.ttl
+drumgizmo_la_CXXFLAGS = -DLV2 -DLV2_PLUGIN_URI=\"http://drumgizmo.org/lv2\" \
+	-I$(top_srcdir)/plugin/plugingizmo $(DRUMGIZMO_CPPFLAGS) \
+	$(PLUGIN_GUI_CPPFLAGS)
+
+drumgizmo_la_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc \
+	drumgizmo_plugin.cc
+
+drumgizmo_la_LDFLAGS = -shared -module -avoid-version
+drumgizmo_la_LIBADD = $(LV2_LIBS) $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
+
+#######
+# VST
+###
+ at ENABLE_VST_TRUE@vstplugindir = $(libdir)/vst
+ at ENABLE_VST_TRUE@vstplugin_LTLIBRARIES = drumgizmo_vst.la
+ at ENABLE_VST_TRUE@vstplugin_DATA = 
+ at ENABLE_VST_TRUE@noinst_LTLIBRARIES = libvstsdk.la
+VST_BASE = ${VST_SOURCE_PATH}
+VST_SRC_BASE = ${VST_BASE}/public.sdk/source/vst2.x/
+
+# Hack to compile vst sources without -Wall -Werror
+libvstsdk_la_CXXFLAGS = -w $(VST_CPPFLAGS)
+nodist_libvstsdk_la_SOURCES = \
+	${VST_SRC_BASE}/audioeffectx.cpp \
+	${VST_SRC_BASE}/audioeffect.cpp \
+	${VST_SRC_BASE}/vstplugmain.cpp
+
+drumgizmo_vst_la_CXXFLAGS = -DVST \
+	-I$(top_srcdir)/plugin/plugingizmo $(DRUMGIZMO_CPPFLAGS) \
+	$(PLUGIN_GUI_CPPFLAGS) $(VST_CPPFLAGS)
+
+drumgizmo_vst_la_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/plugin/plugingizmo/midievent.cc \
+	$(top_srcdir)/plugin/plugingizmo/pluginvst.cc \
+	drumgizmo_plugin.cc
+
+drumgizmo_vst_la_LDFLAGS = -shared -module -avoid-version
+drumgizmo_vst_la_LIBADD = libvstsdk.la $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
+EXTRA_DIST = \
+	$(lv2plugin_DATA) \
+	$(vstplugin_DATA) \
+	drumgizmo_plugin.h \
+	$(top_srcdir)/plugin/plugingizmo/plugin.h \
+	$(top_srcdir)/plugin/plugingizmo/midievent.h \
+	$(top_srcdir)/plugin/plugingizmo/pluginlv2.h \
+	$(top_srcdir)/plugin/plugingizmo/pluginvst.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugin/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu plugin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+$(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+Makefile.mingw32: $(top_builddir)/config.status $(srcdir)/Makefile.mingw32.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+install-lv2pluginLTLIBRARIES: $(lv2plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lv2plugin_LTLIBRARIES)'; test -n "$(lv2plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(lv2plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(lv2plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(lv2plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(lv2plugindir)"; \
+	}
+
+uninstall-lv2pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lv2plugin_LTLIBRARIES)'; test -n "$(lv2plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(lv2plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(lv2plugindir)/$$f"; \
+	done
+
+clean-lv2pluginLTLIBRARIES:
+	-test -z "$(lv2plugin_LTLIBRARIES)" || rm -f $(lv2plugin_LTLIBRARIES)
+	@list='$(lv2plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-vstpluginLTLIBRARIES: $(vstplugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(vstplugin_LTLIBRARIES)'; test -n "$(vstplugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(vstplugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(vstplugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(vstplugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(vstplugindir)"; \
+	}
+
+uninstall-vstpluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(vstplugin_LTLIBRARIES)'; test -n "$(vstplugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(vstplugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(vstplugindir)/$$f"; \
+	done
+
+clean-vstpluginLTLIBRARIES:
+	-test -z "$(vstplugin_LTLIBRARIES)" || rm -f $(vstplugin_LTLIBRARIES)
+	@list='$(vstplugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+drumgizmo.la: $(drumgizmo_la_OBJECTS) $(drumgizmo_la_DEPENDENCIES) $(EXTRA_drumgizmo_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(drumgizmo_la_LINK) $(am_drumgizmo_la_rpath) $(drumgizmo_la_OBJECTS) $(drumgizmo_la_LIBADD) $(LIBS)
+
+drumgizmo_vst.la: $(drumgizmo_vst_la_OBJECTS) $(drumgizmo_vst_la_DEPENDENCIES) $(EXTRA_drumgizmo_vst_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(drumgizmo_vst_la_LINK) $(am_drumgizmo_vst_la_rpath) $(drumgizmo_vst_la_OBJECTS) $(drumgizmo_vst_la_LIBADD) $(LIBS)
+
+libvstsdk.la: $(libvstsdk_la_OBJECTS) $(libvstsdk_la_DEPENDENCIES) $(EXTRA_libvstsdk_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libvstsdk_la_LINK) $(am_libvstsdk_la_rpath) $(libvstsdk_la_OBJECTS) $(libvstsdk_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiocache.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiocacheeventhandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiocachefile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiocacheidmanager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audiofile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-audioinputenginemidi.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-button.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-channel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-channelmixer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-checkbox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-chresampler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-colour.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-combobox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-configfile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-configparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-configuration.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-dgwindow.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-directory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumgizmo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumgizmo_plugin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkitloader.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-drumkitparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-eventhandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-events.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-filebrowser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-font.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-image.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-instrument.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-instrumentparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-knob.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-label.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-layout.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-led.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lineedit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listbox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listboxbasic.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-listboxthin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-lodepng.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-memchecker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-messagehandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-messagereceiver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-midievent.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-midimapparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-midimapper.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-mutex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-nativewindow_pugl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-nativewindow_win32.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-nativewindow_x11.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-painter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-path.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-pixelbuffer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-pluginconfig.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-plugingui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-pluginlv2.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-powerlist.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-progressbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-resource.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-resource_data.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-sample.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-saxparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-scrollbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-semaphore.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-slider.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-textedit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-thread.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-velocity.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-versionstr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-verticalline.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-widget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_la-window.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audiocache.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audiocacheeventhandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audiocachefile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audiocacheidmanager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audiofile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-audioinputenginemidi.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-button.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-channel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-channelmixer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-checkbox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-chresampler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-colour.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-combobox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-configfile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-configparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-configuration.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-dgwindow.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-directory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-drumgizmo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-drumgizmo_plugin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-drumkit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-drumkitloader.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-drumkitparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-eventhandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-events.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-filebrowser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-font.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-image.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-instrument.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-instrumentparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-knob.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-label.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-layout.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-led.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-lineedit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-listbox.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-listboxbasic.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-listboxthin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-lodepng.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-memchecker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-messagehandler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-messagereceiver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-midievent.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-midimapparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-midimapper.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-mutex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-nativewindow_pugl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-nativewindow_win32.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-nativewindow_x11.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-painter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-path.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-pixelbuffer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-pluginconfig.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-plugingui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-pluginvst.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-powerlist.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-progressbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-resource.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-resource_data.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-sample.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-saxparser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-scrollbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-semaphore.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-slider.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-textedit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-thread.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-velocity.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-versionstr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-verticalline.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-widget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drumgizmo_vst_la-window.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libvstsdk_la-audioeffect.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libvstsdk_la-audioeffectx.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libvstsdk_la-vstplugmain.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pugl_x11.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+hugin.lo: $(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+
+pugl_x11.lo: $(top_srcdir)/pugl/pugl/pugl_x11.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pugl_x11.lo -MD -MP -MF $(DEPDIR)/pugl_x11.Tpo -c -o pugl_x11.lo `test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c' || echo '$(srcdir)/'`$(top_srcdir)/pugl/pugl/pugl_x11.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pugl_x11.Tpo $(DEPDIR)/pugl_x11.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/pugl/pugl/pugl_x11.c' object='pugl_x11.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pugl_x11.lo `test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c' || echo '$(srcdir)/'`$(top_srcdir)/pugl/pugl/pugl_x11.c
+
+.cc.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+drumgizmo_la-audiocachefile.lo: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiocachefile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiocachefile.Tpo -c -o drumgizmo_la-audiocachefile.lo `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiocachefile.Tpo $(DEPDIR)/drumgizmo_la-audiocachefile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='drumgizmo_la-audiocachefile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiocachefile.lo `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+drumgizmo_la-audiocache.lo: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiocache.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiocache.Tpo -c -o drumgizmo_la-audiocache.lo `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiocache.Tpo $(DEPDIR)/drumgizmo_la-audiocache.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='drumgizmo_la-audiocache.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiocache.lo `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+drumgizmo_la-audiocacheeventhandler.lo: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiocacheeventhandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiocacheeventhandler.Tpo -c -o drumgizmo_la-audiocacheeventhandler.lo `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiocacheeventhandler.Tpo $(DEPDIR)/drumgizmo_la-audiocacheeventhandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='drumgizmo_la-audiocacheeventhandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiocacheeventhandler.lo `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+drumgizmo_la-audiocacheidmanager.lo: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiocacheidmanager.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiocacheidmanager.Tpo -c -o drumgizmo_la-audiocacheidmanager.lo `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiocacheidmanager.Tpo $(DEPDIR)/drumgizmo_la-audiocacheidmanager.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='drumgizmo_la-audiocacheidmanager.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiocacheidmanager.lo `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+drumgizmo_la-audioinputenginemidi.lo: $(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audioinputenginemidi.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Tpo -c -o drumgizmo_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Tpo $(DEPDIR)/drumgizmo_la-audioinputenginemidi.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='drumgizmo_la-audioinputenginemidi.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+
+drumgizmo_la-audiofile.lo: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-audiofile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-audiofile.Tpo -c -o drumgizmo_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-audiofile.Tpo $(DEPDIR)/drumgizmo_la-audiofile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='drumgizmo_la-audiofile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+
+drumgizmo_la-channel.lo: $(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-channel.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-channel.Tpo -c -o drumgizmo_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-channel.Tpo $(DEPDIR)/drumgizmo_la-channel.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='drumgizmo_la-channel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+
+drumgizmo_la-channelmixer.lo: $(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-channelmixer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-channelmixer.Tpo -c -o drumgizmo_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-channelmixer.Tpo $(DEPDIR)/drumgizmo_la-channelmixer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='drumgizmo_la-channelmixer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+
+drumgizmo_la-chresampler.lo: $(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-chresampler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-chresampler.Tpo -c -o drumgizmo_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-chresampler.Tpo $(DEPDIR)/drumgizmo_la-chresampler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='drumgizmo_la-chresampler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+
+drumgizmo_la-configfile.lo: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-configfile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-configfile.Tpo -c -o drumgizmo_la-configfile.lo `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-configfile.Tpo $(DEPDIR)/drumgizmo_la-configfile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='drumgizmo_la-configfile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-configfile.lo `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+drumgizmo_la-configuration.lo: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-configuration.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-configuration.Tpo -c -o drumgizmo_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-configuration.Tpo $(DEPDIR)/drumgizmo_la-configuration.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='drumgizmo_la-configuration.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+
+drumgizmo_la-configparser.lo: $(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-configparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-configparser.Tpo -c -o drumgizmo_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-configparser.Tpo $(DEPDIR)/drumgizmo_la-configparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='drumgizmo_la-configparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+
+drumgizmo_la-drumgizmo.lo: $(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumgizmo.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumgizmo.Tpo -c -o drumgizmo_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumgizmo.Tpo $(DEPDIR)/drumgizmo_la-drumgizmo.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='drumgizmo_la-drumgizmo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+
+drumgizmo_la-drumkit.lo: $(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkit.Tpo -c -o drumgizmo_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkit.Tpo $(DEPDIR)/drumgizmo_la-drumkit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='drumgizmo_la-drumkit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+
+drumgizmo_la-drumkitloader.lo: $(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkitloader.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkitloader.Tpo -c -o drumgizmo_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkitloader.Tpo $(DEPDIR)/drumgizmo_la-drumkitloader.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='drumgizmo_la-drumkitloader.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+
+drumgizmo_la-drumkitparser.lo: $(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumkitparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumkitparser.Tpo -c -o drumgizmo_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumkitparser.Tpo $(DEPDIR)/drumgizmo_la-drumkitparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='drumgizmo_la-drumkitparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+
+drumgizmo_la-events.lo: $(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-events.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-events.Tpo -c -o drumgizmo_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-events.Tpo $(DEPDIR)/drumgizmo_la-events.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='drumgizmo_la-events.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+
+drumgizmo_la-instrument.lo: $(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-instrument.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-instrument.Tpo -c -o drumgizmo_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-instrument.Tpo $(DEPDIR)/drumgizmo_la-instrument.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='drumgizmo_la-instrument.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+
+drumgizmo_la-instrumentparser.lo: $(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-instrumentparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-instrumentparser.Tpo -c -o drumgizmo_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-instrumentparser.Tpo $(DEPDIR)/drumgizmo_la-instrumentparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='drumgizmo_la-instrumentparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+
+drumgizmo_la-memchecker.lo: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-memchecker.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-memchecker.Tpo -c -o drumgizmo_la-memchecker.lo `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-memchecker.Tpo $(DEPDIR)/drumgizmo_la-memchecker.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='drumgizmo_la-memchecker.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-memchecker.lo `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+
+drumgizmo_la-messagehandler.lo: $(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-messagehandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-messagehandler.Tpo -c -o drumgizmo_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-messagehandler.Tpo $(DEPDIR)/drumgizmo_la-messagehandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='drumgizmo_la-messagehandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+
+drumgizmo_la-messagereceiver.lo: $(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-messagereceiver.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-messagereceiver.Tpo -c -o drumgizmo_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-messagereceiver.Tpo $(DEPDIR)/drumgizmo_la-messagereceiver.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='drumgizmo_la-messagereceiver.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+
+drumgizmo_la-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-midimapparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-midimapparser.Tpo -c -o drumgizmo_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-midimapparser.Tpo $(DEPDIR)/drumgizmo_la-midimapparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='drumgizmo_la-midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+
+drumgizmo_la-midimapper.lo: $(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-midimapper.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-midimapper.Tpo -c -o drumgizmo_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-midimapper.Tpo $(DEPDIR)/drumgizmo_la-midimapper.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='drumgizmo_la-midimapper.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+
+drumgizmo_la-mutex.lo: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-mutex.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-mutex.Tpo -c -o drumgizmo_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-mutex.Tpo $(DEPDIR)/drumgizmo_la-mutex.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='drumgizmo_la-mutex.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+drumgizmo_la-path.lo: $(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-path.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-path.Tpo -c -o drumgizmo_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-path.Tpo $(DEPDIR)/drumgizmo_la-path.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='drumgizmo_la-path.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+
+drumgizmo_la-powerlist.lo: $(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-powerlist.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-powerlist.Tpo -c -o drumgizmo_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-powerlist.Tpo $(DEPDIR)/drumgizmo_la-powerlist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='drumgizmo_la-powerlist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+
+drumgizmo_la-sample.lo: $(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-sample.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-sample.Tpo -c -o drumgizmo_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-sample.Tpo $(DEPDIR)/drumgizmo_la-sample.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='drumgizmo_la-sample.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+
+drumgizmo_la-semaphore.lo: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-semaphore.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-semaphore.Tpo -c -o drumgizmo_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-semaphore.Tpo $(DEPDIR)/drumgizmo_la-semaphore.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='drumgizmo_la-semaphore.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+drumgizmo_la-saxparser.lo: $(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-saxparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-saxparser.Tpo -c -o drumgizmo_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-saxparser.Tpo $(DEPDIR)/drumgizmo_la-saxparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='drumgizmo_la-saxparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+
+drumgizmo_la-thread.lo: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-thread.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-thread.Tpo -c -o drumgizmo_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-thread.Tpo $(DEPDIR)/drumgizmo_la-thread.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='drumgizmo_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+drumgizmo_la-velocity.lo: $(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-velocity.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-velocity.Tpo -c -o drumgizmo_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-velocity.Tpo $(DEPDIR)/drumgizmo_la-velocity.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='drumgizmo_la-velocity.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+
+drumgizmo_la-versionstr.lo: $(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-versionstr.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-versionstr.Tpo -c -o drumgizmo_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-versionstr.Tpo $(DEPDIR)/drumgizmo_la-versionstr.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='drumgizmo_la-versionstr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+
+drumgizmo_la-dgwindow.lo: $(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-dgwindow.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-dgwindow.Tpo -c -o drumgizmo_la-dgwindow.lo `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-dgwindow.Tpo $(DEPDIR)/drumgizmo_la-dgwindow.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/dgwindow.cc' object='drumgizmo_la-dgwindow.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-dgwindow.lo `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
+
+drumgizmo_la-plugingui.lo: $(top_srcdir)/plugingui/plugingui.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-plugingui.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-plugingui.Tpo -c -o drumgizmo_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-plugingui.Tpo $(DEPDIR)/drumgizmo_la-plugingui.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/plugingui.cc' object='drumgizmo_la-plugingui.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
+
+drumgizmo_la-label.lo: $(top_srcdir)/plugingui/label.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-label.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-label.Tpo -c -o drumgizmo_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-label.Tpo $(DEPDIR)/drumgizmo_la-label.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/label.cc' object='drumgizmo_la-label.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
+
+drumgizmo_la-eventhandler.lo: $(top_srcdir)/plugingui/eventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-eventhandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-eventhandler.Tpo -c -o drumgizmo_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-eventhandler.Tpo $(DEPDIR)/drumgizmo_la-eventhandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/eventhandler.cc' object='drumgizmo_la-eventhandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
+
+drumgizmo_la-font.lo: $(top_srcdir)/plugingui/font.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-font.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-font.Tpo -c -o drumgizmo_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-font.Tpo $(DEPDIR)/drumgizmo_la-font.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/font.cc' object='drumgizmo_la-font.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
+
+drumgizmo_la-window.lo: $(top_srcdir)/plugingui/window.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-window.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-window.Tpo -c -o drumgizmo_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-window.Tpo $(DEPDIR)/drumgizmo_la-window.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/window.cc' object='drumgizmo_la-window.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
+
+drumgizmo_la-widget.lo: $(top_srcdir)/plugingui/widget.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-widget.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-widget.Tpo -c -o drumgizmo_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-widget.Tpo $(DEPDIR)/drumgizmo_la-widget.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/widget.cc' object='drumgizmo_la-widget.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
+
+drumgizmo_la-colour.lo: $(top_srcdir)/plugingui/colour.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-colour.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-colour.Tpo -c -o drumgizmo_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-colour.Tpo $(DEPDIR)/drumgizmo_la-colour.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/colour.cc' object='drumgizmo_la-colour.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
+
+drumgizmo_la-painter.lo: $(top_srcdir)/plugingui/painter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-painter.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-painter.Tpo -c -o drumgizmo_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-painter.Tpo $(DEPDIR)/drumgizmo_la-painter.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/painter.cc' object='drumgizmo_la-painter.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
+
+drumgizmo_la-button.lo: $(top_srcdir)/plugingui/button.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-button.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-button.Tpo -c -o drumgizmo_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-button.Tpo $(DEPDIR)/drumgizmo_la-button.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/button.cc' object='drumgizmo_la-button.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
+
+drumgizmo_la-pixelbuffer.lo: $(top_srcdir)/plugingui/pixelbuffer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-pixelbuffer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-pixelbuffer.Tpo -c -o drumgizmo_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-pixelbuffer.Tpo $(DEPDIR)/drumgizmo_la-pixelbuffer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pixelbuffer.cc' object='drumgizmo_la-pixelbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
+
+drumgizmo_la-lineedit.lo: $(top_srcdir)/plugingui/lineedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lineedit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lineedit.Tpo -c -o drumgizmo_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lineedit.Tpo $(DEPDIR)/drumgizmo_la-lineedit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lineedit.cc' object='drumgizmo_la-lineedit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
+
+drumgizmo_la-led.lo: $(top_srcdir)/plugingui/led.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-led.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-led.Tpo -c -o drumgizmo_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-led.Tpo $(DEPDIR)/drumgizmo_la-led.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/led.cc' object='drumgizmo_la-led.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
+
+drumgizmo_la-checkbox.lo: $(top_srcdir)/plugingui/checkbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-checkbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-checkbox.Tpo -c -o drumgizmo_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-checkbox.Tpo $(DEPDIR)/drumgizmo_la-checkbox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/checkbox.cc' object='drumgizmo_la-checkbox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
+
+drumgizmo_la-slider.lo: $(top_srcdir)/plugingui/slider.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-slider.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-slider.Tpo -c -o drumgizmo_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-slider.Tpo $(DEPDIR)/drumgizmo_la-slider.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/slider.cc' object='drumgizmo_la-slider.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
+
+drumgizmo_la-scrollbar.lo: $(top_srcdir)/plugingui/scrollbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-scrollbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-scrollbar.Tpo -c -o drumgizmo_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-scrollbar.Tpo $(DEPDIR)/drumgizmo_la-scrollbar.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/scrollbar.cc' object='drumgizmo_la-scrollbar.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
+
+drumgizmo_la-textedit.lo: $(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-textedit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-textedit.Tpo -c -o drumgizmo_la-textedit.lo `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-textedit.Tpo $(DEPDIR)/drumgizmo_la-textedit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/textedit.cc' object='drumgizmo_la-textedit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-textedit.lo `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+
+drumgizmo_la-layout.lo: $(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-layout.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-layout.Tpo -c -o drumgizmo_la-layout.lo `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-layout.Tpo $(DEPDIR)/drumgizmo_la-layout.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/layout.cc' object='drumgizmo_la-layout.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-layout.lo `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+
+drumgizmo_la-listbox.lo: $(top_srcdir)/plugingui/listbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listbox.Tpo -c -o drumgizmo_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listbox.Tpo $(DEPDIR)/drumgizmo_la-listbox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listbox.cc' object='drumgizmo_la-listbox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
+
+drumgizmo_la-listboxthin.lo: $(top_srcdir)/plugingui/listboxthin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listboxthin.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listboxthin.Tpo -c -o drumgizmo_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listboxthin.Tpo $(DEPDIR)/drumgizmo_la-listboxthin.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxthin.cc' object='drumgizmo_la-listboxthin.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
+
+drumgizmo_la-listboxbasic.lo: $(top_srcdir)/plugingui/listboxbasic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-listboxbasic.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-listboxbasic.Tpo -c -o drumgizmo_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-listboxbasic.Tpo $(DEPDIR)/drumgizmo_la-listboxbasic.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxbasic.cc' object='drumgizmo_la-listboxbasic.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
+
+drumgizmo_la-knob.lo: $(top_srcdir)/plugingui/knob.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-knob.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-knob.Tpo -c -o drumgizmo_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-knob.Tpo $(DEPDIR)/drumgizmo_la-knob.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/knob.cc' object='drumgizmo_la-knob.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
+
+drumgizmo_la-filebrowser.lo: $(top_srcdir)/plugingui/filebrowser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-filebrowser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-filebrowser.Tpo -c -o drumgizmo_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-filebrowser.Tpo $(DEPDIR)/drumgizmo_la-filebrowser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/filebrowser.cc' object='drumgizmo_la-filebrowser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
+
+drumgizmo_la-directory.lo: $(top_srcdir)/plugingui/directory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-directory.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-directory.Tpo -c -o drumgizmo_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-directory.Tpo $(DEPDIR)/drumgizmo_la-directory.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/directory.cc' object='drumgizmo_la-directory.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
+
+drumgizmo_la-pluginconfig.lo: $(top_srcdir)/plugingui/pluginconfig.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-pluginconfig.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-pluginconfig.Tpo -c -o drumgizmo_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-pluginconfig.Tpo $(DEPDIR)/drumgizmo_la-pluginconfig.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pluginconfig.cc' object='drumgizmo_la-pluginconfig.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
+
+drumgizmo_la-image.lo: $(top_srcdir)/plugingui/image.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-image.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-image.Tpo -c -o drumgizmo_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-image.Tpo $(DEPDIR)/drumgizmo_la-image.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/image.cc' object='drumgizmo_la-image.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
+
+drumgizmo_la-combobox.lo: $(top_srcdir)/plugingui/combobox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-combobox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-combobox.Tpo -c -o drumgizmo_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-combobox.Tpo $(DEPDIR)/drumgizmo_la-combobox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/combobox.cc' object='drumgizmo_la-combobox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
+
+drumgizmo_la-progressbar.lo: $(top_srcdir)/plugingui/progressbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-progressbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-progressbar.Tpo -c -o drumgizmo_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-progressbar.Tpo $(DEPDIR)/drumgizmo_la-progressbar.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/progressbar.cc' object='drumgizmo_la-progressbar.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
+
+drumgizmo_la-verticalline.lo: $(top_srcdir)/plugingui/verticalline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-verticalline.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-verticalline.Tpo -c -o drumgizmo_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-verticalline.Tpo $(DEPDIR)/drumgizmo_la-verticalline.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/verticalline.cc' object='drumgizmo_la-verticalline.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
+
+drumgizmo_la-resource.lo: $(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-resource.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-resource.Tpo -c -o drumgizmo_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-resource.Tpo $(DEPDIR)/drumgizmo_la-resource.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='drumgizmo_la-resource.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+
+drumgizmo_la-resource_data.lo: $(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-resource_data.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-resource_data.Tpo -c -o drumgizmo_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-resource_data.Tpo $(DEPDIR)/drumgizmo_la-resource_data.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='drumgizmo_la-resource_data.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+
+drumgizmo_la-lodepng.lo: $(top_srcdir)/plugingui/lodepng/lodepng.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-lodepng.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-lodepng.Tpo -c -o drumgizmo_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-lodepng.Tpo $(DEPDIR)/drumgizmo_la-lodepng.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lodepng/lodepng.cpp' object='drumgizmo_la-lodepng.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
+
+drumgizmo_la-nativewindow_x11.lo: $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-nativewindow_x11.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-nativewindow_x11.Tpo -c -o drumgizmo_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-nativewindow_x11.Tpo $(DEPDIR)/drumgizmo_la-nativewindow_x11.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='drumgizmo_la-nativewindow_x11.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+
+drumgizmo_la-nativewindow_win32.lo: $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-nativewindow_win32.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-nativewindow_win32.Tpo -c -o drumgizmo_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-nativewindow_win32.Tpo $(DEPDIR)/drumgizmo_la-nativewindow_win32.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='drumgizmo_la-nativewindow_win32.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+
+drumgizmo_la-nativewindow_pugl.lo: $(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-nativewindow_pugl.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-nativewindow_pugl.Tpo -c -o drumgizmo_la-nativewindow_pugl.lo `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-nativewindow_pugl.Tpo $(DEPDIR)/drumgizmo_la-nativewindow_pugl.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_pugl.cc' object='drumgizmo_la-nativewindow_pugl.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-nativewindow_pugl.lo `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+
+drumgizmo_la-midievent.lo: $(top_srcdir)/plugin/plugingizmo/midievent.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-midievent.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-midievent.Tpo -c -o drumgizmo_la-midievent.lo `test -f '$(top_srcdir)/plugin/plugingizmo/midievent.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/midievent.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-midievent.Tpo $(DEPDIR)/drumgizmo_la-midievent.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugin/plugingizmo/midievent.cc' object='drumgizmo_la-midievent.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-midievent.lo `test -f '$(top_srcdir)/plugin/plugingizmo/midievent.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/midievent.cc
+
+drumgizmo_la-pluginlv2.lo: $(top_srcdir)/plugin/plugingizmo/pluginlv2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-pluginlv2.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-pluginlv2.Tpo -c -o drumgizmo_la-pluginlv2.lo `test -f '$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-pluginlv2.Tpo $(DEPDIR)/drumgizmo_la-pluginlv2.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc' object='drumgizmo_la-pluginlv2.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-pluginlv2.lo `test -f '$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/pluginlv2.cc
+
+drumgizmo_la-drumgizmo_plugin.lo: drumgizmo_plugin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_la-drumgizmo_plugin.lo -MD -MP -MF $(DEPDIR)/drumgizmo_la-drumgizmo_plugin.Tpo -c -o drumgizmo_la-drumgizmo_plugin.lo `test -f 'drumgizmo_plugin.cc' || echo '$(srcdir)/'`drumgizmo_plugin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_la-drumgizmo_plugin.Tpo $(DEPDIR)/drumgizmo_la-drumgizmo_plugin.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='drumgizmo_plugin.cc' object='drumgizmo_la-drumgizmo_plugin.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_la-drumgizmo_plugin.lo `test -f 'drumgizmo_plugin.cc' || echo '$(srcdir)/'`drumgizmo_plugin.cc
+
+drumgizmo_vst_la-audiocachefile.lo: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audiocachefile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audiocachefile.Tpo -c -o drumgizmo_vst_la-audiocachefile.lo `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audiocachefile.Tpo $(DEPDIR)/drumgizmo_vst_la-audiocachefile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='drumgizmo_vst_la-audiocachefile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audiocachefile.lo `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+drumgizmo_vst_la-audiocache.lo: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audiocache.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audiocache.Tpo -c -o drumgizmo_vst_la-audiocache.lo `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audiocache.Tpo $(DEPDIR)/drumgizmo_vst_la-audiocache.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='drumgizmo_vst_la-audiocache.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audiocache.lo `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+drumgizmo_vst_la-audiocacheeventhandler.lo: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audiocacheeventhandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audiocacheeventhandler.Tpo -c -o drumgizmo_vst_la-audiocacheeventhandler.lo `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audiocacheeventhandler.Tpo $(DEPDIR)/drumgizmo_vst_la-audiocacheeventhandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='drumgizmo_vst_la-audiocacheeventhandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audiocacheeventhandler.lo `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+drumgizmo_vst_la-audiocacheidmanager.lo: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audiocacheidmanager.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audiocacheidmanager.Tpo -c -o drumgizmo_vst_la-audiocacheidmanager.lo `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audiocacheidmanager.Tpo $(DEPDIR)/drumgizmo_vst_la-audiocacheidmanager.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='drumgizmo_vst_la-audiocacheidmanager.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audiocacheidmanager.lo `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+drumgizmo_vst_la-audioinputenginemidi.lo: $(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audioinputenginemidi.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audioinputenginemidi.Tpo -c -o drumgizmo_vst_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audioinputenginemidi.Tpo $(DEPDIR)/drumgizmo_vst_la-audioinputenginemidi.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='drumgizmo_vst_la-audioinputenginemidi.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+
+drumgizmo_vst_la-audiofile.lo: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-audiofile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-audiofile.Tpo -c -o drumgizmo_vst_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-audiofile.Tpo $(DEPDIR)/drumgizmo_vst_la-audiofile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='drumgizmo_vst_la-audiofile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+
+drumgizmo_vst_la-channel.lo: $(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-channel.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-channel.Tpo -c -o drumgizmo_vst_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-channel.Tpo $(DEPDIR)/drumgizmo_vst_la-channel.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='drumgizmo_vst_la-channel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+
+drumgizmo_vst_la-channelmixer.lo: $(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-channelmixer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-channelmixer.Tpo -c -o drumgizmo_vst_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-channelmixer.Tpo $(DEPDIR)/drumgizmo_vst_la-channelmixer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='drumgizmo_vst_la-channelmixer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+
+drumgizmo_vst_la-chresampler.lo: $(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-chresampler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-chresampler.Tpo -c -o drumgizmo_vst_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-chresampler.Tpo $(DEPDIR)/drumgizmo_vst_la-chresampler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='drumgizmo_vst_la-chresampler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+
+drumgizmo_vst_la-configfile.lo: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-configfile.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-configfile.Tpo -c -o drumgizmo_vst_la-configfile.lo `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-configfile.Tpo $(DEPDIR)/drumgizmo_vst_la-configfile.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='drumgizmo_vst_la-configfile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-configfile.lo `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+drumgizmo_vst_la-configuration.lo: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-configuration.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-configuration.Tpo -c -o drumgizmo_vst_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-configuration.Tpo $(DEPDIR)/drumgizmo_vst_la-configuration.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='drumgizmo_vst_la-configuration.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+
+drumgizmo_vst_la-configparser.lo: $(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-configparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-configparser.Tpo -c -o drumgizmo_vst_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-configparser.Tpo $(DEPDIR)/drumgizmo_vst_la-configparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='drumgizmo_vst_la-configparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+
+drumgizmo_vst_la-drumgizmo.lo: $(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-drumgizmo.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-drumgizmo.Tpo -c -o drumgizmo_vst_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-drumgizmo.Tpo $(DEPDIR)/drumgizmo_vst_la-drumgizmo.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='drumgizmo_vst_la-drumgizmo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+
+drumgizmo_vst_la-drumkit.lo: $(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-drumkit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-drumkit.Tpo -c -o drumgizmo_vst_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-drumkit.Tpo $(DEPDIR)/drumgizmo_vst_la-drumkit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='drumgizmo_vst_la-drumkit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+
+drumgizmo_vst_la-drumkitloader.lo: $(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-drumkitloader.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-drumkitloader.Tpo -c -o drumgizmo_vst_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-drumkitloader.Tpo $(DEPDIR)/drumgizmo_vst_la-drumkitloader.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='drumgizmo_vst_la-drumkitloader.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+
+drumgizmo_vst_la-drumkitparser.lo: $(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-drumkitparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-drumkitparser.Tpo -c -o drumgizmo_vst_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-drumkitparser.Tpo $(DEPDIR)/drumgizmo_vst_la-drumkitparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='drumgizmo_vst_la-drumkitparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+
+drumgizmo_vst_la-events.lo: $(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-events.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-events.Tpo -c -o drumgizmo_vst_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-events.Tpo $(DEPDIR)/drumgizmo_vst_la-events.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='drumgizmo_vst_la-events.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+
+drumgizmo_vst_la-instrument.lo: $(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-instrument.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-instrument.Tpo -c -o drumgizmo_vst_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-instrument.Tpo $(DEPDIR)/drumgizmo_vst_la-instrument.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='drumgizmo_vst_la-instrument.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+
+drumgizmo_vst_la-instrumentparser.lo: $(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-instrumentparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-instrumentparser.Tpo -c -o drumgizmo_vst_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-instrumentparser.Tpo $(DEPDIR)/drumgizmo_vst_la-instrumentparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='drumgizmo_vst_la-instrumentparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+
+drumgizmo_vst_la-memchecker.lo: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-memchecker.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-memchecker.Tpo -c -o drumgizmo_vst_la-memchecker.lo `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-memchecker.Tpo $(DEPDIR)/drumgizmo_vst_la-memchecker.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='drumgizmo_vst_la-memchecker.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-memchecker.lo `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+
+drumgizmo_vst_la-messagehandler.lo: $(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-messagehandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-messagehandler.Tpo -c -o drumgizmo_vst_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-messagehandler.Tpo $(DEPDIR)/drumgizmo_vst_la-messagehandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='drumgizmo_vst_la-messagehandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+
+drumgizmo_vst_la-messagereceiver.lo: $(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-messagereceiver.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-messagereceiver.Tpo -c -o drumgizmo_vst_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-messagereceiver.Tpo $(DEPDIR)/drumgizmo_vst_la-messagereceiver.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='drumgizmo_vst_la-messagereceiver.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+
+drumgizmo_vst_la-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-midimapparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-midimapparser.Tpo -c -o drumgizmo_vst_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-midimapparser.Tpo $(DEPDIR)/drumgizmo_vst_la-midimapparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='drumgizmo_vst_la-midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+
+drumgizmo_vst_la-midimapper.lo: $(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-midimapper.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-midimapper.Tpo -c -o drumgizmo_vst_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-midimapper.Tpo $(DEPDIR)/drumgizmo_vst_la-midimapper.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='drumgizmo_vst_la-midimapper.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+
+drumgizmo_vst_la-mutex.lo: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-mutex.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-mutex.Tpo -c -o drumgizmo_vst_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-mutex.Tpo $(DEPDIR)/drumgizmo_vst_la-mutex.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='drumgizmo_vst_la-mutex.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+drumgizmo_vst_la-path.lo: $(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-path.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-path.Tpo -c -o drumgizmo_vst_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-path.Tpo $(DEPDIR)/drumgizmo_vst_la-path.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='drumgizmo_vst_la-path.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+
+drumgizmo_vst_la-powerlist.lo: $(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-powerlist.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-powerlist.Tpo -c -o drumgizmo_vst_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-powerlist.Tpo $(DEPDIR)/drumgizmo_vst_la-powerlist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='drumgizmo_vst_la-powerlist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+
+drumgizmo_vst_la-sample.lo: $(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-sample.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-sample.Tpo -c -o drumgizmo_vst_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-sample.Tpo $(DEPDIR)/drumgizmo_vst_la-sample.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='drumgizmo_vst_la-sample.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+
+drumgizmo_vst_la-semaphore.lo: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-semaphore.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-semaphore.Tpo -c -o drumgizmo_vst_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-semaphore.Tpo $(DEPDIR)/drumgizmo_vst_la-semaphore.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='drumgizmo_vst_la-semaphore.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+drumgizmo_vst_la-saxparser.lo: $(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-saxparser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-saxparser.Tpo -c -o drumgizmo_vst_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-saxparser.Tpo $(DEPDIR)/drumgizmo_vst_la-saxparser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='drumgizmo_vst_la-saxparser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+
+drumgizmo_vst_la-thread.lo: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-thread.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-thread.Tpo -c -o drumgizmo_vst_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-thread.Tpo $(DEPDIR)/drumgizmo_vst_la-thread.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='drumgizmo_vst_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+drumgizmo_vst_la-velocity.lo: $(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-velocity.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-velocity.Tpo -c -o drumgizmo_vst_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-velocity.Tpo $(DEPDIR)/drumgizmo_vst_la-velocity.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='drumgizmo_vst_la-velocity.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+
+drumgizmo_vst_la-versionstr.lo: $(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-versionstr.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-versionstr.Tpo -c -o drumgizmo_vst_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-versionstr.Tpo $(DEPDIR)/drumgizmo_vst_la-versionstr.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='drumgizmo_vst_la-versionstr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+
+drumgizmo_vst_la-dgwindow.lo: $(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-dgwindow.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-dgwindow.Tpo -c -o drumgizmo_vst_la-dgwindow.lo `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-dgwindow.Tpo $(DEPDIR)/drumgizmo_vst_la-dgwindow.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/dgwindow.cc' object='drumgizmo_vst_la-dgwindow.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-dgwindow.lo `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
+
+drumgizmo_vst_la-plugingui.lo: $(top_srcdir)/plugingui/plugingui.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-plugingui.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-plugingui.Tpo -c -o drumgizmo_vst_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-plugingui.Tpo $(DEPDIR)/drumgizmo_vst_la-plugingui.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/plugingui.cc' object='drumgizmo_vst_la-plugingui.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
+
+drumgizmo_vst_la-label.lo: $(top_srcdir)/plugingui/label.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-label.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-label.Tpo -c -o drumgizmo_vst_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-label.Tpo $(DEPDIR)/drumgizmo_vst_la-label.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/label.cc' object='drumgizmo_vst_la-label.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
+
+drumgizmo_vst_la-eventhandler.lo: $(top_srcdir)/plugingui/eventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-eventhandler.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-eventhandler.Tpo -c -o drumgizmo_vst_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-eventhandler.Tpo $(DEPDIR)/drumgizmo_vst_la-eventhandler.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/eventhandler.cc' object='drumgizmo_vst_la-eventhandler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
+
+drumgizmo_vst_la-font.lo: $(top_srcdir)/plugingui/font.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-font.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-font.Tpo -c -o drumgizmo_vst_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-font.Tpo $(DEPDIR)/drumgizmo_vst_la-font.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/font.cc' object='drumgizmo_vst_la-font.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
+
+drumgizmo_vst_la-window.lo: $(top_srcdir)/plugingui/window.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-window.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-window.Tpo -c -o drumgizmo_vst_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-window.Tpo $(DEPDIR)/drumgizmo_vst_la-window.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/window.cc' object='drumgizmo_vst_la-window.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
+
+drumgizmo_vst_la-widget.lo: $(top_srcdir)/plugingui/widget.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-widget.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-widget.Tpo -c -o drumgizmo_vst_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-widget.Tpo $(DEPDIR)/drumgizmo_vst_la-widget.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/widget.cc' object='drumgizmo_vst_la-widget.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
+
+drumgizmo_vst_la-colour.lo: $(top_srcdir)/plugingui/colour.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-colour.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-colour.Tpo -c -o drumgizmo_vst_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-colour.Tpo $(DEPDIR)/drumgizmo_vst_la-colour.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/colour.cc' object='drumgizmo_vst_la-colour.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
+
+drumgizmo_vst_la-painter.lo: $(top_srcdir)/plugingui/painter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-painter.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-painter.Tpo -c -o drumgizmo_vst_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-painter.Tpo $(DEPDIR)/drumgizmo_vst_la-painter.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/painter.cc' object='drumgizmo_vst_la-painter.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
+
+drumgizmo_vst_la-button.lo: $(top_srcdir)/plugingui/button.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-button.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-button.Tpo -c -o drumgizmo_vst_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-button.Tpo $(DEPDIR)/drumgizmo_vst_la-button.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/button.cc' object='drumgizmo_vst_la-button.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
+
+drumgizmo_vst_la-pixelbuffer.lo: $(top_srcdir)/plugingui/pixelbuffer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-pixelbuffer.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-pixelbuffer.Tpo -c -o drumgizmo_vst_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-pixelbuffer.Tpo $(DEPDIR)/drumgizmo_vst_la-pixelbuffer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pixelbuffer.cc' object='drumgizmo_vst_la-pixelbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
+
+drumgizmo_vst_la-lineedit.lo: $(top_srcdir)/plugingui/lineedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-lineedit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-lineedit.Tpo -c -o drumgizmo_vst_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-lineedit.Tpo $(DEPDIR)/drumgizmo_vst_la-lineedit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lineedit.cc' object='drumgizmo_vst_la-lineedit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
+
+drumgizmo_vst_la-led.lo: $(top_srcdir)/plugingui/led.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-led.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-led.Tpo -c -o drumgizmo_vst_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-led.Tpo $(DEPDIR)/drumgizmo_vst_la-led.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/led.cc' object='drumgizmo_vst_la-led.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
+
+drumgizmo_vst_la-checkbox.lo: $(top_srcdir)/plugingui/checkbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-checkbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-checkbox.Tpo -c -o drumgizmo_vst_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-checkbox.Tpo $(DEPDIR)/drumgizmo_vst_la-checkbox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/checkbox.cc' object='drumgizmo_vst_la-checkbox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
+
+drumgizmo_vst_la-slider.lo: $(top_srcdir)/plugingui/slider.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-slider.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-slider.Tpo -c -o drumgizmo_vst_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-slider.Tpo $(DEPDIR)/drumgizmo_vst_la-slider.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/slider.cc' object='drumgizmo_vst_la-slider.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
+
+drumgizmo_vst_la-scrollbar.lo: $(top_srcdir)/plugingui/scrollbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-scrollbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-scrollbar.Tpo -c -o drumgizmo_vst_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-scrollbar.Tpo $(DEPDIR)/drumgizmo_vst_la-scrollbar.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/scrollbar.cc' object='drumgizmo_vst_la-scrollbar.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
+
+drumgizmo_vst_la-textedit.lo: $(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-textedit.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-textedit.Tpo -c -o drumgizmo_vst_la-textedit.lo `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-textedit.Tpo $(DEPDIR)/drumgizmo_vst_la-textedit.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/textedit.cc' object='drumgizmo_vst_la-textedit.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-textedit.lo `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+
+drumgizmo_vst_la-layout.lo: $(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-layout.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-layout.Tpo -c -o drumgizmo_vst_la-layout.lo `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-layout.Tpo $(DEPDIR)/drumgizmo_vst_la-layout.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/layout.cc' object='drumgizmo_vst_la-layout.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-layout.lo `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+
+drumgizmo_vst_la-listbox.lo: $(top_srcdir)/plugingui/listbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-listbox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-listbox.Tpo -c -o drumgizmo_vst_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-listbox.Tpo $(DEPDIR)/drumgizmo_vst_la-listbox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listbox.cc' object='drumgizmo_vst_la-listbox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
+
+drumgizmo_vst_la-listboxthin.lo: $(top_srcdir)/plugingui/listboxthin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-listboxthin.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-listboxthin.Tpo -c -o drumgizmo_vst_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-listboxthin.Tpo $(DEPDIR)/drumgizmo_vst_la-listboxthin.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxthin.cc' object='drumgizmo_vst_la-listboxthin.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
+
+drumgizmo_vst_la-listboxbasic.lo: $(top_srcdir)/plugingui/listboxbasic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-listboxbasic.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-listboxbasic.Tpo -c -o drumgizmo_vst_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-listboxbasic.Tpo $(DEPDIR)/drumgizmo_vst_la-listboxbasic.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxbasic.cc' object='drumgizmo_vst_la-listboxbasic.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
+
+drumgizmo_vst_la-knob.lo: $(top_srcdir)/plugingui/knob.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-knob.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-knob.Tpo -c -o drumgizmo_vst_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-knob.Tpo $(DEPDIR)/drumgizmo_vst_la-knob.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/knob.cc' object='drumgizmo_vst_la-knob.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
+
+drumgizmo_vst_la-filebrowser.lo: $(top_srcdir)/plugingui/filebrowser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-filebrowser.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-filebrowser.Tpo -c -o drumgizmo_vst_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-filebrowser.Tpo $(DEPDIR)/drumgizmo_vst_la-filebrowser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/filebrowser.cc' object='drumgizmo_vst_la-filebrowser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
+
+drumgizmo_vst_la-directory.lo: $(top_srcdir)/plugingui/directory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-directory.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-directory.Tpo -c -o drumgizmo_vst_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-directory.Tpo $(DEPDIR)/drumgizmo_vst_la-directory.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/directory.cc' object='drumgizmo_vst_la-directory.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
+
+drumgizmo_vst_la-pluginconfig.lo: $(top_srcdir)/plugingui/pluginconfig.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-pluginconfig.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-pluginconfig.Tpo -c -o drumgizmo_vst_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-pluginconfig.Tpo $(DEPDIR)/drumgizmo_vst_la-pluginconfig.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pluginconfig.cc' object='drumgizmo_vst_la-pluginconfig.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
+
+drumgizmo_vst_la-image.lo: $(top_srcdir)/plugingui/image.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-image.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-image.Tpo -c -o drumgizmo_vst_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-image.Tpo $(DEPDIR)/drumgizmo_vst_la-image.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/image.cc' object='drumgizmo_vst_la-image.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
+
+drumgizmo_vst_la-combobox.lo: $(top_srcdir)/plugingui/combobox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-combobox.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-combobox.Tpo -c -o drumgizmo_vst_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-combobox.Tpo $(DEPDIR)/drumgizmo_vst_la-combobox.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/combobox.cc' object='drumgizmo_vst_la-combobox.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
+
+drumgizmo_vst_la-progressbar.lo: $(top_srcdir)/plugingui/progressbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-progressbar.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-progressbar.Tpo -c -o drumgizmo_vst_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-progressbar.Tpo $(DEPDIR)/drumgizmo_vst_la-progressbar.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/progressbar.cc' object='drumgizmo_vst_la-progressbar.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
+
+drumgizmo_vst_la-verticalline.lo: $(top_srcdir)/plugingui/verticalline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-verticalline.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-verticalline.Tpo -c -o drumgizmo_vst_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-verticalline.Tpo $(DEPDIR)/drumgizmo_vst_la-verticalline.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/verticalline.cc' object='drumgizmo_vst_la-verticalline.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
+
+drumgizmo_vst_la-resource.lo: $(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-resource.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-resource.Tpo -c -o drumgizmo_vst_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-resource.Tpo $(DEPDIR)/drumgizmo_vst_la-resource.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='drumgizmo_vst_la-resource.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+
+drumgizmo_vst_la-resource_data.lo: $(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-resource_data.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-resource_data.Tpo -c -o drumgizmo_vst_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-resource_data.Tpo $(DEPDIR)/drumgizmo_vst_la-resource_data.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='drumgizmo_vst_la-resource_data.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+
+drumgizmo_vst_la-lodepng.lo: $(top_srcdir)/plugingui/lodepng/lodepng.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-lodepng.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-lodepng.Tpo -c -o drumgizmo_vst_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-lodepng.Tpo $(DEPDIR)/drumgizmo_vst_la-lodepng.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lodepng/lodepng.cpp' object='drumgizmo_vst_la-lodepng.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
+
+drumgizmo_vst_la-nativewindow_x11.lo: $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-nativewindow_x11.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-nativewindow_x11.Tpo -c -o drumgizmo_vst_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-nativewindow_x11.Tpo $(DEPDIR)/drumgizmo_vst_la-nativewindow_x11.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='drumgizmo_vst_la-nativewindow_x11.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+
+drumgizmo_vst_la-nativewindow_win32.lo: $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-nativewindow_win32.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-nativewindow_win32.Tpo -c -o drumgizmo_vst_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-nativewindow_win32.Tpo $(DEPDIR)/drumgizmo_vst_la-nativewindow_win32.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='drumgizmo_vst_la-nativewindow_win32.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+
+drumgizmo_vst_la-nativewindow_pugl.lo: $(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-nativewindow_pugl.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-nativewindow_pugl.Tpo -c -o drumgizmo_vst_la-nativewindow_pugl.lo `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-nativewindow_pugl.Tpo $(DEPDIR)/drumgizmo_vst_la-nativewindow_pugl.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_pugl.cc' object='drumgizmo_vst_la-nativewindow_pugl.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-nativewindow_pugl.lo `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+
+drumgizmo_vst_la-midievent.lo: $(top_srcdir)/plugin/plugingizmo/midievent.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-midievent.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-midievent.Tpo -c -o drumgizmo_vst_la-midievent.lo `test -f '$(top_srcdir)/plugin/plugingizmo/midievent.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/midievent.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-midievent.Tpo $(DEPDIR)/drumgizmo_vst_la-midievent.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugin/plugingizmo/midievent.cc' object='drumgizmo_vst_la-midievent.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-midievent.lo `test -f '$(top_srcdir)/plugin/plugingizmo/midievent.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/midievent.cc
+
+drumgizmo_vst_la-pluginvst.lo: $(top_srcdir)/plugin/plugingizmo/pluginvst.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-pluginvst.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-pluginvst.Tpo -c -o drumgizmo_vst_la-pluginvst.lo `test -f '$(top_srcdir)/plugin/plugingizmo/pluginvst.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/pluginvst.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-pluginvst.Tpo $(DEPDIR)/drumgizmo_vst_la-pluginvst.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugin/plugingizmo/pluginvst.cc' object='drumgizmo_vst_la-pluginvst.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-pluginvst.lo `test -f '$(top_srcdir)/plugin/plugingizmo/pluginvst.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugin/plugingizmo/pluginvst.cc
+
+drumgizmo_vst_la-drumgizmo_plugin.lo: drumgizmo_plugin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT drumgizmo_vst_la-drumgizmo_plugin.lo -MD -MP -MF $(DEPDIR)/drumgizmo_vst_la-drumgizmo_plugin.Tpo -c -o drumgizmo_vst_la-drumgizmo_plugin.lo `test -f 'drumgizmo_plugin.cc' || echo '$(srcdir)/'`drumgizmo_plugin.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/drumgizmo_vst_la-drumgizmo_plugin.Tpo $(DEPDIR)/drumgizmo_vst_la-drumgizmo_plugin.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='drumgizmo_plugin.cc' object='drumgizmo_vst_la-drumgizmo_plugin.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(drumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o drumgizmo_vst_la-drumgizmo_plugin.lo `test -f 'drumgizmo_plugin.cc' || echo '$(srcdir)/'`drumgizmo_plugin.cc
+
+libvstsdk_la-audioeffectx.lo: ${VST_SRC_BASE}/audioeffectx.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -MT libvstsdk_la-audioeffectx.lo -MD -MP -MF $(DEPDIR)/libvstsdk_la-audioeffectx.Tpo -c -o libvstsdk_la-audioeffectx.lo `test -f '${VST_SRC_BASE}/audioeffectx.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffectx.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libvstsdk_la-audioeffectx.Tpo $(DEPDIR)/libvstsdk_la-audioeffectx.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/audioeffectx.cpp' object='libvstsdk_la-audioeffectx.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libvstsdk_la-audioeffectx.lo `test -f '${VST_SRC_BASE}/audioeffectx.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffectx.cpp
+
+libvstsdk_la-audioeffect.lo: ${VST_SRC_BASE}/audioeffect.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -MT libvstsdk_la-audioeffect.lo -MD -MP -MF $(DEPDIR)/libvstsdk_la-audioeffect.Tpo -c -o libvstsdk_la-audioeffect.lo `test -f '${VST_SRC_BASE}/audioeffect.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffect.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libvstsdk_la-audioeffect.Tpo $(DEPDIR)/libvstsdk_la-audioeffect.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/audioeffect.cpp' object='libvstsdk_la-audioeffect.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libvstsdk_la-audioeffect.lo `test -f '${VST_SRC_BASE}/audioeffect.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffect.cpp
+
+libvstsdk_la-vstplugmain.lo: ${VST_SRC_BASE}/vstplugmain.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -MT libvstsdk_la-vstplugmain.lo -MD -MP -MF $(DEPDIR)/libvstsdk_la-vstplugmain.Tpo -c -o libvstsdk_la-vstplugmain.lo `test -f '${VST_SRC_BASE}/vstplugmain.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/vstplugmain.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libvstsdk_la-vstplugmain.Tpo $(DEPDIR)/libvstsdk_la-vstplugmain.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/vstplugmain.cpp' object='libvstsdk_la-vstplugmain.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvstsdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libvstsdk_la-vstplugmain.lo `test -f '${VST_SRC_BASE}/vstplugmain.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/vstplugmain.cpp
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-lv2pluginDATA: $(lv2plugin_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(lv2plugin_DATA)'; test -n "$(lv2plugindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(lv2plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(lv2plugindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(lv2plugindir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(lv2plugindir)" || exit $$?; \
+	done
+
+uninstall-lv2pluginDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lv2plugin_DATA)'; test -n "$(lv2plugindir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(lv2plugindir)'; $(am__uninstall_files_from_dir)
+install-vstpluginDATA: $(vstplugin_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(vstplugin_DATA)'; test -n "$(vstplugindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(vstplugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(vstplugindir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vstplugindir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(vstplugindir)" || exit $$?; \
+	done
+
+uninstall-vstpluginDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(vstplugin_DATA)'; test -n "$(vstplugindir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(vstplugindir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(lv2plugindir)" "$(DESTDIR)$(vstplugindir)" "$(DESTDIR)$(lv2plugindir)" "$(DESTDIR)$(vstplugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-lv2pluginLTLIBRARIES \
+	clean-noinstLTLIBRARIES clean-vstpluginLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-lv2pluginDATA install-lv2pluginLTLIBRARIES \
+	install-vstpluginDATA install-vstpluginLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-lv2pluginDATA uninstall-lv2pluginLTLIBRARIES \
+	uninstall-vstpluginDATA uninstall-vstpluginLTLIBRARIES
+
+.MAKE: install-am install-exec-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-lv2pluginLTLIBRARIES \
+	clean-noinstLTLIBRARIES clean-vstpluginLTLIBRARIES \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-exec-hook install-html \
+	install-html-am install-info install-info-am \
+	install-lv2pluginDATA install-lv2pluginLTLIBRARIES install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip install-vstpluginDATA \
+	install-vstpluginLTLIBRARIES installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am uninstall-lv2pluginDATA \
+	uninstall-lv2pluginLTLIBRARIES uninstall-vstpluginDATA \
+	uninstall-vstpluginLTLIBRARIES
+
+
+install-exec-hook:
+	rm -f $(DESTDIR)$(libdir)/lv2/drumgizmo.lv2/drumgizmo.la
+	rm -f $(DESTDIR)$(libdir)/vst/drumgizmo_vst.la
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vst/Makefile.mingw32.in b/plugin/Makefile.mingw32.in
similarity index 64%
rename from vst/Makefile.mingw32.in
rename to plugin/Makefile.mingw32.in
index 66e02ed..92b627c 100644
--- a/vst/Makefile.mingw32.in
+++ b/plugin/Makefile.mingw32.in
@@ -1,3 +1,5 @@
+# -*- Makefile -*-
+
 VST_BASE=@VST_SOURCE_PATH@
 VST_SRC_BASE = ${VST_BASE}/public.sdk/source/vst2.x/
 VST_SRC = \
@@ -7,11 +9,16 @@ VST_SRC = \
 VST_CFLAGS=-I$(VST_BASE)
 
 DG_SRC = \
+	@top_srcdir@/src/audiocachefile.cc \
+	@top_srcdir@/src/audiocache.cc \
+	@top_srcdir@/src/audiocacheeventhandler.cc \
+	@top_srcdir@/src/audiocacheidmanager.cc \
 	@top_srcdir@/src/audioinputenginemidi.cc \
 	@top_srcdir@/src/audiofile.cc \
 	@top_srcdir@/src/channel.cc \
 	@top_srcdir@/src/channelmixer.cc \
 	@top_srcdir@/src/chresampler.cc \
+	@top_srcdir@/src/configfile.cc \
 	@top_srcdir@/src/configuration.cc \
 	@top_srcdir@/src/configparser.cc \
 	@top_srcdir@/src/drumgizmo.cc \
@@ -21,6 +28,7 @@ DG_SRC = \
 	@top_srcdir@/src/events.cc \
 	@top_srcdir@/src/instrument.cc \
 	@top_srcdir@/src/instrumentparser.cc \
+	@top_srcdir@/src/memchecker.cc \
 	@top_srcdir@/src/messagehandler.cc \
 	@top_srcdir@/src/messagereceiver.cc \
 	@top_srcdir@/src/midimapparser.cc \
@@ -34,10 +42,12 @@ DG_SRC = \
 	@top_srcdir@/src/thread.cc \
 	@top_srcdir@/src/velocity.cc \
 	@top_srcdir@/src/versionstr.cc
-DG_CFLAGS = -I.. -I../include -I../src -DSSE -msse -msse2 -DDISABLE_HUGIN
+DG_CFLAGS = -I at top_srcdir@ -I at top_srcdir@/include -I at top_srcdir@/src \
+	-I at top_srcdir@/plugin/plugingizmo -DVST -DSSE -msse -msse2
+# -DDISABLE_HUGIN
 
 GUI_SRC = \
-	@top_srcdir@/plugingui/nativewindow_x11.cc \
+	@top_srcdir@/plugingui/dgwindow.cc \
 	@top_srcdir@/plugingui/nativewindow_win32.cc \
 	@top_srcdir@/plugingui/plugingui.cc \
 	@top_srcdir@/plugingui/pluginconfig.cc \
@@ -52,9 +62,11 @@ GUI_SRC = \
 	@top_srcdir@/plugingui/pixelbuffer.cc \
 	@top_srcdir@/plugingui/lineedit.cc \
 	@top_srcdir@/plugingui/led.cc \
+	@top_srcdir@/plugingui/layout.cc \
 	@top_srcdir@/plugingui/checkbox.cc \
 	@top_srcdir@/plugingui/slider.cc \
 	@top_srcdir@/plugingui/scrollbar.cc \
+	@top_srcdir@/plugingui/textedit.cc \
 	@top_srcdir@/plugingui/listbox.cc \
 	@top_srcdir@/plugingui/listboxthin.cc \
 	@top_srcdir@/plugingui/listboxbasic.cc \
@@ -69,14 +81,15 @@ GUI_SRC = \
 	@top_srcdir@/plugingui/resource_data.cc \
 	@top_srcdir@/plugingui/lodepng/lodepng.cpp
 
-GUI_CFLAGS=-I at top_srcdir@/plugingui/ -DUSE_THREAD @GUI_CFLAGS@
+GUI_CPPFLAGS=-I at top_srcdir@/plugingui/ -DUSE_THREAD @GUI_CPPFLAGS@
 GUI_LIBS=-lgdi32 -lsetupapi -lws2_32
 
 DBG_SRC = \
 	@top_srcdir@/hugin/hugin.c \
 	@top_srcdir@/hugin/hugin_syslog.c
 
-DBG_CFLAGS=-I../hugin -DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX -DDISABLE_HUGIN
+DBG_CFLAGS=-I../hugin -DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX
+# -DDISABLE_HUGIN
 
 #
 # http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html
@@ -85,13 +98,10 @@ DBG_CFLAGS=-I../hugin -DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX -DDISABLE_HUGIN
 
 EXPAT_CFLAGS=@EXPAT_CFLAGS@
 EXPAT_LIBS=@EXPAT_LIBS@
- 
+
 SNDFILE_CFLAGS=@SNDFILE_CFLAGS@
 SNDFILE_LIBS=@SNDFILE_LIBS@
 
-ZLIB_CFLAGS=@ZLIB_CFLAGS@
-ZLIB_LIBS=@ZLIB_LIBS@
-
 SRC_CFLAGS=@SAMPLERATE_CFLAGS@
 SRC_LIBS=@SAMPLERATE_LIBS@
 
@@ -99,45 +109,14 @@ ZITA_CXXFLAGS=@ZITA_CPPFLAGS@
 ZITA_LIBS=@ZITA_LIBS@
 
 SRC = \
-	drumgizmo_vst.cc \
-	input_vst.cc \
-	output_vst.cc
-
-#######################
-#
-#CXXFLAGS=-DWIN32 $(EXPAT_CFLAGS) $(SNDFILE_CFLAGS) $(DG_CFLAGS) $(GUI_CFLAGS) $(DBG_CFLAGS) $(VST_CFLAGS)
-#CFLAGS=$(CXXFLAGS)
-#LDFLAGS=$(EXPAT_LIBS) $(SNDFILE_LIBS) $(GUI_LIBS) $(DBG_LIBS)
-#
-#C_SOURCES=$(DBG_SRC)
-#CXX_SOURCES=$(GUI_SRC) $(DG_SRC)
-#CPP_SOURCES=$(VST_SRC) 
-#
-#OBJECTS=$(CXX_SOURCES:.cc=.o) $(CPP_SOURCES:.cpp=.o) $(C_SOURCES:.c=.o)
-#all: $(CXX_SOURCES) $(CPP_SOURCES) $(C_SOURCES) drumgizmo_vst.dll
-#
-#drumgizmo_vst.dll: $(OBJECTS)
-#	g++ $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -shared -o drumgizmo_vst.dll -Wl,--out-implib,libdrumgizmo_vst.a
-#
-#%.o: %.cc
-#	g++ -O3 -c $(CXXFLAGS) $(LDFLAGS) $< -o $(notdir $@)
-#
-#%.o: %.cpp
-#	g++ -O3 -c $(CXXFLAGS) $(LDFLAGS) $< -o $(notdir $@)
-#
-#%.o: %.c
-#	gcc -O3 -c $(CFLAGS) $(LDFLAGS) $< -o $@
-#
-#clean:
-#	del -f $(notdir $(OBJECTS)) drumgizmo_vst.dll libdrumgizmo_vst.a
-#
-########################
+	@top_srcdir@/plugin/plugingizmo/midievent.cc \
+	@top_srcdir@/plugin/plugingizmo/pluginvst.cc \
+	drumgizmo_plugin.cc
 
- 
 all:
 	gcc $(DBG_CFLAGS) @top_srcdir@/hugin/hugin.c -c
 	gcc $(DBG_CFLAGS) @top_srcdir@/hugin/hugin_syslog.c -c
-	g++ -static -static-libgcc -O2 -g -Wall $(DBG_CFLAGS) $(DG_CFLAGS) $(DG_LIBS) $(VST_CFLAGS) hugin.o hugin_syslog.o $(DG_SRC) $(VST_SRC) ${SRC} ${GUI_SRC} ${GUI_CFLAGS} $(GUI_LIBS) $(EXPAT_CFLAGS) $(ZLIB_CFLAGS) $(SRC_CFLAGS) $(ZITA_CXXFLAGS) $(EXPAT_LIBS) $(ZLIB_LIBS) $(SNDFILE_CFLAGS) $(SNDFILE_LIBS) $(SRC_LIBS) $(ZITA_LIBS) -shared -o drumgizmo_vst.dll -Wl,--out-implib,libdrumgizmo_vst.a
- 
+	g++ $(CXXFLAGS) -std=c++11 -static -static-libgcc -O2 -g -Wall $(DBG_CFLAGS) $(DG_CFLAGS) $(DG_LIBS) $(VST_CFLAGS) hugin.o hugin_syslog.o $(DG_SRC) $(VST_SRC) ${SRC} ${GUI_SRC} ${GUI_CPPFLAGS} $(GUI_LIBS) $(EXPAT_CFLAGS) $(SRC_CFLAGS) $(ZITA_CXXFLAGS) $(EXPAT_LIBS) $(SNDFILE_CFLAGS) $(SNDFILE_LIBS) $(SRC_LIBS) $(ZITA_LIBS) -shared -o drumgizmo_vst.dll -Wl,--out-implib,libdrumgizmo_vst.a
+
 clean:
 	del -f drumgizmo_vst.dll libdrumgizmo_vst.a
diff --git a/lv2/drumgizmo.ttl b/plugin/drumgizmo.ttl
similarity index 67%
rename from lv2/drumgizmo.ttl
rename to plugin/drumgizmo.ttl
index 23345f3..b94b09b 100644
--- a/lv2/drumgizmo.ttl
+++ b/plugin/drumgizmo.ttl
@@ -13,132 +13,159 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
- at prefix doap:  <http://usefulinc.com/ns/doap#> .
- at prefix foaf:  <http://xmlns.com/foaf/0.1/> .
- at prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
- at prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
- at prefix uiext: <http://lv2plug.in/ns/extensions/ui#> .
- at prefix state: <http://lv2plug.in/ns/ext/state#> .
+ at prefix doap:   <http://usefulinc.com/ns/doap#> .
+ at prefix foaf:   <http://xmlns.com/foaf/0.1/> .
+ at prefix lv2:    <http://lv2plug.in/ns/lv2core#> .
+ at prefix atom:   <http://lv2plug.in/ns/ext/atom#> .
+ at prefix ui:     <http://lv2plug.in/ns/extensions/ui#> .
+ at prefix state:  <http://lv2plug.in/ns/ext/state#> .
+ at prefix pprops: <http://lv2plug.in/ns/ext/port-props#> .
+ at prefix lv2:    <http://lv2plug.in/ns/lv2core#> .
+ at prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
 
-<http://drumgizmo.org/lv2-gui>
-    a uiext:external ;
-    uiext:binary <drumgizmo.so> .
+<http://drumgizmo.org/lv2#ui>
+    a ui:X11UI ;
+    lv2:requiredFeature ui:resize ;
+    lv2:extensionData ui:resize ;
+    lv2:requiredFeature ui:idleInterface ;
+    lv2:extensionData ui:idleInterface ;
+    ui:binary <drumgizmo.so> .
 
 <http://drumgizmo.org/lv2>
 	a lv2:InstrumentPlugin ;
 	doap:name "DrumGizmo" ;
 	doap:maintainer [
-		foaf:name "DrumGizmo.org";
+		foaf:name "DrumGizmo.org" ;
 		foaf:homepage <http://www.drumgizmo.org> ;
 	] ;
 	doap:license <http://usefulinc.com/doap/licenses/gpl> ;
-	uiext:ui <http://drumgizmo.org/lv2-gui> ;
+	ui:ui <http://drumgizmo.org/lv2#ui> ;
 	doap:license <http://opensource.org/licenses/gpl-3.0> ;
 	lv2:optionalFeature <http://lv2plug.in/ns/ext/uri-map> ;
 	lv2:optionalFeature <http://lv2plug.in/ns/ext/event> ;
   lv2:extensionData state:interface ;
-lv2:port [
+	lv2:port [
+    a lv2:InputPort, lv2:ControlPort ;
+    lv2:index 0 ;
+    lv2:symbol "lv2_freewheel" ;
+    lv2:name "Freewheel" ;
+    lv2:default 0.0 ;
+    lv2:minimum 0.0 ;
+    lv2:maximum 1.0 ;
+    lv2:designation <http://lv2plug.in/ns/lv2core#freeWheeling> ;
+    lv2:portProperty lv2:toggled ;
+    lv2:portProperty pprops:hasStrictBounds;
+  ] , [
+		a lv2:OutputPort, lv2:ControlPort ;
+		lv2:designation <http://lv2plug.in/ns/lv2core#latency>;
+		lv2:index 1;
+		lv2:symbol "latency";
+		lv2:name "Latency";
+		lv2:minimum 0;
+		lv2:maximum 192000;
+		lv2:portProperty lv2:reportsLatency, lv2:integer;
+	] , [
 		a atom:AtomPort ,
-      lv2:InputPort; 
+      lv2:InputPort;
     atom:bufferType atom:Sequence ;
     atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ;
-    lv2:index 0 ;
+    lv2:index 2 ;
 		lv2:symbol "control" ;
 		lv2:name "Control"
 	] , [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 1 ;
+		lv2:index 3 ;
 		lv2:symbol "out1" ;
 		lv2:name "Out1"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 2 ;
+		lv2:index 4 ;
 		lv2:symbol "out2" ;
 		lv2:name "Out2"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 3 ;
+		lv2:index 5 ;
 		lv2:symbol "out3" ;
 		lv2:name "Out3"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 4 ;
+		lv2:index 6 ;
 		lv2:symbol "out4" ;
 		lv2:name "Out4"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 5 ;
+		lv2:index 7 ;
 		lv2:symbol "out5" ;
 		lv2:name "Out5"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 6 ;
+		lv2:index 8 ;
 		lv2:symbol "out6" ;
 		lv2:name "Out6"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 7 ;
+		lv2:index 9 ;
 		lv2:symbol "out7" ;
 		lv2:name "Out7"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 8 ;
+		lv2:index 10 ;
 		lv2:symbol "out8" ;
 		lv2:name "Out8"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 9 ;
+		lv2:index 11 ;
 		lv2:symbol "out9" ;
 		lv2:name "Out9"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 10 ;
+		lv2:index 12 ;
 		lv2:symbol "out10" ;
 		lv2:name "Out10"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 11 ;
+		lv2:index 13 ;
 		lv2:symbol "out11" ;
 		lv2:name "Out11"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 12 ;
+		lv2:index 14 ;
 		lv2:symbol "out12" ;
 		lv2:name "Out12"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 13 ;
+		lv2:index 15 ;
 		lv2:symbol "out13" ;
 		lv2:name "Out13"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 14 ;
+		lv2:index 16 ;
 		lv2:symbol "out14" ;
 		lv2:name "Out14"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 15 ;
+		lv2:index 17 ;
 		lv2:symbol "out15" ;
 		lv2:name "Out15"
 	], [
 		a lv2:AudioPort ,
 			lv2:OutputPort ;
-		lv2:index 16 ;
+		lv2:index 18 ;
 		lv2:symbol "out16" ;
 		lv2:name "Out16"
 	] .
diff --git a/plugin/drumgizmo_plugin.cc b/plugin/drumgizmo_plugin.cc
new file mode 100644
index 0000000..025cb2b
--- /dev/null
+++ b/plugin/drumgizmo_plugin.cc
@@ -0,0 +1,290 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            drumgizmo_lv2.cc
+ *
+ *  Wed Mar  2 17:31:32 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "drumgizmo_plugin.h"
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include <iostream>
+
+#include <midievent.h>
+
+#ifdef LV2
+// Entry point for lv2 plugin instantiation.
+PluginLV2* createEffectInstance()
+{
+	return new DrumGizmoPlugin();
+}
+#endif
+
+#ifdef VST
+// Entry point for vst plugin instantiation.
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster)
+{
+	return new DrumGizmoPlugin(audioMaster);
+}
+
+DrumGizmoPlugin::DrumGizmoPlugin(audioMasterCallback audioMaster)
+	: PluginVST(audioMaster)
+#else
+DrumGizmoPlugin::DrumGizmoPlugin()
+#endif
+{
+	init();
+
+	drumgizmo = std::make_shared<DrumGizmo>(&output, &input);
+	resizeWindow(370, 330);
+	drumgizmo->setFreeWheel(true);
+	drumgizmo->setSamplerate(44100);
+	drumgizmo->setFrameSize(2048);
+}
+
+void DrumGizmoPlugin::onFreeWheelChange(bool freewheel)
+{
+	drumgizmo->setFreeWheel(freewheel);
+}
+
+void DrumGizmoPlugin::onSamplerateChange(float samplerate)
+{
+	drumgizmo->setSamplerate(samplerate);
+}
+
+void DrumGizmoPlugin::onFramesizeChange(size_t framesize)
+{
+	drumgizmo->setFrameSize(framesize);
+}
+
+void DrumGizmoPlugin::onActiveChange(bool active)
+{
+}
+
+std::string DrumGizmoPlugin::onStateSave()
+{
+	return drumgizmo->configString();
+}
+
+void DrumGizmoPlugin::onStateRestore(const std::string& config)
+{
+	drumgizmo->setConfigString(config);
+}
+
+size_t DrumGizmoPlugin::getNumberOfMidiInputs()
+{
+	return 1;
+}
+
+size_t DrumGizmoPlugin::getNumberOfMidiOutputs()
+{
+	return 0;
+}
+
+size_t DrumGizmoPlugin::getNumberOfAudioInputs()
+{
+	return 0;
+}
+
+size_t DrumGizmoPlugin::getNumberOfAudioOutputs()
+{
+	return 16;
+}
+
+std::string DrumGizmoPlugin::getId()
+{
+	return "DrumGizmo";
+}
+static float g_samples[16*  4096];
+void DrumGizmoPlugin::process(size_t pos,
+                              const std::vector<MidiEvent>& input_events,
+                              std::vector<MidiEvent>& output_events,
+                              const std::vector<const float*>& input_samples,
+                              const std::vector<float*>& output_samples,
+                              size_t count)
+{
+	this->input_events = &input_events;
+	this->output_samples = &output_samples;
+
+	drumgizmo->run(pos, g_samples, count);
+
+	this->input_events = nullptr;
+	this->output_samples = nullptr;
+}
+
+bool DrumGizmoPlugin::hasGUI()
+{
+	return true;
+}
+
+void DrumGizmoPlugin::createWindow(void *parent)
+{
+	plugin_gui = std::make_shared<GUI::PluginGUI>(parent);
+	resizeWindow(370, 330);
+	onShowWindow();
+}
+
+void DrumGizmoPlugin::onDestroyWindow()
+{
+	plugin_gui = nullptr;
+}
+
+void DrumGizmoPlugin::onShowWindow()
+{
+	plugin_gui->show();
+}
+
+void DrumGizmoPlugin::onHideWindow()
+{
+	plugin_gui->hide();
+}
+
+void DrumGizmoPlugin::onIdle()
+{
+	plugin_gui->processEvents();
+}
+
+void DrumGizmoPlugin::closeWindow()
+{
+}
+
+
+//
+// Input Engine
+//
+
+DrumGizmoPlugin::Input::Input(DrumGizmoPlugin& plugin)
+	: plugin(plugin)
+{
+}
+
+bool DrumGizmoPlugin::Input::init(Instruments &instruments)
+{
+	this->instruments = &instruments;
+	return true;
+}
+
+void DrumGizmoPlugin::Input::setParm(std::string parm, std::string value)
+{
+}
+
+bool DrumGizmoPlugin::Input::start()
+{
+	return true;
+}
+
+void DrumGizmoPlugin::Input::stop()
+{
+}
+
+void DrumGizmoPlugin::Input::pre()
+{
+}
+
+void DrumGizmoPlugin::Input::run(size_t pos, size_t len, std::vector<event_t>& events)
+{
+	assert(events.empty());
+	assert(plugin.input_events);
+
+	events.reserve(plugin.input_events->size());
+
+	for(auto& event : *plugin.input_events)
+	{
+		if(event.type !=  MidiEventType::NoteOn)
+		{
+			continue;
+		}
+
+		int i = mmap.lookup(event.key);
+		if(event.velocity && (i != -1))
+		{
+			events.push_back({TYPE_ONSET, (size_t)i, (size_t)event.getTime(), event.velocity / 127.0f});
+		}
+	}
+}
+
+void DrumGizmoPlugin::Input::post()
+{
+}
+
+
+//
+// Output Engine
+//
+
+DrumGizmoPlugin::Output::Output(DrumGizmoPlugin& plugin)
+	: plugin(plugin)
+{
+}
+
+bool DrumGizmoPlugin::Output::init(Channels channels)
+{
+	return true;
+}
+
+void DrumGizmoPlugin::Output::setParm(std::string parm, std::string value)
+{
+}
+
+bool DrumGizmoPlugin::Output::start()
+{
+	return true;
+}
+
+void DrumGizmoPlugin::Output::stop()
+{
+}
+
+void DrumGizmoPlugin::Output::pre(size_t nsamples)
+{
+}
+
+void DrumGizmoPlugin::Output::run(int ch, sample_t *samples, size_t nsamples)
+{
+//	assert(false);
+}
+
+void DrumGizmoPlugin::Output::post(size_t nsamples)
+{
+}
+
+sample_t* DrumGizmoPlugin::Output::getBuffer(int ch)
+{
+	assert(plugin.output_samples);
+
+	if((std::size_t)ch >= plugin.output_samples->size())
+	{
+		return nullptr;
+	}
+
+	return (*plugin.output_samples)[ch];
+}
+
+size_t DrumGizmoPlugin::Output::getBufferSize()
+{
+	return plugin.getFramesize();
+}
diff --git a/plugin/drumgizmo_plugin.h b/plugin/drumgizmo_plugin.h
new file mode 100644
index 0000000..4a4ec13
--- /dev/null
+++ b/plugin/drumgizmo_plugin.h
@@ -0,0 +1,159 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            drumgizmo_lv2.h
+ *
+ *  Wed Mar  2 17:31:31 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <memory>
+
+#if defined(X11)
+#include <X11/Xlib.h>
+#endif // defined(X11)
+
+#if defined(WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif // defined(WIN32)
+
+#ifdef LV2
+#include <pluginlv2.h>
+#endif
+
+#ifdef VST
+#include <pluginvst.h>
+#endif
+
+#include <drumgizmo.h>
+#include <audioinputenginemidi.h>
+#include <audiooutputengine.h>
+#include <plugingui.h>
+
+class DrumGizmoPlugin
+#ifdef LV2
+	: public PluginLV2
+#endif
+#ifdef VST
+	: public PluginVST
+#endif
+{
+public:
+#ifdef VST
+	DrumGizmoPlugin(audioMasterCallback audioMaster);
+#else
+	DrumGizmoPlugin();
+#endif
+
+	void onFreeWheelChange(bool freewheel) override;
+
+	void onFramesizeChange(size_t framesize) override;
+
+	void onSamplerateChange(float samplerate) override;
+
+	void onActiveChange(bool active) override;
+
+	std::string onStateSave() override;
+	void onStateRestore(const std::string& config) override;
+
+	size_t getNumberOfMidiInputs() override;
+	size_t getNumberOfMidiOutputs() override;
+	size_t getNumberOfAudioInputs() override;
+	size_t getNumberOfAudioOutputs() override;
+
+	std::string getId() override;
+
+	void process(size_t pos,
+	             const std::vector<MidiEvent>& input_events,
+	             std::vector<MidiEvent>& output_events,
+	             const std::vector<const float*>& input_samples,
+	             const std::vector<float*>& output_samples,
+	             size_t count) override;
+
+	//
+	// GUI
+	//
+	bool hasGUI() override;
+	void createWindow(void *parent) override;
+	void onDestroyWindow() override;
+	void onShowWindow() override;
+	void onHideWindow() override;
+	void onIdle() override;
+	void closeWindow() override;
+
+private:
+	class Input
+		: public AudioInputEngineMidi
+	{
+	public:
+		Input(DrumGizmoPlugin& plugin);
+
+		bool init(Instruments& instruments) override;
+
+		void setParm(std::string parm, std::string value) override;
+
+		bool start() override;
+		void stop() override;
+
+		void pre() override;
+		void run(size_t pos, size_t len, std::vector<event_t>& events) override;
+		void post() override;
+
+	protected:
+		DrumGizmoPlugin& plugin;
+		Instruments* instruments{nullptr};
+	};
+
+	class Output
+		: public AudioOutputEngine
+	{
+	public:
+		Output(DrumGizmoPlugin& plugin);
+
+		bool init(Channels channels) override;
+
+		void setParm(std::string parm, std::string value) override;
+
+		bool start() override;
+		void stop() override;
+
+		void pre(size_t nsamples) override;
+		void run(int ch, sample_t *samples, size_t nsamples) override;
+		void post(size_t nsamples) override;
+
+		sample_t *getBuffer(int ch) override;
+		size_t getBufferSize() override;
+
+	protected:
+		DrumGizmoPlugin& plugin;
+	};
+
+	Input input{*this};
+	const std::vector<MidiEvent>* input_events{nullptr};
+
+	Output output{*this};
+	const std::vector<float*>* output_samples{nullptr};
+
+	std::shared_ptr<GUI::PluginGUI> plugin_gui;
+	std::shared_ptr<DrumGizmo> drumgizmo;
+};
diff --git a/lv2/manifest.ttl b/plugin/manifest.ttl
similarity index 100%
rename from lv2/manifest.ttl
rename to plugin/manifest.ttl
diff --git a/plugin/plugingizmo/midievent.cc b/plugin/plugingizmo/midievent.cc
new file mode 100644
index 0000000..9b3dfb5
--- /dev/null
+++ b/plugin/plugingizmo/midievent.cc
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            midievent.cc
+ *
+ *  Sun Feb  7 15:09:01 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "midievent.h"
+
+#include <iostream>
+
+MidiEvent::MidiEvent(int64_t time, const char* data, std::size_t size)
+	: time(time)
+{
+	std::cout << __PRETTY_FUNCTION__ <<
+		" data: " << (void*)data <<
+		" size: " << size <<
+		std::endl;
+
+	this->data.resize(size);
+	for(std::size_t i = 0; i < size; ++i)
+	{
+		this->data[i] = data[i];
+	}
+
+	if ((data[0] & 0xF0) == 0x80) { // note off
+		type = MidiEventType::NoteOff;
+		key = data[1];
+		velocity = data[2];
+	}
+
+	if ((data[0] & 0xF0) == 0x90) { // note on
+		type = MidiEventType::NoteOn;
+		key = data[1];
+		velocity = data[2];
+	}
+}
+
+int64_t MidiEvent::getTime() const
+{
+	return time;
+}
+
+const char* MidiEvent::getData() const
+{
+	return data.data();
+}
+
+std::size_t MidiEvent::getSize() const
+{
+	return data.size();
+}
diff --git a/plugin/plugingizmo/midievent.h b/plugin/plugingizmo/midievent.h
new file mode 100644
index 0000000..046a01a
--- /dev/null
+++ b/plugin/plugingizmo/midievent.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            midievent.h
+ *
+ *  Sun Feb  7 15:09:01 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <stdint.h>
+#include <stdio.h>
+
+#include <vector>
+
+enum class MidiEventType {
+	Unknown,
+	NoteOn,
+	NoteOff,
+};
+
+class MidiEvent {
+public:
+	MidiEvent() = default;
+	MidiEvent(int64_t time, const char* data, std::size_t size);
+
+	int64_t getTime() const;
+	const char* getData() const;
+	std::size_t getSize() const;
+
+	MidiEventType type{MidiEventType::Unknown};
+	int key{0};
+	int velocity{0};
+
+private:
+	int64_t time;
+	std::vector<char> data;
+};
diff --git a/plugin/plugingizmo/plugin.h b/plugin/plugingizmo/plugin.h
new file mode 100644
index 0000000..7864bb9
--- /dev/null
+++ b/plugin/plugingizmo/plugin.h
@@ -0,0 +1,148 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            plugin.h
+ *
+ *  Sun Feb  7 14:11:40 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <vector>
+#include <string>
+
+#include <cstdlib>
+
+class MidiEvent;
+
+//! Abstract base-class for plugin implementations.
+class Plugin {
+public:
+	//! Implement this to create a new plugin instance.
+	static Plugin* create();
+
+	//! Init function for setting up plugin parameters.
+	virtual void init() = 0;
+
+	//! Get current free-wheel mode.
+	virtual bool getFreeWheel() const = 0;
+
+	//! This method is called by the host when the free-wheel mode changes.
+	virtual void onFreeWheelChange(bool freewheel) = 0;
+
+
+	//! Call this to get current samplerate.
+	virtual float getSamplerate() = 0;
+
+	//! This method is called by the host when the samplerate changes.
+	virtual void onSamplerateChange(float samplerate) = 0;
+
+
+	//! Call this to get current frame-size.
+	virtual std::size_t getFramesize() = 0;
+
+	//! This method is called by the host when the frame-size changes.
+	virtual void onFramesizeChange(std::size_t framesize) = 0;
+
+
+	//! Call this to get current active state
+	virtual bool getActive() = 0;
+
+	//! This method is called by the host when the active state changes.
+	virtual void onActiveChange(bool active) = 0;
+
+
+	//! This method is called by the host to get the current state for storing.
+	virtual std::string onStateSave() = 0;
+
+	//! This method is called by the host when a new state has been loaded.
+	virtual void onStateRestore(const std::string& config) = 0;
+
+
+	//! This is method is called by the host to get the current latency.
+	//! \param The latency in samples.
+	virtual float getLatency() = 0;
+
+	//! Call this method to signal a latency change to the host.
+	//! \param latency The latency in samples.
+	virtual void setLatency(float latency) = 0;
+
+
+	//! Called by the the host to get the number of midi input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiInputs() = 0;
+
+	//! Called by the the host to get the number of midi output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiOutputs() = 0;
+
+	//! Called by the the host to get the number of audio input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioInputs() = 0;
+
+	//! Called by the the host to get the number of audio output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioOutputs() = 0;
+
+
+	//! Get unique plugin id.
+	virtual std::string getId() = 0;
+
+	//! Process callback.
+	virtual void process(std::size_t pos,
+	                     const std::vector<MidiEvent>& input_events,
+	                     std::vector<MidiEvent>& output_events,
+	                     const std::vector<const float*>& input_samples,
+	                     const std::vector<float*>& output_samples,
+	                     std::size_t count) = 0;
+
+
+	//
+	// GUI (optional)
+	//
+
+	//! Return true if a GUI implementation is to be used.
+	virtual bool hasGUI()
+	{
+		return false;
+	}
+
+	//! Create new window.
+	virtual void createWindow(void *parent) {}
+
+	//! Destroy window.
+	virtual void onDestroyWindow() {}
+
+	//! Show window.
+	virtual void onShowWindow() {}
+
+	//! Hide window.
+	virtual void onHideWindow() {}
+
+	//! Called regularly by host; process ui events.
+	virtual void onIdle() {}
+
+	//! Signal new window size to host.
+	virtual void resizeWindow(std::size_t width, std::size_t height) = 0;
+
+	//! Signal close window event to the host.
+	virtual void closeWindow() = 0;
+};
diff --git a/plugin/plugingizmo/pluginlv2.cc b/plugin/plugingizmo/pluginlv2.cc
new file mode 100644
index 0000000..477f30a
--- /dev/null
+++ b/plugin/plugingizmo/pluginlv2.cc
@@ -0,0 +1,636 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            pluginlv2.cc
+ *
+ *  Sun Feb  7 15:15:24 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "pluginlv2.h"
+
+#include <iostream>
+#include <assert.h>
+
+#include "midievent.h"
+
+#define LV2_PLUGIN_URI__atom LV2_PLUGIN_URI "/atom#"
+#define LV2_PLUGIN_URI__instance LV2_PLUGIN_URI "#plugin-instance"
+#define LV2_PLUGIN_URI__ui LV2_PLUGIN_URI "#ui"
+
+#include "lv2/lv2plug.in/ns/ext/atom/util.h"
+#include <lv2/lv2plug.in/ns/ext/midi/midi.h>
+#include <lv2/lv2plug.in/ns/ext/instance-access/instance-access.h>
+
+bool PluginLV2::getFreeWheel() const
+{
+	return free_wheel;
+}
+
+float PluginLV2::getSamplerate()
+{
+	return sample_rate;
+}
+
+std::size_t PluginLV2::getFramesize()
+{
+	return frame_size;
+}
+
+bool PluginLV2::getActive()
+{
+	return active;
+}
+
+float PluginLV2::getLatency()
+{
+	if(latency_port)
+	{
+		return *latency_port;
+	}
+
+	return 0.0f;
+}
+
+void PluginLV2::setLatency(float latency)
+{
+	if(latency_port)
+	{
+		*latency_port = latency;
+	}
+}
+
+LV2_Handle PluginLV2::instantiate(const struct _LV2_Descriptor* descriptor,
+                                  double sample_rate,
+                                  const char* bundle_path,
+                                  const LV2_Feature *const *features)
+{
+	PluginLV2* plugin_lv2 = createEffectInstance();
+
+	plugin_lv2->sample_rate = sample_rate;
+
+	plugin_lv2->input_event_ports.resize(plugin_lv2->getNumberOfMidiInputs(),
+	                                     nullptr);
+	plugin_lv2->output_event_ports.resize(plugin_lv2->getNumberOfMidiOutputs(),
+	                                      nullptr);
+
+	plugin_lv2->input_audio_ports.resize(plugin_lv2->getNumberOfAudioInputs());
+	plugin_lv2->output_audio_ports.resize(plugin_lv2->getNumberOfAudioOutputs());
+
+	for(auto& port : plugin_lv2->output_audio_ports)
+	{
+		port = nullptr;
+	}
+
+	for(auto& port : plugin_lv2->input_audio_ports)
+	{
+		port = nullptr;
+	}
+
+	while(*features != nullptr)
+	{
+		std::string uri = (*features)->URI;
+		void* data = (*features)->data;
+
+		if(uri == LV2_URID__map)
+		{
+			plugin_lv2->map = (LV2_URID_Map*)data;
+		}
+
+		++features;
+	}
+
+	// Only reported on creation.
+	plugin_lv2->onSamplerateChange(sample_rate);
+
+	return (LV2_Handle)plugin_lv2;
+}
+
+void PluginLV2::connectPort(LV2_Handle instance, uint32_t port,
+                            void *data_location)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+
+	if(port == static_cast<uint32_t>(LV2Ports::FreeWheel))
+	{
+		plugin_lv2->free_wheel_port = (float*)data_location;
+		if(plugin_lv2->free_wheel_port)
+		{
+			plugin_lv2->free_wheel = (*plugin_lv2->free_wheel_port != 0.0f);
+			// Signal first time.
+			plugin_lv2->onFreeWheelChange(plugin_lv2->free_wheel);
+		}
+	}
+
+	if(port == static_cast<uint32_t>(LV2Ports::Latency))
+	{
+		plugin_lv2->latency_port = (float*)data_location;
+	}
+
+	uint32_t port_offset = static_cast<uint32_t>(LV2Ports::PortOffset);
+
+	if((port >= port_offset) &&
+	   (port < (port_offset + plugin_lv2->getNumberOfMidiInputs())))
+	{
+		int port_index = port - port_offset;
+		plugin_lv2->input_event_ports[port_index] =
+			(LV2_Atom_Sequence*)data_location;
+	}
+
+	port_offset += plugin_lv2->getNumberOfMidiInputs();
+
+	if((port >= port_offset) &&
+	   (port < (port_offset + plugin_lv2->getNumberOfMidiOutputs())))
+	{
+		int port_index = port - port_offset;
+		plugin_lv2->output_event_ports[port_index] =
+			(LV2_Atom_Sequence*)data_location;
+	}
+
+	port_offset += plugin_lv2->getNumberOfMidiOutputs();
+
+	if((port >= port_offset) &&
+	   (port < (port_offset + plugin_lv2->getNumberOfAudioInputs())))
+	{
+		int port_index = port - port_offset;
+		plugin_lv2->input_audio_ports[port_index] = (float*)data_location;
+	}
+
+	port_offset += plugin_lv2->getNumberOfAudioInputs();
+
+	if((port >= port_offset) &&
+	   (port < (port_offset + plugin_lv2->getNumberOfAudioOutputs())))
+	{
+		int port_index = port - port_offset;
+		plugin_lv2->output_audio_ports[port_index] = (float*)data_location;
+	}
+}
+
+class Sequence {
+public:
+	Sequence(LV2_URID_Map& map, void* buffer, std::size_t buffer_size);
+	void clear();
+	void addMidiEvent(std::size_t pos, const char* data, std::size_t size);
+	void* data();
+
+private:
+	void *buffer;
+	std::size_t buffer_size;
+	LV2_Atom_Sequence *seq;
+	LV2_URID_Map& map;
+};
+
+Sequence::Sequence(LV2_URID_Map& map, void* buffer, std::size_t buffer_size)
+	: map(map)
+{
+	this->buffer = buffer;
+	this->buffer_size = buffer_size;
+
+	seq = (LV2_Atom_Sequence*)buffer;
+
+	seq->atom.size = sizeof(LV2_Atom_Sequence_Body);
+	seq->atom.type = map.map(map.handle, LV2_ATOM__Sequence);
+	seq->body.unit = 0;
+	seq->body.pad = 0;
+}
+
+// Keep this to support atom extension from lv2 < 1.10
+static inline void _lv2_atom_sequence_clear(LV2_Atom_Sequence* seq)
+{
+	seq->atom.size = sizeof(LV2_Atom_Sequence_Body);
+}
+
+void Sequence::clear()
+{
+	_lv2_atom_sequence_clear(seq);
+}
+
+// Keep this to support atom extension from lv2 < 1.10
+static inline LV2_Atom_Event*
+_lv2_atom_sequence_append_event(LV2_Atom_Sequence* seq,
+                                uint32_t capacity,
+                                const LV2_Atom_Event* event)
+{
+	const uint32_t total_size = (uint32_t)sizeof(*event) + event->body.size;
+
+	if(capacity - seq->atom.size < total_size)
+	{
+	  return nullptr;
+	}
+
+	LV2_Atom_Event* e = lv2_atom_sequence_end(&seq->body, seq->atom.size);
+	memcpy(e, event, total_size);
+
+	seq->atom.size += lv2_atom_pad_size(total_size);
+
+	return e;
+}
+
+void Sequence::addMidiEvent(std::size_t pos, const char* data, std::size_t size)
+{
+	typedef struct {
+		LV2_Atom_Event event;
+		uint8_t        msg[6];
+	} MIDINoteEvent;
+
+
+	MIDINoteEvent ev;
+	ev.event.time.frames = pos;
+	ev.event.body.type = map.map(map.handle, LV2_MIDI__MidiEvent);
+	ev.event.body.size = size;//sizeof(LV2_Atom_Event) + size;
+
+	assert(size <= sizeof(ev.msg)); // Assert that we have room for the message
+
+	memcpy(ev.msg, data, size + sizeof(LV2_Atom_Event));
+
+	_lv2_atom_sequence_append_event(seq, this->buffer_size, &ev.event);
+}
+
+void* Sequence::data()
+{
+	return buffer;
+}
+
+void PluginLV2::run(LV2_Handle instance, uint32_t sample_count)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+
+	// Handle free-wheel state
+	if(plugin_lv2->free_wheel_port != nullptr)
+	{
+		bool new_free_wheel = *plugin_lv2->free_wheel_port != 0.0f;
+		if(new_free_wheel != plugin_lv2->free_wheel)
+		{
+			plugin_lv2->free_wheel = new_free_wheel;
+			plugin_lv2->onFreeWheelChange(plugin_lv2->free_wheel);
+		}
+	}
+
+	// Handle frame size
+	if(plugin_lv2->frame_size != sample_count)
+	{
+		plugin_lv2->frame_size = sample_count;
+		plugin_lv2->onFramesizeChange(plugin_lv2->frame_size);
+	}
+
+	// Convert input lv2 events to input events.
+	std::vector<MidiEvent> input_events;
+	for(std::size_t port = 0; port < plugin_lv2->getNumberOfMidiInputs(); ++port)
+	{
+		if(plugin_lv2->input_event_ports[port] == nullptr)
+		{
+			continue; //  Not yet connected.
+		}
+
+		auto& event_port = plugin_lv2->input_event_ports[port];
+
+		LV2_Atom_Event* ev = lv2_atom_sequence_begin(&event_port->body);
+		while(!lv2_atom_sequence_is_end(&event_port->body,
+		                                event_port->atom.size,
+		                                ev))
+		{
+			if(ev->body.type != plugin_lv2->map->map(plugin_lv2->map->handle,
+			                                         LV2_MIDI__MidiEvent))
+			{
+				continue; // not a midi event.
+			}
+
+			const char* data = (char*)(ev + 1);
+			input_events.emplace_back(ev->time.frames, data, ev->body.size);
+
+			ev = lv2_atom_sequence_next(ev);
+		}
+	}
+
+	std::vector<MidiEvent> output_events;
+
+	// Process events and audio
+	plugin_lv2->process(plugin_lv2->pos,
+	                    input_events,
+	                    output_events,
+	                    plugin_lv2->input_audio_ports,
+	                    plugin_lv2->output_audio_ports,
+	                    sample_count);
+
+	// Convert output events to lv2 events
+	if(plugin_lv2->getNumberOfMidiOutputs() > 0)
+	{
+		if(plugin_lv2->map != nullptr)
+		{
+			if(plugin_lv2->output_event_ports[0] != nullptr) //  Not yet connected?
+			{
+				auto& event_port = plugin_lv2->output_event_ports[0]; // TODO: Split?
+				Sequence seq(*plugin_lv2->map,
+				             &event_port->body + 1,
+				             event_port->atom.size);
+				for(auto midi_event : output_events)
+				{
+					seq.addMidiEvent(midi_event.getTime(),
+					                 midi_event.getData(),
+					                 midi_event.getSize());
+				}
+			}
+		}
+	}
+
+	plugin_lv2->pos += sample_count;
+}
+
+void PluginLV2::activate(LV2_Handle instance)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+	plugin_lv2->active = true;
+	plugin_lv2->onActiveChange(plugin_lv2->active);
+}
+
+void PluginLV2::deactivate(LV2_Handle instance)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+	plugin_lv2->active = false;
+	plugin_lv2->onActiveChange(plugin_lv2->active);
+}
+
+void PluginLV2::cleanup(LV2_Handle instance)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+	delete plugin_lv2;
+}
+
+//
+// State handling
+//
+
+LV2_State_Status PluginLV2::save(LV2_Handle instance,
+                                 LV2_State_Store_Function store,
+                                 LV2_State_Handle handle,
+                                 uint32_t flags,
+                                 const LV2_Feature *const * features)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+
+	if(plugin_lv2->map == nullptr)
+	{
+		// Missing urid feature?
+		return  LV2_STATE_ERR_NO_FEATURE;
+	}
+
+	std::string config = plugin_lv2->onStateSave();
+
+	store(handle,
+	      plugin_lv2->map->map(plugin_lv2->map->handle,
+	                           LV2_PLUGIN_URI__atom "config"),
+	      config.data(),
+	      config.length(),
+	      plugin_lv2->map->map(plugin_lv2->map->handle, LV2_ATOM__Chunk),
+	      LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE);
+
+	return LV2_STATE_SUCCESS;
+}
+
+LV2_State_Status PluginLV2::restore(LV2_Handle instance,
+                                    LV2_State_Retrieve_Function retrieve,
+                                    LV2_State_Handle handle,
+                                    uint32_t flags,
+                                    const LV2_Feature *const * features)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+
+	if(plugin_lv2->map == nullptr)
+	{
+		// Missing urid feature?
+		return  LV2_STATE_ERR_NO_FEATURE;
+	}
+
+	std::size_t size;
+	uint32_t type;
+
+	const char* data =
+		(const char*)retrieve(handle,
+		                      plugin_lv2->map->map(plugin_lv2->map->handle,
+		                                           LV2_PLUGIN_URI__atom "config"),
+		                      &size, &type, &flags);
+
+	if(data && size)
+	{
+		std::string config;
+
+		config.append(data, size);
+		plugin_lv2->onStateRestore(config);
+	}
+
+	return LV2_STATE_SUCCESS;
+}
+
+static LV2_State_Interface persist = {
+	PluginLV2::save,
+	PluginLV2::restore
+};
+
+const void* PluginLV2::extensionData(const char *uri)
+{
+	if(!strcmp(uri, LV2_STATE__interface))
+	{
+		return &persist;
+	}
+
+	return nullptr;
+}
+
+
+//
+// GUI
+//
+LV2UI_Handle PluginLV2::uiInstantiate(const struct _LV2UI_Descriptor*descriptor,
+                                      const char * plugin_uri,
+                                      const char * bundle_path,
+                                      LV2UI_Write_Function write_function,
+                                      LV2UI_Controller controller,
+                                      LV2UI_Widget* widget,
+                                      const LV2_Feature * const * features)
+{
+	LV2_Handle instance = nullptr;
+	void* parent = nullptr;
+	LV2UI_Resize* resize = nullptr;
+
+	while(*features != nullptr) {
+		std::string uri = (*features)->URI;
+		void *data = (*features)->data;
+
+		if(uri == LV2_INSTANCE_ACCESS_URI)
+		{
+			instance = (LV2_Handle)data;
+		}
+
+		if(uri == LV2_UI__parent)
+		{
+			parent = data;
+		}
+
+		if(uri == LV2_UI__resize)
+		{
+	    resize = (LV2UI_Resize*)data;
+		}
+
+		features++;
+	}
+
+	if(instance == nullptr)
+	{
+		return nullptr;
+	}
+
+	PluginLV2* plugin_lv2 = (PluginLV2*)instance;
+
+	// Do we have a GUI?
+	if(plugin_lv2->hasGUI() == false)
+	{
+		return nullptr;
+	}
+
+	plugin_lv2->resize = resize;
+
+	plugin_lv2->createWindow(parent);
+
+	return plugin_lv2;
+}
+
+void PluginLV2::resizeWindow(std::size_t width, std::size_t height)
+{
+	if(resize)
+	{
+		resize->ui_resize(resize->handle, width, height);
+	}
+}
+
+void PluginLV2::closeWindow()
+{
+}
+
+static const LV2_Descriptor descriptor = {
+	LV2_PLUGIN_URI,
+	PluginLV2::instantiate,
+	PluginLV2::connectPort,
+	PluginLV2::activate,
+	PluginLV2::run,
+	PluginLV2::deactivate,
+	PluginLV2::cleanup,
+	PluginLV2::extensionData
+};
+
+void PluginLV2::uiCleanup(LV2UI_Handle handle)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)handle;
+	plugin_lv2->onDestroyWindow () ;
+
+}
+
+int PluginLV2::uiIdle(LV2UI_Handle handle)
+{
+	PluginLV2* plugin_lv2 = (PluginLV2*)handle;
+	plugin_lv2->onIdle();
+	return 0;
+}
+
+static const LV2UI_Idle_Interface idle_iface = {
+	PluginLV2::uiIdle
+};
+
+const void* PluginLV2::uiExtensionData(const char* uri)
+{
+	if(!strcmp(uri, LV2_UI__idleInterface))
+	{
+		return &idle_iface;
+	}
+
+	return NULL;
+}
+
+static LV2UI_Descriptor ui_descriptor = {
+	LV2_PLUGIN_URI__ui,
+	PluginLV2::uiInstantiate,
+	PluginLV2::uiCleanup,
+	nullptr,//PluginLV2::ui_port_event,
+	PluginLV2::uiExtensionData
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LV2_SYMBOL_EXPORT
+const LV2_Descriptor* lv2_descriptor(uint32_t index)
+{
+	switch (index) {
+	case 0:
+		return &descriptor;
+	default:
+		return nullptr;
+	}
+}
+
+LV2_SYMBOL_EXPORT
+const LV2UI_Descriptor *lv2ui_descriptor(uint32_t index)
+{
+	switch(index) {
+	case 0:
+		return &ui_descriptor;
+	default:
+		return nullptr;
+	}
+}
+
+//
+// DynManifest experiments failed, but the code is kept here for nostalgic
+// reasons :-)
+//
+//
+//int lv2_dyn_manifest_open(LV2_Dyn_Manifest_Handle* handle,
+//                          const LV2_Feature* const* features)
+//{
+//	*handle = createEffectInstance();
+//	return 0;
+//}
+//
+//int lv2_dyn_manifest_get_subjects(LV2_Dyn_Manifest_Handle handle, FILE* fp)
+//{
+////	PluginLV2* plugin_lv2 = (PluginLV2*)handle;
+//
+//	fprintf(fp, "@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .\n");
+//	fprintf(fp, "<" LV2_PLUGIN_URI "> a lv2:Plugin .\n");
+//	return 0;
+//}
+//
+//int lv2_dyn_manifest_get_data(LV2_Dyn_Manifest_Handle handle, FILE* fp,
+//                              const char* uri)
+//{
+//	//PluginLV2* plugin_lv2 = (PluginLV2*)handle;
+//	printf("%s '%s'\n", __PRETTY_FUNCTION__, uri);
+//	return 0;
+//}
+//
+//void lv2_dyn_manifest_close(LV2_Dyn_Manifest_Handle handle)
+//{
+//	PluginLV2* plugin_lv2 = (PluginLV2*)handle;
+//	delete plugin_lv2;
+//}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/plugin/plugingizmo/pluginlv2.h b/plugin/plugingizmo/pluginlv2.h
new file mode 100644
index 0000000..a1408fa
--- /dev/null
+++ b/plugin/plugingizmo/pluginlv2.h
@@ -0,0 +1,228 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            pluginlv2.h
+ *
+ *  Sun Feb  7 15:15:23 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <plugin.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <lv2/lv2plug.in/ns/ext/urid/urid.h>
+#include <lv2/lv2plug.in/ns/ext/state/state.h>
+#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
+#include <lv2/lv2plug.in/ns/ext/dynmanifest/dynmanifest.h>
+#include <lv2/lv2plug.in/ns/extensions/ui/ui.h>
+
+enum class LV2Ports
+{
+	FreeWheel = 0,
+	Latency = 1,
+	PortOffset = 2,
+};
+
+class PluginLV2
+	: public Plugin
+{
+public:
+	virtual ~PluginLV2() = default;
+
+	//! Not used in LV2
+	void init() override {}
+
+	//! Get current free-wheel mode.
+	bool getFreeWheel() const override;
+
+	//! This method is called by the host when the free-wheel mode changes.
+	virtual void onFreeWheelChange(bool freewheel) override = 0;
+
+
+	//! Call this to get current samplerate.
+	float getSamplerate() override;
+
+	//! This method is called by the host when the samplerate changes.
+	virtual void onSamplerateChange(float samplerate) = 0;
+
+	//! Call this to get current frame-size.
+	std::size_t getFramesize() override;
+
+	//! This method is called by the host when the frame-size changes.
+	virtual void onFramesizeChange(std::size_t framesize) override = 0;
+
+
+	//! Call this to get current active state
+	bool getActive() override;
+
+	//! This method is called by the host when the active state changes.
+	virtual void onActiveChange(bool active) override = 0;
+
+
+	//! This method is called by the host to get the current state for storing.
+	virtual std::string onStateSave() override = 0;
+
+	//! This method is called by the host when a new state has been loaded.
+	virtual void onStateRestore(const std::string& config) override = 0;
+
+
+	//! This is method is called by the host to get the current latency.
+	//! \param The latency in samples.
+	float getLatency() override;
+
+	//! Call this method to signal a latency change to the host.
+	//! \param latency The latency in samples.
+	void setLatency(float latency) override;
+
+
+	//! Called by the the host to get the number of audio input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioInputs() override = 0;
+
+	//! Called by the the host to get the number of audio output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioOutputs() override = 0;
+
+
+	//! Called by the the host to get the number of midi input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiInputs() override = 0;
+
+	//! Called by the the host to get the number of midi output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiOutputs() override = 0;
+
+
+	//! Get unique plugin id.
+	std::string getId() override = 0;
+
+	virtual void process(std::size_t pos,
+	                     const std::vector<MidiEvent>& input_events,
+	                     std::vector<MidiEvent>& output_events,
+	                     const std::vector<const float*>& input_samples,
+	                     const std::vector<float*>& output_samples,
+	                     std::size_t count) = 0;
+
+	//
+	// GUI (optional)
+	//
+
+	//! Return true if a GUI implementation is to be used.
+	virtual bool hasGUI() override
+	{
+		return false;
+	}
+
+	//! Create new window.
+	virtual void createWindow(void *parent) override {}
+
+	//! Destroy window.
+	virtual void onDestroyWindow() override {}
+
+	//! Show window.
+	virtual void onShowWindow() override {}
+
+	//! Hide window.
+	virtual void onHideWindow() override {}
+
+	//! Called regularly by host; process ui events.
+	virtual void onIdle() override {}
+
+	//! Signal new window size to host.
+	void resizeWindow(std::size_t width, std::size_t height) override;
+
+	//! Signal close window event to the host.
+	void closeWindow() override;
+
+public:
+	static LV2_Handle instantiate(const struct _LV2_Descriptor* descriptor,
+	                              double sample_rate,
+	                              const char* bundle_path,
+	                              const LV2_Feature* const * features);
+
+	static void connectPort(LV2_Handle instance, uint32_t port,
+	                        void *data_location);
+
+	static void run(LV2_Handle instance, uint32_t sample_count);
+
+	static void activate(LV2_Handle instance);
+
+	static void deactivate(LV2_Handle instance);
+
+	static void cleanup(LV2_Handle instance);
+
+	static const void* extensionData(const char *uri);
+
+	static LV2_State_Status save(LV2_Handle instance,
+	                             LV2_State_Store_Function store,
+	                             LV2_State_Handle handle,
+	                             uint32_t flags,
+	                             const LV2_Feature *const * features);
+
+	static LV2_State_Status restore(LV2_Handle instance,
+	                                LV2_State_Retrieve_Function retrieve,
+	                                LV2_State_Handle handle,
+	                                uint32_t flags,
+	                                const LV2_Feature *const * features);
+
+	static LV2UI_Handle uiInstantiate(const struct _LV2UI_Descriptor * descriptor,
+	                                  const char * plugin_uri,
+	                                  const char * bundle_path,
+	                                  LV2UI_Write_Function write_function,
+	                                  LV2UI_Controller controller,
+	                                  LV2UI_Widget * widget,
+	                                  const LV2_Feature * const * features);
+
+	static void uiCleanup(LV2UI_Handle handle);
+
+	static int uiIdle(LV2UI_Handle handle);
+
+	static const void* uiExtensionData(const char* uri);
+
+private:
+	float* free_wheel_port{nullptr};
+	bool free_wheel{false};
+
+	float sample_rate{0};
+
+	float* latency_port{nullptr};
+
+	std::size_t frame_size{0};
+
+	std::size_t pos{0};
+
+	std::vector<LV2_Atom_Sequence*> input_event_ports;
+	std::vector<LV2_Atom_Sequence*> output_event_ports;
+	std::vector<const float*> input_audio_ports;
+	std::vector<float*> output_audio_ports;
+
+	LV2_URID_Map* map{nullptr};
+
+	bool active{false};
+
+	//
+	// GUI
+	//
+	LV2UI_Resize* resize{nullptr};
+};
+
+PluginLV2* createEffectInstance();
diff --git a/plugin/plugingizmo/pluginvst.cc b/plugin/plugingizmo/pluginvst.cc
new file mode 100644
index 0000000..7de518e
--- /dev/null
+++ b/plugin/plugingizmo/pluginvst.cc
@@ -0,0 +1,428 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            pluginvst.cc
+ *
+ *  Mon Feb  8 19:24:40 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "pluginvst.h"
+
+#include "midievent.h"
+
+#include <public.sdk/source/vst2.x/audioeffectx.h>
+#include <public.sdk/source/vst2.x/aeffeditor.h>
+
+bool PluginVST::getFreeWheel() const
+{
+	return free_wheel;
+}
+
+float PluginVST::getSamplerate()
+{
+	return AudioEffectX::getSampleRate();
+}
+
+
+std::size_t PluginVST::getFramesize()
+{
+	return AudioEffectX::getBlockSize();
+}
+
+bool PluginVST::getActive()
+{
+	return active;
+}
+
+float PluginVST::getLatency()
+{
+	return current_latency;
+}
+
+void PluginVST::setLatency(float latency)
+{
+	update_latency = latency;
+}
+
+void PluginVST::updateLatency()
+{
+	if(update_latency != current_latency)
+	{
+		AudioEffectX::setInitialDelay(current_latency);
+		AudioEffectX::ioChanged();
+		current_latency = update_latency;
+	}
+}
+
+static uint32_t sdbm_hash(std::string input)
+{
+	unsigned long hash = 0;
+
+	for(auto& cha : input)
+	{
+		hash = (unsigned char)cha + (hash << 6) + (hash << 16) - hash;
+	}
+
+	return hash;
+}
+
+//
+// VST AudioEffectX implementation:
+//
+PluginVST::PluginVST(audioMasterCallback audioMaster)
+	: AudioEffectX(audioMaster, 0, 0)
+{
+}
+
+PluginVST::~PluginVST()
+{
+}
+
+void PluginVST::init()
+{
+	// virtual void setUniqueID (VstInt32 iD)
+	// Must be called to set the plug-ins unique ID!
+	uint32_t hash = sdbm_hash(getId());
+	AudioEffect::setUniqueID(hash);
+
+	// virtual void setNumInputs (VstInt32 inputs)
+	// Set the number of inputs the plug-in will handle. For a plug-in which
+	// could change its IO configuration, this number is the maximun available
+	// inputs.
+	AudioEffect::setNumInputs(getNumberOfAudioInputs());
+
+	// virtual void setNumOutputs (VstInt32 outputs)
+	// Set the number of outputs the plug-in will handle. For a plug-in which
+	// could change its IO configuration, this number is the maximun available
+	// ouputs.
+	AudioEffect::setNumOutputs(getNumberOfAudioOutputs());
+
+	// virtual void canProcessReplacing (bool state=true)
+	// Tells that processReplacing() could be used. Mandatory in VST 2.4!
+	AudioEffect::canProcessReplacing(true);
+
+	// virtual void canDoubleReplacing (bool state=true)
+	// Tells that processDoubleReplacing() is implemented.
+	AudioEffect::canDoubleReplacing(false);
+
+	// virtual void programsAreChunks (bool state=true)
+	// Program data is handled in formatless chunks (using getChunk-setChunks).
+	AudioEffect::programsAreChunks(true); // for generic config string support.
+
+	// virtual void setInitialDelay (VstInt32 delay)
+	// Use to report the plug-in's latency (Group Delay).
+	AudioEffect::setInitialDelay(0);
+
+	AudioEffectX::isSynth(getNumberOfMidiInputs() > 0);
+
+	if(hasGUI())
+	{
+		editor = std::make_shared<UI>(*this);
+		setEditor(editor.get());
+	}
+}
+
+void PluginVST::open()
+{
+	// Called when plug-in is initialized.
+}
+
+void PluginVST::close()
+{
+	// Called when plug-in will be released.
+	setEditor(nullptr);
+	editor = nullptr;
+}
+
+void PluginVST::suspend()
+{
+	// Called when plug-in is switched to off.
+	active = false;
+	onActiveChange(active);
+	updateLatency();
+}
+
+void PluginVST::resume()
+{
+	updateLatency();
+
+	// Called when plug-in is switched to on.
+	active = true;
+	onActiveChange(active);
+}
+
+bool PluginVST::getInputProperties(VstInt32 index, VstPinProperties* props)
+{
+	if(index < (VstInt32)getNumberOfAudioInputs())
+	{
+		vst_strncpy(props->label, "Channel ", 63);
+		char temp[11] = {0};
+		int2string(index + 1, temp, 10);
+		vst_strncat(props->label, temp, 63);
+
+		props->flags = kVstPinIsActive;
+
+		return true;
+	}
+
+	return false;
+}
+
+bool PluginVST::getOutputProperties(VstInt32 index, VstPinProperties* props)
+{
+	if(index < (VstInt32)getNumberOfAudioOutputs())
+	{
+		vst_strncpy(props->label, "Channel ", 63);
+		char temp[11] = {0};
+		int2string(index + 1, temp, 10);
+		vst_strncat(props->label, temp, 63);
+
+		props->flags = kVstPinIsActive;
+
+		return true;
+	}
+
+	return false;
+}
+
+void PluginVST::setSampleRate(float sampleRate)
+{
+	// Called when the sample rate changes (always in a suspend state).
+	onSamplerateChange(sampleRate);
+}
+
+void PluginVST::setBlockSize(VstInt32 blockSize)
+{
+	// Called when the Maximun block size changes (always in a suspend state).
+	// Note that the sampleFrames in Process Calls could be smaller than this
+	// block size, but NOT bigger.
+	onFramesizeChange(blockSize);
+}
+
+VstInt32 PluginVST::processEvents(VstEvents* events)
+{
+	// For each process cycle, processEvents() is called once before a
+	// processReplacing() call.
+
+	for(VstInt32 i = 0; i < events->numEvents; ++i)
+	{
+		auto event = events->events[i];
+		if(event->type != kVstMidiType)
+		{
+			continue;
+		}
+
+		auto midi_event = (VstMidiEvent*)event;
+		input_events.emplace_back(midi_event->deltaFrames,
+		                          midi_event->midiData,
+		                          midi_event->byteSize);
+	}
+
+	return 0;
+}
+
+void PluginVST::processReplacing(float** inputs, float** outputs,
+                                 VstInt32 sampleFrames)
+{
+	// Process 32 bit (single precision) floats (always in a resume state).
+
+	// 0 = realtime/normal
+	// 1 = non-realtime/rendering
+	// 2 = offline processing
+	long lvl = AudioEffectX::getCurrentProcessLevel();
+	bool last_free_wheel = free_wheel;
+	free_wheel = (lvl != 0);
+	if(last_free_wheel != free_wheel)
+	{
+		onFreeWheelChange(free_wheel);
+	}
+
+	std::vector<const float*> input_audio_ports;
+	for(std::size_t i = 0; i < getNumberOfAudioInputs(); ++i)
+	{
+		input_audio_ports.emplace_back(inputs[i]);
+	}
+
+	std::vector<float*> output_audio_ports;
+	output_audio_ports.resize(getNumberOfAudioOutputs());
+
+	for(std::size_t i = 0; i < getNumberOfAudioOutputs(); ++i)
+	{
+		output_audio_ports[i] = outputs[i];
+	}
+
+	std::vector<MidiEvent> output_events;
+
+	// Process events and audio
+	process(pos,
+	        input_events,
+	        output_events,
+	        input_audio_ports,
+	        output_audio_ports,
+	        (std::size_t)sampleFrames);
+
+	input_events.clear();
+
+	if(getNumberOfMidiOutputs())
+	{
+		// Translate output_events to VST midi events.
+		std::vector<VstMidiEvent> vst_output_event_list;
+		vst_output_event_list.resize(output_events.size());
+		for(std::size_t i = 0; i < output_events.size(); ++i)
+		{
+			vst_output_event_list[i].deltaFrames = output_events[i].getTime();
+			vst_output_event_list[i].type = kVstMidiType;
+			const char* data = output_events[i].getData();
+			for(std::size_t j = 0; j < output_events[i].getSize(); ++j)
+			{
+				vst_output_event_list[i].midiData[j] = data[j];
+			}
+			vst_output_event_list[i].byteSize = output_events[i].getSize();
+		}
+
+		if(!vst_output_event_list.empty())
+		{
+			// Dispatch output events to host
+			VstEvents vst_output_events;
+			vst_output_events.numEvents = vst_output_event_list.size();
+			vst_output_events.events[0] = (VstEvent*)vst_output_event_list.data();
+			sendVstEventsToHost(&vst_output_events);
+		}
+	}
+
+	pos += sampleFrames;
+}
+
+VstInt32 PluginVST::getChunk(void **data, bool isPreset)
+{
+	std::string state = onStateSave();
+	char* chunk = (char*)malloc(state.size() + 1);
+	memcpy(chunk, state.data(), state.size());
+	*data = chunk;
+	return state.size();
+}
+
+VstInt32 PluginVST::setChunk(void *data, VstInt32 byteSize, bool isPreset)
+{
+	std::string state;
+	state.append((const char*)data, (std::size_t)byteSize);
+	onStateRestore(state);
+	return 0;
+}
+
+VstInt32 PluginVST::canDo(char* text)
+{
+	std::string feature = text;
+
+	// Midi input
+	if((feature == "receiveVstMidiEvent") &&//PlugCanDos::canDoReceiveVstMidiEvent
+	   (getNumberOfMidiInputs() > 0))
+	{
+		return 1;
+	}
+
+	// Midi output
+	if((feature == "sendVstMidiEvent") && // PlugCanDos::canDoSendVstMidiEvent
+	   (getNumberOfMidiOutputs() > 0))
+	{
+		return 1;
+	}
+
+	// For FreeWheel functionality.
+	if(feature == "offline") // PlugCanDos::canDoOffline
+	{
+		return 1;
+	}
+
+	// TODO: For soft-bypass state.
+	//if(feature == "bypass") // PlugCanDos::canDoBypass)
+	//{
+	//	return 1;
+	//}
+
+	// TODO: For receiving metronome ticks?
+	//if(feature == "receiveVstTimeInfo") // PlugCanDos::canDoReceiveVstTimeInfo)
+	//{
+	//	return 1;
+	//}
+
+	return 0;
+}
+
+void PluginVST::resizeWindow(std::size_t width, std::size_t height)
+{
+	if(editor)
+	{
+		editor->rect.top = 0;
+		editor->rect.left = 0;
+		editor->rect.right = width;
+		editor->rect.bottom = height;
+	}
+}
+
+void PluginVST::closeWindow()
+{
+}
+
+PluginVST::UI::UI(PluginVST& plugin_vst)
+	: AEffEditor(&plugin_vst)
+	, plugin_vst(plugin_vst)
+{
+}
+
+bool PluginVST::UI::open(void* ptr)
+{
+	plugin_vst.createWindow(ptr);
+
+	AEffEditor::open(ptr);
+
+	is_open = true;
+	return true;
+}
+
+void PluginVST::UI::close()
+{
+	is_open = false;
+	plugin_vst.onDestroyWindow();
+
+	AEffEditor::close();
+}
+
+bool PluginVST::UI::isOpen()
+{
+	return is_open;
+}
+
+void PluginVST::UI::idle()
+{
+	if(is_open)
+	{
+		plugin_vst.onIdle();
+	}
+
+	AEffEditor::idle();
+}
+
+bool PluginVST::UI::getRect(ERect** rect)
+{
+	*rect = &this->rect;
+	return true;
+}
diff --git a/plugin/plugingizmo/pluginvst.h b/plugin/plugingizmo/pluginvst.h
new file mode 100644
index 0000000..2ae746a
--- /dev/null
+++ b/plugin/plugingizmo/pluginvst.h
@@ -0,0 +1,214 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            pluginvst.h
+ *
+ *  Mon Feb  8 19:24:39 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of PluginGizmo.
+ *
+ *  PluginGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  PluginGizmo 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 PluginGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <memory>
+
+#include <plugin.h>
+
+#include <public.sdk/source/vst2.x/audioeffectx.h>
+#include <public.sdk/source/vst2.x/aeffeditor.h>
+
+#if defined(WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif // defined(WIN32)
+
+class PluginVST
+	: public Plugin
+	, public AudioEffectX
+{
+public:
+	//! Call this to set up number of inputs/outpus, unique id etc...
+	//! IMPORTANT: This must be called form the constructor.
+	void init() override;
+
+	//! Get current free-wheel mode.
+	bool getFreeWheel() const override;
+
+	//! This method is called by the host when the free-wheel mode changes.
+	virtual void onFreeWheelChange(bool freewheel) override = 0;
+
+
+	//! Call this to get current samplerate.
+	float getSamplerate() override;
+
+	//! This method is called by the host when the free-wheel mode changes.
+	virtual void onSamplerateChange(float samplerate) override = 0;
+
+
+	//! Call this to get current frame-size.
+	std::size_t getFramesize() override;
+
+	//! This method is called by the host when the frame-size changes.
+	virtual void onFramesizeChange(std::size_t framesize) override = 0;
+
+
+	//! Call this to get current active state
+	bool getActive() override;
+
+	//! This method is called by the host when the active state changes.
+	virtual void onActiveChange(bool active) override = 0;
+
+
+	//! This method is called by the host to get the current state for storing.
+	virtual std::string onStateSave() override = 0;
+
+	//! This method is called by the host when a new state has been loaded.
+	virtual void onStateRestore(const std::string& config) override = 0;
+
+
+	//! This is method is called by the host to get the current latency.
+	//! \param The latency in samples.
+	float getLatency() override;
+
+	//! Call this method to signal a latency change to the host.
+	//! \param latency The latency in samples.
+	void setLatency(float latency) override;
+
+
+	//! Called by the the host to get the number of audio input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioInputs() override = 0;
+
+	//! Called by the the host to get the number of audio output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfAudioOutputs() override = 0;
+
+
+	//! Called by the the host to get the number of midi input channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiInputs() override = 0;
+
+	//! Called by the the host to get the number of midi output channels.
+	//! This must remain constant during the lifespan of the plugin instance.
+	virtual std::size_t getNumberOfMidiOutputs() override = 0;
+
+
+	//! Get unique plugin id.
+	std::string getId() override = 0;
+
+	virtual void process(std::size_t pos,
+	                     const std::vector<MidiEvent>& input_events,
+	                     std::vector<MidiEvent>& output_events,
+	                     const std::vector<const float*>& input_samples,
+	                     const std::vector<float*>& output_samples,
+	                     std::size_t count) = 0;
+
+	//
+	// GUI
+	//
+	//! Return true if a GUI implementation is to be used.
+	virtual bool hasGUI() override
+	{
+		return false;
+	}
+
+	//! Create new window.
+	virtual void createWindow(void *parent) override {}
+
+	//! Destroy window.
+	virtual void onDestroyWindow() override {}
+
+	//! Show window.
+	virtual void onShowWindow() override {}
+
+	//! Hide window.
+	virtual void onHideWindow() override {}
+
+	//! Called regularly by host; process ui events.
+	virtual void onIdle() override {}
+
+	//! Signal new window size to host.
+	void resizeWindow(std::size_t width, std::size_t height) override;
+
+	//! Signal close window event to the host.
+	void closeWindow() override;
+
+protected:
+	bool active{false};
+
+	void updateLatency();
+	float current_latency{0.0f};
+	float update_latency{0.0f};
+
+	bool free_wheel{true};
+
+	std::vector<MidiEvent> input_events;
+
+	std::size_t pos{0};
+
+public:
+	PluginVST(audioMasterCallback audioMaster);
+	virtual ~PluginVST();
+
+	// From AudioEffect:
+	void open() override;
+	void close() override;
+	void suspend() override;
+	void resume() override;
+	bool getInputProperties(VstInt32 index, VstPinProperties* props) override;
+	bool getOutputProperties(VstInt32 index, VstPinProperties* props) override;
+
+	// Callbacks:
+	void setSampleRate(float sampleRate) override;
+	void setBlockSize(VstInt32 blockSize) override;
+
+	VstInt32 getChunk(void **data, bool isPreset) override;
+	VstInt32 setChunk(void *data, VstInt32 byteSize, bool isPreset) override;
+
+	// From AudioEffectX:
+	VstInt32 canDo(char* text) override;
+
+	void processReplacing(float** inputs, float** outputs,
+	                      VstInt32 sampleFrames) override;
+	VstInt32 processEvents(VstEvents *events) override;
+
+	// UI
+	class UI :
+		public AEffEditor
+	{
+	public:
+		UI(PluginVST& plugin_vst);
+
+		bool open(void* ptr) override;
+		void close() override;
+		bool isOpen() override;
+		void idle() override;
+		bool getRect(ERect** rect) override;
+
+		PluginVST& plugin_vst;
+		bool is_open{false};
+
+		ERect rect{0,0,100,100};
+	};
+
+private:
+	std::shared_ptr<UI> editor;
+};
+
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster);
diff --git a/plugingui/Makefile.am b/plugingui/Makefile.am
index bdb11cb..3dee864 100644
--- a/plugingui/Makefile.am
+++ b/plugingui/Makefile.am
@@ -1,19 +1,19 @@
 noinst_PROGRAMS = plugingui rcgen
 
 include Makefile.am.plugingui
-#include $(top_srcdir)/src/Makefile.am.drumgizmo
 
-plugingui_LDADD = $(SNDFILE_LIBS) $(PTHREAD_LIBS) $(EXPAT_LIBS) \
-	 -ldl $(PLUGIN_GUI_LIBS)
+plugingui_LDADD = $(PLUGIN_GUI_LIBS)
 
 plugingui_CXXFLAGS = $(SNDFILE_CXXFLAGS) $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \
-	-I$(top_srcdir)/include $(PLUGIN_GUI_CFLAGS) -I$(top_srcdir)/src \
-	-DSTANDALONE -DUSE_THREAD
+	-I$(top_srcdir)/include $(PLUGIN_GUI_CPPFLAGS) -I$(top_srcdir)/src \
+	-DSTANDALONE
 
 plugingui_CFLAGS = $(plugingui_CXXFLAGS)
 
 plugingui_SOURCES = \
+	testmain.cc \
 	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/src/configfile.cc \
 	$(top_srcdir)/src/thread.cc \
 	$(top_srcdir)/src/semaphore.cc \
 	$(top_srcdir)/src/mutex.cc \
@@ -27,6 +27,7 @@ EXTRA_DIST = \
 	checkbox.h \
 	colour.h \
 	combobox.h \
+	dgwindow.h \
 	directory.h \
 	eventhandler.h \
 	filebrowser.h \
@@ -35,6 +36,7 @@ EXTRA_DIST = \
 	image.h \
 	knob.h \
 	label.h \
+	layout.h \
 	led.h \
 	lineedit.h \
 	listbox.h \
@@ -44,6 +46,7 @@ EXTRA_DIST = \
 	nativewindow.h \
 	nativewindow_win32.h \
 	nativewindow_x11.h \
+	notifier.h \
 	painter.h \
 	pixelbuffer.h \
 	pluginconfig.h \
@@ -53,8 +56,8 @@ EXTRA_DIST = \
 	resource_data.h \
 	scrollbar.h \
 	slider.h \
+	textedit.h \
 	verticalline.h \
 	widget.h \
 	window.h \
-	lodepng/lodepng.h
-
+	lodepng/lodepng.h
\ No newline at end of file
diff --git a/plugingui/Makefile.am.plugingui b/plugingui/Makefile.am.plugingui
index b1698e4..3ab3132 100644
--- a/plugingui/Makefile.am.plugingui
+++ b/plugingui/Makefile.am.plugingui
@@ -1,12 +1,8 @@
-
-puglsources =
+# -*- Makefile -*-
 
 PLUGIN_GUI_SOURCES = \
 	$(top_srcdir)/hugin/hugin.c \
-	$(top_srcdir)/hugin/hugin_syslog.c \
-	$(puglsources) \
-	$(top_srcdir)/plugingui/nativewindow_x11.cc \
-	$(top_srcdir)/plugingui/nativewindow_win32.cc \
+	$(top_srcdir)/plugingui/dgwindow.cc \
 	$(top_srcdir)/plugingui/plugingui.cc \
 	$(top_srcdir)/plugingui/label.cc \
 	$(top_srcdir)/plugingui/eventhandler.cc \
@@ -22,6 +18,8 @@ PLUGIN_GUI_SOURCES = \
 	$(top_srcdir)/plugingui/checkbox.cc \
 	$(top_srcdir)/plugingui/slider.cc \
 	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
 	$(top_srcdir)/plugingui/listbox.cc \
 	$(top_srcdir)/plugingui/listboxthin.cc \
 	$(top_srcdir)/plugingui/listboxbasic.cc \
@@ -37,13 +35,30 @@ PLUGIN_GUI_SOURCES = \
 	$(top_srcdir)/plugingui/resource_data.cc \
 	$(top_srcdir)/plugingui/lodepng/lodepng.cpp
 
-PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS) $(ZLIB_LIBS)
+PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS)
+
+PLUGIN_GUI_CPPFLAGS = \
+	$(GUI_CPPFLAGS) -I$(top_srcdir)/hugin \
+	-I$(top_srcdir)/plugingui \
+	-DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
+	-DLODEPNG_NO_COMPILE_ENCODER \
+	-DLODEPNG_NO_COMPILE_DISK \
+	-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
+	-DLODEPNG_NO_COMPILE_ERROR_TEXT \
+	-DLODEPNG_NO_COMPILE_CPP
+
+if ENABLE_X11
+PLUGIN_GUI_SOURCES += $(top_srcdir)/plugingui/nativewindow_x11.cc
+endif
+
+if ENABLE_WIN32
+PLUGIN_GUI_SOURCES += $(top_srcdir)/plugingui/nativewindow_win32.cc
+endif
+
+if ENABLE_PUGL
+PLUGIN_GUI_SOURCES += \
+	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+	$(top_srcdir)/pugl/pugl/pugl_x11.c
 
-PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) $(ZLIB_CFLAGS) -I$(top_srcdir)/hugin \
-									-DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
-									-I$(top_srcdir)/pugl/pugl \
-									-DLODEPNG_NO_COMPILE_ENCODER \
-									-DLODEPNG_NO_COMPILE_DISK \
-									-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
-									-DLODEPNG_NO_COMPILE_ERROR_TEXT \
-									-DLODEPNG_NO_COMPILE_CPP
+PLUGIN_GUI_CPPFLAGS += -I$(top_srcdir)/pugl/pugl
+endif
diff --git a/plugingui/Makefile.in b/plugingui/Makefile.in
index 4c3ed5c..57c6bb3 100644
--- a/plugingui/Makefile.in
+++ b/plugingui/Makefile.in
@@ -14,6 +14,8 @@
 
 @SET_MAKE@
 
+# -*- Makefile -*-
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -81,6 +83,13 @@ host_triplet = @host@
 noinst_PROGRAMS = plugingui$(EXEEXT) rcgen$(EXEEXT)
 DIST_COMMON = $(srcdir)/Makefile.am.plugingui $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(top_srcdir)/depcomp
+ at ENABLE_X11_TRUE@am__append_1 = $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at ENABLE_WIN32_TRUE@am__append_2 = $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at ENABLE_PUGL_TRUE@am__append_3 = \
+ at ENABLE_PUGL_TRUE@	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+ at ENABLE_PUGL_TRUE@	$(top_srcdir)/pugl/pugl/pugl_x11.c
+
+ at ENABLE_PUGL_TRUE@am__append_4 = -I$(top_srcdir)/pugl/pugl
 subdir = plugingui
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -91,11 +100,54 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am__objects_1 =
-am__objects_2 = plugingui-hugin.$(OBJEXT) \
-	plugingui-hugin_syslog.$(OBJEXT) $(am__objects_1) \
-	plugingui-nativewindow_x11.$(OBJEXT) \
-	plugingui-nativewindow_win32.$(OBJEXT) \
+am__plugingui_SOURCES_DIST = testmain.cc $(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/plugingui/dgwindow.cc \
+	$(top_srcdir)/plugingui/plugingui.cc \
+	$(top_srcdir)/plugingui/label.cc \
+	$(top_srcdir)/plugingui/eventhandler.cc \
+	$(top_srcdir)/plugingui/font.cc \
+	$(top_srcdir)/plugingui/window.cc \
+	$(top_srcdir)/plugingui/widget.cc \
+	$(top_srcdir)/plugingui/colour.cc \
+	$(top_srcdir)/plugingui/painter.cc \
+	$(top_srcdir)/plugingui/button.cc \
+	$(top_srcdir)/plugingui/pixelbuffer.cc \
+	$(top_srcdir)/plugingui/lineedit.cc \
+	$(top_srcdir)/plugingui/led.cc \
+	$(top_srcdir)/plugingui/checkbox.cc \
+	$(top_srcdir)/plugingui/slider.cc \
+	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
+	$(top_srcdir)/plugingui/listbox.cc \
+	$(top_srcdir)/plugingui/listboxthin.cc \
+	$(top_srcdir)/plugingui/listboxbasic.cc \
+	$(top_srcdir)/plugingui/knob.cc \
+	$(top_srcdir)/plugingui/filebrowser.cc \
+	$(top_srcdir)/plugingui/directory.cc \
+	$(top_srcdir)/plugingui/pluginconfig.cc \
+	$(top_srcdir)/plugingui/image.cc \
+	$(top_srcdir)/plugingui/combobox.cc \
+	$(top_srcdir)/plugingui/progressbar.cc \
+	$(top_srcdir)/plugingui/verticalline.cc \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/plugingui/lodepng/lodepng.cpp \
+	$(top_srcdir)/plugingui/nativewindow_x11.cc \
+	$(top_srcdir)/plugingui/nativewindow_win32.cc \
+	$(top_srcdir)/plugingui/nativewindow_pugl.cc \
+	$(top_srcdir)/pugl/pugl/pugl_x11.c \
+	$(top_srcdir)/src/configfile.cc $(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/semaphore.cc $(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/messagehandler.cc \
+	$(top_srcdir)/src/messagereceiver.cc
+ at ENABLE_X11_TRUE@am__objects_1 = plugingui-nativewindow_x11.$(OBJEXT)
+ at ENABLE_WIN32_TRUE@am__objects_2 =  \
+ at ENABLE_WIN32_TRUE@	plugingui-nativewindow_win32.$(OBJEXT)
+ at ENABLE_PUGL_TRUE@am__objects_3 =  \
+ at ENABLE_PUGL_TRUE@	plugingui-nativewindow_pugl.$(OBJEXT) \
+ at ENABLE_PUGL_TRUE@	plugingui-pugl_x11.$(OBJEXT)
+am__objects_4 = plugingui-hugin.$(OBJEXT) plugingui-dgwindow.$(OBJEXT) \
 	plugingui-plugingui.$(OBJEXT) plugingui-label.$(OBJEXT) \
 	plugingui-eventhandler.$(OBJEXT) plugingui-font.$(OBJEXT) \
 	plugingui-window.$(OBJEXT) plugingui-widget.$(OBJEXT) \
@@ -103,24 +155,25 @@ am__objects_2 = plugingui-hugin.$(OBJEXT) \
 	plugingui-button.$(OBJEXT) plugingui-pixelbuffer.$(OBJEXT) \
 	plugingui-lineedit.$(OBJEXT) plugingui-led.$(OBJEXT) \
 	plugingui-checkbox.$(OBJEXT) plugingui-slider.$(OBJEXT) \
-	plugingui-scrollbar.$(OBJEXT) plugingui-listbox.$(OBJEXT) \
+	plugingui-scrollbar.$(OBJEXT) plugingui-textedit.$(OBJEXT) \
+	plugingui-layout.$(OBJEXT) plugingui-listbox.$(OBJEXT) \
 	plugingui-listboxthin.$(OBJEXT) \
 	plugingui-listboxbasic.$(OBJEXT) plugingui-knob.$(OBJEXT) \
 	plugingui-filebrowser.$(OBJEXT) plugingui-directory.$(OBJEXT) \
 	plugingui-pluginconfig.$(OBJEXT) plugingui-image.$(OBJEXT) \
 	plugingui-combobox.$(OBJEXT) plugingui-progressbar.$(OBJEXT) \
 	plugingui-verticalline.$(OBJEXT) plugingui-resource.$(OBJEXT) \
-	plugingui-resource_data.$(OBJEXT) plugingui-lodepng.$(OBJEXT)
-am_plugingui_OBJECTS = $(am__objects_2) plugingui-thread.$(OBJEXT) \
+	plugingui-resource_data.$(OBJEXT) plugingui-lodepng.$(OBJEXT) \
+	$(am__objects_1) $(am__objects_2) $(am__objects_3)
+am_plugingui_OBJECTS = plugingui-testmain.$(OBJEXT) $(am__objects_4) \
+	plugingui-configfile.$(OBJEXT) plugingui-thread.$(OBJEXT) \
 	plugingui-semaphore.$(OBJEXT) plugingui-mutex.$(OBJEXT) \
 	plugingui-messagehandler.$(OBJEXT) \
 	plugingui-messagereceiver.$(OBJEXT)
 plugingui_OBJECTS = $(am_plugingui_OBJECTS)
 am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-plugingui_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+plugingui_DEPENDENCIES = $(am__DEPENDENCIES_2)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -184,7 +237,7 @@ am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(plugingui_SOURCES) $(rcgen_SOURCES)
-DIST_SOURCES = $(plugingui_SOURCES) $(rcgen_SOURCES)
+DIST_SOURCES = $(am__plugingui_SOURCES_DIST) $(rcgen_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -247,7 +300,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -311,8 +364,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -367,13 +418,8 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-puglsources = 
-PLUGIN_GUI_SOURCES = \
-	$(top_srcdir)/hugin/hugin.c \
-	$(top_srcdir)/hugin/hugin_syslog.c \
-	$(puglsources) \
-	$(top_srcdir)/plugingui/nativewindow_x11.cc \
-	$(top_srcdir)/plugingui/nativewindow_win32.cc \
+PLUGIN_GUI_SOURCES = $(top_srcdir)/hugin/hugin.c \
+	$(top_srcdir)/plugingui/dgwindow.cc \
 	$(top_srcdir)/plugingui/plugingui.cc \
 	$(top_srcdir)/plugingui/label.cc \
 	$(top_srcdir)/plugingui/eventhandler.cc \
@@ -389,6 +435,8 @@ PLUGIN_GUI_SOURCES = \
 	$(top_srcdir)/plugingui/checkbox.cc \
 	$(top_srcdir)/plugingui/slider.cc \
 	$(top_srcdir)/plugingui/scrollbar.cc \
+	$(top_srcdir)/plugingui/textedit.cc \
+	$(top_srcdir)/plugingui/layout.cc \
 	$(top_srcdir)/plugingui/listbox.cc \
 	$(top_srcdir)/plugingui/listboxthin.cc \
 	$(top_srcdir)/plugingui/listboxbasic.cc \
@@ -402,30 +450,25 @@ PLUGIN_GUI_SOURCES = \
 	$(top_srcdir)/plugingui/verticalline.cc \
 	$(top_srcdir)/plugingui/resource.cc \
 	$(top_srcdir)/plugingui/resource_data.cc \
-	$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-
-PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS) $(ZLIB_LIBS)
-PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) $(ZLIB_CFLAGS) -I$(top_srcdir)/hugin \
-									-DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
-									-I$(top_srcdir)/pugl/pugl \
-									-DLODEPNG_NO_COMPILE_ENCODER \
-									-DLODEPNG_NO_COMPILE_DISK \
-									-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
-									-DLODEPNG_NO_COMPILE_ERROR_TEXT \
-									-DLODEPNG_NO_COMPILE_CPP
-
-
-#include $(top_srcdir)/src/Makefile.am.drumgizmo
-plugingui_LDADD = $(SNDFILE_LIBS) $(PTHREAD_LIBS) $(EXPAT_LIBS) \
-	 -ldl $(PLUGIN_GUI_LIBS)
-
+	$(top_srcdir)/plugingui/lodepng/lodepng.cpp $(am__append_1) \
+	$(am__append_2) $(am__append_3)
+PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS)
+PLUGIN_GUI_CPPFLAGS = $(GUI_CPPFLAGS) -I$(top_srcdir)/hugin \
+	-I$(top_srcdir)/plugingui -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
+	-DLODEPNG_NO_COMPILE_ENCODER -DLODEPNG_NO_COMPILE_DISK \
+	-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
+	-DLODEPNG_NO_COMPILE_ERROR_TEXT -DLODEPNG_NO_COMPILE_CPP \
+	$(am__append_4)
+plugingui_LDADD = $(PLUGIN_GUI_LIBS)
 plugingui_CXXFLAGS = $(SNDFILE_CXXFLAGS) $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \
-	-I$(top_srcdir)/include $(PLUGIN_GUI_CFLAGS) -I$(top_srcdir)/src \
-	-DSTANDALONE -DUSE_THREAD
+	-I$(top_srcdir)/include $(PLUGIN_GUI_CPPFLAGS) -I$(top_srcdir)/src \
+	-DSTANDALONE
 
 plugingui_CFLAGS = $(plugingui_CXXFLAGS)
 plugingui_SOURCES = \
+	testmain.cc \
 	$(PLUGIN_GUI_SOURCES) \
+	$(top_srcdir)/src/configfile.cc \
 	$(top_srcdir)/src/thread.cc \
 	$(top_srcdir)/src/semaphore.cc \
 	$(top_srcdir)/src/mutex.cc \
@@ -438,6 +481,7 @@ EXTRA_DIST = \
 	checkbox.h \
 	colour.h \
 	combobox.h \
+	dgwindow.h \
 	directory.h \
 	eventhandler.h \
 	filebrowser.h \
@@ -446,6 +490,7 @@ EXTRA_DIST = \
 	image.h \
 	knob.h \
 	label.h \
+	layout.h \
 	led.h \
 	lineedit.h \
 	listbox.h \
@@ -455,6 +500,7 @@ EXTRA_DIST = \
 	nativewindow.h \
 	nativewindow_win32.h \
 	nativewindow_x11.h \
+	notifier.h \
 	painter.h \
 	pixelbuffer.h \
 	pluginconfig.h \
@@ -464,6 +510,7 @@ EXTRA_DIST = \
 	resource_data.h \
 	scrollbar.h \
 	slider.h \
+	textedit.h \
 	verticalline.h \
 	widget.h \
 	window.h \
@@ -532,15 +579,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-checkbox.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-colour.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-combobox.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-configfile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-dgwindow.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-directory.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-eventhandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-filebrowser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-font.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-hugin.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-hugin_syslog.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-image.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-knob.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-label.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-layout.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-led.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-lineedit.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-listbox.Po at am__quote@
@@ -550,6 +599,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-messagehandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-messagereceiver.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-nativewindow_pugl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-nativewindow_win32.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-nativewindow_x11.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-painter.Po at am__quote@
@@ -557,11 +607,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-pluginconfig.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-plugingui.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-progressbar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-pugl_x11.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-resource.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-resource_data.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-scrollbar.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-semaphore.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-slider.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-testmain.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-textedit.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-thread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-verticalline.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plugingui-widget.Po at am__quote@
@@ -603,19 +656,19 @@ plugingui-hugin.obj: $(top_srcdir)/hugin/hugin.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -c -o plugingui-hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
 
-plugingui-hugin_syslog.o: $(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -MT plugingui-hugin_syslog.o -MD -MP -MF $(DEPDIR)/plugingui-hugin_syslog.Tpo -c -o plugingui-hugin_syslog.o `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-hugin_syslog.Tpo $(DEPDIR)/plugingui-hugin_syslog.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_syslog.c' object='plugingui-hugin_syslog.o' libtool=no @AMDEPBACKSLASH@
+plugingui-pugl_x11.o: $(top_srcdir)/pugl/pugl/pugl_x11.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -MT plugingui-pugl_x11.o -MD -MP -MF $(DEPDIR)/plugingui-pugl_x11.Tpo -c -o plugingui-pugl_x11.o `test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c' || echo '$(srcdir)/'`$(top_srcdir)/pugl/pugl/pugl_x11.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-pugl_x11.Tpo $(DEPDIR)/plugingui-pugl_x11.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/pugl/pugl/pugl_x11.c' object='plugingui-pugl_x11.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -c -o plugingui-hugin_syslog.o `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -c -o plugingui-pugl_x11.o `test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c' || echo '$(srcdir)/'`$(top_srcdir)/pugl/pugl/pugl_x11.c
 
-plugingui-hugin_syslog.obj: $(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -MT plugingui-hugin_syslog.obj -MD -MP -MF $(DEPDIR)/plugingui-hugin_syslog.Tpo -c -o plugingui-hugin_syslog.obj `if test -f '$(top_srcdir)/hugin/hugin_syslog.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin_syslog.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin_syslog.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-hugin_syslog.Tpo $(DEPDIR)/plugingui-hugin_syslog.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_syslog.c' object='plugingui-hugin_syslog.obj' libtool=no @AMDEPBACKSLASH@
+plugingui-pugl_x11.obj: $(top_srcdir)/pugl/pugl/pugl_x11.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -MT plugingui-pugl_x11.obj -MD -MP -MF $(DEPDIR)/plugingui-pugl_x11.Tpo -c -o plugingui-pugl_x11.obj `if test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c'; then $(CYGPATH_W) '$(top_srcdir)/pugl/pugl/pugl_x11.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/pugl/pugl/pugl_x11.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-pugl_x11.Tpo $(DEPDIR)/plugingui-pugl_x11.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/pugl/pugl/pugl_x11.c' object='plugingui-pugl_x11.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -c -o plugingui-hugin_syslog.obj `if test -f '$(top_srcdir)/hugin/hugin_syslog.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin_syslog.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin_syslog.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CFLAGS) $(CFLAGS) -c -o plugingui-pugl_x11.obj `if test -f '$(top_srcdir)/pugl/pugl/pugl_x11.c'; then $(CYGPATH_W) '$(top_srcdir)/pugl/pugl/pugl_x11.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/pugl/pugl/pugl_x11.c'; fi`
 
 .cc.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -638,33 +691,33 @@ plugingui-hugin_syslog.obj: $(top_srcdir)/hugin/hugin_syslog.c
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
-plugingui-nativewindow_x11.o: $(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_x11.o -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_x11.Tpo -c -o plugingui-nativewindow_x11.o `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_x11.Tpo $(DEPDIR)/plugingui-nativewindow_x11.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='plugingui-nativewindow_x11.o' libtool=no @AMDEPBACKSLASH@
+plugingui-testmain.o: testmain.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-testmain.o -MD -MP -MF $(DEPDIR)/plugingui-testmain.Tpo -c -o plugingui-testmain.o `test -f 'testmain.cc' || echo '$(srcdir)/'`testmain.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-testmain.Tpo $(DEPDIR)/plugingui-testmain.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testmain.cc' object='plugingui-testmain.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_x11.o `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-testmain.o `test -f 'testmain.cc' || echo '$(srcdir)/'`testmain.cc
 
-plugingui-nativewindow_x11.obj: $(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_x11.obj -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_x11.Tpo -c -o plugingui-nativewindow_x11.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_x11.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_x11.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_x11.Tpo $(DEPDIR)/plugingui-nativewindow_x11.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='plugingui-nativewindow_x11.obj' libtool=no @AMDEPBACKSLASH@
+plugingui-testmain.obj: testmain.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-testmain.obj -MD -MP -MF $(DEPDIR)/plugingui-testmain.Tpo -c -o plugingui-testmain.obj `if test -f 'testmain.cc'; then $(CYGPATH_W) 'testmain.cc'; else $(CYGPATH_W) '$(srcdir)/testmain.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-testmain.Tpo $(DEPDIR)/plugingui-testmain.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testmain.cc' object='plugingui-testmain.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_x11.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_x11.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_x11.cc'; fi`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-testmain.obj `if test -f 'testmain.cc'; then $(CYGPATH_W) 'testmain.cc'; else $(CYGPATH_W) '$(srcdir)/testmain.cc'; fi`
 
-plugingui-nativewindow_win32.o: $(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_win32.o -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_win32.Tpo -c -o plugingui-nativewindow_win32.o `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_win32.Tpo $(DEPDIR)/plugingui-nativewindow_win32.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='plugingui-nativewindow_win32.o' libtool=no @AMDEPBACKSLASH@
+plugingui-dgwindow.o: $(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-dgwindow.o -MD -MP -MF $(DEPDIR)/plugingui-dgwindow.Tpo -c -o plugingui-dgwindow.o `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-dgwindow.Tpo $(DEPDIR)/plugingui-dgwindow.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/dgwindow.cc' object='plugingui-dgwindow.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_win32.o `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-dgwindow.o `test -f '$(top_srcdir)/plugingui/dgwindow.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/dgwindow.cc
 
-plugingui-nativewindow_win32.obj: $(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_win32.obj -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_win32.Tpo -c -o plugingui-nativewindow_win32.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_win32.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_win32.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_win32.Tpo $(DEPDIR)/plugingui-nativewindow_win32.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='plugingui-nativewindow_win32.obj' libtool=no @AMDEPBACKSLASH@
+plugingui-dgwindow.obj: $(top_srcdir)/plugingui/dgwindow.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-dgwindow.obj -MD -MP -MF $(DEPDIR)/plugingui-dgwindow.Tpo -c -o plugingui-dgwindow.obj `if test -f '$(top_srcdir)/plugingui/dgwindow.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/dgwindow.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/dgwindow.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-dgwindow.Tpo $(DEPDIR)/plugingui-dgwindow.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/dgwindow.cc' object='plugingui-dgwindow.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_win32.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_win32.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_win32.cc'; fi`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-dgwindow.obj `if test -f '$(top_srcdir)/plugingui/dgwindow.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/dgwindow.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/dgwindow.cc'; fi`
 
 plugingui-plugingui.o: $(top_srcdir)/plugingui/plugingui.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-plugingui.o -MD -MP -MF $(DEPDIR)/plugingui-plugingui.Tpo -c -o plugingui-plugingui.o `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
@@ -876,6 +929,34 @@ plugingui-scrollbar.obj: $(top_srcdir)/plugingui/scrollbar.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-scrollbar.obj `if test -f '$(top_srcdir)/plugingui/scrollbar.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/scrollbar.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/scrollbar.cc'; fi`
 
+plugingui-textedit.o: $(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-textedit.o -MD -MP -MF $(DEPDIR)/plugingui-textedit.Tpo -c -o plugingui-textedit.o `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-textedit.Tpo $(DEPDIR)/plugingui-textedit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/textedit.cc' object='plugingui-textedit.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-textedit.o `test -f '$(top_srcdir)/plugingui/textedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/textedit.cc
+
+plugingui-textedit.obj: $(top_srcdir)/plugingui/textedit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-textedit.obj -MD -MP -MF $(DEPDIR)/plugingui-textedit.Tpo -c -o plugingui-textedit.obj `if test -f '$(top_srcdir)/plugingui/textedit.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/textedit.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/textedit.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-textedit.Tpo $(DEPDIR)/plugingui-textedit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/textedit.cc' object='plugingui-textedit.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-textedit.obj `if test -f '$(top_srcdir)/plugingui/textedit.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/textedit.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/textedit.cc'; fi`
+
+plugingui-layout.o: $(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-layout.o -MD -MP -MF $(DEPDIR)/plugingui-layout.Tpo -c -o plugingui-layout.o `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-layout.Tpo $(DEPDIR)/plugingui-layout.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/layout.cc' object='plugingui-layout.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-layout.o `test -f '$(top_srcdir)/plugingui/layout.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/layout.cc
+
+plugingui-layout.obj: $(top_srcdir)/plugingui/layout.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-layout.obj -MD -MP -MF $(DEPDIR)/plugingui-layout.Tpo -c -o plugingui-layout.obj `if test -f '$(top_srcdir)/plugingui/layout.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/layout.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/layout.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-layout.Tpo $(DEPDIR)/plugingui-layout.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/layout.cc' object='plugingui-layout.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-layout.obj `if test -f '$(top_srcdir)/plugingui/layout.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/layout.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/layout.cc'; fi`
+
 plugingui-listbox.o: $(top_srcdir)/plugingui/listbox.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-listbox.o -MD -MP -MF $(DEPDIR)/plugingui-listbox.Tpo -c -o plugingui-listbox.o `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-listbox.Tpo $(DEPDIR)/plugingui-listbox.Po
@@ -1072,6 +1153,62 @@ plugingui-lodepng.obj: $(top_srcdir)/plugingui/lodepng/lodepng.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-lodepng.obj `if test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/lodepng/lodepng.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/lodepng/lodepng.cpp'; fi`
 
+plugingui-nativewindow_x11.o: $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_x11.o -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_x11.Tpo -c -o plugingui-nativewindow_x11.o `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_x11.Tpo $(DEPDIR)/plugingui-nativewindow_x11.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='plugingui-nativewindow_x11.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_x11.o `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
+
+plugingui-nativewindow_x11.obj: $(top_srcdir)/plugingui/nativewindow_x11.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_x11.obj -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_x11.Tpo -c -o plugingui-nativewindow_x11.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_x11.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_x11.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_x11.Tpo $(DEPDIR)/plugingui-nativewindow_x11.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='plugingui-nativewindow_x11.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_x11.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_x11.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_x11.cc'; fi`
+
+plugingui-nativewindow_win32.o: $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_win32.o -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_win32.Tpo -c -o plugingui-nativewindow_win32.o `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_win32.Tpo $(DEPDIR)/plugingui-nativewindow_win32.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='plugingui-nativewindow_win32.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_win32.o `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
+
+plugingui-nativewindow_win32.obj: $(top_srcdir)/plugingui/nativewindow_win32.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_win32.obj -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_win32.Tpo -c -o plugingui-nativewindow_win32.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_win32.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_win32.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_win32.Tpo $(DEPDIR)/plugingui-nativewindow_win32.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='plugingui-nativewindow_win32.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_win32.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_win32.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_win32.cc'; fi`
+
+plugingui-nativewindow_pugl.o: $(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_pugl.o -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_pugl.Tpo -c -o plugingui-nativewindow_pugl.o `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_pugl.Tpo $(DEPDIR)/plugingui-nativewindow_pugl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_pugl.cc' object='plugingui-nativewindow_pugl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_pugl.o `test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_pugl.cc
+
+plugingui-nativewindow_pugl.obj: $(top_srcdir)/plugingui/nativewindow_pugl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-nativewindow_pugl.obj -MD -MP -MF $(DEPDIR)/plugingui-nativewindow_pugl.Tpo -c -o plugingui-nativewindow_pugl.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_pugl.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_pugl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-nativewindow_pugl.Tpo $(DEPDIR)/plugingui-nativewindow_pugl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_pugl.cc' object='plugingui-nativewindow_pugl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-nativewindow_pugl.obj `if test -f '$(top_srcdir)/plugingui/nativewindow_pugl.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/nativewindow_pugl.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/nativewindow_pugl.cc'; fi`
+
+plugingui-configfile.o: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-configfile.o -MD -MP -MF $(DEPDIR)/plugingui-configfile.Tpo -c -o plugingui-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-configfile.Tpo $(DEPDIR)/plugingui-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='plugingui-configfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+plugingui-configfile.obj: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-configfile.obj -MD -MP -MF $(DEPDIR)/plugingui-configfile.Tpo -c -o plugingui-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-configfile.Tpo $(DEPDIR)/plugingui-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='plugingui-configfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -c -o plugingui-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+
 plugingui-thread.o: $(top_srcdir)/src/thread.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugingui_CXXFLAGS) $(CXXFLAGS) -MT plugingui-thread.o -MD -MP -MF $(DEPDIR)/plugingui-thread.Tpo -c -o plugingui-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/plugingui-thread.Tpo $(DEPDIR)/plugingui-thread.Po
diff --git a/plugingui/button.cc b/plugingui/button.cc
index c316ef3..b4e3fee 100644
--- a/plugingui/button.cc
+++ b/plugingui/button.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -31,127 +31,134 @@
 #include <stdio.h>
 #include <hugin.hpp>
 
-GUI::Button::Button(Widget *parent)
-  : GUI::Widget(parent)
-{
-  box_up.topLeft     = new Image(":pushbutton_tl.png");
-  box_up.top         = new Image(":pushbutton_t.png");
-  box_up.topRight    = new Image(":pushbutton_tr.png");
-  box_up.left        = new Image(":pushbutton_l.png");
-  box_up.right       = new Image(":pushbutton_r.png");
-  box_up.bottomLeft  = new Image(":pushbutton_bl.png");
-  box_up.bottom      = new Image(":pushbutton_b.png");
-  box_up.bottomRight = new Image(":pushbutton_br.png");
-  box_up.center      = new Image(":pushbutton_c.png");
-
-  box_down.topLeft     = new Image(":pushbuttondown_tl.png");
-  box_down.top         = new Image(":pushbuttondown_t.png");
-  box_down.topRight    = new Image(":pushbuttondown_tr.png");
-  box_down.left        = new Image(":pushbuttondown_l.png");
-  box_down.right       = new Image(":pushbuttondown_r.png");
-  box_down.bottomLeft  = new Image(":pushbuttondown_bl.png");
-  box_down.bottom      = new Image(":pushbuttondown_b.png");
-  box_down.bottomRight = new Image(":pushbuttondown_br.png");
-  box_down.center      = new Image(":pushbuttondown_c.png");
-
-  draw_state = up;
-  button_state = up;
-
-  handler = NULL;
-  ptr = NULL;
-}
+namespace GUI {
 
-void GUI::Button::registerClickHandler(void (*handler)(void *), void *ptr)
+Button::Button(Widget *parent)
+	: Widget(parent)
+	, draw_state(up)
+	, button_state(up)
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	box_up.topLeft     = new Image(":pushbutton_tl.png");
+	box_up.top         = new Image(":pushbutton_t.png");
+	box_up.topRight    = new Image(":pushbutton_tr.png");
+	box_up.left        = new Image(":pushbutton_l.png");
+	box_up.right       = new Image(":pushbutton_r.png");
+	box_up.bottomLeft  = new Image(":pushbutton_bl.png");
+	box_up.bottom      = new Image(":pushbutton_b.png");
+	box_up.bottomRight = new Image(":pushbutton_br.png");
+	box_up.center      = new Image(":pushbutton_c.png");
+
+	box_down.topLeft     = new Image(":pushbuttondown_tl.png");
+	box_down.top         = new Image(":pushbuttondown_t.png");
+	box_down.topRight    = new Image(":pushbuttondown_tr.png");
+	box_down.left        = new Image(":pushbuttondown_l.png");
+	box_down.right       = new Image(":pushbuttondown_r.png");
+	box_down.bottomLeft  = new Image(":pushbuttondown_bl.png");
+	box_down.bottom      = new Image(":pushbuttondown_b.png");
+	box_down.bottomRight = new Image(":pushbuttondown_br.png");
+	box_down.center      = new Image(":pushbuttondown_c.png");
 }
 
-void GUI::Button::buttonEvent(ButtonEvent *e)
+Button::~Button()
 {
-  if(e->direction == 1) {
-    draw_state = down;
-    button_state = down;
-    in_button = true;
-    repaintEvent(NULL);
-  }
-  if(e->direction == -1) {
-    draw_state = up;
-    button_state = up;
-    repaintEvent(NULL);
-    if(in_button) {
-      clicked();
-      if(handler) handler(ptr);
-    }
-  }
+	delete(box_up.topLeft);
+	delete(box_up.top);
+	delete(box_up.topRight);
+	delete(box_up.left);
+	delete(box_up.right);
+	delete(box_up.bottomLeft);
+	delete(box_up.bottom);
+	delete(box_up.bottomRight);
+	delete(box_up.center);
+	delete(box_down.topLeft);
+	delete(box_down.top);
+	delete(box_down.topRight);
+	delete(box_down.left);
+	delete(box_down.right);
+	delete(box_down.bottomLeft);
+	delete(box_down.bottom);
+	delete(box_down.bottomRight);
+	delete(box_down.center);
 }
 
-void GUI::Button::repaintEvent(GUI::RepaintEvent *e)
+void Button::buttonEvent(ButtonEvent* buttonEvent)
 {
-  Painter p(this);
-
-  p.clear();
-
-  int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-
-  switch(draw_state) {
-  case up:
-    p.drawBox(0, 0, &box_up, w, h);
-    break;
-  case down:
-    p.drawBox(0, 0, &box_down, w, h);
-    break;
-  }    
-
-  Font font(":fontemboss.png");
-  p.setColour(Colour(0.1));
-  p.drawText(width()/2-(text.length()*3)+(draw_state==up?0:1),
-             height()/2+5+1+(draw_state==up?0:1), font, text, true);
+	if(buttonEvent->direction == Direction::down)
+	{
+		draw_state = down;
+		button_state = down;
+		in_button = true;
+		repaintEvent(nullptr);
+	}
+
+	if(buttonEvent->direction == Direction::up)
+	{
+		draw_state = up;
+		button_state = up;
+		repaintEvent(nullptr);
+		if(in_button)
+		{
+			clicked();
+			clickNotifier();
+		}
+	}
 }
 
-void GUI::Button::setText(std::string text)
+void Button::repaintEvent(RepaintEvent* repaintEvent)
 {
-  this->text = text;
-  repaintEvent(NULL);
+	Painter p(*this);
+
+	p.clear();
+
+	int padTop = 3;
+	int padLeft = 0;
+
+	int w = width();
+	int h = height();
+	if(w == 0 || h == 0)
+	{
+		return;
+	}
+
+	switch(draw_state) {
+	case up:
+		p.drawBox(padLeft, padTop, box_up, w - padLeft, h - padTop);
+		break;
+	case down:
+		p.drawBox(padLeft, padTop, box_down, w - padLeft, h - padTop);
+		break;
+	}
+
+	p.setColour(Colour(0.1));
+	p.drawText(width()/2-(text.length()*3)+(draw_state==up?0:1) + (padLeft / 2),
+	           height()/2+5+1+(draw_state==up?0:1) + (padTop / 2), font, text,
+	           true);
 }
 
-void GUI::Button::mouseLeaveEvent()
+void Button::setText(const std::string& text)
 {
-  in_button = false;
-  if(button_state == down) {
-    draw_state = up;
-    repaintEvent(NULL);
-  }
+	this->text = text;
+	repaintEvent(nullptr);
 }
 
-void GUI::Button::mouseEnterEvent()
+void Button::mouseLeaveEvent()
 {
-  in_button = true;
-  if(button_state == down) {
-    draw_state = down;
-    repaintEvent(NULL);
-  }
+	in_button = false;
+	if(button_state == down)
+	{
+		draw_state = up;
+		repaintEvent(nullptr);
+	}
 }
 
-void GUI::Button::mouseMoveEvent(MouseMoveEvent *e)
+void Button::mouseEnterEvent()
 {
+	in_button = true;
+	if(button_state == down)
+	{
+		draw_state = down;
+		repaintEvent(nullptr);
+	}
 }
 
-#ifdef TEST_BUTTON
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_BUTTON*/
+} //GUI::
diff --git a/plugingui/button.h b/plugingui/button.h
index 682dfa2..7e3e168 100644
--- a/plugingui/button.h
+++ b/plugingui/button.h
@@ -11,70 +11,69 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_BUTTON_H__
-#define __DRUMGIZMO_BUTTON_H__
+#pragma once
 
 #include <string>
 
 #include "widget.h"
 #include "painter.h"
+#include "notifier.h"
+#include "font.h"
 
 namespace GUI {
 
 class Button : public Widget {
 public:
-  Button(Widget *parent);
+	Button(Widget *parent);
+	~Button();
 
-  bool isFocusable() { return true; }
-  bool catchMouse() { return true; }
+	// From Widget:
+	bool isFocusable() override { return true; }
+	bool catchMouse() override { return true; }
 
-  void setText(std::string text);
+	void setText(const std::string& text);
 
-  void registerClickHandler(void (*handler)(void *), void *ptr);
+	Notifier<> clickNotifier;
 
-  //protected:
-  virtual void clicked() {}
+protected:
+	virtual void clicked() {}
 
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-
-  virtual void mouseLeaveEvent();
-  virtual void mouseEnterEvent();
-  virtual void mouseMoveEvent(MouseMoveEvent *e);
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* e) override;
+	virtual void buttonEvent(ButtonEvent* e) override;
+	virtual void mouseLeaveEvent() override;
+	virtual void mouseEnterEvent() override;
 
 private:
-  bool in_button;
-
-  Painter::Box box_up;
-  Painter::Box box_down;
+	bool in_button{false};
 
-  typedef enum {
-    up,
-    down
-  } state_t;
+	Painter::Box box_up;
+	Painter::Box box_down;
 
-  std::string text;
+	typedef enum {
+		up,
+		down
+	} state_t;
 
-  state_t draw_state;
-  state_t button_state;
+	std::string text;
 
-  void (*handler)(void *);
-  void *ptr;
-};
+	Font font{":fontemboss.png"};
 
+	state_t draw_state{up};
+	state_t button_state{up};
 };
 
-#endif/*__DRUMGIZMO_BUTTON_H__*/
+} // GUI::
diff --git a/plugingui/checkbox.cc b/plugingui/checkbox.cc
index faf3741..6419fc3 100644
--- a/plugingui/checkbox.cc
+++ b/plugingui/checkbox.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -30,101 +30,126 @@
 
 #include <stdio.h>
 
-GUI::CheckBox::CheckBox(Widget *parent)
-  : GUI::Widget(parent),
-    bg_on(":switch_back_on.png"), bg_off(":switch_back_off.png"),
-    knob(":switch_front.png")
+namespace GUI {
+
+CheckBox::CheckBox(Widget* parent)
+	: Widget(parent)
+	, bg_on(":switch_back_on.png")
+	, bg_off(":switch_back_off.png")
+	, knob(":switch_front.png")
+	, state(false)
+	, middle(false)
 {
-  middle = false;
-  state = false;
-  handler = NULL;
 }
 
-void GUI::CheckBox::buttonEvent(ButtonEvent *e)
+void CheckBox::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(e->direction == -1 || e->doubleclick) {
-    state = !state;
-    middle = false;
-    if(handler) handler(ptr);
-  } else {
-    middle = true;
-  }
-
-  repaintEvent(NULL);
+	if((buttonEvent->direction == Direction::up) || buttonEvent->doubleClick)
+	{
+		buttonDown = false;
+		middle = false;
+		if(inCheckbox)
+		{
+			internalSetChecked(!state);
+		}
+	}
+	else
+	{
+		buttonDown = true;
+		middle = true;
+	}
+
+	repaintEvent(nullptr);
 }
 
-void GUI::CheckBox::setText(std::string text)
+void CheckBox::setText(std::string text)
 {
-  _text = text;
-  repaintEvent(NULL);
+	_text = text;
+	repaintEvent(nullptr);
 }
 
-void GUI::CheckBox::registerClickHandler(void (*handler)(void *), void *ptr)
+void CheckBox::keyEvent(KeyEvent* keyEvent)
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	if(keyEvent->keycode == Key::character && keyEvent->text == " ")
+	{
+		if(keyEvent->direction == Direction::up)
+		{
+			middle = false;
+			internalSetChecked(!state);
+		}
+		else
+		{
+			middle = true;
+		}
+
+		repaintEvent(nullptr);
+	}
 }
 
-void GUI::CheckBox::keyEvent(KeyEvent *e)
+void CheckBox::repaintEvent(RepaintEvent* repaintEvent)
 {
-  if(e->keycode == GUI::KeyEvent::KEY_CHARACTER && e->text == " ") {
-    if(e->direction == -1) {
-      state = !state;
-      middle = false;
-    } else {
-      middle = true;
-    }
-
-    repaintEvent(NULL);
-  }
+	Painter p(*this);
+
+	p.clear();
+
+	p.drawImage(0, (knob.height() - bg_on.height()) / 2, state ? bg_on : bg_off);
+
+	if(middle)
+	{
+		p.drawImage((bg_on.width() - knob.width()) / 2 + 1, 0, knob);
+		return;
+	}
+
+	if(state)
+	{
+		p.drawImage(bg_on.width() - 40 + 2, 0, knob);
+	}
+	else
+	{
+		p.drawImage(0, 0, knob);
+	}
 }
 
-void GUI::CheckBox::repaintEvent(GUI::RepaintEvent *e)
+bool CheckBox::checked()
 {
-  Painter p(this);
-
-  p.clear();
-
-  if(state) {
-    p.drawImage(0, (knob.height() - bg_on.height()) / 2, &bg_on);
-    if(middle) p.drawImage((bg_on.width() - knob.width()) / 2 + 1, 0, &knob);
-    else p.drawImage(bg_on.width() - 40 + 2, 0, &knob);
-  } else {
-    p.drawImage(0, (knob.height() - bg_off.height()) / 2, &bg_off);
-    if(middle) p.drawImage((bg_on.width() - knob.width()) / 2 + 1, 0, &knob);
-    else p.drawImage(0, 0, &knob);
-  }
-  /*
-  p.setColour(Colour(1));
-  Font font;
-  p.drawText(box + 8, height() / 2 + 5, font, _text);
-  */
+	return state;
 }
 
-bool GUI::CheckBox::checked()
+void CheckBox::setChecked(bool c)
 {
-  return state;
+	internalSetChecked(c);
 }
 
-void GUI::CheckBox::setChecked(bool c)
+void CheckBox::mouseLeaveEvent()
 {
-  state = c;
-  repaintEvent(NULL);
+	inCheckbox = false;
+	if(buttonDown)
+	{
+		middle = false;
+		repaintEvent(nullptr);
+	}
 }
 
-#ifdef TEST_CHECKBOX
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
+void CheckBox::mouseEnterEvent()
+{
+	inCheckbox = true;
+	if(buttonDown)
+	{
+		middle = true;
+		repaintEvent(nullptr);
+	}
+}
 
-TEST_END;
+void CheckBox::internalSetChecked(bool checked)
+{
+	if(checked == state)
+	{
+		return;
+	}
+
+	state = checked;
+	stateChangedNotifier(state);
+	repaintEvent(nullptr);
+}
 
-#endif/*TEST_CHECKBOX*/
+} // GUI::
diff --git a/plugingui/checkbox.h b/plugingui/checkbox.h
index 1d6f9d6..3da5511 100644
--- a/plugingui/checkbox.h
+++ b/plugingui/checkbox.h
@@ -11,61 +11,63 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_CHECKBOX_H__
-#define __DRUMGIZMO_CHECKBOX_H__
+#pragma once
 
 #include "widget.h"
 #include "image.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class CheckBox : public Widget {
 public:
-  CheckBox(Widget *parent);
+	CheckBox(Widget *parent);
 
-  void setText(std::string text);
+	void setText(std::string text);
 
-  bool isFocusable() { return true; }
+	// From Widget:
+	bool isFocusable() override { return true; }
+	bool catchMouse() override { return true; }
 
-  bool checked();
-  void setChecked(bool checked);
+	bool checked();
+	void setChecked(bool checked);
 
-  void registerClickHandler(void (*handler)(void *), void *ptr);
+	Notifier<bool> stateChangedNotifier;
 
-  //protected:
-  virtual void clicked() {}
-
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-  virtual void keyEvent(KeyEvent *e);
+protected:
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent* buttonEvent) override;
+	virtual void keyEvent(KeyEvent* keyEvent) override;
+	virtual void mouseLeaveEvent() override;
+	virtual void mouseEnterEvent() override;
 
 private:
-  Image bg_on;
-  Image bg_off;
-  Image knob;
-
-  bool state;
-  bool middle;
+	void internalSetChecked(bool checked);
 
-  void (*handler)(void *);
-  void *ptr;
+	Image bg_on;
+	Image bg_off;
+	Image knob;
 
-  std::string _text;
-};
+	bool state;
+	bool middle;
+	bool buttonDown = false;
+	bool inCheckbox = false;
 
+	std::string _text;
 };
 
-#endif/*__DRUMGIZMO_CHECKBOX_H__*/
+} // GUI::
diff --git a/plugingui/colour.cc b/plugingui/colour.cc
index 943011b..88bd75a 100644
--- a/plugingui/colour.cc
+++ b/plugingui/colour.cc
@@ -11,53 +11,40 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "colour.h"
 
-GUI::Colour::Colour()
+namespace GUI {
+
+Colour::Colour()
 {
-  red = blue = green = alpha = 1.0;
+	red = blue = green = alpha = 1.0;
 }
 
-GUI::Colour::Colour(float grey, float a)
+Colour::Colour(float grey, float a)
 {
-  red = green = blue = grey;
-  alpha = a;
+	red = green = blue = grey;
+	alpha = a;
 }
 
-GUI::Colour::Colour(float r, float g, float b, float a)
+Colour::Colour(float r, float g, float b, float a)
 {
-  red = r;
-  green = g;
-  blue = b;
-  alpha = a;
+	red = r;
+	green = g;
+	blue = b;
+	alpha = a;
 }
 
-#ifdef TEST_COLOUR
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_COLOUR*/
+} // GUI::
diff --git a/plugingui/colour.h b/plugingui/colour.h
index 92ec99e..a02a6b0 100644
--- a/plugingui/colour.h
+++ b/plugingui/colour.h
@@ -11,41 +11,38 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_COLOUR_H__
-#define __DRUMGIZMO_COLOUR_H__
+#pragma once
 
 namespace GUI {
 
 class Colour {
 public:
-  Colour();
+	Colour();
 
-  Colour(float grey, float alpha = 1.0);
+	Colour(float grey, float alpha = 1.0);
 
-  Colour(float red,
-         float green,
-         float blue,
-         float alpha = 1.0);
+	Colour(float red,
+	       float green,
+	       float blue,
+	       float alpha = 1.0);
 
-  float red;
-  float green;
-  float blue;
-  float alpha;
+	float red;
+	float green;
+	float blue;
+	float alpha;
 };
 
-};
-
-#endif/*__DRUMGIZMO_COLOUR_H__*/
+} // GUI::
diff --git a/plugingui/combobox.cc b/plugingui/combobox.cc
index 4637282..e6ed3f6 100644
--- a/plugingui/combobox.cc
+++ b/plugingui/combobox.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -33,199 +33,215 @@
 
 #define BORDER 10
 
-void listboxSelectHandler(void *ptr)
-{
-  GUI::ComboBox *c = (GUI::ComboBox*)ptr;
-  GUI::ButtonEvent e;
-  e.direction = 1;
-  c->buttonEvent(&e);
-}
+namespace GUI {
 
-GUI::ComboBox::ComboBox(GUI::Widget *parent)
-  : GUI::Widget(parent)
+void ComboBox::listboxSelectHandler()
 {
-  handler = NULL;
-  ptr = NULL;
-
-  box.topLeft     = new Image(":widget_tl.png");
-  box.top         = new Image(":widget_t.png");
-  box.topRight    = new Image(":widget_tr.png");
-  box.left        = new Image(":widget_l.png");
-  box.right       = new Image(":widget_r.png");
-  box.bottomLeft  = new Image(":widget_bl.png");
-  box.bottom      = new Image(":widget_b.png");
-  box.bottomRight = new Image(":widget_br.png");
-  box.center      = new Image(":widget_c.png");
-
-  listbox = new GUI::ListBoxThin(parent);
-  listbox->registerSelectHandler(listboxSelectHandler, this);
-  listbox->registerClickHandler(listboxSelectHandler, this);
-  listbox->hide();
+	ButtonEvent buttonEvent;
+	buttonEvent.direction = Direction::down;
+	this->buttonEvent(&buttonEvent);
 }
 
-GUI::ComboBox::~ComboBox()
+ComboBox::ComboBox(Widget* parent)
+	: Widget(parent)
+	, listbox(parent)
 {
+	box.topLeft     = new Image(":widget_tl.png");
+	box.top         = new Image(":widget_t.png");
+	box.topRight    = new Image(":widget_tr.png");
+	box.left        = new Image(":widget_l.png");
+	box.right       = new Image(":widget_r.png");
+	box.bottomLeft  = new Image(":widget_bl.png");
+	box.bottom      = new Image(":widget_b.png");
+	box.bottomRight = new Image(":widget_br.png");
+	box.center      = new Image(":widget_c.png");
+
+	CONNECT(&listbox, selectionNotifier, this, &ComboBox::listboxSelectHandler);
+	CONNECT(&listbox, clickNotifier, this, &ComboBox::listboxSelectHandler);
+
+	listbox.hide();
 }
 
-void GUI::ComboBox::addItem(std::string name, std::string value)
+ComboBox::~ComboBox()
 {
-  listbox->addItem(name, value);
+	delete box.topLeft;
+	delete box.top;
+	delete box.topRight;
+	delete box.left;
+	delete box.right;
+	delete box.bottomLeft;
+	delete box.bottom;
+	delete box.bottomRight;
+	delete box.center;
 }
 
-void GUI::ComboBox::clear()
+void ComboBox::addItem(std::string name, std::string value)
 {
-  listbox->clear();
-  repaintEvent(NULL);
+	listbox.addItem(name, value);
 }
 
-bool GUI::ComboBox::selectItem(int index)
+void ComboBox::clear()
 {
-  listbox->selectItem(index);
-  repaintEvent(NULL);
-  return true;
+	listbox.clear();
+	repaintEvent(nullptr);
 }
 
-std::string GUI::ComboBox::selectedName()
+bool ComboBox::selectItem(int index)
 {
-  return listbox->selectedName();
+	listbox.selectItem(index);
+	repaintEvent(nullptr);
+	return true;
 }
 
-std::string GUI::ComboBox::selectedValue()
+std::string ComboBox::selectedName()
 {
-  return listbox->selectedValue();
+	return listbox.selectedName();
 }
 
-void GUI::ComboBox::registerValueChangedHandler(void (*handler)(void *),
-                                                void *ptr)
+std::string ComboBox::selectedValue()
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	return listbox.selectedValue();
 }
 
-static void drawArrow(GUI::Painter &p, int x, int y, int w, int h)
+static void drawArrow(Painter &p, int x, int y, int w, int h)
 {
-  p.drawLine(x, y, x+(w/2), y+h);
-  p.drawLine(x+(w/2), y+h, x+w, y);
+	p.drawLine(x, y, x+(w/2), y+h);
+	p.drawLine(x+(w/2), y+h, x+w, y);
 
-  y++;
-  p.drawLine(x, y, x+(w/2), y+h);
-  p.drawLine(x+(w/2), y+h, x+w, y);
+	y++;
+	p.drawLine(x, y, x+(w/2), y+h);
+	p.drawLine(x+(w/2), y+h, x+w, y);
 }
 
-void GUI::ComboBox::repaintEvent(GUI::RepaintEvent *e)
+void ComboBox::repaintEvent(RepaintEvent* repaintEvent)
 {
-  Painter p(this);
+	Painter p(*this);
+
+	p.clear();
 
-  p.clear();
+	std::string _text = selectedName();
 
-  std::string _text = selectedName();
+	int w = width();
+	int h = height();
+	if(w == 0 || h == 0)
+	{
+		return;
+	}
 
-   int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-  p.drawBox(0, 0, &box, w, h);
+	p.drawBox(0, 0, box, w, h);
 
-  p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
-  p.drawText(BORDER - 4 + 3, height()/2+5 + 1 + 1, font, _text);
+	p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
+	p.drawText(BORDER - 4 + 3, height()/2+5 + 1 + 1, font, _text);
 
-  //  p.setColour(Colour(1, 1, 1));
-  //  p.drawText(BORDER - 4, (height()+font.textHeight()) / 2 + 1, font, _text);
+	//  p.setColour(Colour(1, 1, 1));
+	//  p.drawText(BORDER - 4, (height()+font.textHeight()) / 2 + 1, font, _text);
 
-  //int n = height() / 2;
+	//int n = height() / 2;
 
-  //  p.drawLine(width() - n - 6, 1 + 6, width() - 1 - 6, 1 + 6);
-  {
-    int w = 10;
-    int h = 6;
-    drawArrow(p, width() - 6 - 4 - w, (height() - h) / 2, w, h);
-    p.drawLine(width() - 6 - 4 - w - 4, 7,
-               width() - 6 - 4 - w - 4, height() - 8);
-  }
+	//  p.drawLine(width() - n - 6, 1 + 6, width() - 1 - 6, 1 + 6);
+	{
+		int w = 10;
+		int h = 6;
+		drawArrow(p, width() - 6 - 4 - w, (height() - h) / 2, w, h);
+		p.drawLine(width() - 6 - 4 - w - 4, 7,
+		           width() - 6 - 4 - w - 4, height() - 8);
+	}
 }
 
-void GUI::ComboBox::scrollEvent(ScrollEvent *e)
+void ComboBox::scrollEvent(ScrollEvent* scrollEvent)
 {
-  /*
-  scroll_offset += e->delta;
-  if(scroll_offset < 0) scroll_offset = 0;
-  if(scroll_offset > (items.size() - 1))
-    scroll_offset = (items.size() - 1);
-  repaintEvent(NULL);
-  */
+	/*
+	scroll_offset += e->delta;
+	if(scroll_offset < 0)
+	{
+		scroll_offset = 0;
+	}
+	if(scroll_offset > (items.size() - 1))
+	{
+		scroll_offset = (items.size() - 1);
+	}
+	repaintEvent(nullptr);
+	*/
 }
 
-void GUI::ComboBox::keyEvent(GUI::KeyEvent *e)
+void ComboBox::keyEvent(KeyEvent* keyEvent)
 {
-  if(e->direction != -1) return;
-
-  /*
-  switch(e->keycode) {
-  case GUI::KeyEvent::KEY_UP:
-    {
-      selected--;
-      if(selected < 0) selected = 0;
-      if(selected < scroll_offset) {
-        scroll_offset = selected;
-        if(scroll_offset < 0) scroll_offset = 0;
-      }
-    }
-    break;
-  case GUI::KeyEvent::KEY_DOWN:
-    {
-      // Number of items that can be displayed at a time.
-      int numitems = height() / (font.textHeight() + padding);
-
-      selected++;
-      if(selected > (items.size() - 1))
-        selected = (items.size() - 1);
-      if(selected > (scroll_offset + numitems - 1)) {
-        scroll_offset = selected - numitems + 1;
-        if(scroll_offset > (items.size() - 1))
-          scroll_offset = (items.size() - 1);
-      }
-    }
-    break;
-  case GUI::KeyEvent::KEY_HOME:
-    selected = 0;
-    break;
-  case GUI::KeyEvent::KEY_END:
-    selected = items.size() - 1;
-    break;
-  default:
-    break;
-  }
-  
-  repaintEvent(NULL);
-  */
+	if(keyEvent->direction != Direction::up)
+	{
+		return;
+	}
+
+	/*
+	switch(keyEvent->keycode) {
+	case Key::up:
+		{
+			selected--;
+			if(selected < 0)
+			{
+				selected = 0;
+			}
+			if(selected < scroll_offset)
+			{
+				scroll_offset = selected;
+				if(scroll_offset < 0)
+				{
+					scroll_offset = 0;
+				}
+			}
+		}
+		break;
+	case Key::down:
+		{
+			// Number of items that can be displayed at a time.
+			int numitems = height() / (font.textHeight() + padding);
+
+			selected++;
+			if(selected > (items.size() - 1))
+			{
+				selected = (items.size() - 1);
+			}
+			if(selected > (scroll_offset + numitems - 1))
+			{
+				scroll_offset = selected - numitems + 1;
+				if(scroll_offset > (items.size() - 1))
+				{
+					scroll_offset = (items.size() - 1);
+				}
+			}
+		}
+		break;
+	case Key::home:
+		selected = 0;
+		break;
+	case Key::end:
+		selected = items.size() - 1;
+		break;
+	default:
+		break;
+	}
+
+	repaintEvent(nullptr);
+	*/
 }
 
-void GUI::ComboBox::buttonEvent(ButtonEvent *e)
+void ComboBox::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(e->direction != 1) return;
-
-  if(!listbox->visible()) {
-    listbox->resize(width() - 10, 100);
-    listbox->move(x() + 5, y() + height() - 7);
-  } else {
-    if(handler) handler(ptr);
-  }
-
-  listbox->setVisible(!listbox->visible());
+	if(buttonEvent->direction != Direction::down)
+	{
+		return;
+	}
+
+	if(!listbox.visible())
+	{
+		listbox.resize(width() - 10, 100);
+		listbox.move(x() + 5, y() + height() - 7);
+	}
+	else
+	{
+		valueChangedNotifier(listbox.selectedName(), listbox.selectedValue());
+	}
+
+	listbox.setVisible(!listbox.visible());
 }
 
-#ifdef TEST_COMBOBOX
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_COMBOBOX*/
+} // GUI::
diff --git a/plugingui/combobox.h b/plugingui/combobox.h
index bc4ae38..bb92fcd 100644
--- a/plugingui/combobox.h
+++ b/plugingui/combobox.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_COMBOBOX_H__
-#define __DRUMGIZMO_COMBOBOX_H__
+#pragma once
 
 #include <string.h>
 #include <vector>
@@ -39,35 +38,32 @@ namespace GUI {
 
 class ComboBox : public Widget {
 public:
-  ComboBox(Widget *parent);
-  ~ComboBox();
+	ComboBox(Widget* parent);
+	~ComboBox();
 
-  bool isFocusable() { return true; }
+	void addItem(std::string name, std::string value);
 
-  void addItem(std::string name, std::string value);
+	void clear();
+	bool selectItem(int index);
+	std::string selectedName();
+	std::string selectedValue();
 
-  void clear();
-  bool selectItem(int index);
-  std::string selectedName();
-  std::string selectedValue();
+	// From Widget:
+	bool isFocusable() override { return true; }
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent* buttonEvent) override;
+	virtual void scrollEvent(ScrollEvent* scrollEvent) override;
+	virtual void keyEvent(KeyEvent* keyEvent) override;
 
-  void registerValueChangedHandler(void (*handler)(void *), void *ptr);
-
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-  virtual void scrollEvent(ScrollEvent *e);
-  virtual void keyEvent(KeyEvent *e);
+	Notifier<std::string, std::string> valueChangedNotifier;
 
 private:
-  Painter::Box box;
-
-  GUI::Font font;
-  GUI::ListBoxThin *listbox;
+	Painter::Box box;
 
-  void (*handler)(void *);
-  void *ptr;
-};
+	void listboxSelectHandler();
 
+	Font font;
+	ListBoxThin listbox;
 };
 
-#endif/*__DRUMGIZMO_COMBOBOX_H__*/
+} // GUI::
diff --git a/plugingui/dgwindow.cc b/plugingui/dgwindow.cc
new file mode 100644
index 0000000..86a985d
--- /dev/null
+++ b/plugingui/dgwindow.cc
@@ -0,0 +1,346 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            dgwindow.cc
+ *
+ *  Mon Nov 23 20:30:45 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "dgwindow.h"
+
+#include "knob.h"
+#include "verticalline.h"
+#include "../version.h"
+
+#include "messagehandler.h"
+#include "pluginconfig.h"
+
+namespace GUI {
+
+class LabeledControl : public Widget
+{
+public:
+	LabeledControl(Widget* parent, const std::string& name)
+		: Widget(parent)
+	{
+		layout.setResizeChildren(false);
+		layout.setHAlignment(HAlignment::center);
+
+		caption.setText(name);
+		caption.resize(100, 20);
+		caption.setAlignment(TextAlignment::center);
+		layout.addItem(&caption);
+	}
+
+	void setControl(Widget* control)
+	{
+		layout.addItem(control);
+	}
+
+	VBoxLayout layout{this};
+
+	Label caption{this};
+};
+
+class File : public Widget
+{
+public:
+	File(Widget* parent)
+		: Widget(parent)
+	{
+		layout.setResizeChildren(false);
+		layout.setVAlignment(VAlignment::center);
+
+		lineedit.resize(243, 29);
+		layout.addItem(&lineedit);
+
+		browseButton.setText("Browse...");
+		browseButton.resize(85, 41);
+		layout.addItem(&browseButton);
+	}
+
+	HBoxLayout layout{this};
+
+	LineEdit lineedit{this};
+	Button browseButton{this};
+};
+
+class HumanizeControls : public Widget
+{
+public:
+	HumanizeControls(Widget* parent)
+		: Widget(parent)
+	{
+		layout.setResizeChildren(false);
+		layout.setVAlignment(VAlignment::center);
+
+		velocity.resize(80, 80);
+		velocityCheck.resize(59, 38);
+		velocity.setControl(&velocityCheck);
+		layout.addItem(&velocity);
+
+		attack.resize(80, 80);
+		attackKnob.resize(60, 60);
+		attack.setControl(&attackKnob);
+		layout.addItem(&attack);
+
+		falloff.resize(80, 80);
+		falloffKnob.resize(60, 60);
+		falloff.setControl(&falloffKnob);
+		layout.addItem(&falloff);
+	}
+
+	HBoxLayout layout{this};
+
+	LabeledControl velocity{this, "Humanizer"};
+	LabeledControl attack{this, "Attack"};
+	LabeledControl falloff{this, "Release"};
+
+	CheckBox velocityCheck{&velocity};
+	Knob attackKnob{&attack};
+	Knob falloffKnob{&falloff};
+};
+
+DGWindow::DGWindow(void* native_window, MessageHandler& messageHandler,
+                   Config& config)
+	: Window(native_window)
+	, messageHandler(messageHandler)
+	, config(config)
+{
+
+	int vlineSpacing = 16;
+
+	resize(370, 330);
+	setCaption("DrumGizmo v" VERSION);
+
+	layout.setResizeChildren(false);
+	layout.setHAlignment(HAlignment::center);
+//	layout.setSpacing(0);
+
+	auto headerCaption = new Label(this);
+	headerCaption->setText("DrumGizmo");
+	headerCaption->setAlignment(TextAlignment::center);
+	headerCaption->resize(width() - 40, 32);
+	layout.addItem(headerCaption);
+
+	auto headerLine = new VerticalLine(this);
+	headerLine->resize(width() - 40, vlineSpacing);
+	layout.addItem(headerLine);
+
+	auto drumkitCaption = new Label(this);
+	drumkitCaption->setText("Drumkit file:");
+	drumkitCaption->resize(width() - 40, 15);
+	layout.addItem(drumkitCaption);
+
+	auto drumkitFile = new File(this);
+	drumkitFile->resize(width() - 40, 37);
+	lineedit = &drumkitFile->lineedit;
+	CONNECT(&drumkitFile->browseButton, clickNotifier,
+	        this, &DGWindow::kitBrowseClick);
+	layout.addItem(drumkitFile);
+
+	drumkitFileProgress = new ProgressBar(this);
+	drumkitFileProgress->resize(width() - 40, 11);
+	layout.addItem(drumkitFileProgress);
+
+	VerticalLine *l = new VerticalLine(this);
+	l->resize(width() - 40, vlineSpacing);
+	layout.addItem(l);
+
+	auto midimapCaption = new Label(this);
+	midimapCaption->setText("Midimap file:");
+	midimapCaption->resize(width() - 40, 15);
+	layout.addItem(midimapCaption);
+
+	auto midimapFile = new File(this);
+	midimapFile->resize(width() - 40, 37);
+	lineedit2 = &midimapFile->lineedit;
+	CONNECT(&midimapFile->browseButton, clickNotifier,
+	        this, &DGWindow::midimapBrowseClick);
+	layout.addItem(midimapFile);
+
+	midimapFileProgress = new ProgressBar(this);
+	midimapFileProgress->resize(width() - 40, 11);
+	layout.addItem(midimapFileProgress);
+
+	VerticalLine *l2 = new VerticalLine(this);
+	l2->resize(width() - 40, vlineSpacing);
+	layout.addItem(l2);
+
+	HumanizeControls* humanizeControls = new HumanizeControls(this);
+	humanizeControls->resize(80 * 3, 80);
+	layout.addItem(humanizeControls);
+	CONNECT(&humanizeControls->velocityCheck, stateChangedNotifier,
+	        this, &DGWindow::velocityCheckClick);
+
+	CONNECT(&humanizeControls->attackKnob, valueChangedNotifier,
+	        this, &DGWindow::attackValueChanged);
+
+	CONNECT(&humanizeControls->falloffKnob, valueChangedNotifier,
+	        this, &DGWindow::falloffValueChanged);
+
+	// Store pointers for PluginGUI access:
+	velocityCheck = &humanizeControls->velocityCheck;
+	attackKnob = &humanizeControls->attackKnob;
+	falloffKnob = &humanizeControls->falloffKnob;
+
+	VerticalLine *l3 = new VerticalLine(this);
+	l3->resize(width() - 40, vlineSpacing);
+	layout.addItem(l3);
+
+	Label *lbl_version = new Label(this);
+	lbl_version->setText(".::. v" VERSION "  .::.  http://www.drumgizmo.org  .::.  LGPLv3 .::.");
+	lbl_version->resize(width(), 20);
+	lbl_version->setAlignment(TextAlignment::center);
+	layout.addItem(lbl_version);
+
+	// Create file browser
+	fileBrowser = new FileBrowser(this);
+	fileBrowser->move(0, 0);
+	fileBrowser->resize(this->width() - 1, this->height() - 1);
+	fileBrowser->hide();
+}
+
+void DGWindow::repaintEvent(RepaintEvent* repaintEvent)
+{
+	if(!visible())
+	{
+		return;
+	}
+
+	Painter p(*this);
+	p.drawImageStretched(0,0, back, width(), height());
+	p.drawImage(width() - logo.width(), height() - logo.height(), logo);
+}
+
+void DGWindow::attackValueChanged(float value)
+{
+	ChangeSettingMessage *msg =
+		new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight,
+														 value);
+
+	messageHandler.sendMessage(MSGRCV_ENGINE, msg);
+
+#ifdef STANDALONE
+	int i = value * 4;
+	switch(i) {
+	case 0: drumkitFileProgress->setState(ProgressBarState::Off); break;
+	case 1: drumkitFileProgress->setState(ProgressBarState::Blue); break;
+	case 2: drumkitFileProgress->setState(ProgressBarState::Green); break;
+	case 3: drumkitFileProgress->setState(ProgressBarState::Red); break;
+	default: break;
+	}
+#endif
+}
+
+void DGWindow::falloffValueChanged(float value)
+{
+	ChangeSettingMessage *msg =
+		new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff,
+		                         value);
+	messageHandler.sendMessage(MSGRCV_ENGINE, msg);
+
+#ifdef STANDALONE
+	drumkitFileProgress->setProgress(value);
+#endif
+}
+
+void DGWindow::velocityCheckClick(bool checked)
+{
+	ChangeSettingMessage *msg =
+		new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier,
+		                         checked);
+	messageHandler.sendMessage(MSGRCV_ENGINE, msg);
+}
+
+void DGWindow::kitBrowseClick()
+{
+	std::string path = lineedit->text();
+	if(path == "")
+	{
+		path = config.lastkit;
+	}
+
+	if(path == "")
+	{
+		path = lineedit2->text();
+	}
+
+	fileBrowser->setPath(path);
+	CONNECT(fileBrowser, fileSelectNotifier, this, &DGWindow::selectKitFile);
+	fileBrowser->show();
+}
+
+void DGWindow::midimapBrowseClick()
+{
+	std::string path = lineedit2->text();
+	if(path == "")
+	{
+		path = config.lastmidimap;
+	}
+
+	if(path == "")
+	{
+		path = lineedit->text();
+	}
+
+	fileBrowser->setPath(path);
+	CONNECT(fileBrowser, fileSelectNotifier, this, &DGWindow::selectMapFile);
+	fileBrowser->show();
+}
+
+void DGWindow::selectKitFile(const std::string& filename)
+{
+	lineedit->setText(filename);
+
+	fileBrowser->hide();
+
+	std::string drumkit = lineedit->text();
+
+	config.lastkit = drumkit;
+	config.save();
+
+	drumkitFileProgress->setProgress(0);
+	drumkitFileProgress->setState(ProgressBarState::Blue);
+
+	LoadDrumKitMessage *msg = new LoadDrumKitMessage();
+	msg->drumkitfile = drumkit;
+
+	messageHandler.sendMessage(MSGRCV_ENGINE, msg);
+}
+
+void DGWindow::selectMapFile(const std::string& filename)
+{
+	lineedit2->setText(filename);
+	fileBrowser->hide();
+
+	std::string midimap = lineedit2->text();
+
+	config.lastmidimap = midimap;
+	config.save();
+
+	LoadMidimapMessage *msg = new LoadMidimapMessage();
+	msg->midimapfile = midimap;
+	messageHandler.sendMessage(MSGRCV_ENGINE, msg);
+}
+
+
+} // GUI::
diff --git a/plugingui/dgwindow.h b/plugingui/dgwindow.h
new file mode 100644
index 0000000..605e87a
--- /dev/null
+++ b/plugingui/dgwindow.h
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            dgwindow.h
+ *
+ *  Mon Nov 23 20:30:45 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include "window.h"
+
+#include "label.h"
+#include "lineedit.h"
+#include "checkbox.h"
+#include "button.h"
+#include "knob.h"
+#include "progressbar.h"
+#include "filebrowser.h"
+#include "layout.h"
+
+class MessageHandler;
+
+namespace GUI {
+
+class Config;
+class Header;
+class File;
+
+class DGWindow : public Window {
+public:
+	DGWindow(void* native_window, MessageHandler& messageHandler, Config& config);
+
+	Header* header;
+
+	File* drumkitFile;
+	LineEdit* lineedit;
+	ProgressBar* drumkitFileProgress;
+
+	File* midimapFile;
+	LineEdit* lineedit2;
+	ProgressBar* midimapFileProgress;
+
+	// Humanized velocity controls:
+	CheckBox* velocityCheck;
+	Knob* attackKnob;
+	Knob* falloffKnob;
+	FileBrowser* fileBrowser;
+
+protected:
+	// From Widget:
+	void repaintEvent(RepaintEvent* repaintEvent) override;
+
+private:
+	void attackValueChanged(float value);
+	void falloffValueChanged(float value);
+	void velocityCheckClick(bool checked);
+	void kitBrowseClick();
+	void midimapBrowseClick();
+	void selectKitFile(const std::string& filename);
+	void selectMapFile(const std::string& filename);
+
+	MessageHandler& messageHandler;
+	Config& config;
+
+	VBoxLayout layout{this};
+
+	Image back{":bg.png"};
+	Image logo{":logo.png"};
+};
+
+} // GUI::
diff --git a/plugingui/directory.cc b/plugingui/directory.cc
index 1465c86..7515c30 100644
--- a/plugingui/directory.cc
+++ b/plugingui/directory.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,7 +28,7 @@
 
 #include <dirent.h>
 #include <stdio.h>
-#include <string> 
+#include <string>
 #include <algorithm>
 #include <vector>
 #include <string.h>
@@ -44,14 +44,16 @@
 
 // http://en.wikipedia.org/wiki/Path_(computing)
 #ifdef WIN32
-  #define SEP "\\"
+#define SEP "\\"
 #else
-  #define SEP "/"
+#define SEP "/"
 #endif
 
+namespace GUI {
+
 Directory::Directory(std::string path)
 {
-  setPath(path);
+	setPath(path);
 }
 
 Directory::~Directory()
@@ -60,384 +62,507 @@ Directory::~Directory()
 
 std::string Directory::seperator()
 {
-  return SEP;
+	return SEP;
 }
 
 void Directory::setPath(std::string path)
 {
-  DEBUG(directory, "Setting path to '%s'\n", path.c_str());
-  this->_path = cleanPath(path);
-  refresh();
+	//DEBUG(directory, "Setting path to '%s'\n", path.c_str());
+	this->_path = cleanPath(path);
+	refresh();
 }
 
 size_t Directory::count()
 {
-  return _files.size();
+	return _files.size();
 }
 
 void Directory::refresh()
 {
-  _files = listFiles(_path, DIRECTORY_HIDDEN);
-//  _files = listFiles(_path);
+	_files = listFiles(_path, DIRECTORY_HIDDEN);
+	//_files = listFiles(_path);
 }
 
 bool Directory::cd(std::string dir)
 {
-  //TODO: Should this return true or false?
-  if(dir.empty() || dir == ".") return true;
-
-  DEBUG(directory, "Changing to '%s'\n", dir.c_str());
-  if(exists(_path + SEP + dir)) {
-    std::string path = _path + SEP + dir;
-    setPath(path);
-    refresh();
-    return true;
-  } else {
-    return false;
-  }
+	//TODO: Should this return true or false?
+	if(dir.empty() || dir == ".")
+	{
+		return true;
+	}
+
+	//DEBUG(directory, "Changing to '%s'\n", dir.c_str());
+	if(exists(_path + SEP + dir))
+	{
+		std::string path = _path + SEP + dir;
+		setPath(path);
+		refresh();
+		return true;
+	}
+	else
+	{
+		return false;
+	}
 }
 
 bool Directory::cdUp()
 {
-  return this->cd("..");
+	return this->cd("..");
 }
 
 std::string Directory::path()
 {
-  return cleanPath(_path);
+	return cleanPath(_path);
 }
 
 Directory::EntryList Directory::entryList()
 {
-  return _files;
+	return _files;
 }
 
 #define MAX_FILE_LENGTH 1024
-std::string Directory::cwd() {
-  char path[MAX_FILE_LENGTH];
-  char* c = getcwd(path, MAX_FILE_LENGTH);
-
-  if(c) return c;
-  else return "";
+std::string Directory::cwd()
+{
+	char path[MAX_FILE_LENGTH];
+	char* c = getcwd(path, MAX_FILE_LENGTH);
+
+	if(c)
+	{
+		return c;
+	}
+	else
+	{
+		return "";
+	}
 }
 
 std::string Directory::cleanPath(std::string path)
 {
-  DEBUG(directory, "Cleaning path '%s'\n", path.c_str());
-
-  Directory::Path pathlst = parsePath(path);
-  return Directory::pathToStr(pathlst);  
+	//DEBUG(directory, "Cleaning path '%s'\n", path.c_str());
+	Directory::Path pathlst = parsePath(path);
+	return Directory::pathToStr(pathlst);
 }
 
 Directory::EntryList Directory::listFiles(std::string path, unsigned char filter)
 {
-  DEBUG(directory, "Listing files in '%s'\n", path.c_str());
-
-  Directory::EntryList entries;
-  DIR *dir = opendir(path.c_str());
-  if(!dir) {
-    DEBUG(directory, "Couldn't open directory '%s\n", path.c_str()); 
-    return entries;
-  }
-
-  std::vector<std::string> directories;
-  std::vector<std::string> files;
-
-  struct dirent *entry;
-  while((entry = readdir(dir)) != NULL) {
-    std::string name = entry->d_name;
-    if(name == ".") continue;
-
-    if(Directory::isRoot(path) && name == "..") continue;
-    
-    unsigned char entryinfo = 0;
-    if(isHidden(path + SEP + name)) {
-      entryinfo |= DIRECTORY_HIDDEN;
-    }
-
-    std::string entrypath = path;
-    entrypath += SEP;
-    entrypath += entry->d_name;
-    if(Directory::isDir(entrypath)) {
-      if(!(entryinfo && filter)) {
-        if(name == "..") directories.push_back(entry->d_name);
-        else directories.push_back(std::string(SEP) + entry->d_name);
-      }
-    }
-    else {
-      int drumkit_suffix_length = strlen(DRUMKIT_SUFFIX);
-      if((int)name.size() < drumkit_suffix_length) continue;
-      if(name.substr(name.length() - drumkit_suffix_length, 
-          drumkit_suffix_length) != DRUMKIT_SUFFIX) {
-        continue;
-      }
-
-
-//      if(!(entryinfo && filter)) {
-        files.push_back(entry->d_name);
-//      }
-    }
-  }
-
+	DEBUG(directory, "Listing files in '%s'\n", path.c_str());
+
+	Directory::EntryList entries;
+	DIR *dir = opendir(path.c_str());
+	if(!dir)
+	{
+		//DEBUG(directory, "Couldn't open directory '%s\n", path.c_str());
+		return entries;
+	}
+
+	std::vector<std::string> directories;
+	std::vector<std::string> files;
+
+	struct dirent *entry;
+	while((entry = readdir(dir)) != nullptr)
+	{
+		std::string name = entry->d_name;
+		if(name == ".")
+		{
+			continue;
+		}
+
+		if(Directory::isRoot(path) && name == "..")
+		{
+			continue;
+		}
+
+		unsigned char entryinfo = 0;
+		if(isHidden(path + SEP + name))
+		{
+			entryinfo |= DIRECTORY_HIDDEN;
+		}
+
+		std::string entrypath = path;
+		entrypath += SEP;
+		entrypath += entry->d_name;
+		if(Directory::isDir(entrypath))
+		{
+			if(!(entryinfo && filter))
+			{
+				if(name == "..")
+				{
+					directories.push_back(entry->d_name);
+				}
+				else
+				{
+					directories.push_back(std::string(SEP) + entry->d_name);
+				}
+			}
+		}
+		else
+		{
+			int drumkit_suffix_length = strlen(DRUMKIT_SUFFIX);
+			if((int)name.size() < drumkit_suffix_length)
+			{
+				continue;
+			}
+
+			if(name.substr(name.length() - drumkit_suffix_length,
+			               drumkit_suffix_length) != DRUMKIT_SUFFIX)
+			{
+				continue;
+			}
+
+
+			//if(!(entryinfo && filter)) {
+			files.push_back(entry->d_name);
+			//}
+		}
+	}
 
 #ifdef WIN32
-	DEBUG(directory, "Root is %s\n", Directory::root(path).c_str()); 
-	DEBUG(directory, "Current path %s is root? %d", path.c_str(), Directory::isRoot(path)); 
-if(Directory::isRoot(path)) entries.push_back(".."); 
+	//DEBUG(directory, "Root is %s\n", Directory::root(path).c_str());
+	//DEBUG(directory, "Current path %s is root? %d", path.c_str(),
+	//      Directory::isRoot(path));
+	if(Directory::isRoot(path))
+	{
+		entries.push_back("..");
+	}
 #endif
 
-  // sort
-  for(int x = 0; x < (int)directories.size(); x++) {
-    for(int y = 0; y < (int)directories.size(); y++) {
-      if(directories[x] < directories[y]) {
-        
-        std::string tmp = directories[x];
-        directories[x] = directories[y];
-        directories[y] = tmp;
-      }
-    }
-  }
-
-  for(int x = 0; x < (int)files.size(); x++) {
-    for(int y = 0; y < (int)files.size(); y++) {
-      if(files[x] < files[y]) {
-        
-        std::string tmp = files[x];
-        files[x] = files[y];
-        files[y] = tmp;
-      }
-    }
-  }
-
-
-  for(std::vector<std::string>::iterator it = directories.begin(); it != directories.end(); it++) {
-    entries.push_back(*it);
-  }
-
-  for(std::vector<std::string>::iterator it = files.begin(); it != files.end(); it++) {
-    entries.push_back(*it);
-  }
-
-
-  return entries;
+	// sort
+	for(int x = 0; x < (int)directories.size(); x++)
+	{
+		for(int y = 0; y < (int)directories.size(); y++)
+		{
+			if(directories[x] < directories[y])
+			{
+				std::string tmp = directories[x];
+				directories[x] = directories[y];
+				directories[y] = tmp;
+			}
+		}
+	}
+
+	for(int x = 0; x < (int)files.size(); x++)
+	{
+		for(int y = 0; y < (int)files.size(); y++)
+		{
+			if(files[x] < files[y])
+			{
+				std::string tmp = files[x];
+				files[x] = files[y];
+				files[y] = tmp;
+			}
+		}
+	}
+
+
+	for(auto directory : directories)
+	{
+		entries.push_back(directory);
+	}
+
+	for(auto file : files)
+	{
+		entries.push_back(file);
+	}
+
+	closedir(dir);
+	return entries;
 }
 
 bool Directory::isRoot(std::string path)
 {
 #ifdef WIN32
-  std::transform(path.begin(), path.end(), path.begin(), ::tolower);
-  std::string root_str = Directory::root(path); 
-  std::transform(root_str.begin(), root_str.end(), root_str.begin(), ::tolower);
-  // TODO: This is not a correct root calculation, but works with partitions
-  if(path.size() == 2) {
-    if(path == root_str) return true;
-    else return false;
-  } else if (path.size() == 3) {
-    if(path == root_str + SEP) return true;
-    return false;
-  } else {
-    return false;
-  }
+	std::transform(path.begin(), path.end(), path.begin(), ::tolower);
+	std::string root_str = Directory::root(path);
+	std::transform(root_str.begin(), root_str.end(), root_str.begin(), ::tolower);
+
+	// TODO: This is not a correct root calculation, but works with partitions
+	if(path.size() == 2)
+	{
+		if(path == root_str)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+	else
+	{
+		if (path.size() == 3)
+		{
+			if(path == root_str + SEP)
+			{
+				return true;
+			}
+			return false;
+		}
+		else
+		{
+			return false;
+		}
+	}
 #else
-  if(path == SEP) return true;
-  else return false;
+	if(path == SEP)
+	{
+		return true;
+	}
+	else
+	{
+		return false;
+	}
 #endif
 }
 
 std::string Directory::root()
 {
-  return root(cwd());
+	return root(cwd());
 }
 
 std::string Directory::root(std::string path)
 {
 #ifdef WIN32
-  if(path.size() < 2) {
-    return "c:"; // just something default when input is bad
-  } else {
-    return path.substr(0, 2);
-  }
+	if(path.size() < 2)
+	{
+		return "c:"; // just something default when input is bad
+	}
+	else
+	{
+		return path.substr(0, 2);
+	}
 #else
-  return SEP;
+	return SEP;
 #endif
 }
 
 Directory::DriveList Directory::drives()
 {
-  Directory::DriveList drives;
+	Directory::DriveList drives;
 #ifdef WIN32
-  unsigned int d = GetLogicalDrives();
-  for(int i = 0; i < 32; i++) {
-    if(d & (1 << i)) {
-      drive_t drive;
-      char name[] = "x:";
-      name[0] = i + 'a';
-
-      drive.name = name;
-      drive.number = i;
-      drives.push_back(drive);
-    }
-  }
+	unsigned int d = GetLogicalDrives();
+	for(int i = 0; i < 32; ++i)
+	{
+		if(d & (1 << i))
+		{
+			drive_t drive;
+			char name[] = "x:";
+			name[0] = i + 'a';
+
+			drive.name = name;
+			drive.number = i;
+			drives.push_back(drive);
+		}
+	}
 #endif
-  return drives;
+	return drives;
 }
 
 bool Directory::isDir()
 {
-  return isDir(_path);
+	return isDir(_path);
 }
 
 bool Directory::isDir(std::string path)
 {
-  DEBUG(directory, "Is '%s' a directory?\n", path.c_str());
-  struct stat st;
-  if(stat(path.c_str(), &st) == 0) {
-    if((st.st_mode & S_IFDIR) != 0) {
-      DEBUG(directory, "\t...yes!\n");
-      return true;
-    }
-  }
-  DEBUG(directory, "\t...no!\n");
-  return false;
+	//DEBUG(directory, "Is '%s' a directory?\n", path.c_str());
+	struct stat st;
+	if(stat(path.c_str(), &st) == 0)
+	{
+		if((st.st_mode & S_IFDIR) != 0)
+		{
+			//DEBUG(directory, "\t...yes!\n");
+			return true;
+		}
+	}
+	//DEBUG(directory, "\t...no!\n");
+	return false;
 }
 
 bool Directory::fileExists(std::string filename)
 {
-  return !isDir(_path + SEP + filename);
+	return !isDir(_path + SEP + filename);
 }
 
 bool Directory::exists(std::string path)
 {
-  struct stat st;
-  if(stat(path.c_str(), &st) == 0) {
-    return true;
-  } else {
-    return false;
-  }
+	struct stat st;
+	if(stat(path.c_str(), &st) == 0)
+	{
+		return true;
+	}
+	else
+	{
+		return false;
+	}
 }
 
-bool Directory::isHidden(std::string path) 
+bool Directory::isHidden(std::string path)
 {
-  DEBUG(directory, "Is '%s' hidden?\n", path.c_str());
+	//DEBUG(directory, "Is '%s' hidden?\n", path.c_str());
 #ifdef WIN32
-  // We dont want to filter out '..' pointing to root of a partition
-  unsigned pos = path.find_last_of("/\\");
-  std::string entry = path.substr(pos+1);
-  if(entry == "..") {
-    return false;
-  }
-
-  DWORD fattribs = GetFileAttributes(path.c_str());
-  if(fattribs & FILE_ATTRIBUTE_HIDDEN) {
-    DEBUG(directory, "\t...yes!\n");
-    return true;
-  }
-  else if(fattribs & FILE_ATTRIBUTE_SYSTEM) {
-    DEBUG(directory, "\t...yes!\n");
-    return true;
-  }
-  else {
-    DEBUG(directory, "\t...no!\n");
-    return false;
-  }
+	// We dont want to filter out '..' pointing to root of a partition
+	unsigned pos = path.find_last_of("/\\");
+	std::string entry = path.substr(pos+1);
+	if(entry == "..")
+	{
+		return false;
+	}
+
+	DWORD fattribs = GetFileAttributes(path.c_str());
+	if(fattribs & FILE_ATTRIBUTE_HIDDEN)
+	{
+		//DEBUG(directory, "\t...yes!\n");
+		return true;
+	}
+	else
+	{
+		if(fattribs & FILE_ATTRIBUTE_SYSTEM)
+		{
+			//DEBUG(directory, "\t...yes!\n");
+			return true;
+		}
+		else
+		{
+			//DEBUG(directory, "\t...no!\n");
+			return false;
+		}
+	}
 #else
-  unsigned pos = path.find_last_of("/\\");
-  std::string entry = path.substr(pos+1);
-  if(entry.size() > 1 &&
-     entry.at(0) == '.' &&
-     entry.at(1) != '.') {
-    DEBUG(directory, "\t...yes!\n");
-    return true;
-  }
-  else {
-    DEBUG(directory, "\t...no!\n");
-    return false;
-  }
+	unsigned pos = path.find_last_of("/\\");
+	std::string entry = path.substr(pos+1);
+	if(entry.size() > 1 &&
+	   entry.at(0) == '.' &&
+	   entry.at(1) != '.')
+	{
+		//DEBUG(directory, "\t...yes!\n");
+		return true;
+	}
+	else
+	{
+		//DEBUG(directory, "\t...no!\n");
+		return false;
+	}
 #endif
 }
 
 Directory::Path Directory::parsePath(std::string path_str)
 {
-  //TODO: Handle "." input and propably other special cases
-
-  DEBUG(directory, "Parsing path '%s'", path_str.c_str());
-  Directory::Path path;
-  
-  std::string current_char;
-  std::string prev_char;
-  std::string dir;
-  for(size_t c = 0; c < path_str.size(); c++) {
-    current_char = path_str.at(c);
-
-    if(current_char == SEP) {
-      if(prev_char == SEP) {
-        dir.clear();
-        prev_char = current_char;
-        continue;
-      } else if(prev_char == ".") {
-        prev_char = current_char;
-        continue;
-      }
-      
-      if(!dir.empty()) path.push_back(dir);
-      dir.clear();
-      continue;
-    } else if(current_char == ".") {
-      if(prev_char == ".") {
-        dir.clear();
-        if(!path.empty()) path.pop_back();
-        continue;
-      }
-    }
-    
-    dir += current_char;
-    prev_char = current_char;
-  }
-
-  if(!dir.empty()) path.push_back(dir);
-
-  return path;
+	//TODO: Handle "." input and propably other special cases
+
+	//DEBUG(directory, "Parsing path '%s'", path_str.c_str());
+	Directory::Path path;
+
+	std::string current_char;
+	std::string prev_char;
+	std::string dir;
+	for(size_t c = 0; c < path_str.size(); ++c)
+	{
+		current_char = path_str.at(c);
+
+		if(current_char == SEP)
+		{
+			if(prev_char == SEP)
+			{
+				dir.clear();
+				prev_char = current_char;
+				continue;
+			}
+			else
+			{
+				if(prev_char == ".")
+				{
+					prev_char = current_char;
+					continue;
+				}
+			}
+			if(!dir.empty())
+			{
+				path.push_back(dir);
+			}
+			dir.clear();
+			continue;
+		}
+		else
+		{
+			if(current_char == ".")
+			{
+				if(prev_char == ".")
+				{
+					dir.clear();
+					if(!path.empty())
+					{
+						path.pop_back();
+					}
+					continue;
+				}
+			}
+		}
+		dir += current_char;
+		prev_char = current_char;
+	}
+
+	if(!dir.empty())
+	{
+		path.push_back(dir);
+	}
+
+	return path;
 }
 
 std::string Directory::pathToStr(Directory::Path& path)
 {
-  std::string cleaned_path;
-  DEBUG(directory, "Number of directories in path is %d\n", (int)path.size());
+	std::string cleaned_path;
+	//DEBUG(directory, "Number of directories in path is %d\n", (int)path.size());
 
-  for(Directory::Path::iterator it = path.begin();
-      it != path.end(); it++) {
-    std::string dir = *it;
-    DEBUG(directory, "\tDir '%s'\n", dir.c_str());
+	for(auto it = path.begin(); it != path.end(); ++it)
+	{
+		std::string dir = *it;
+		//DEBUG(directory, "\tDir '%s'\n", dir.c_str());
 #ifdef WIN32
-    if(it != path.begin()) cleaned_path += SEP;
-    cleaned_path += dir;
+		if(it != path.begin())
+		{
+			cleaned_path += SEP;
+		}
+		cleaned_path += dir;
 #else
-    cleaned_path += SEP + dir;
+		cleaned_path += SEP + dir;
 #endif
-  }
+	}
 
-  DEBUG(directory, "Cleaned path '%s'\n", cleaned_path.c_str());
+	//DEBUG(directory, "Cleaned path '%s'\n", cleaned_path.c_str());
 
-  if(cleaned_path.empty()) { 
-    cleaned_path = Directory::root();
+	if(cleaned_path.empty())
+	{
+		cleaned_path = Directory::root();
 #ifdef WIN32
-    cleaned_path += SEP;
-#endif  
-  }
+		cleaned_path += SEP;
+#endif
+	}
 
 #ifdef WIN32
-  if(cleaned_path.size() == 2) cleaned_path += SEP;
+	if(cleaned_path.size() == 2)
+	{
+		cleaned_path += SEP;
+	}
 #endif
 
-  return cleaned_path; 
+	return cleaned_path;
 }
 
 std::string Directory::pathDirectory(std::string filepath)
 {
-  if(Directory::isDir(filepath)) return filepath;
-
-  Directory::Path path = parsePath(filepath);
-  if(path.size() > 0) path.pop_back();
-
-  return Directory::pathToStr(path);
+	if(Directory::isDir(filepath))
+	{
+		return filepath;
+	}
+
+	Directory::Path path = parsePath(filepath);
+	if(path.size() > 0)
+	{
+		path.pop_back();
+	}
+
+	return Directory::pathToStr(path);
 }
+
+} // GUI::
diff --git a/plugingui/directory.h b/plugingui/directory.h
index 04ed3e7..1acc0bf 100644
--- a/plugingui/directory.h
+++ b/plugingui/directory.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_DIRECTORY_H__
-#define __DRUMGIZMO_DIRECTORY_H__
+#pragma once
 
 #include <string>
 #include <list>
@@ -38,56 +37,57 @@
 
 #define DIRECTORY_HIDDEN 1
 
+namespace GUI {
+
 class Directory {
+public:
+	typedef struct drive {
+		int number;
+		std::string name;
+	} drive_t;
+
+	typedef std::list<std::string> EntryList;
+	typedef std::list<drive> DriveList;
+
+	Directory(std::string path);
+	~Directory();
+
+	std::string seperator();
+
+	size_t count();
+	void refresh();
+	std::string path();
+	bool cdUp();
+	bool cd(std::string dir);
+	bool isDir();
+	void setPath(std::string path);
+	bool fileExists(std::string file);
+
+	// Add filter, ie. directories or files only
+	EntryList entryList();
+
+	//void setSorting();
+
+	static std::string cwd();
+	static std::string root();
+	static std::string root(std::string path);
+	static std::string cleanPath(std::string path);
+	static Directory::EntryList listFiles(std::string path, unsigned char filter = 0);
+	static bool isRoot(std::string path);
+	static Directory::DriveList drives();
+	static bool isDir(std::string path);
+	static bool isHidden(std::string entry);
+	static bool exists(std::string path);
+	static std::string pathDirectory(std::string filepath);
+
+private:
+	std::string _path;
+	EntryList _files;
+	DriveList _drives;
 
-  public:
-    typedef struct drive {
-      int number;
-      std::string name;
-    } drive_t;
-
-    typedef std::list<std::string> EntryList;
-    typedef std::list<drive> DriveList;
-    
-    Directory(std::string path);
-    ~Directory();
-
-    std::string seperator();
-
-    size_t count();
-    void refresh();
-    std::string path();
-    bool cdUp();
-    bool cd(std::string dir);
-    bool isDir();
-    void setPath(std::string path);
-    bool fileExists(std::string file);
-
-    // Add filter, ie. directories or files only
-    EntryList entryList();
-
-    //void setSorting();
-
-    static std::string cwd();
-    static std::string root();
-    static std::string root(std::string path); 
-    static std::string cleanPath(std::string path);
-    static Directory::EntryList listFiles(std::string path, unsigned char filter = 0);
-    static bool isRoot(std::string path);
-    static Directory::DriveList drives();
-    static bool isDir(std::string path);
-    static bool isHidden(std::string entry);
-    static bool exists(std::string path);
-    static std::string pathDirectory(std::string filepath);
-     
-  private:
-    std::string _path;
-    EntryList _files;
-    DriveList _drives;
-
-    typedef std::list<std::string> Path;
-    static Path parsePath(std::string path);
-    static std::string pathToStr(Path &path);
+	typedef std::list<std::string> Path;
+	static Path parsePath(std::string path);
+	static std::string pathToStr(Path &path);
 };
 
-#endif/*__DRUMGIZMO_DIRECTORY_H__*/
+} // GUI::
diff --git a/plugingui/eventhandler.cc b/plugingui/eventhandler.cc
index cec5fab..ea5516a 100644
--- a/plugingui/eventhandler.cc
+++ b/plugingui/eventhandler.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -29,166 +29,237 @@
 #include "window.h"
 #include "painter.h"
 
-GUI::EventHandler::EventHandler(GUI::NativeWindow *n, GUI::Window *w)
-{
-  native = n;
-  window = w;
+namespace GUI {
 
-  last_click = 0;
-  last_was_dbl_click = false;
-}
+EventHandler::EventHandler(NativeWindow& nativeWindow, Window& window)
+	: window(window)
+	, nativeWindow(nativeWindow)
+//	, last_click(0)
+	, lastWasDoubleClick(false)
+{}
 
-bool GUI::EventHandler::hasEvent()
+bool EventHandler::hasEvent()
 {
-  return native->hasEvent();
+	return nativeWindow.hasEvent();
 }
 
-GUI::Event *GUI::EventHandler::getNextEvent()
+Event *EventHandler::getNextEvent()
 {
-  return native->getNextEvent();
+	return nativeWindow.getNextEvent();
 }
 
-void GUI::EventHandler::registerCloseHandler(void (*handler)(void *), void *ptr)
+Event *EventHandler::peekNextEvent()
 {
-  this->closeHandler = handler;
-  this->closeHandlerPtr = ptr;
+	return nativeWindow.peekNextEvent();
 }
 
-void GUI::EventHandler::processEvents()
+void EventHandler::processEvents()
 {
-  while(hasEvent()) {
-    Painter p(window); // Make sure we only redraw buffer one time.
-
-    Event *event = getNextEvent();
-
-    if(event == NULL) continue;
-
-    //    Widget *widget = gctx->widgets[event->window_id];
-    switch(event->type()) {
-    case Event::Repaint:
-      //      window->repaint((RepaintEvent*)event);
-      window->redraw();
-      break;
-    case Event::Resize:
-      {
-        //      window->repaint((RepaintEvent*)event)
-        ResizeEvent *re = (ResizeEvent*)event;
-        if(re->width != window->width() || re->height != window->height()) {
-          window->resized(re->width, re->height);
-          //window->repaint_r(NULL);
-        }
-      }
-      break;
-    case Event::MouseMove:
-      {
-        MouseMoveEvent *me = (MouseMoveEvent*)event;
-
-        Widget *w = window->find(me->x, me->y);
-        Widget *oldw = window->mouseFocus();
-        if(w != oldw) {
-          // Send focus leave to oldw
-          if(oldw) oldw->mouseLeaveEvent();
-          // Send focus enter to w
-          if(w) w->mouseEnterEvent();
-
-          window->setMouseFocus(w);
-        }
-
-        if(window->buttonDownFocus()) {
-          Widget *w = window->buttonDownFocus();
-          /*
-          if(me->x < w->x()) me->x = w->x();
-          if(me->x > w->x() + w->width()) me->x = w->x() + w->width();
-          if(me->y < w->y()) me->y = w->y();
-          if(me->y > w->y() + w->height()) me->y = w->y() + w->height();
-          */
-          me->x -= w->windowX();
-          me->y -= w->windowY();
-
-          window->buttonDownFocus()->mouseMoveEvent(me);
-          break;
-        }
-
-        if(w) {
-          me->x -= w->windowX();
-          me->y -= w->windowY();
-          w->mouseMoveEvent(me);
-        }
-      }
-      break;
-    case Event::Button:
-      {
-        if(last_was_dbl_click) {
-          last_was_dbl_click = false;
-          continue;
-        }
-        ButtonEvent *be = (ButtonEvent *)event;
-
-        last_was_dbl_click = be->doubleclick;
-
-        Widget *w = window->find(be->x, be->y);
-
-        if(window->buttonDownFocus()) {
-          if(be->direction == -1) {
-            Widget *w = window->buttonDownFocus();
-            /*
-            if(be->x < w->x()) be->x = w->x();
-            if(be->x > w->x() + w->width()) be->x = w->x() + w->width();
-            if(be->y < w->y()) be->y = w->y();
-            if(be->y > w->y() + w->height()) be->y = w->y() + w->height();
-            */
-            be->x -= w->windowX();
-            be->y -= w->windowY();
-
-            w->buttonEvent(be);
-            break;
-          } else {
-            window->setButtonDownFocus(NULL);
-          }
-        }
-
-        if(w) {
-          be->x -= w->windowX();
-          be->y -= w->windowY();
-
-          w->buttonEvent(be);
-
-          if(be->direction == 1) {
-            if(w->catchMouse()) window->setButtonDownFocus(w);
-          }
-
-          if(w->isFocusable()) window->setKeyboardFocus(w);
-        }
-      }
-      break;
-    case Event::Scroll:
-      {
-        ScrollEvent *se = (ScrollEvent *)event;
-
-        Widget *w = window->find(se->x, se->y);
-
-        //printf("scroller (%d,%d) %p\n", se->x, se->y, w);
-
-        if(w) {
-          se->x -= w->windowX();
-          se->y -= w->windowY();
-
-          w->scrollEvent(se);
-        }
-      }
-      break;
-    case Event::Key:
-      //      window->key((KeyEvent*)event);
-      //      lineedit->keyEvent((KeyEvent*)event);
-      if(window->keyboardFocus())
-        window->keyboardFocus()->keyEvent((KeyEvent*)event);
-      break;
-    case Event::Close:
-      if(closeHandler) closeHandler(closeHandlerPtr);
-      //delete window;
-      //window = NULL;
-      break;
-    }
-    delete event;
-  }
+	while(hasEvent())
+	{
+		Painter p(window); // Make sure we only redraw buffer one time.
+
+		auto event = getNextEvent();
+
+		if(event == nullptr)
+		{
+			continue;
+		}
+
+		switch(event->type()) {
+		case EventType::repaint:
+			window.redraw();
+			break;
+
+		case EventType::resize:
+			{
+				while(true)
+				{
+					if(!hasEvent())
+					{
+						break;
+					}
+
+					auto peekEvent = peekNextEvent();
+					if(!peekEvent || (peekEvent->type() != EventType::resize))
+					{
+						break;
+					}
+
+					event = getNextEvent();
+				}
+
+				auto resizeEvent = static_cast<ResizeEvent*>(event);
+				if((resizeEvent->width != window.width()) ||
+				   (resizeEvent->height != window.height()))
+				{
+					window.resized(resizeEvent->width, resizeEvent->height);
+				}
+			}
+			break;
+
+		case EventType::mouseMove:
+			{
+				while(true)
+				{
+					if(!hasEvent())
+					{
+						break;
+					}
+
+					auto peekEvent = peekNextEvent();
+					if(!peekEvent || (peekEvent->type() != EventType::mouseMove))
+					{
+						break;
+					}
+
+					event = getNextEvent();
+				}
+
+				auto moveEvent = static_cast<MouseMoveEvent*>(event);
+
+				auto widget = window.find(moveEvent->x, moveEvent->y);
+				auto oldwidget = window.mouseFocus();
+				if(widget != oldwidget)
+				{
+					// Send focus leave to oldwidget
+					if(oldwidget)
+					{
+						oldwidget->mouseLeaveEvent();
+					}
+
+					// Send focus enter to widget
+					if(widget)
+					{
+						widget->mouseEnterEvent();
+					}
+
+					window.setMouseFocus(widget);
+				}
+
+				if(window.buttonDownFocus())
+				{
+					auto widget = window.buttonDownFocus();
+					moveEvent->x -= widget->windowX();
+					moveEvent->y -= widget->windowY();
+
+					window.buttonDownFocus()->mouseMoveEvent(moveEvent);
+					break;
+				}
+
+				if(widget)
+				{
+					moveEvent->x -= widget->windowX();
+					moveEvent->y -= widget->windowY();
+					widget->mouseMoveEvent(moveEvent);
+				}
+			}
+			break;
+
+		case EventType::button:
+			{
+				if(lastWasDoubleClick)
+				{
+					lastWasDoubleClick = false;
+					continue;
+				}
+
+				auto buttonEvent = static_cast<ButtonEvent*>(event);
+
+				lastWasDoubleClick = buttonEvent->doubleClick;
+
+				auto widget = window.find(buttonEvent->x, buttonEvent->y);
+
+				if(window.buttonDownFocus())
+				{
+					if(buttonEvent->direction == Direction::up)
+					{
+						auto widget = window.buttonDownFocus();
+						buttonEvent->x -= widget->windowX();
+						buttonEvent->y -= widget->windowY();
+
+						widget->buttonEvent(buttonEvent);
+						window.setButtonDownFocus(nullptr);
+						break;
+					}
+				}
+
+				if(widget)
+				{
+					buttonEvent->x -= widget->windowX();
+					buttonEvent->y -= widget->windowY();
+
+					widget->buttonEvent(buttonEvent);
+
+					if((buttonEvent->direction == Direction::down) &&
+					   widget->catchMouse())
+					{
+						window.setButtonDownFocus(widget);
+					}
+
+					if(widget->isFocusable())
+					{
+						window.setKeyboardFocus(widget);
+					}
+				}
+			}
+			break;
+
+		case EventType::scroll:
+			{
+				int delta = 0;
+				while(true)
+				{
+					if(!hasEvent())
+					{
+						break;
+					}
+
+					auto peekEvent = peekNextEvent();
+					if(!peekEvent || (peekEvent->type() != EventType::scroll))
+					{
+						break;
+					}
+
+					auto scrollEvent = static_cast<ScrollEvent*>(event);
+					delta += scrollEvent->delta;
+					event = getNextEvent();
+				}
+
+				auto scrollEvent = static_cast<ScrollEvent*>(event);
+				scrollEvent->delta += delta;
+
+				auto widget = window.find(scrollEvent->x, scrollEvent->y);
+				if(widget)
+				{
+					scrollEvent->x -= widget->windowX();
+					scrollEvent->y -= widget->windowY();
+
+					widget->scrollEvent(scrollEvent);
+				}
+			}
+			break;
+
+		case EventType::key:
+			{
+
+				// TODO: Filter out multiple arrow events.
+
+				auto keyEvent = static_cast<KeyEvent*>(event);
+				if(window.keyboardFocus())
+				{
+					window.keyboardFocus()->keyEvent(keyEvent);
+				}
+			}
+			break;
+
+		case EventType::close:
+			closeNotifier();
+			break;
+		}
+
+		delete event;
+	}
 }
+
+} // GUI::
diff --git a/plugingui/eventhandler.h b/plugingui/eventhandler.h
index 028418d..1fdb1e8 100644
--- a/plugingui/eventhandler.h
+++ b/plugingui/eventhandler.h
@@ -11,52 +11,55 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_EVENTHANDLER_H__
-#define __DRUMGIZMO_EVENTHANDLER_H__
+#pragma once
 
 #include "guievent.h"
 #include "nativewindow.h"
-//#include "window.h"
+#include "notifier.h"
 
 namespace GUI {
+
 class Window;
 
 class EventHandler {
 public:
-  EventHandler(NativeWindow *native, Window *window);
+	EventHandler(NativeWindow& nativeWindow, Window& window);
 
-  void processEvents();
+	//! \brief Process all events currently in the event queue.
+	void processEvents();
 
-  bool hasEvent();
-  Event *getNextEvent();
+	//! \brief Query if any events are currently in the event queue.
+	bool hasEvent();
 
-  void registerCloseHandler(void (*handler)(void *), void *ptr);
+	//! \brief Get a single event from the event queue.
+	//! \return A pointer to the event or nullptr if there are none.
+	Event *getNextEvent();
 
-private:
-  Window *window;
-  int last_click;
-  void (*closeHandler)(void *);
-  void *closeHandlerPtr;
+	//! \brief Get a single event from the event queue without popping it.
+	//! \return A pointer to the event or nullptr if there are none.
+	Event *peekNextEvent();
 
-  // Used to ignore mouse button release after a double click.
-  bool last_was_dbl_click;
+	Notifier<> closeNotifier;
 
-  NativeWindow *native;
-};
+private:
+	Window& window;
+	NativeWindow& nativeWindow;
 
+	// Used to ignore mouse button release after a double click.
+	bool lastWasDoubleClick;
 };
 
-#endif/*__DRUMGIZMO_EVENTHANDLER_H__*/
+} // GUI::
diff --git a/plugingui/filebrowser.cc b/plugingui/filebrowser.cc
index 6ecbc09..f4560f6 100644
--- a/plugingui/filebrowser.cc
+++ b/plugingui/filebrowser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -45,215 +45,216 @@
 #include <direct.h>
 #endif
 
-struct GUI::FileBrowser::private_data {
-  GUI::LineEdit *lineedit;
-  GUI::ListBox *listbox;
-  void (*filesel_handler)(void *, std::string);
-  void *ptr;
-  Directory *dir;
+namespace GUI {
+
+FileBrowser::FileBrowser(Widget *parent)
+	: Widget(parent)
+	, dir(Directory::cwd())
+	, lbl_path(this)
+	, lineedit(this)
+	, listbox(this)
+	, btn_sel(this)
+	, btn_esc(this)
+	, back(":bg.png")
+{
 #ifdef WIN32
-  bool above_root;
-  bool in_root;
+	above_root = false;
 #endif
-};
 
-static void cancel(void *ptr)
-{
-  GUI::FileBrowser *fp = (GUI::FileBrowser *)ptr;
-  fp->hide();
-}
-
-static void changeDir(void *ptr)
-{
-  struct GUI::FileBrowser::private_data *prv =
-    (struct GUI::FileBrowser::private_data *) ptr;
-  
-  GUI::ListBox *lb = prv->listbox;
-  GUI::LineEdit *le = prv->lineedit;
-  std::string value = lb->selectedValue(); 
-  Directory* dir = prv->dir;
-
-//  if(!Directory::isDir(dir->path() + dir->seperator())) {
-//    return;
-//  }
+	lbl_path.setText("Path:");
 
-  lb->clear();
-  
-  INFO(filebrowser, "Changing path to '%s'\n",
-       (dir->path() + dir->seperator() + value).c_str());
- 
-#ifdef WIN32
-  if(prv->above_root && !value.empty()) {
-    dir->setPath(value + dir->seperator());
-    value.clear();
-    prv->above_root = false;
-  }
-#endif
+	//lineedit.setReadOnly(true);
+	CONNECT(&lineedit, enterPressedNotifier, this, &FileBrowser::handleKeyEvent);
+	CONNECT(&listbox, selectionNotifier,
+	        this, &FileBrowser::listSelectionChanged);
 
-  if(value.empty() && !dir->isDir() && Directory::exists(dir->path())) {
-    DEBUG(filebrowser, "Selecting file '%s'\n", dir->path().c_str());
-    if(prv->filesel_handler) prv->filesel_handler(prv->ptr, dir->path().c_str());
-    return;
-  }
+	btn_sel.setText("Select");
+	CONNECT(&btn_sel, clickNotifier, this, &FileBrowser::selectButtonClicked);
 
-  if(!value.empty() && dir->fileExists(value)) {
-    std::string file = dir->path() + dir->seperator() + value;
-    DEBUG(filebrowser, "Selecting file '%s'\n", file.c_str());
-    if(prv->filesel_handler) prv->filesel_handler(prv->ptr, file);
-    return;
-  }
+	btn_esc.setText("Cancel");
+	CONNECT(&btn_esc, clickNotifier, this, &FileBrowser::cancelButtonClicked);
 
-  std::vector<GUI::ListBoxBasic::Item> items;
+	changeDir();
+}
 
-#ifdef WIN32
-  if(Directory::isRoot(dir->path()) && value == "..") {
-   DEBUG(filebrowser, "Showing partitions...\n");
-   Directory::DriveList entries = dir->drives();
-   for(Directory::DriveList::iterator it = entries.begin();
-       it != entries.end(); it++) {  
-      GUI::ListBoxBasic::Item item;
-      std::string name = (*it).name;
-      item.name = name;
-      item.value = name;
-      items.push_back(item);
-    } 
-    prv->above_root = true;
-  } else {
-#endif
-    
-    if(!value.empty() && !dir->cd(value)) {
-      DEBUG(filebrowser, "Error changing to '%s'\n", 
-            (dir->path() + dir->seperator() + value).c_str());
-      return;
-    }
-    
-    Directory::EntryList entries = dir->entryList();
-
-    if(entries.empty()) {
-      dir->cdUp();
-      entries = dir->entryList();
-    }
-
-    DEBUG(filebrowser, "Setting path of lineedit to %s\n",
-          dir->path().c_str()); 
-    le->setText(dir->path());
-
-    for(Directory::EntryList::iterator it = entries.begin();
-        it != entries.end(); it++) { 
-      GUI::ListBoxBasic::Item item;
-      std::string name = *it;
-      item.name = name;
-      item.value = name;
-      items.push_back(item);
-    }
-#ifdef WIN32
-  }
-#endif
-  lb->addItems(items);
+FileBrowser::~FileBrowser()
+{
 }
 
-static void handleKeyEvent(void *ptr) {
-  struct GUI::FileBrowser::private_data *prv =
-    (struct GUI::FileBrowser::private_data *) ptr;
+void FileBrowser::setPath(const std::string& path)
+{
+	INFO(filebrowser, "Setting path to '%s'\n", path.c_str());
+
+	if(!path.empty())
+	{
+		dir.setPath(Directory::pathDirectory(path));
+	}
+	else
+	{
+		dir.setPath(Directory::pathDirectory(Directory::cwd()));
+	}
 
-  GUI::ListBox *lb = prv->listbox;
-  lb->clearSelectedValue();  
-  GUI::LineEdit *le = prv->lineedit;
+	listbox.clear();
 
-  prv->dir->setPath(le->text());
-  changeDir(ptr);
+	changeDir();
 }
 
-GUI::FileBrowser::FileBrowser(GUI::Widget *parent)
-  : GUI::Widget(parent),
-    lbl_path(this), lineedit(this), listbox(this), btn_sel(this), btn_esc(this),
-    back(":bg.png")
+void FileBrowser::resize(int w, int h)
 {
-  prv = new struct GUI::FileBrowser::private_data();
-  prv->filesel_handler = NULL;
+	Widget::resize(w,h);
 
-  prv->dir = new Directory(Directory::cwd());
-#ifdef WIN32  
-  prv->above_root = false;
-#endif
+	int offset = 0;
+	int brd = 5; // border
+	int btn_h = 30;
+
+	offset += brd;
 
-  lbl_path.setText("Path:");
+	lbl_path.move(0, offset);
+	lineedit.move(60, offset);
 
-//  lineedit.setReadOnly(true);
-  prv->lineedit = &lineedit;
-  prv->lineedit->registerEnterPressedHandler(handleKeyEvent, prv);
+	offset += btn_h;
 
-  prv->listbox = &listbox;
-  listbox.registerSelectHandler(changeDir, prv);
+	lbl_path.resize(60, btn_h);
+	lineedit.resize(w - 60 - brd, btn_h);
 
-  btn_sel.setText("Select");
-  btn_sel.registerClickHandler(changeDir, prv);
+	offset += brd;
 
-  btn_esc.setText("Cancel");
-  btn_esc.registerClickHandler(cancel, this);
+	listbox.move(brd, offset);
+	listbox.resize(w - 1 - 2*brd, h - btn_h - 2*brd - offset);
 
-  changeDir(prv);
+	btn_esc.move(brd, h - btn_h - brd);
+	btn_esc.resize((w - 1 - 2*brd) / 2 - brd / 2, btn_h);
 
-  resize(200, 190);
+	btn_sel.move(brd + w / 2 - brd / 2, h - btn_h - brd);
+	btn_sel.resize((w - 1 - 2*brd) / 2, btn_h);
 }
 
-GUI::FileBrowser::~FileBrowser()
+void FileBrowser::repaintEvent(RepaintEvent* repaintEvent)
 {
-  //  delete prv->listbox;
-  delete prv;
+	Painter p(*this);
+	p.drawImageStretched(0,0, back, width(), height());
 }
 
-void GUI::FileBrowser::setPath(std::string path)
+void FileBrowser::listSelectionChanged()
 {
-  INFO(filebrowser, "Setting path to '%s'\n", path.c_str());
-  if(path.empty()) path = Directory::cwd();
+	changeDir();
+}
 
-  prv->dir->setPath(Directory::pathDirectory(path));
-  prv->listbox->clear();
+void FileBrowser::selectButtonClicked()
+{
+	changeDir();
+}
 
-  changeDir(prv);
+void FileBrowser::cancelButtonClicked()
+{
+	cancel();
 }
 
-void GUI::FileBrowser::resize(int w, int h)
+void FileBrowser::handleKeyEvent()
 {
-  GUI::Widget::resize(w,h);
+	listbox.clearSelectedValue();
+
+	std::string value = lineedit.text();
+	if((value.size() > 1) && (value[0] == '@'))
+	{
+		DEBUG(filebrowser, "Selecting ref-file '%s'\n", value.c_str());
+		fileSelectNotifier(value);
+		return;
+	}
+
+	dir.setPath(lineedit.text());
+	changeDir();
+}
 
-  int offset = 0;
-  int brd = 5; // border
-  int btn_h = 30;
+void FileBrowser::cancel()
+{
+	hide();
+}
 
-  offset += brd;
+void FileBrowser::changeDir()
+{
+	std::string value = listbox.selectedValue();
 
-  lbl_path.move(0, offset);
-  lineedit.move(60, offset);
+//  if(!Directory::isDir(dir->path() + dir->seperator()))
+//  {
+//    return;
+//  }
 
-  offset += btn_h;
+	listbox.clear();
 
-  lbl_path.resize(60, btn_h);
-  lineedit.resize(w - 60 - brd, btn_h);
+	INFO(filebrowser, "Changing path to '%s'\n",
+	     (dir.path() + dir.seperator() + value).c_str());
 
-  offset += brd;
+#ifdef WIN32
+	if(above_root && !value.empty())
+	{
+		dir.setPath(value + dir.seperator());
+		value.clear();
+		above_root = false;
+	}
+#endif
 
-  listbox.move(brd, offset);
-  listbox.resize(w - 1 - 2*brd, h - btn_h - 2*brd - offset);
+	if(value.empty() && !dir.isDir() && Directory::exists(dir.path()))
+	{
+		DEBUG(filebrowser, "Selecting file '%s'\n", dir.path().c_str());
+		fileSelectNotifier(dir.path());
+		return;
+	}
 
-  btn_esc.move(brd, h - btn_h - brd);
-  btn_esc.resize((w - 1 - 2*brd) / 2 - brd / 2, btn_h);
+	if(!value.empty() && dir.fileExists(value))
+	{
+	  std::string file = dir.path() + dir.seperator() + value;
+	  DEBUG(filebrowser, "Selecting file '%s'\n", file.c_str());
+	  fileSelectNotifier(file);
+	  return;
+	}
 
-  btn_sel.move(brd + w / 2 - brd / 2, h - btn_h - brd);
-  btn_sel.resize((w - 1 - 2*brd) / 2, btn_h);
-}
+	std::vector<ListBoxBasic::Item> items;
 
-void GUI::FileBrowser::registerFileSelectHandler(void (*handler)(void *,
-                                                                 std::string),
-                                                 void *ptr)
-{
-  prv->filesel_handler = handler;
-  prv->ptr = ptr;
+#ifdef WIN32
+	if(Directory::isRoot(dir.path()) && (value == ".."))
+	{
+		DEBUG(filebrowser, "Showing partitions...\n");
+		for(auto drive : dir.drives())
+		{
+			ListBoxBasic::Item item;
+			item.name = drive.name;
+			item.value = drive.name;
+			items.push_back(item);
+		}
+		above_root = true;
+	}
+	else
+#endif
+	{
+		if(!value.empty() && !dir.cd(value))
+		{
+			DEBUG(filebrowser, "Error changing to '%s'\n",
+			      (dir.path() + dir.seperator() + value).c_str());
+			return;
+		}
+
+		Directory::EntryList entries = dir.entryList();
+
+		if(entries.empty())
+		{
+			dir.cdUp();
+			entries = dir.entryList();
+		}
+
+		DEBUG(filebrowser, "Setting path of lineedit to %s\n", dir.path().c_str());
+		lineedit.setText(dir.path());
+
+		for(auto entry : entries)
+		{
+			ListBoxBasic::Item item;
+			item.name = entry;
+			item.value = entry;
+			items.push_back(item);
+		}
+	}
+
+	listbox.addItems(items);
 }
 
-void GUI::FileBrowser::repaintEvent(GUI::RepaintEvent *e)
-{
-  Painter p(this);
-  p.drawImageStretched(0,0, &back, width(), height());
-}
+} // GUI::
diff --git a/plugingui/filebrowser.h b/plugingui/filebrowser.h
index 6583b53..04b34f6 100644
--- a/plugingui/filebrowser.h
+++ b/plugingui/filebrowser.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_FILEBROWSER_H__
-#define __DRUMGIZMO_FILEBROWSER_H__
+#pragma once
 
 #include "widget.h"
 
@@ -35,41 +34,48 @@
 #include "label.h"
 #include "image.h"
 #include "directory.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class FileBrowser : public Widget {
 public:
-  struct private_data;
+	FileBrowser(Widget *parent);
+	~FileBrowser();
 
-  FileBrowser(Widget *parent);
-  ~FileBrowser();
+	void setPath(const std::string& path);
 
-  void setPath(std::string path);
+	Notifier<const std::string&> fileSelectNotifier; // (const std::string& path)
 
-  bool isFocusable() { return true; }
-
-  void registerFileSelectHandler(void (*handler)(void *, std::string),
-                                 void *ptr);
-
-  virtual void repaintEvent(RepaintEvent *e);
-
-  virtual void resize(int w, int h);
+	// From Widget:
+	bool isFocusable() override { return true; }
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void resize(int w, int h) override;
 
 private:
-  struct private_data *prv;
+	void listSelectionChanged();
+	void selectButtonClicked();
+	void cancelButtonClicked();
+	void handleKeyEvent();
 
-  GUI::Label lbl_path;
-  GUI::LineEdit lineedit;
+	Directory dir;
+#ifdef WIN32
+	bool above_root;
+	bool in_root;
+#endif
 
-  GUI::ListBox listbox;
+	void cancel();
+	void changeDir();
 
-  GUI::Button btn_sel;
-  GUI::Button btn_esc;
+	Label lbl_path;
 
-  Image back;
-};
+	LineEdit lineedit;
+	ListBox listbox;
+
+	Button btn_sel;
+	Button btn_esc;
 
+	Image back;
 };
 
-#endif/*__DRUMGIZMO_FILEBROWSER_H__*/
+} // GUI::
diff --git a/plugingui/font.cc b/plugingui/font.cc
index 828286c..4671f86 100644
--- a/plugingui/font.cc
+++ b/plugingui/font.cc
@@ -11,121 +11,115 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "font.h"
 
-#ifdef X11
-#include <X11/Xlib.h>
-#endif/*X11*/
+namespace GUI {
 
-GUI::Font::Font(std::string fontfile)
-  : img_font(fontfile)
+Font::Font(const std::string& fontfile)
+	: img_font(fontfile)
 {
-  int px = 0;
-  int c;
-  for(c = 0; c < 255 && px < (int)img_font.width(); c++) {
-    character_offset[c] = px + 1;
-    character_pre_bias[c] = 0;
-    character_post_bias[c] = 0;
-    if(c > 0) {
-      character_width[c - 1] =
-        character_offset[c] - character_offset[c - 1] - 1;
-    }
-    px++;
-    GUI::Colour c;
-    while(px < (int)img_font.width()) {
-      c = img_font.getPixel(px, 0);
-      // Find next purple pixel in top row:
-      if(c.red == 1 && c.green == 0 && c.blue == 1 && c.alpha == 1) break;
-      px++;
-    } 
-  }
-  c++;
-  character_width[c - 1] = character_offset[c] - character_offset[c - 1] - 1;
-}
-  
-void GUI::Font::setFace(std::string face)
-{
-  face = face;
-}
+	size_t px = 0;
+	size_t c;
 
-std::string GUI::Font::face()
-{
-  return "";//face;
-}
+	for(c = 0; c < characters.size() && px < img_font.width(); ++c)
+	{
+		auto& character = characters[c];
+		character.offset = px + 1;
 
-void GUI::Font::setSize(size_t points)
-{
-  points = points;
-}
+		if(c > 0)
+		{
+			characters[c - 1].width =
+				character.offset - characters[c - 1].offset - 1;
+		}
 
-size_t GUI::Font::size()
-{
-  return 0;
+		++px;
+
+		Colour pixel;
+		while(px < img_font.width())
+		{
+			pixel = img_font.getPixel(px, 0);
+
+			// Find next purple pixel in top row:
+			if((pixel.red == 1) && (pixel.green == 0) &&
+			   (pixel.blue == 1) && (pixel.alpha == 1))
+			{
+				break;
+			}
+
+			++px;
+		}
+
+		characters[c] = character;
+	}
+
+	++c;
+
+	characters[c - 1].width = characters[c].offset - characters[c - 1].offset - 1;
 }
 
-size_t GUI::Font::textWidth(std::string text)
+size_t Font::textWidth(const std::string& text) const
 {
-  size_t len = 0;
+	size_t len = 0;
 
-  for(size_t i = 0; i < text.length(); i++) {
-    unsigned int cha = text[i];
-    len += character_width[(char)cha] + 1 + character_post_bias[(char)cha];
-  }
+	for(auto cha : text)
+	{
+		auto& character = characters[cha];
+		len += character.width + spacing + character.post_bias;
+	}
 
-  return len;
+	return len;
 }
 
-size_t GUI::Font::textHeight(std::string text)
+size_t Font::textHeight(const std::string& text) const
 {
-  return img_font.height();
+	return img_font.height();
 }
 
-GUI::PixelBufferAlpha *GUI::Font::render(std::string text)
+void Font::setLetterSpacing(int letterSpacing)
 {
-  int border = 1;
-  PixelBufferAlpha *pb =
-    new PixelBufferAlpha(textWidth(text), textHeight(text));
-
-  int x_offset = 0;
-  for(size_t i = 0; i < text.length(); i++) {
-    unsigned int cha = text[i];
-    for(size_t x = 0; x < character_width[(char)cha]; x++) {
-      for(size_t y = 0; y < img_font.height(); y++) {
-        Colour c = img_font.getPixel(x + (character_offset[(char)cha]), y);
-        pb->setPixel(x + x_offset + character_pre_bias[(char)cha], y,
-                     c.red * 255, c.green * 255, c.blue * 255, c.alpha * 255);
-      }
-    }
-    x_offset += character_width[(char)cha] + border +
-      character_post_bias[(char)cha];
-  }
-
-  return pb;
+	spacing = letterSpacing;
 }
 
-#ifdef TEST_FONT
-//deps:
-//cflags:
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
+int Font::letterSpacing() const
+{
+	return spacing;
+}
 
-TEST_END;
+PixelBufferAlpha *Font::render(const std::string& text) const
+{
+	PixelBufferAlpha *pb =
+		new PixelBufferAlpha(textWidth(text), textHeight(text));
+
+	int x_offset = 0;
+	for(auto cha : text)
+	{
+		auto& character = characters[cha];
+		for(size_t x = 0; x < character.width; ++x)
+		{
+			for(size_t y = 0; y < img_font.height(); ++y)
+			{
+				Colour c = img_font.getPixel(x + character.offset, y);
+				pb->setPixel(x + x_offset + character.pre_bias, y,
+				             c.red * 255, c.green * 255, c.blue * 255, c.alpha * 255);
+			}
+		}
+		x_offset += character.width + spacing + character.post_bias;
+	}
+
+	return pb;
+}
 
-#endif/*TEST_FONT*/
+} // GUI::
diff --git a/plugingui/font.h b/plugingui/font.h
index b47fbde..4e4c7ba 100644
--- a/plugingui/font.h
+++ b/plugingui/font.h
@@ -11,24 +11,23 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_FONT_H__
-#define __DRUMGIZMO_FONT_H__
+#pragma once
 
 #include <string>
-#include <map>
+#include <array>
 
 #include "pixelbuffer.h"
 #include "image.h"
@@ -37,27 +36,29 @@ namespace GUI {
 
 class Font {
 public:
-  Font(std::string fontfile = ":font.png");
-  
-  void setFace(std::string face);
-  std::string face();
+	Font(const std::string& fontfile = ":font.png");
 
-  void setSize(size_t points);
-  size_t size();
+	size_t textWidth(const std::string& text) const;
+	size_t textHeight(const std::string& text = "") const;
 
-  size_t textWidth(std::string text);
-  size_t textHeight(std::string text = "");
+	void setLetterSpacing(int letterSpacing);
+	int letterSpacing() const;
 
-  PixelBufferAlpha *render(std::string text);
+	PixelBufferAlpha *render(const std::string& text) const;
 
 private:
-  Image img_font;
+	Image img_font;
 
-  std::map<char, int> character_offset;
-  std::map<char, size_t> character_width;
-  std::map<char, int> character_pre_bias;
-  std::map<char, int> character_post_bias;
-};
+	class Character {
+	public:
+		int offset{0};
+		size_t width{0};
+		int pre_bias{0};
+		int post_bias{0};
+	};
 
+	std::array<Character, 255> characters;
+	int spacing{1};
 };
-#endif/*__DRUMGIZMO_FONT_H__*/
+
+} // GUI::
diff --git a/plugingui/guievent.h b/plugingui/guievent.h
index 4732101..133b630 100644
--- a/plugingui/guievent.h
+++ b/plugingui/guievent.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_GUI_EVENT_H__
-#define __DRUMGIZMO_GUI_EVENT_H__
+#pragma once
 
 #include <unistd.h>
 
@@ -38,104 +37,117 @@
 
 namespace GUI {
 
+enum class EventType {
+	mouseMove,
+	repaint,
+	button,
+	scroll,
+	key,
+	close,
+	resize
+};
+
 class Event {
 public:
-  typedef enum {
-    MouseMove,
-    Repaint,
-    Button,
-    Scroll,
-    Key,
-    Close,
-    Resize
-  } Type;
-  virtual ~Event() {}
-
-  virtual Type type() = 0;
+	virtual ~Event() {}
+
+	virtual EventType type() = 0;
 
 #ifdef X11
-  ::Window window_id;
+	::Window window_id;
 #endif/*X11*/
 };
 
 class MouseMoveEvent : public Event {
 public:
-  Type type() { return MouseMove; }
+	EventType type() { return EventType::mouseMove; }
+
+	int x;
+	int y;
+};
+
+
+enum class Direction {
+	up,
+	down,
+};
 
-  int x;
-  int y;
+enum class MouseButton {
+	right,
+	middle,
+	left,
 };
 
 class ButtonEvent : public Event {
 public:
-  Type type() { return Button; }
+	EventType type() { return EventType::button; }
 
-  int x;
-  int y;
+	int x;
+	int y;
 
-  int direction;
-  int button;
-  int doubleclick;
+	Direction direction;
+	MouseButton button;
+
+	bool doubleClick;
 };
 
 class ScrollEvent : public Event {
 public:
-  Type type() { return Scroll; }
+	EventType type() { return EventType::scroll; }
 
-  int x;
-  int y;
+	int x;
+	int y;
 
-  int delta;
+	int delta;
 };
 
 class RepaintEvent : public Event {
 public:
-  Type type() { return Repaint; }
+	EventType type() { return EventType::repaint; }
+
+	int x;
+	int y;
+	size_t width;
+	size_t height;
+};
 
-  int x;
-  int y;
-  size_t width;
-  size_t height;
+enum class Key {
+	unknown,
+	left,
+	right,
+	up,
+	down,
+	deleteKey,
+	backspace,
+	home,
+	end,
+	pageDown,
+	pageUp,
+	enter,
+	character, //!< The actual character is stored in KeyEvent::text
 };
 
 class KeyEvent : public Event {
 public:
-  Type type() { return Key; }
-
-  int direction;
-  int keycode;
-  std::string text;
-
-  enum {
-    KEY_UNKNOWN   =-1,
-    KEY_LEFT      = 1,
-    KEY_RIGHT     = 2,
-    KEY_UP        = 3,
-    KEY_DOWN      = 4,
-    KEY_DELETE    = 5,
-    KEY_BACKSPACE = 6,
-    KEY_HOME      = 7,
-    KEY_END       = 8,
-    KEY_PGDOWN    = 9,
-    KEY_PGUP      = 10,
-    KEY_ENTER     = 11,
-    KEY_CHARACTER = 0xffff // character data is stored in 'text'
-  };
+	EventType type() { return EventType::key; }
+
+	Direction direction;
+
+	Key keycode;
+	std::string text;
 };
 
 class CloseEvent : public Event {
 public:
-  Type type() { return Close; }
+	EventType type() { return EventType::close; }
 };
 
 class ResizeEvent : public Event {
 public:
-  Type type() { return Resize; }
-
-  size_t width;
-  size_t height;
-};
+	EventType type() { return EventType::resize; }
 
+	size_t width;
+	size_t height;
 };
 
-#endif/*__DRUMGIZMO_GUI_EVENT_H__*/
+} // GUI::
diff --git a/plugingui/image.cc b/plugingui/image.cc
index 65b8242..250dc60 100644
--- a/plugingui/image.cc
+++ b/plugingui/image.cc
@@ -11,109 +11,115 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "image.h"
 
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdint.h>
+#include <cstring>
+#include <cstdint>
+#include <cstdlib>
 
 #include <hugin.hpp>
 
 #include "resource.h"
-// http://blog.hammerian.net/2009/reading-png-images-from-memory/
-
 #include "lodepng/lodepng.h"
 
-GUI::Image::Image(const char* data, size_t size)
+namespace GUI {
+
+Image::Image(const char* data, size_t size)
 {
-  load(data, size);
+	load(data, size);
 }
 
-GUI::Image::Image(std::string filename)
+Image::Image(const std::string& filename)
 {
-  GUI::Resource rc(filename);
-  load(rc.data(), rc.size());
+	Resource rc(filename);
+	load(rc.data(), rc.size());
 }
 
-GUI::Image::~Image()
+Image::~Image()
 {
-  free(image_data);
+	std::free(image_data);
 }
 
-void GUI::Image::setError(int err)
+void Image::setError()
 {
-  GUI::Resource rc(":png_error");
+	Resource rc(":png_error");
 
-  const unsigned char *p = (const unsigned char *)rc.data();
+	const unsigned char* p = (const unsigned char*)rc.data();
 
-  uint32_t iw, ih;
+	std::uint32_t iw, ih;
 
-  memcpy(&iw, p, sizeof(uint32_t)); p += sizeof(uint32_t);
-  memcpy(&ih, p, sizeof(uint32_t)); p += sizeof(uint32_t);
+	std::memcpy(&iw, p, sizeof(uint32_t));
+	p += sizeof(uint32_t);
 
-  w = iw;
-  h = ih;
+	std::memcpy(&ih, p, sizeof(uint32_t));
+	p += sizeof(uint32_t);
 
-  DEBUG(image, "w:%d, h:%d\n", (int)w, (int)h);
+	_width = iw;
+	_height = ih;
 
-  image_data = (unsigned char*)malloc(rc.size() - 8);
-  memcpy(image_data, p, rc.size() - 8);
+	size_t image_size = rc.size() - (sizeof(iw) + sizeof(ih));
+	image_data = (unsigned char*)std::malloc(image_size);
+	memcpy(image_data, p, image_size);
 }
 
-void GUI::Image::load(const char* data, size_t size)
+void Image::load(const char* data, size_t size)
 {
-  //unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h,
-  //                          const unsigned char* in, size_t insize);
-  unsigned iw, ih;
-  unsigned res = lodepng_decode32((unsigned char**)&image_data, &iw, &ih,
-                                  (const unsigned char*)data, size);
-  w = iw;
-  h = ih;
-
-  if(res != 0) {
-    ERR(image, "[read_png_file] Error during init_io");
-    setError(3);
-    return;
-  }
+	unsigned int iw, ih;
+	unsigned int res = lodepng_decode32((unsigned char**)&image_data,
+	                                    &iw, &ih,
+	                                    (const unsigned char*)data, size);
+
+	_width = iw;
+	_height = ih;
+
+	if(res != 0)
+	{
+		ERR(image, "Error in lodepng_decode32: %d", res);
+		setError();
+		return;
+	}
 }
 
-size_t GUI::Image::width()
+size_t Image::width() const
 {
-  return w;
+	return _width;
 }
 
-size_t GUI::Image::height()
+size_t Image::height() const
 {
-  return h;
+	return _height;
 }
 
-GUI::Colour GUI::Image::getPixel(size_t x, size_t y)
+Colour Image::getPixel(size_t x, size_t y) const
 {
-  if(x > width() || y > height()) return GUI::Colour(0,0,0,0);
-  unsigned char *ptr = &image_data[(x + y * width()) * 4];
-  float r = ptr[0];
-  float g = ptr[1];
-  float b = ptr[2];
-  float a = ptr[3];
-  GUI::Colour c(r / 255.0,
-                g / 255.0,
-                b / 255.0,
-                a / 255.0);
-  return c;
+	if(x > _width || y > _height)
+	{
+		return Colour(0,0,0,0);
+	}
+
+	unsigned char* ptr = &image_data[(x + y * width()) * 4];
+
+	float r = ptr[0];
+	float g = ptr[1];
+	float b = ptr[2];
+	float a = ptr[3];
+
+	Colour c(r / 255.0, g / 255.0, b / 255.0, a / 255.0);
+
+	return c;
 }
+
+} // GUI::
diff --git a/plugingui/image.h b/plugingui/image.h
index cec1518..92bd181 100644
--- a/plugingui/image.h
+++ b/plugingui/image.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_IMAGE_H__
-#define __DRUMGIZMO_IMAGE_H__
+#pragma once
 
 #include <string>
 
@@ -36,24 +35,22 @@ namespace GUI {
 
 class Image {
 public:
-  Image(const char* data, size_t size);
-  Image(std::string filename);
-  ~Image();
+	Image(const char* data, size_t size);
+	Image(const std::string& filename);
+	~Image();
 
-  size_t width();
-  size_t height();
+	size_t width() const;
+	size_t height() const;
 
-  Colour getPixel(size_t x, size_t y);
+	Colour getPixel(size_t x, size_t y) const;
 
 private:
-  void setError(int err);
+	void setError();
 
-  void load(const char* data, size_t size);
+	void load(const char* data, size_t size);
 
-  size_t w, h;
-  unsigned char *image_data;
+	size_t _width, _height;
+	unsigned char* image_data;
 };
 
-};
-
-#endif/*__DRUMGIZMO_IMAGE_H__*/
+} // GUI::
diff --git a/plugingui/knob.cc b/plugingui/knob.cc
index ca861b5..845d95a 100644
--- a/plugingui/knob.cc
+++ b/plugingui/knob.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -30,171 +30,174 @@
 
 #include <hugin.hpp>
 #include <stdio.h>
+
+// M_PI is not defined in math.h if __STRICT_ANSI__ is defined.
+#ifdef __STRICT_ANSI__
+#undef __STRICT_ANSI__
+#endif
 #include <math.h>
 
-GUI::Knob::Knob(Widget *parent)
-  : GUI::Widget(parent), img_knob(":knob.png")
+namespace GUI {
+
+Knob::Knob(Widget *parent)
+	: Widget(parent)
+	, img_knob(":knob.png")
 {
-  state = up;
+	state = up;
 
-  val = 0.0;
-  maximum = 1.0;
-  minimum = 0.0;
-  mouse_offset_x = 0;
+	maximum = 1.0;
+	minimum = 0.0;
 
-  handler = NULL;
-  ptr = NULL;
-}
+	currentValue = minimum;
 
-void GUI::Knob::setValue(float v)
-{
-  val = v;
-  if(handler) handler(ptr);
-  repaintEvent(NULL);
+	mouse_offset_x = 0;
 }
 
-float GUI::Knob::value()
+void Knob::setValue(float value)
 {
-  return val;
+	internalSetValue(value);
 }
 
-void GUI::Knob::registerClickHandler(void (*handler)(void *), void *ptr)
+float Knob::value()
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	return currentValue;
 }
 
-void GUI::Knob::scrollEvent(ScrollEvent *e)
+void Knob::scrollEvent(ScrollEvent* scrollEvent)
 {
-  val -= e->delta / 200.0;
-  if(val < 0) val = 0;
-  if(val > 1) val = 1;
-
-  if(handler) handler(ptr);
-
-  repaintEvent(NULL);
+	float value = currentValue - (scrollEvent->delta / 200.0);
+	internalSetValue(value);
 }
 
-void GUI::Knob::mouseMoveEvent(MouseMoveEvent *e)
+void Knob::mouseMoveEvent(MouseMoveEvent* mouseMoveEvent)
 {
-  if(state == down) {
-    if(mouse_offset_x == (e->x + -1*e->y)) return;
-
-    float dval = mouse_offset_x - (e->x + -1*e->y);
-    val -= dval / 300.0;
+	if(state == down)
+	{
+		if(mouse_offset_x == (mouseMoveEvent->x + (-1 * mouseMoveEvent->y)))
+		{
+			return;
+		}
 
-    if(val < 0) val = 0;
-    if(val > 1) val = 1;
+		float dval =
+			mouse_offset_x - (mouseMoveEvent->x + (-1 * mouseMoveEvent->y));
+		float value = currentValue - (dval / 300.0);
 
-    if(handler) handler(ptr);
-    repaintEvent(NULL);
+		internalSetValue(value);
 
-    mouse_offset_x = e->x + -1*e->y;
-  }
+		mouse_offset_x = mouseMoveEvent->x + (-1 * mouseMoveEvent->y);
+	}
 }
 
-void GUI::Knob::keyEvent(KeyEvent *e)
+void Knob::keyEvent(KeyEvent* keyEvent)
 {
-  if(e->direction != -1) return;
-
-  switch(e->keycode) {
-  case GUI::KeyEvent::KEY_UP:
-    val += 0.01;
-    break;
-  case GUI::KeyEvent::KEY_DOWN:
-    val -= 0.01;
-    break;
-  case GUI::KeyEvent::KEY_RIGHT:
-    val += 0.01;
-    break;
-  case GUI::KeyEvent::KEY_LEFT:
-    val -= 0.01;
-    break;
-  case GUI::KeyEvent::KEY_HOME:
-    val = 0;
-    break;
-  case GUI::KeyEvent::KEY_END:
-    val = 1;
-    break;
-  default:
-    break;
-  }
-
-  if(val < 0) val = 0;
-  if(val > 1) val = 1;
- 
-  repaintEvent(NULL);
+	if(keyEvent->direction != Direction::up)
+	{
+		return;
+	}
+
+	float value = currentValue;
+	switch(keyEvent->keycode) {
+	case Key::up:
+		value += 0.01;
+		break;
+	case Key::down:
+		value -= 0.01;
+		break;
+	case Key::right:
+		value += 0.01;
+		break;
+	case Key::left:
+		value -= 0.01;
+		break;
+	case Key::home:
+		value = 0;
+		break;
+	case Key::end:
+		value = 1;
+		break;
+	default:
+		break;
+	}
+
+	internalSetValue(value);
 }
 
-void GUI::Knob::buttonEvent(ButtonEvent *e)
+void Knob::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(e->direction == 1) {
-    state = down;
-    mouse_offset_x = e->x + -1*e->y;
-    if(handler) handler(ptr);
-    repaintEvent(NULL);
-  }
-  if(e->direction == -1) {
-    state = up;
-    mouse_offset_x = e->x + -1*e->y;
-    repaintEvent(NULL);
-    clicked();
-    if(handler) handler(ptr);
-  }
+	if(buttonEvent->direction == Direction::down)
+	{
+		state = down;
+		mouse_offset_x = buttonEvent->x + (-1 * buttonEvent->y);
+	}
+
+	if(buttonEvent->direction == Direction::up)
+	{
+		state = up;
+		mouse_offset_x = buttonEvent->x + (-1 * buttonEvent->y);
+		clicked();
+	}
 }
 
-void GUI::Knob::repaintEvent(GUI::RepaintEvent *e)
+void Knob::repaintEvent(RepaintEvent* repaintEvent)
 {
-  int diameter = (width()>height()?height():width());
-  int radius = diameter / 2;
-  int center_x = width() / 2;
-  int center_y = height() / 2;
-
-  Painter p(this);
-
-  p.clear();
-  p.drawImageStretched(0, 0, &img_knob, diameter, diameter);
-
-  char buf[64];
-  sprintf(buf, "%.2f", val * maximum);
-  Font font;
-  p.drawText(center_x - font.textWidth(buf) / 2 + 1,
-             center_y + font.textHeight(buf) / 2 + 1, font, buf);
-
-  double padval = val * 0.8 + 0.1; // Make it start from 20% and stop at 80%
-
-  double from_x = sin((-1 * padval + 1) * 2 * M_PI) * radius * 0.6;
-  double from_y = cos((-1 * padval + 1) * 2 * M_PI) * radius * 0.6;
-
-  double to_x = sin((-1 * padval + 1) * 2 * M_PI) * radius * 0.8;
-  double to_y = cos((-1 * padval + 1) * 2 * M_PI) * radius * 0.8;
-
-  // Draw "fat" line by drawing 9 lines with moved start/ending points.
-  p.setColour(Colour(1, 0, 0, 1));
-  for(int _x = -1; _x < 2; _x++) {
-    for(int _y = -1; _y < 2; _y++) {
-      p.drawLine(from_x + center_x + _x,
-                 from_y + center_y + _y,
-                 to_x + center_x + _x,
-                 to_y + center_y + _y);
-
-    }
-  }
+	int diameter = (width()>height()?height():width());
+	int radius = diameter / 2;
+	int center_x = width() / 2;
+	int center_y = height() / 2;
+
+	Painter p(*this);
+
+	p.clear();
+	p.drawImageStretched(0, 0, img_knob, diameter, diameter);
+
+	char buf[64];
+	sprintf(buf, "%.2f", currentValue * maximum);
+	p.drawText(center_x - font.textWidth(buf) / 2 + 1,
+	           center_y + font.textHeight(buf) / 2 + 1, font, buf);
+
+	// Make it start from 20% and stop at 80%
+	double padval = currentValue * 0.8 + 0.1;
+
+	double from_x = sin((-1 * padval + 1) * 2 * M_PI) * radius * 0.6;
+	double from_y = cos((-1 * padval + 1) * 2 * M_PI) * radius * 0.6;
+
+	double to_x = sin((-1 * padval + 1) * 2 * M_PI) * radius * 0.8;
+	double to_y = cos((-1 * padval + 1) * 2 * M_PI) * radius * 0.8;
+
+	// Draw "fat" line by drawing 9 lines with moved start/ending points.
+	p.setColour(Colour(1, 0, 0, 1));
+	for(int _x = -1; _x < 2; _x++)
+	{
+		for(int _y = -1; _y < 2; _y++)
+		{
+			p.drawLine(from_x + center_x + _x,
+			           from_y + center_y + _y,
+			           to_x + center_x + _x,
+			           to_y + center_y + _y);
+		}
+	}
 }
 
-#ifdef TEST_KNOB
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
+void Knob::internalSetValue(float value)
+{
+	if(value < minimum)
+	{
+	  value = minimum;
+	}
+
+	if(value > maximum)
+	{
+		value = maximum;
+	}
+
+	if(value == currentValue)
+	{
+		return;
+	}
+
+	currentValue = value;
+	valueChangedNotifier(currentValue);
+	repaintEvent(nullptr);
+}
 
-#endif/*TEST_KNOB*/
+} // GUI::
diff --git a/plugingui/knob.h b/plugingui/knob.h
index a6af499..10d91d6 100644
--- a/plugingui/knob.h
+++ b/plugingui/knob.h
@@ -11,70 +11,70 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_KNOB_H__
-#define __DRUMGIZMO_KNOB_H__
+#pragma once
 
 #include "widget.h"
-
 #include "image.h"
+#include "font.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class Knob : public Widget {
 public:
-  Knob(Widget *parent);
+	Knob(Widget *parent);
 
-  bool catchMouse() { return true; }
-  bool isFocusable() { return true; }
+	// From Widget:
+	bool catchMouse() override { return true; }
+	bool isFocusable() override { return true; }
 
-  void setValue(float value);
-  float value();
+	void setValue(float value);
+	float value();
 
-  void registerClickHandler(void (*handler)(void *), void *ptr);
+	Notifier<float> valueChangedNotifier; // (float newValue)
 
-  //protected:
-  virtual void clicked() {}
+protected:
+	virtual void clicked() {}
 
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-  virtual void mouseMoveEvent(MouseMoveEvent *e);
-  virtual void scrollEvent(ScrollEvent *e);
-  virtual void keyEvent(KeyEvent *e);
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent* buttonEvent) override;
+	virtual void mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) override;
+	virtual void scrollEvent(ScrollEvent* scrollEvent) override;
+	virtual void keyEvent(KeyEvent* keyEvent) override;
 
 private:
-  typedef enum {
-    up,
-    down
-  } state_t;
-
-  float val;
-  float maximum;
-  float minimum;
+	//! Sets the internal value and sends out the changed notification.
+	void internalSetValue(float value);
 
-  state_t state;
+	typedef enum {
+		up,
+		down
+	} state_t;
 
-  GUI::Image img_knob;
+	state_t state;
 
-  void (*handler)(void *);
-  void *ptr;
+	float currentValue;
+	float maximum;
+	float minimum;
 
-  int mouse_offset_x;
-
-};
+	Image img_knob;
 
+	int mouse_offset_x;
+	Font font;
 };
 
-#endif/*__DRUMGIZMO_KNOB_H__*/
+} // GUI::
diff --git a/plugingui/label.cc b/plugingui/label.cc
index bcc7005..2ff4f36 100644
--- a/plugingui/label.cc
+++ b/plugingui/label.cc
@@ -11,59 +11,69 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "label.h"
 
 #include "painter.h"
+#include "guievent.h"
 
-GUI::Label::Label(GUI::Widget *parent) : GUI::Widget(parent)
+namespace GUI {
+
+Label::Label(Widget *parent)
+	: Widget(parent)
 {
 }
 
-void GUI::Label::setText(std::string text)
+void Label::setText(const std::string& text)
 {
-  _text = text;
-  repaintEvent(NULL);
+	_text = text;
+	repaintEvent(nullptr);
 }
 
-void GUI::Label::repaintEvent(GUI::RepaintEvent *e)
+void Label::setAlignment(TextAlignment alignment)
 {
-  Painter p(this);
-
-  p.clear();
-
-  p.setColour(Colour(1));
+	this->alignment = alignment;
+}
 
-  Font font(":fontemboss.png");
-  p.drawText(10, (height() + font.textHeight()) / 2, font, _text, true);
+void Label::resizeToText()
+{
+	resize(font.textWidth(_text) + border, font.textHeight());
 }
 
+void Label::repaintEvent(RepaintEvent* repaintEvent)
+{
+	Painter p(*this);
 
-#ifdef TEST_LABEL
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
+	p.clear();
 
-TEST_BEGIN;
+	p.setColour(Colour(1));
 
-// TODO: Put some testcode here (see test.h for usable macros).
+	int offset = 0;
+	switch(alignment) {
+	case TextAlignment::left:
+		offset = border;
+		break;
+	case TextAlignment::center:
+		offset = (width() - font.textWidth(_text)) / 2;
+		break;
+	case TextAlignment::right:
+		offset = width() - font.textWidth(_text) - border;
+		break;
+	}
 
-TEST_END;
+	p.drawText(offset, (height() + font.textHeight()) / 2, font, _text, true);
+}
 
-#endif/*TEST_LABEL*/
+} // GUI::
diff --git a/plugingui/label.h b/plugingui/label.h
index 50f02d6..019df17 100644
--- a/plugingui/label.h
+++ b/plugingui/label.h
@@ -11,43 +11,54 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LABEL_H__
-#define __DRUMGIZMO_LABEL_H__
+#pragma once
 
 #include "widget.h"
 
-#include <string>
+#include "font.h"
 
-#include "guievent.h"
+#include <string>
 
 namespace GUI {
 
+enum class TextAlignment {
+	left,
+	center,
+	right,
+};
+
 class Label : public Widget {
 public:
-  Label(Widget *parent);
+	Label(Widget *parent);
 
-  void setText(std::string text);
+	void setText(const std::string& text);
 
-  //protected:
-  virtual void repaintEvent(RepaintEvent *e);
+	void setAlignment(TextAlignment alignment);
 
-private:
-  std::string _text;
-};
+	void resizeToText();
 
+protected:
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+
+private:
+	std::string _text;
+	Font font{":fontemboss.png"};
+	TextAlignment alignment{TextAlignment::left};
+	int border{0};
 };
 
-#endif/*__DRUMGIZMO_LABEL_H__*/
+} // GUI::
diff --git a/plugingui/layout.cc b/plugingui/layout.cc
new file mode 100644
index 0000000..1b56315
--- /dev/null
+++ b/plugingui/layout.cc
@@ -0,0 +1,219 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            layout.cc
+ *
+ *  Sat Mar 21 15:12:36 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "layout.h"
+
+#include "widget.h"
+
+namespace GUI {
+
+LayoutItem::LayoutItem()
+	: parent(nullptr)
+{
+}
+
+LayoutItem::~LayoutItem()
+{
+	setLayoutParent(nullptr); // Will disconnect from layout if any.
+}
+
+void LayoutItem::setLayoutParent(Layout *p)
+{
+	if(this->parent)
+	{
+		this->parent->removeItem(this);
+	}
+
+	this->parent = p;
+}
+
+Layout::Layout(LayoutItem *parent)
+	: parent(parent)
+{
+	auto widget = dynamic_cast<Widget*>(parent);
+	if(widget)
+	{
+		CONNECT(widget, sizeChangeNotifier, this, &Layout::sizeChanged);
+	}
+}
+
+void Layout::addItem(LayoutItem *item)
+{
+	items.push_back(item);
+	item->setLayoutParent(this);
+	layout();
+}
+
+void Layout::removeItem(LayoutItem *item)
+{
+	LayoutItemList::iterator i = items.begin();
+	while(i != items.end())
+	{
+		if(*i == item)
+		{
+			i = items.erase(i);
+			continue;
+		}
+		++i;
+	}
+
+	layout();
+}
+
+void Layout::sizeChanged(int width, int height)
+{
+	layout();
+}
+
+//
+// BoxLayout
+//
+
+BoxLayout::BoxLayout(LayoutItem *parent)
+	: Layout(parent)
+{
+}
+
+void BoxLayout::setResizeChildren(bool resizeChildren)
+{
+	this->resizeChildren = resizeChildren;
+	layout();
+}
+
+void BoxLayout::setSpacing(size_t spacing)
+{
+	this->spacing = spacing;
+	layout();
+}
+
+//
+// VBoxLayout
+//
+
+VBoxLayout::VBoxLayout(LayoutItem *parent)
+	: BoxLayout(parent)
+	, align(HAlignment::center)
+{
+}
+
+void VBoxLayout::layout()
+{
+	size_t y = 0;
+	size_t w = parent->width();
+	//size_t h = parent->height() / items.size();
+
+	LayoutItemList::iterator i = items.begin();
+	while(i != items.end())
+	{
+		LayoutItem *item = *i;
+		if(resizeChildren)
+		{
+			item->resize(w, parent->height() / items.size());
+		}
+
+		size_t x = 0;
+		switch(align) {
+		case HAlignment::left:
+			x = 0;
+			break;
+		case HAlignment::center:
+			x = (w / 2) - (item->width() / 2);
+			break;
+		case HAlignment::right:
+			x = w - item->width();
+			break;
+		}
+
+		item->move(x, y);
+		y += item->height() + spacing;
+		++i;
+	}
+}
+
+void VBoxLayout::setHAlignment(HAlignment alignment)
+{
+	align = alignment;
+}
+
+//
+// HBoxLayout
+//
+
+HBoxLayout::HBoxLayout(LayoutItem *parent)
+	: BoxLayout(parent)
+	, align(VAlignment::center)
+{
+}
+
+void HBoxLayout::layout()
+{
+	if(items.empty())
+	{
+		return;
+	}
+
+//	size_t w = parent->width() / items.size();
+	size_t h = parent->height();
+	size_t x = 0;
+
+	LayoutItemList::iterator i = items.begin();
+	while(i != items.end())
+	{
+		LayoutItem *item = *i;
+		if(resizeChildren)
+		{
+			item->resize(parent->width() / items.size(), h);
+			item->move(x, 0);
+		}
+		else
+		{
+			size_t y = 0;
+			switch(align) {
+			case VAlignment::top:
+				y = 0;
+				break;
+			case VAlignment::center:
+				y = (h / 2) - (item->height() / 2);
+				break;
+			case VAlignment::bottom:
+				y = h - item->height();
+				break;
+			}
+
+			int diff = 0;//w - item->width();
+			item->move(x + diff / 2, y);
+		}
+		x += item->width() + spacing;
+		++i;
+	}
+}
+
+void HBoxLayout::setVAlignment(VAlignment alignment)
+{
+	align = alignment;
+}
+
+} // GUI::
diff --git a/plugingui/layout.h b/plugingui/layout.h
new file mode 100644
index 0000000..55cc93f
--- /dev/null
+++ b/plugingui/layout.h
@@ -0,0 +1,135 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            layout.h
+ *
+ *  Sat Mar 21 15:12:36 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <list>
+#include <cstdlib>
+
+#include "notifier.h"
+
+namespace GUI {
+
+class Layout;
+
+class LayoutItem {
+public:
+	LayoutItem();
+	virtual ~LayoutItem();
+
+	void setLayoutParent(Layout* parent);
+
+	virtual void resize(int width, int height) = 0;
+	virtual void move(size_t x, size_t y) = 0;
+	virtual int x() = 0;
+	virtual int y() = 0;
+	virtual size_t width() = 0;
+	virtual size_t height() = 0;
+
+private:
+	Layout* parent;
+};
+
+//! \brief Abtract Layout class.
+class Layout : public Listener
+{
+public:
+	Layout(LayoutItem *parent);
+	virtual ~Layout() {}
+
+	virtual void addItem(LayoutItem *item);
+	virtual void removeItem(LayoutItem *item);
+
+	//! \brief Reimplement this method to create a new Layout rule.
+	virtual void layout() = 0;
+
+protected:
+	void sizeChanged(int width, int height);
+
+	LayoutItem *parent;
+	typedef std::list<LayoutItem *> LayoutItemList;
+	LayoutItemList items;
+};
+
+//! \brief Abstract box layout
+class BoxLayout : public Layout {
+public:
+	BoxLayout(LayoutItem *parent);
+
+	//! \brief Set to false to only move the items, not scale them.
+	void setResizeChildren(bool resize_children);
+
+	void setSpacing(size_t spacing);
+
+	// From Layout:
+	virtual void layout() override  = 0;
+
+protected:
+	bool resizeChildren{false};
+	size_t spacing{0};
+};
+
+enum class HAlignment {
+	left,
+	center,
+	right,
+};
+
+//! \brief A Layout that lays out its elements vertically.
+class VBoxLayout : public BoxLayout {
+public:
+	VBoxLayout(LayoutItem *parent);
+
+	void setHAlignment(HAlignment alignment);
+
+	// From BoxLayout:
+	virtual void layout() override;
+
+protected:
+	HAlignment align;
+};
+
+enum class VAlignment {
+	top,
+	center,
+	bottom,
+};
+
+//! \brief A Layout that lays out its elements vertically.
+class HBoxLayout : public BoxLayout {
+public:
+	HBoxLayout(LayoutItem *parent);
+
+	void setVAlignment(VAlignment alignment);
+
+	// From BoxLayout:
+	virtual void layout() override;
+
+protected:
+	VAlignment align;
+};
+
+} // GUI::
diff --git a/plugingui/led.cc b/plugingui/led.cc
index d26a0de..03ea661 100644
--- a/plugingui/led.cc
+++ b/plugingui/led.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,79 +28,70 @@
 
 #include "painter.h"
 
-GUI::LED::LED(Widget *parent)
-  : GUI::Widget(parent)
+namespace GUI {
+
+LED::LED(Widget *parent)
+	: Widget(parent)
+	, state(Off)
 {
-  state = off;
 }
 
-void GUI::LED::setState(GUI::LED::state_t state)
+void LED::setState(state_t state)
 {
-  if(this->state != state) {
-    this->state = state;
-    repaintEvent(NULL);
-  }
+	if(this->state != state)
+	{
+		this->state = state;
+		repaintEvent(nullptr);
+	}
 }
 
-void GUI::LED::repaintEvent(GUI::RepaintEvent *e)
+void LED::repaintEvent(RepaintEvent* repaintEvent)
 {
-  size_t h = height() - 1;
-  size_t w = width() - 1;
+	size_t h = height() - 1;
+	size_t w = width() - 1;
 
-  Painter p(this);
-  float alpha = 0.9;
-  switch(state) {
-  case red:
-    p.setColour(Colour(1, 0, 0,alpha));
-    break;
-  case green:
-    p.setColour(Colour(0, 1, 0, alpha));
-    break;
-  case blue:
-    p.setColour(Colour(0, 0, 1, alpha));
-    break;
-  case off:
-    p.setColour(Colour(0.2, 0.2, 0.2, alpha));
-    break;
-  }
+	Painter p(*this);
+	float alpha = 0.9;
+	switch(state) {
+	case Red:
+		p.setColour(Colour(1, 0, 0,alpha));
+		break;
+	case Green:
+		p.setColour(Colour(0, 1, 0, alpha));
+		break;
+	case Blue:
+		p.setColour(Colour(0, 0, 1, alpha));
+		break;
+	case Off:
+		p.setColour(Colour(0.2, 0.2, 0.2, alpha));
+		break;
+	}
 
-  size_t size = w / 2;
-  if(h / 2 < size) size = h / 2;
-  p.drawFilledCircle(w/2, h/2, size);
+	size_t size = w / 2;
+	if((h / 2) < size)
+	{
+		size = h / 2;
+	}
+	p.drawFilledCircle(w / 2, h / 2, size);
 
-  switch(state) {
-  case red:
-    p.setColour(Colour(0.4, 0, 0,alpha));
-    break;
-  case green:
-    p.setColour(Colour(0, 0.4, 0, alpha));
-    break;
-  case blue:
-    p.setColour(Colour(0, 0, 0.4, alpha));
-    break;
-  case off:
-    p.setColour(Colour(0.1, 0.1, 0.1, alpha));
-    break;
-  }
-  p.drawCircle(w/2, h/2, size);
+	switch(state) {
+	case Red:
+		p.setColour(Colour(0.4, 0, 0, alpha));
+		break;
+	case Green:
+		p.setColour(Colour(0, 0.4, 0, alpha));
+		break;
+	case Blue:
+		p.setColour(Colour(0, 0, 0.4, alpha));
+		break;
+	case Off:
+		p.setColour(Colour(0.1, 0.1, 0.1, alpha));
+		break;
+	}
+	p.drawCircle(w / 2, h / 2, size);
 
-  p.setColour(Colour(1,alpha));
-  p.drawFilledCircle(w/3, h/3, size / 6);
+	p.setColour(Colour(1, alpha));
+	p.drawFilledCircle(w / 3, h / 3, size / 6);
 }
 
-#ifdef TEST_LED
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_LED*/
+} // GUI::
diff --git a/plugingui/led.h b/plugingui/led.h
index 7bbd59a..14ab6ef 100644
--- a/plugingui/led.h
+++ b/plugingui/led.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LED_H__
-#define __DRUMGIZMO_LED_H__
+#pragma once
 
 #include "widget.h"
 
@@ -33,24 +32,23 @@ namespace GUI {
 
 class LED : public Widget {
 public:
-  typedef enum {
-    red,
-    green,
-    blue,
-    off
-  } state_t;
+	typedef enum {
+		Red,
+		Green,
+		Blue,
+		Off
+	} state_t;
 
-  LED(Widget *parent);
+	LED(Widget *parent);
 
-  void setState(state_t state);
+	void setState(state_t state);
 
-  //protected:
-  void repaintEvent(RepaintEvent *e);
+protected:
+	// From Widget:
+	void repaintEvent(RepaintEvent* repaintEvent) override;
 
 private:
-  state_t state;
+	state_t state;
 };
 
-};
-
-#endif/*__DRUMGIZMO_LED_H__*/
+} // GUI::
diff --git a/plugingui/lineedit.cc b/plugingui/lineedit.cc
index 5e1eb9b..64197b6 100644
--- a/plugingui/lineedit.cc
+++ b/plugingui/lineedit.cc
@@ -11,229 +11,288 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "lineedit.h"
 
 #include <stdio.h>
-
-#include "window.h"
-
-#include <assert.h>
-
 #include <hugin.hpp>
 
 #define BORDER 10
 
-GUI::LineEdit::LineEdit(Widget *parent)
-  : GUI::Widget(parent)
+namespace GUI {
+
+LineEdit::LineEdit(Widget *parent)
+	: Widget(parent)
 {
-  pos = 0;
-  offsetpos = 0;
-  setReadOnly(false);
-
-  box.topLeft     = new Image(":widget_tl.png");
-  box.top         = new Image(":widget_t.png");
-  box.topRight    = new Image(":widget_tr.png");
-  box.left        = new Image(":widget_l.png");
-  box.right       = new Image(":widget_r.png");
-  box.bottomLeft  = new Image(":widget_bl.png");
-  box.bottom      = new Image(":widget_b.png");
-  box.bottomRight = new Image(":widget_br.png");
-  box.center      = new Image(":widget_c.png");
-
-  handler = NULL;
+	setReadOnly(false);
+
+	box.topLeft     = new Image(":widget_tl.png");
+	box.top         = new Image(":widget_t.png");
+	box.topRight    = new Image(":widget_tr.png");
+	box.left        = new Image(":widget_l.png");
+	box.right       = new Image(":widget_r.png");
+	box.bottomLeft  = new Image(":widget_bl.png");
+	box.bottom      = new Image(":widget_b.png");
+	box.bottomRight = new Image(":widget_br.png");
+	box.center      = new Image(":widget_c.png");
 }
 
-void GUI::LineEdit::registerEnterPressedHandler(void (*handler)(void *), void *ptr)
+LineEdit::~LineEdit()
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	delete box.topLeft;
+	delete box.top;
+	delete box.topRight;
+	delete box.left;
+	delete box.right;
+	delete box.bottomLeft;
+	delete box.bottom;
+	delete box.bottomRight;
+	delete box.center;
 }
 
-void GUI::LineEdit::setReadOnly(bool ro)
+void LineEdit::setReadOnly(bool ro)
 {
-  readonly = ro;
+	readonly = ro;
 }
 
-bool GUI::LineEdit::readOnly()
+bool LineEdit::readOnly()
 {
-  return readonly;
+	return readonly;
 }
 
-void GUI::LineEdit::setText(std::string text)
+void LineEdit::setText(const std::string& text)
 {
-  _text = text;
-  pos = text.size();
-  
-  repaintEvent(NULL);
-  textChanged();
+	_text = text;
+	pos = text.size();
+
+	visibleText = _text;
+	offsetPos = 0;
+
+	repaintEvent(nullptr);
+	textChanged();
 }
 
-std::string GUI::LineEdit::text()
+std::string LineEdit::text()
 {
-  return _text;
+	return _text;
 }
 
-void GUI::LineEdit::buttonEvent(ButtonEvent *e)
+void LineEdit::buttonEvent(ButtonEvent *buttonEvent)
 {
-  if(readOnly()) return;
-
-
-  if(e->direction == 1) {
-    for(int i = 0; i < (int)_visibletext.length(); i++) {
-      if(e->x < (int)(font.textWidth(_visibletext.substr(0, i)) + BORDER)) {
-        pos = i + offsetpos;
-        break;
-      }
-    }
-    repaintEvent(NULL);
-  }
+	if(readOnly())
+	{
+		return;
+	}
+
+	if(buttonEvent->direction == Direction::down)
+	{
+		for(int i = 0; i < (int)visibleText.length(); ++i)
+		{
+			int textWidth = font.textWidth(visibleText.substr(0, i));
+			if(buttonEvent->x < (textWidth + BORDER))
+			{
+				pos = i + offsetPos;
+				break;
+			}
+		}
+		repaintEvent(nullptr);
+	}
 }
 
-void GUI::LineEdit::keyEvent(GUI::KeyEvent *e)
+void LineEdit::keyEvent(KeyEvent *keyEvent)
 {
-  if(readOnly()) return;
-
-  bool change = false;
-  
-  if(e->direction == -1) {
-
-    if(e->keycode == GUI::KeyEvent::KEY_LEFT) {
-      if(pos) pos--;
-      if(offsetpos >= pos) walkstate = WALK_LEFT;
-    
-    } else if(e->keycode == GUI::KeyEvent::KEY_HOME) {
-      pos = 0;
-
-    } else if(e->keycode == GUI::KeyEvent::KEY_END) {
-      pos = _text.length();
-
-    } else if(e->keycode == GUI::KeyEvent::KEY_RIGHT) {
-      if(pos < _text.length()) pos++;
-      if(offsetpos + _visibletext.length() <= pos &&
-         pos < _text.length()) walkstate = WALK_RIGHT;
-    
-    } else if(e->keycode == GUI::KeyEvent::KEY_DELETE) {
-      if(pos < _text.length()) {
-        std::string t = _text.substr(0, pos);
-        t += _text.substr(pos + 1, std::string::npos);
-        _text = t;
-        change = true;
-      }
-
-    } else if(e->keycode == GUI::KeyEvent::KEY_BACKSPACE) {
-      if(pos > 0) {
-        std::string t = _text.substr(0, pos - 1);
-        t += _text.substr(pos, std::string::npos);
-        _text = t;
-        pos--;
-        change = true;
-      }
-
-    } else if(e->keycode == GUI::KeyEvent::KEY_CHARACTER) {
-      std::string pre = _text.substr(0, pos);
-      std::string post = _text.substr(pos, std::string::npos);
-      _text = pre + e->text + post;
-      change = true;
-      pos++;
-
-    } else if(e->keycode == GUI::KeyEvent::KEY_ENTER) {
-      if(handler) handler(ptr);
-    }
-    repaintEvent(NULL);
-  }
-
-  if(change) textChanged();
+	if(readOnly())
+	{
+		return;
+	}
+
+	bool change = false;
+
+	if(keyEvent->direction == Direction::down)
+	{
+		switch(keyEvent->keycode) {
+		case Key::left:
+			if(pos == 0)
+			{
+				return;
+			}
+
+			pos--;
+
+			if(offsetPos >= pos)
+			{
+				walkstate = WalkLeft;
+			}
+			break;
+
+		case Key::right:
+			if(pos == _text.length())
+			{
+				return;
+			}
+
+			pos++;
+
+			if((pos < _text.length()) && ((offsetPos + visibleText.length()) <= pos))
+			{
+				walkstate = WalkRight;
+			}
+			break;
+
+		case Key::home:
+			pos = 0;
+			visibleText = _text;
+			offsetPos = 0;
+			break;
+
+		case Key::end:
+			pos = _text.length();
+			visibleText = _text;
+			offsetPos = 0;
+			break;
+
+		case Key::deleteKey:
+			if(pos < _text.length())
+			{
+				std::string t = _text.substr(0, pos);
+				t += _text.substr(pos + 1, std::string::npos);
+				_text = t;
+				change = true;
+			}
+			break;
+
+		case Key::backspace:
+			if(pos > 0)
+			{
+				std::string t = _text.substr(0, pos - 1);
+				t += _text.substr(pos, std::string::npos);
+				_text = t;
+				pos--;
+				change = true;
+			}
+			break;
+
+		case Key::character:
+			{
+				std::string pre = _text.substr(0, pos);
+				std::string post = _text.substr(pos, std::string::npos);
+				_text = pre + keyEvent->text + post;
+				change = true;
+				pos++;
+			}
+			break;
+
+		case Key::enter:
+			enterPressedNotifier();
+	    break;
+
+		default:
+			break;
+		}
+
+		repaintEvent(nullptr);
+	}
+
+	if(change)
+	{
+		textChanged();
+	}
 }
 
-void GUI::LineEdit::repaintEvent(GUI::RepaintEvent *e)
+void LineEdit::repaintEvent(RepaintEvent *repaintEvent)
 {
-  Painter p(this);
-
-  p.clear();
-
-  int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-  p.drawBox(0, 0, &box, w, h);
-
-  p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
-
-  if(walkstate == WALK_LEFT) {
-    _visibletext = _text.substr(pos, std::string::npos);
-    offsetpos = pos;
-  }
-  else if(walkstate == WALK_RIGHT) {
-    int d = (offsetpos < _text.length()) ? 1 : 0;
-    _visibletext = _text.substr(offsetpos + d);
-    offsetpos = offsetpos + d;
-  }
-  else {
-    _visibletext = _text;
-    offsetpos = 0;
-  }
-  while(true) {
-    int textwidth = font.textWidth(_visibletext);
-    if(textwidth > w - BORDER - 4 + 3) {
-      if(walkstate == WALK_LEFT) {
-        _visibletext = _visibletext.substr(0, _visibletext.length()-1);
-      }
-      else if(walkstate == WALK_RIGHT) {
-        _visibletext = _visibletext.substr(0, _visibletext.length()-1);
-      }
-      else {
-        if(offsetpos < pos) {
-          _visibletext = _visibletext.substr(1);
-          offsetpos++;
-        }
-        else {
-          _visibletext = _visibletext.substr(0, _visibletext.length() - 1);
-        }
-      }
-    }
-    else {
-      break;
-    }
-  }
-
-  walkstate = NOOP;
-
-  p.drawText(BORDER - 4 + 3, height()/2+5 + 1 + 1 + 1, font, _visibletext);
-
-  if(readOnly()) return;
-
-  if(hasKeyboardFocus()) {
-    size_t px = font.textWidth(_visibletext.substr(0, pos - offsetpos));
-    p.drawLine(px + BORDER - 1 - 4 + 3, 6,
-               px + BORDER - 1 - 4 + 3, height() - 7);
-  }
+	Painter p(*this);
+
+	p.clear();
+	int w = width();
+	int h = height();
+	if((w == 0) || (h == 0))
+	{
+		return;
+	}
+
+	p.drawBox(0, 0, box, w, h);
+
+	p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
+
+	switch(walkstate) {
+	case WalkLeft:
+		visibleText = _text.substr(pos, std::string::npos);
+		offsetPos = pos;
+		break;
+
+	case WalkRight:
+		{
+			int delta = (offsetPos < _text.length()) ? 1 : 0;
+			visibleText = _text.substr(offsetPos + delta);
+			offsetPos = offsetPos + delta;
+		}
+		break;
+
+	case Noop:
+		visibleText = _text;
+		offsetPos = 0;
+		break;
+	}
+
+	while(true)
+	{
+		int textWidth = font.textWidth(visibleText);
+		if(textWidth <= (w - BORDER - 4 + 3))
+		{
+			break;
+		}
+
+		switch(walkstate) {
+		case WalkLeft:
+			visibleText = visibleText.substr(0, visibleText.length() - 1);
+			break;
+
+		case WalkRight:
+			visibleText = visibleText.substr(0, visibleText.length() - 1);
+			break;
+
+		case Noop:
+			if(offsetPos < pos)
+			{
+				visibleText = visibleText.substr(1);
+				offsetPos++;
+			}
+			else
+			{
+				visibleText = visibleText.substr(0, visibleText.length() - 1);
+			}
+			break;
+		}
+	}
+
+	walkstate = Noop;
+
+	p.drawText(BORDER - 4 + 3, height() / 2 + 5 + 1 + 1 + 1, font, visibleText);
+
+	if(readOnly())
+	{
+		return;
+	}
+
+	if(hasKeyboardFocus())
+	{
+		size_t px = font.textWidth(visibleText.substr(0, pos - offsetPos));
+		p.drawLine(px + BORDER - 1 - 4 + 3, 6,
+		           px + BORDER - 1 - 4 + 3, height() - 7);
+	}
 }
 
-#ifdef TEST_LINEEDIT
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_LINEEDIT*/
+} // GUI::
diff --git a/plugingui/lineedit.h b/plugingui/lineedit.h
index f85e9bd..8ec4632 100644
--- a/plugingui/lineedit.h
+++ b/plugingui/lineedit.h
@@ -11,22 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LINEEDIT_H__
-#define __DRUMGIZMO_LINEEDIT_H__
-
+#pragma once
 
 #include <string>
 
@@ -38,49 +36,45 @@ namespace GUI {
 
 class LineEdit : public Widget {
 public:
-  LineEdit(Widget *parent);
+	LineEdit(Widget *parent);
+	~LineEdit();
 
-  bool isFocusable() { return true; }
+	bool isFocusable() override { return true; }
 
-  std::string text();
-  void setText(std::string text);
+	std::string text();
+	void setText(const std::string& text);
 
-  void setReadOnly(bool readonly);
-  bool readOnly();
+	void setReadOnly(bool readonly);
+	bool readOnly();
 
-  void registerEnterPressedHandler(void (*handler)(void *), void *ptr);
+	Notifier<> enterPressedNotifier;
 
-  //protected:
-  virtual void keyEvent(KeyEvent *e);
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
+	//protected:
+	virtual void keyEvent(KeyEvent *keyEvent) override;
+	virtual void repaintEvent(RepaintEvent *repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent *buttonEvent) override;
 
 protected:
-  virtual void textChanged() {}
+	virtual void textChanged() {}
 
 private:
-  Painter::Box box;
-
-  Font font;
+	Painter::Box box;
 
-  std::string _text;
-  size_t pos;
-  std::string _visibletext;
-  size_t offsetpos;
+	Font font;
 
-  enum state_t {
-    NOOP = 0,
-    WALK_LEFT =  1, 
-    WALK_RIGHT = 2
-  };
-  state_t walkstate;
+	std::string _text;
+	size_t pos{0};
+	std::string visibleText;
+	size_t offsetPos{0};
 
-  bool readonly;
-
-  void (*handler)(void *);
-  void *ptr;
-};
+	enum state_t {
+		Noop,
+		WalkLeft,
+		WalkRight,
+	};
+	state_t walkstate{Noop};
 
+	bool readonly;
 };
 
-#endif/*__DRUMGIZMO_LINEEDIT_H__*/
+} // GUI::
diff --git a/plugingui/listbox.cc b/plugingui/listbox.cc
index ed873b2..9602bc8 100644
--- a/plugingui/listbox.cc
+++ b/plugingui/listbox.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -29,95 +29,97 @@
 #include "painter.h"
 #include "font.h"
 
-#include <stdio.h>
+namespace GUI {
 
-GUI::ListBox::ListBox(GUI::Widget *parent)
-  : GUI::Widget(parent)
+ListBox::ListBox(Widget *parent)
+	: Widget(parent)
+	, selectionNotifier(basic.selectionNotifier)
+	, clickNotifier(basic.clickNotifier)
+	, valueChangedNotifier(basic.valueChangedNotifier)
+	, basic(this)
 {
-  box.topLeft     = new Image(":widget_tl.png");
-  box.top         = new Image(":widget_t.png");
-  box.topRight    = new Image(":widget_tr.png");
-  box.left        = new Image(":widget_l.png");
-  box.right       = new Image(":widget_r.png");
-  box.bottomLeft  = new Image(":widget_bl.png");
-  box.bottom      = new Image(":widget_b.png");
-  box.bottomRight = new Image(":widget_br.png");
-  box.center      = new Image(":widget_c.png");
-
-  basic = new GUI::ListBoxBasic(this);
-  basic->move(box.left->width(), box.top->height());
+	box.topLeft     = new Image(":widget_tl.png");
+	box.top         = new Image(":widget_t.png");
+	box.topRight    = new Image(":widget_tr.png");
+	box.left        = new Image(":widget_l.png");
+	box.right       = new Image(":widget_r.png");
+	box.bottomLeft  = new Image(":widget_bl.png");
+	box.bottom      = new Image(":widget_b.png");
+	box.bottomRight = new Image(":widget_br.png");
+	box.center      = new Image(":widget_c.png");
+
+	basic.move(box.left->width(), box.top->height());
 }
 
-GUI::ListBox::~ListBox()
+ListBox::~ListBox()
 {
+	delete box.topLeft;
+	delete box.top;
+	delete box.topRight;
+	delete box.left;
+	delete box.right;
+	delete box.bottomLeft;
+	delete box.bottom;
+	delete box.bottomRight;
+	delete box.center;
 }
 
-void GUI::ListBox::addItem(std::string name, std::string value)
+void ListBox::addItem(std::string name, std::string value)
 {
-  basic->addItem(name, value);
+	basic.addItem(name, value);
 }
 
-void GUI::ListBox::addItems(std::vector<ListBoxBasic::Item> &items)
+void ListBox::addItems(std::vector<ListBoxBasic::Item> &items)
 {
-  basic->addItems(items);
+	basic.addItems(items);
 }
 
-void GUI::ListBox::clear()
+void ListBox::clear()
 {
-  basic->clear();
+	basic.clear();
 }
 
-bool GUI::ListBox::selectItem(int index)
+bool ListBox::selectItem(int index)
 {
-  return basic->selectItem(index);
+	return basic.selectItem(index);
 }
 
-std::string GUI::ListBox::selectedName()
+std::string ListBox::selectedName()
 {
-  return basic->selectedName();
+	return basic.selectedName();
 }
 
-std::string GUI::ListBox::selectedValue()
+std::string ListBox::selectedValue()
 {
-  return basic->selectedValue();
+	return basic.selectedValue();
 }
 
-void GUI::ListBox::clearSelectedValue() 
+void ListBox::clearSelectedValue()
 {
-  basic->clearSelectedValue();
+	basic.clearSelectedValue();
 }
 
-void GUI::ListBox::registerClickHandler(void (*handler)(void *), void *ptr)
+void ListBox::repaintEvent(RepaintEvent* repaintEvent)
 {
-  basic->registerClickHandler(handler, ptr);
-}
-
-void GUI::ListBox::registerSelectHandler(void (*handler)(void *), void *ptr)
-{ 
-  basic->registerSelectHandler(handler, ptr);
-}
-
-void GUI::ListBox::registerValueChangeHandler(void (*handler)(void *),
-                                              void *ptr)
-{
-  basic->registerValueChangeHandler(handler, ptr);
-}
+	Painter p(*this);
 
-void GUI::ListBox::repaintEvent(GUI::RepaintEvent *e)
-{
-  GUI::Painter p(this);
+	p.clear();
 
-  p.clear();
+	int w = width();
+	int h = height();
+	if(w == 0 || h == 0)
+	{
+		return;
+	}
 
-  int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-  p.drawBox(0, 0, &box, w, h);
+	p.drawBox(0, 0, box, w, h);
 }
 
-void GUI::ListBox::resize(int width, int height)
+void ListBox::resize(int width, int height)
 {
-  GUI::Widget::resize(width, height);
-  basic->resize(width - (box.left->width() + box.right->width()),
-                height - (box.top->height() + box.bottom->height()));
+	Widget::resize(width, height);
+	basic.resize(width - (box.left->width() + box.right->width()),
+	             height - (box.top->height() + box.bottom->height()));
 }
+
+} // GUI::
diff --git a/plugingui/listbox.h b/plugingui/listbox.h
index c8677e7..9989ae7 100644
--- a/plugingui/listbox.h
+++ b/plugingui/listbox.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LISTBOX_H__
-#define __DRUMGIZMO_LISTBOX_H__
+#pragma once
 
 #include <string.h>
 #include <vector>
@@ -38,31 +37,31 @@ namespace GUI {
 
 class ListBox : public Widget {
 public:
-  ListBox(Widget *parent);
-  ~ListBox();
+	ListBox(Widget *parent);
+	~ListBox();
 
-  void addItem(std::string name, std::string value);
-  void addItems(std::vector<ListBoxBasic::Item> &items);
+	void addItem(std::string name, std::string value);
+	void addItems(std::vector<ListBoxBasic::Item> &items);
 
-  void clear();
-  bool selectItem(int index);
-  std::string selectedName();
-  std::string selectedValue();
-  void clearSelectedValue();
+	void clear();
+	bool selectItem(int index);
+	std::string selectedName();
+	std::string selectedValue();
+	void clearSelectedValue();
 
-  void registerSelectHandler(void (*handler)(void *), void *ptr);
-  void registerClickHandler(void (*handler)(void *), void *ptr);
-  void registerValueChangeHandler(void (*handler)(void *), void *ptr);
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void resize(int w, int h) override;
 
-  virtual void repaintEvent(GUI::RepaintEvent *e);
-  virtual void resize(int w, int h);
+	// Forwarded notifiers from ListBoxBasic::basic
+	Notifier<>& selectionNotifier;
+	Notifier<>& clickNotifier;
+	Notifier<>& valueChangedNotifier;
 
 private:
-  ListBoxBasic *basic;
+	ListBoxBasic basic;
 
-  Painter::Box box;
+	Painter::Box box;
 };
 
-};
-
-#endif/*__DRUMGIZMO_LISTBOX_H__*/
+} // GUI::
diff --git a/plugingui/listboxbasic.cc b/plugingui/listboxbasic.cc
index df7877d..07c6983 100644
--- a/plugingui/listboxbasic.cc
+++ b/plugingui/listboxbasic.cc
@@ -1,4 +1,3 @@
-
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
  *            listboxbasic.cc
@@ -12,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -30,305 +29,332 @@
 #include "painter.h"
 #include "font.h"
 
-#include <stdio.h>
-#include <hugin.hpp>
-
-void scrolled(void *ptr)
-{
-  GUI::ListBoxBasic *l = (GUI::ListBoxBasic *)ptr;
-  l->repaintEvent(NULL);
-}
+namespace GUI {
 
-GUI::ListBoxBasic::ListBoxBasic(GUI::Widget *parent)
-  : GUI::Widget(parent), scroll(this), bg_img(":widget_c.png")
+ListBoxBasic::ListBoxBasic(Widget *parent)
+	: Widget(parent)
+	, scroll(this)
+	, bg_img(":widget_c.png")
 {
-  scroll.move(0,0);
-  scroll.resize(18, 100);
+	scroll.move(0,0);
+	scroll.resize(18, 100);
 
-  scroll.registerValueChangeHandler(scrolled, this);
+	CONNECT(&scroll, valueChangeNotifier,
+	        this, &ListBoxBasic::onScrollBarValueChange);
 
-  padding = 4;
-  btn_size = 18;
+	padding = 4;
+	btn_size = 18;
 
-  selected = -1;
-  marked = -1;
-
-  clk_handler = NULL;
-  clk_ptr = NULL;
-
-  sel_handler = NULL;
-  sel_ptr = NULL;
-
-  valch_handler = NULL;
-  valch_ptr = NULL;
+	selected = -1;
+	marked = -1;
 }
 
-GUI::ListBoxBasic::~ListBoxBasic()
+ListBoxBasic::~ListBoxBasic()
 {
 }
 
-void GUI::ListBoxBasic::setSelection(int index)
+void ListBoxBasic::setSelection(int index)
 {
-  selected = index;
-  if(valch_handler) valch_handler(valch_ptr);
+	selected = index;
+	if(marked == -1)
+	{
+		marked = index;
+	}
+	valueChangedNotifier();
 }
 
-void GUI::ListBoxBasic::addItem(std::string name, std::string value)
+void ListBoxBasic::addItem(const std::string& name, const std::string& value)
 {
-  std::vector<GUI::ListBoxBasic::Item> items;
-  GUI::ListBoxBasic::Item item;
-  item.name = name;
-  item.value = value;
-  items.push_back(item);
-  addItems(items);
+	std::vector<ListBoxBasic::Item> items;
+	ListBoxBasic::Item item;
+	item.name = name;
+	item.value = value;
+	items.push_back(item);
+	addItems(items);
 }
 
-void GUI::ListBoxBasic::addItems(std::vector<GUI::ListBoxBasic::Item> &is)
+void ListBoxBasic::addItems(const std::vector<ListBoxBasic::Item>& newItems)
 {
-  //  DEBUG(list, "addItems %lu\n", is.size());
-  std::vector<GUI::ListBoxBasic::Item>::iterator i = is.begin();
-  while(i != is.end()) {
-    items.push_back(*i);
-    i++;
-  }
-
-/*
-  // sort
-  for(int x = 0; x < (int)items.size(); x++) {
-    for(int y = 0; y < (int)items.size(); y++) {
-      if(items[x].name < items[y].name) {
-        if(x == selected) setSelection(y);
-        else if(selected == y) setSelection(x);
-        
-        GUI::ListBoxBasic::Item tmp = items[x];
-        items[x] = items[y];
-        items[y] = tmp;
-      }
-    }
-  }
-*/
-
-  if(selected == -1) setSelection((int)items.size() - 1);
-  setSelection(0);
-
-  int numitems = height() / (font.textHeight() + padding);
-  scroll.setRange(numitems);
-  scroll.setMaximum(items.size());
+	for(auto& item : newItems)
+	{
+		items.push_back(item);
+	}
+
+	if(selected == -1)
+	{
+		//setSelection((int)items.size() - 1);
+		setSelection(0);
+	}
+
+	int numitems = height() / (font.textHeight() + padding);
+	scroll.setRange(numitems);
+	scroll.setMaximum(items.size());
+	repaintEvent(nullptr);
 }
 
-void GUI::ListBoxBasic::clear()
+void ListBoxBasic::clear()
 {
-  items.clear();
-  setSelection(-1);
-  scroll.setValue(0);
-  repaintEvent(NULL);
+	items.clear();
+	setSelection(-1);
+	marked = -1;
+	scroll.setValue(0);
+	repaintEvent(nullptr);
 }
 
-bool GUI::ListBoxBasic::selectItem(int index)
+bool ListBoxBasic::selectItem(int index)
 {
-  if(index < 0 || index > (int)items.size() - 1) return false;
-  setSelection(index);
-  repaintEvent(NULL);
-  return true;
-}
+	if(index < 0 || (index > (int)items.size() - 1))
+	{
+		return false;
+	}
 
-std::string GUI::ListBoxBasic::selectedName()
-{
-  if(selected < 0 || selected > (int)items.size() - 1) return "";
-  return items[selected].name;
-}
+	setSelection(index);
+	repaintEvent(nullptr);
 
-std::string GUI::ListBoxBasic::selectedValue()
-{
-  if(selected < 0 || selected > (int)items.size() - 1) return "";
-  return items[selected].value;
+	return true;
 }
 
-void GUI::ListBoxBasic::clearSelectedValue()
+std::string ListBoxBasic::selectedName()
 {
-  setSelection(-1);
+	if(selected < 0 || (selected > (int)items.size() - 1))
+	{
+		return "";
+	}
+
+	return items[selected].name;
 }
 
-void GUI::ListBoxBasic::registerClickHandler(void (*handler)(void *), void *ptr)
+std::string ListBoxBasic::selectedValue()
 {
-  this->clk_handler = handler;
-  this->clk_ptr = ptr;
+	if(selected < 0 || (selected > (int)items.size() - 1))
+	{
+		return "";
+	}
+
+	return items[selected].value;
 }
 
-void GUI::ListBoxBasic::registerSelectHandler(void (*handler)(void *), void *ptr)
+void ListBoxBasic::clearSelectedValue()
 {
-  this->sel_handler = handler;
-  this->sel_ptr = ptr;
+	setSelection(-1);
 }
 
-void GUI::ListBoxBasic::registerValueChangeHandler(void (*handler)(void *),
-                                              void *ptr)
+void ListBoxBasic::onScrollBarValueChange(int value)
 {
-  this->valch_handler = handler;
-  this->valch_ptr = ptr;
+	repaintEvent(nullptr);
 }
 
-void GUI::ListBoxBasic::repaintEvent(GUI::RepaintEvent *e)
+void ListBoxBasic::repaintEvent(RepaintEvent* repaintEvent)
 {
-  DEBUG(list, "repaint\n");
-  GUI::Painter p(this);
-
-  p.clear();
-
-  int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-
-  p.drawImageStretched(0, 0, &bg_img, w, h);
-
-  p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
-
-  int yoffset = padding / 2;
-  int skip = scroll.value();
-  int numitems = height() / (font.textHeight() + padding) + 1;
-  for(int idx = skip; idx < (int)items.size() && idx < skip + numitems; idx++) {
-    GUI::ListBoxBasic::Item *i = &items[idx];
-    if(idx == selected) {
-      p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 0.5));
-      p.drawFilledRectangle(0,
-                            yoffset - (padding / 2),
-                            width() - 1,
-                            yoffset + (font.textHeight() + 1));
-    }
-
-    if(idx == marked) {
-      p.drawRectangle(0,
-                      yoffset - (padding / 2),
-                      width() - 1,
-                      yoffset + (font.textHeight() + 1));
-    }
-
-    p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
-
-    p.drawText(2, yoffset + font.textHeight(), font, i->name);
-    yoffset += font.textHeight() + padding;
-  }
+	Painter p(*this);
+
+	p.clear();
+
+	int w = width();
+	int h = height();
+
+	if((w == 0) || (h == 0))
+	{
+		return;
+	}
+
+	p.drawImageStretched(0, 0, bg_img, w, h);
+
+	p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
+
+	int yoffset = padding / 2;
+	int skip = scroll.value();
+	int numitems = height() / (font.textHeight() + padding) + 1;
+	for(int idx = skip; (idx < (int)items.size()) && (idx < (skip + numitems));
+	    idx++)
+	{
+		auto& item = items[idx];
+		if(idx == selected)
+		{
+			p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 0.5));
+			p.drawFilledRectangle(0,
+			                      yoffset - (padding / 2),
+			                      width() - 1,
+			                      yoffset + (font.textHeight() + 1));
+		}
+
+		if(idx == marked)
+		{
+			p.drawRectangle(0,
+			                yoffset - (padding / 2),
+			                width() - 1,
+			                yoffset + (font.textHeight() + 1));
+		}
+
+		p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
+
+		p.drawText(2, yoffset + font.textHeight(), font, item.name);
+		yoffset += font.textHeight() + padding;
+	}
 }
 
-void GUI::ListBoxBasic::scrollEvent(ScrollEvent *e)
+void ListBoxBasic::scrollEvent(ScrollEvent* scrollEvent)
 {
-  scroll.scrollEvent(e);
+	// forward scroll event to scroll bar.
+	scroll.scrollEvent(scrollEvent);
 }
 
-void GUI::ListBoxBasic::keyEvent(GUI::KeyEvent *e)
+void ListBoxBasic::keyEvent(KeyEvent* keyEvent)
 {
-  if(e->direction != -1) return;
-
-  switch(e->keycode) {
-  case GUI::KeyEvent::KEY_UP:
-    {
-      marked--;
-      if(marked < 0) marked = 0;
-
-      if(marked < scroll.value()) {
-        scroll.setValue(marked);
-      }
-    }
-    break;
-  case GUI::KeyEvent::KEY_DOWN:
-    {
-      // Number of items that can be displayed at a time.
-      int numitems = height() / (font.textHeight() + padding);
-
-      marked++;
-      if(marked > ((int)items.size() - 1)) marked = (int)items.size() - 1;
-
-      if(marked > (scroll.value() + numitems - 1)) {
-        scroll.setValue(marked - numitems + 1);
-      }
-    }
-    break;
-  case GUI::KeyEvent::KEY_HOME:
-    marked = 0;
-    if(marked < scroll.value()) {
-      scroll.setValue(marked);
-    }
-    break;
-  case GUI::KeyEvent::KEY_END:
-    {
-      // Number of items that can be displayed at a time.
-      int numitems = height() / (font.textHeight() + padding);
-
-      marked = (int)items.size() - 1;
-      if(marked > (scroll.value() + numitems - 1)) {
-        scroll.setValue(marked - numitems + 1);
-      }
-    }
-    break;
-  case GUI::KeyEvent::KEY_CHARACTER:
-    if(e->text == " ") {
-      setSelection(marked);
-      // if(sel_handler) sel_handler(sel_ptr);
-    }
-    break;
-  case GUI::KeyEvent::KEY_ENTER:
-    setSelection(marked);
-    if(sel_handler) sel_handler(sel_ptr);
-    break;
-  default:
-    break;
-  }
-  
-  repaintEvent(NULL);
+	if(keyEvent->direction != Direction::down)
+	{
+		return;
+	}
+
+	switch(keyEvent->keycode) {
+	case Key::up:
+		if(marked == 0)
+		{
+			return;
+		}
+
+		marked--;
+
+		if(marked < scroll.value())
+		{
+			scroll.setValue(marked);
+		}
+		break;
+
+	case Key::down:
+		{
+			// Number of items that can be displayed at a time.
+			int numitems = height() / (font.textHeight() + padding);
+
+			if(marked == ((int)items.size() - 1))
+			{
+				return;
+			}
+
+			marked++;
+
+			if(marked > (scroll.value() + numitems - 1))
+			{
+				scroll.setValue(marked - numitems + 1);
+			}
+		}
+		break;
+
+	case Key::home:
+		marked = 0;
+		if(marked < scroll.value())
+		{
+			scroll.setValue(marked);
+		}
+		break;
+
+	case Key::end:
+		{
+			// Number of items that can be displayed at a time.
+			int numitems = height() / (font.textHeight() + padding);
+
+			marked = (int)items.size() - 1;
+			if(marked > (scroll.value() + numitems - 1))
+			{
+				scroll.setValue(marked - numitems + 1);
+			}
+		}
+		break;
+
+	case Key::character:
+		if(keyEvent->text == " ")
+		{
+			setSelection(marked);
+			//selectionNotifier();
+		}
+		break;
+
+	case Key::enter:
+		setSelection(marked);
+		selectionNotifier();
+		break;
+
+	default:
+		break;
+	}
+
+	repaintEvent(nullptr);
 }
 
-void GUI::ListBoxBasic::buttonEvent(ButtonEvent *e)
+void ListBoxBasic::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(e->x > ((int)width() - btn_size) && e->y < ((int)width() - 1)) {
-    if(e->y > 0 && e->y < btn_size) {
-      if(e->direction == -1) return;
-      scroll.setValue(scroll.value() - 1);
-      return;
-    }
-    
-    if(e->y > ((int)height() - btn_size) && e->y < ((int)height() - 1)) {
-      if(e->direction == -1) return;
-      scroll.setValue(scroll.value() + 1);
-      return;
-    }
-  }
-
-  if(e->direction == -1) {
-    int skip = scroll.value();
-    size_t yoffset = padding / 2;
-    for(int idx = skip; idx < (int)items.size(); idx++) {
-      yoffset += font.textHeight() + padding;
-      if(e->y < (int)yoffset - (padding / 2)) {
-        setSelection(idx);
-        marked = selected;
-        if(clk_handler) clk_handler(clk_ptr);
-        break;
-      }
-    }
-
-    repaintEvent(NULL);
-  }
-
-  if(e->direction != -1) {
-    int skip = scroll.value();
-    size_t yoffset = padding / 2;
-    for(int idx = skip; idx < (int)items.size(); idx++) {
-      yoffset += font.textHeight() + padding;
-      if(e->y < (int)yoffset - (padding / 2)) {
-        marked = idx;
-        break;
-      }
-    }
-
-    repaintEvent(NULL);
-  }
-
-  if(e->doubleclick && sel_handler) sel_handler(sel_ptr);
+	if((buttonEvent->x > ((int)width() - btn_size)) &&
+	   (buttonEvent->y < ((int)width() - 1)))
+	{
+		if(buttonEvent->y > 0 && buttonEvent->y < btn_size)
+		{
+			if(buttonEvent->direction == Direction::up)
+			{
+				return;
+			}
+			scroll.setValue(scroll.value() - 1);
+			return;
+		}
+
+		if(buttonEvent->y > ((int)height() - btn_size) &&
+		   buttonEvent->y < ((int)height() - 1))
+		{
+			if(buttonEvent->direction == Direction::up)
+			{
+				return;
+			}
+			scroll.setValue(scroll.value() + 1);
+			return;
+		}
+	}
+
+	if(buttonEvent->direction == Direction::up)
+	{
+		int skip = scroll.value();
+		size_t yoffset = padding / 2;
+		for(int idx = skip; idx < (int)items.size(); idx++)
+		{
+			yoffset += font.textHeight() + padding;
+			if(buttonEvent->y < (int)yoffset - (padding / 2))
+			{
+				setSelection(idx);
+				marked = selected;
+				clickNotifier();
+				break;
+			}
+		}
+
+		repaintEvent(nullptr);
+	}
+
+	if(buttonEvent->direction != Direction::up)
+	{
+		int skip = scroll.value();
+		size_t yoffset = padding / 2;
+		for(int idx = skip; idx < (int)items.size(); idx++)
+		{
+			yoffset += font.textHeight() + padding;
+			if(buttonEvent->y < ((int)yoffset - (padding / 2)))
+			{
+				marked = idx;
+				break;
+			}
+		}
+
+		repaintEvent(nullptr);
+	}
+
+	if(buttonEvent->doubleClick)
+	{
+		selectionNotifier();
+	}
 }
 
-void GUI::ListBoxBasic::resize(int w, int h)
+void ListBoxBasic::resize(int w, int h)
 {
-  GUI::Widget::resize(w,h);
-  scroll.move(w - scroll.width(), 0);
-  scroll.resize(scroll.width(), h);
+	Widget::resize(w,h);
+	scroll.move(w - scroll.width(), 0);
+	scroll.resize(scroll.width(), h);
 }
+
+} // GUI::
diff --git a/plugingui/listboxbasic.h b/plugingui/listboxbasic.h
index deb4a67..7953dc3 100644
--- a/plugingui/listboxbasic.h
+++ b/plugingui/listboxbasic.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LISTBOXBASIC_H__
-#define __DRUMGIZMO_LISTBOXBASIC_H__
+#pragma once
 
 #include <string.h>
 #include <vector>
@@ -33,69 +32,62 @@
 #include "widget.h"
 #include "font.h"
 #include "painter.h"
-
 #include "scrollbar.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class ListBoxBasic : public Widget {
 public:
-  class Item {
-  public:
-    std::string name;
-    std::string value;
-  };
-
-  ListBoxBasic(Widget *parent);
-  ~ListBoxBasic();
-
-  bool isFocusable() { return true; }
+	class Item {
+	public:
+		std::string name;
+		std::string value;
+	};
 
-  void addItem(std::string name, std::string value);
-  void addItems(std::vector<Item> &items);
+	ListBoxBasic(Widget *parent);
+	~ListBoxBasic();
 
-  void clear();
-  bool selectItem(int index);
-  std::string selectedName();
-  std::string selectedValue();
+	void addItem(const std::string& name, const std::string& value);
+	void addItems(const std::vector<Item>& items);
 
-  void clearSelectedValue();
+	void clear();
+	bool selectItem(int index);
+	std::string selectedName();
+	std::string selectedValue();
 
-  void registerSelectHandler(void (*handler)(void *), void *ptr);
-  void registerClickHandler(void (*handler)(void *), void *ptr);
-  void registerValueChangeHandler(void (*handler)(void *), void *ptr);
+	void clearSelectedValue();
 
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-  virtual void scrollEvent(ScrollEvent *e);
-  virtual void keyEvent(KeyEvent *e);
-  virtual void resize(int w, int h);
+	Notifier<> selectionNotifier;
+	Notifier<> clickNotifier;
+	Notifier<> valueChangedNotifier;
 
-private:
-  ScrollBar scroll;
+	// From Widget:
+	virtual void resize(int w, int h) override;
 
-  Image bg_img;
+protected:
+	void onScrollBarValueChange(int value);
 
-  void setSelection(int index);
+	// From Widget:
+	bool isFocusable() override { return true; }
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent* buttonEvent) override;
+	virtual void keyEvent(KeyEvent* keyEvent) override;
+	virtual void scrollEvent(ScrollEvent* scrollEvent) override;
 
-  std::vector<Item> items;
+	ScrollBar scroll;
 
-  int selected;
-  int marked;
-  GUI::Font font;
-  int padding;
-  int btn_size;
+	Image bg_img;
 
-  void (*sel_handler)(void *);
-  void *sel_ptr;
+	void setSelection(int index);
 
-  void (*clk_handler)(void *);
-  void *clk_ptr;
-
-  void (*valch_handler)(void *);
-  void *valch_ptr;
-};
+	std::vector<Item> items;
 
+	int selected;
+	int marked;
+	Font font;
+	int padding;
+	int btn_size;
 };
 
-#endif/*__DRUMGIZMO_LISTBOXBASIC_H__*/
+} // GUI::
diff --git a/plugingui/listboxthin.cc b/plugingui/listboxthin.cc
index 3f0fbc6..03b2594 100644
--- a/plugingui/listboxthin.cc
+++ b/plugingui/listboxthin.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -29,90 +29,92 @@
 #include "painter.h"
 #include "font.h"
 
-#include <stdio.h>
+namespace GUI {
 
-GUI::ListBoxThin::ListBoxThin(GUI::Widget *parent)
-  : GUI::Widget(parent)
+ListBoxThin::ListBoxThin(Widget *parent)
+	: Widget(parent)
+	, selectionNotifier(basic.selectionNotifier)
+	, clickNotifier(basic.clickNotifier)
+	, valueChangedNotifier(basic.valueChangedNotifier)
+	, basic(this)
 {
-  box.topLeft     = new Image(":thinlistbox_tl.png");
-  box.top         = new Image(":thinlistbox_t.png");
-  box.topRight    = new Image(":thinlistbox_tr.png");
-  box.left        = new Image(":thinlistbox_l.png");
-  box.right       = new Image(":thinlistbox_r.png");
-  box.bottomLeft  = new Image(":thinlistbox_bl.png");
-  box.bottom      = new Image(":thinlistbox_b.png");
-  box.bottomRight = new Image(":thinlistbox_br.png");
-  box.center      = new Image(":thinlistbox_c.png");
-
-  basic = new GUI::ListBoxBasic(this);
-  basic->move(box.left->width(), box.top->height());
+	box.topLeft     = new Image(":thinlistbox_tl.png");
+	box.top         = new Image(":thinlistbox_t.png");
+	box.topRight    = new Image(":thinlistbox_tr.png");
+	box.left        = new Image(":thinlistbox_l.png");
+	box.right       = new Image(":thinlistbox_r.png");
+	box.bottomLeft  = new Image(":thinlistbox_bl.png");
+	box.bottom      = new Image(":thinlistbox_b.png");
+	box.bottomRight = new Image(":thinlistbox_br.png");
+	box.center      = new Image(":thinlistbox_c.png");
+
+	basic.move(box.left->width(), box.top->height());
 }
 
-GUI::ListBoxThin::~ListBoxThin()
+ListBoxThin::~ListBoxThin()
 {
+	delete box.topLeft;
+	delete box.top;
+	delete box.topRight;
+	delete box.left;
+	delete box.right;
+	delete box.bottomLeft;
+	delete box.bottom;
+	delete box.bottomRight;
+	delete box.center;
 }
 
-void GUI::ListBoxThin::addItem(std::string name, std::string value)
+void ListBoxThin::addItem(std::string name, std::string value)
 {
-  basic->addItem(name, value);
+	basic.addItem(name, value);
 }
 
-void GUI::ListBoxThin::addItems(std::vector<ListBoxBasic::Item> &items)
+void ListBoxThin::addItems(std::vector<ListBoxBasic::Item> &items)
 {
-  basic->addItems(items);
+	basic.addItems(items);
 }
 
-void GUI::ListBoxThin::clear()
+void ListBoxThin::clear()
 {
-  basic->clear();
+	basic.clear();
 }
 
-bool GUI::ListBoxThin::selectItem(int index)
+bool ListBoxThin::selectItem(int index)
 {
-  return basic->selectItem(index);
+	return basic.selectItem(index);
 }
 
-std::string GUI::ListBoxThin::selectedName()
+std::string ListBoxThin::selectedName()
 {
-  return basic->selectedName();
+	return basic.selectedName();
 }
 
-std::string GUI::ListBoxThin::selectedValue()
+std::string ListBoxThin::selectedValue()
 {
-  return basic->selectedValue();
+	return basic.selectedValue();
 }
 
-void GUI::ListBoxThin::registerClickHandler(void (*handler)(void *), void *ptr)
+void ListBoxThin::repaintEvent(RepaintEvent* repaintEvent)
 {
-  basic->registerClickHandler(handler, ptr);
-}
-
-void GUI::ListBoxThin::registerSelectHandler(void (*handler)(void *), void *ptr)
-{ 
-  basic->registerSelectHandler(handler, ptr);
-}
-
-void GUI::ListBoxThin::registerValueChangeHandler(void (*handler)(void *),
-                                              void *ptr)
-{
-  basic->registerValueChangeHandler(handler, ptr);
-}
+	Painter p(*this);
 
-void GUI::ListBoxThin::repaintEvent(GUI::RepaintEvent *e)
-{
-  GUI::Painter p(this);
+	p.clear();
 
-  p.clear();
+	int w = width();
+	int h = height();
+	if(w == 0 || h == 0)
+	{
+		return;
+	}
 
-  int w = width();
-  int h = height();
-  if(w == 0 || h == 0) return;
-  p.drawBox(0, 0, &box, w, h);
+	p.drawBox(0, 0, box, w, h);
 }
 
-void GUI::ListBoxThin::resize(int width, int height)
+void ListBoxThin::resize(int width, int height)
 {
-  GUI::Widget::resize(width, height);
-  basic->resize(width - (box.left->width() + box.right->width()),
-                height - (box.top->height() + box.bottom->height()));
+	Widget::resize(width, height);
+	basic.resize(width - (box.left->width() + box.right->width()),
+	             height - (box.top->height() + box.bottom->height()));
 }
+
+} // GUI::
diff --git a/plugingui/listboxthin.h b/plugingui/listboxthin.h
index 9c5363a..3139ecc 100644
--- a/plugingui/listboxthin.h
+++ b/plugingui/listboxthin.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_LISTBOXTHIN_H__
-#define __DRUMGIZMO_LISTBOXTHIN_H__
+#pragma once
 
 #include <string.h>
 #include <vector>
@@ -33,35 +32,36 @@
 #include "widget.h"
 #include "painter.h"
 #include "listboxbasic.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class ListBoxThin : public Widget {
 public:
-  ListBoxThin(Widget *parent);
-  ~ListBoxThin();
+	ListBoxThin(Widget *parent);
+	~ListBoxThin();
 
-  void addItem(std::string name, std::string value);
-  void addItems(std::vector<ListBoxBasic::Item> &items);
+	void addItem(std::string name, std::string value);
+	void addItems(std::vector<ListBoxBasic::Item> &items);
 
-  void clear();
-  bool selectItem(int index);
-  std::string selectedName();
-  std::string selectedValue();
+	void clear();
+	bool selectItem(int index);
+	std::string selectedName();
+	std::string selectedValue();
 
-  void registerSelectHandler(void (*handler)(void *), void *ptr);
-  void registerClickHandler(void (*handler)(void *), void *ptr);
-  void registerValueChangeHandler(void (*handler)(void *), void *ptr);
+	// From Widget:
+	virtual void repaintEvent(GUI::RepaintEvent* repaintEvent) override;
+	virtual void resize(int w, int h) override;
 
-  virtual void repaintEvent(GUI::RepaintEvent *e);
-  virtual void resize(int w, int h);
+	// Forwarded notifier from ListBoxBasic::basic
+	Notifier<>& selectionNotifier;
+	Notifier<>& clickNotifier;
+	Notifier<>& valueChangedNotifier;
 
 private:
-  ListBoxBasic *basic;
+	ListBoxBasic basic;
 
-  Painter::Box box;
+	Painter::Box box;
 };
 
-};
-
-#endif/*__DRUMGIZMO_LISTBOXTHIN_H__*/
+} // GUI::
diff --git a/plugingui/nativewindow.h b/plugingui/nativewindow.h
index d68909d..a7d101e 100644
--- a/plugingui/nativewindow.h
+++ b/plugingui/nativewindow.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_NATIVEWINDOW_H__
-#define __DRUMGIZMO_NATIVEWINDOW_H__
+#pragma once
 
 #include <string>
 
@@ -33,25 +32,53 @@
 
 namespace GUI {
 
+//! \brief Interface class for native window implementations.
 class NativeWindow {
 public:
-  NativeWindow() {}
-  virtual ~NativeWindow() {}
-
-  virtual void setFixedSize(int width, int height) = 0;
-  virtual void resize(int width, int height) = 0;
-  virtual void move(int x, int y) = 0;
-  virtual void show() = 0;
-  virtual void setCaption(const std::string &caption) = 0;
-  virtual void hide() = 0;
-  virtual void handleBuffer() = 0;
-  virtual void redraw() = 0;
-  virtual void grabMouse(bool grab) = 0;
-
-  virtual bool hasEvent() = 0;
-  virtual Event *getNextEvent() = 0;
-};
+	NativeWindow() {}
+	virtual ~NativeWindow() {}
+
+	//! \brief Set a fixed size to the window.
+	//! It resizes the window and disallows user resizing.
+	virtual void setFixedSize(int width, int height) = 0;
+
+	// TODO: setScalable(bool) ??
+
+	//! \brief Set a new size of the window.
+	virtual void resize(int width, int height) = 0;
+
+	//! \brief Move the window to a new position.
+	virtual void move(int x, int y) = 0;
+
+	//! \brief Show the window if it is hidden.
+	virtual void show() = 0;
+
+	//! \brief Hides the window.
+	virtual void hide() = 0;
+
+	//! \brief Sets the window caption in the title bar (if it has one).
+	virtual void setCaption(const std::string &caption) = 0;
+
+	//! \brief Recreate a window render buffer based on the internal buffer.
+	//! This need to be called whenever the internal buffer size has changed.
+	virtual void handleBuffer() = 0;
+
+	//! \brief Draw the internal rendering buffer to the window buffer.
+	virtual void redraw() = 0;
+
+	//! \brief Toggle capture mouse mode.
+	virtual void grabMouse(bool grab) = 0;
+
+	//! \brief Query if the event queue contains any events.
+	virtual bool hasEvent() = 0;
+
+	//! \brief Read a single event from the event queue.
+	//! \return A pointer to the event or nullptr is none exists.
+	virtual Event *getNextEvent() = 0;
 
+	//! \brief Read next event without popping it from the event queue.
+	//! \return A pointer to the event or nullptr is none exists.
+	virtual Event* peekNextEvent() = 0;
 };
 
-#endif/*__DRUMGIZMO_NATIVEWINDOW_H__*/
+} // GUI::
diff --git a/plugingui/nativewindow_pugl.cc b/plugingui/nativewindow_pugl.cc
new file mode 100644
index 0000000..d7cca54
--- /dev/null
+++ b/plugingui/nativewindow_pugl.cc
@@ -0,0 +1,258 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            nativewindow_pugl.cc
+ *
+ *  Fri Dec 28 18:45:57 CET 2012
+ *  Copyright 2012 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "nativewindow_pugl.h"
+
+#include <stdlib.h>
+#include <list>
+
+#ifdef __APPLE__
+#include <OpenGL/glu.h>
+#else
+#include <GL/glu.h>
+#include <GL/glext.h>
+#include <GL/gl.h>
+#endif
+
+#include "window.h"
+#include "guievent.h"
+
+#include <hugin.hpp>
+
+namespace GUI {
+
+void NativeWindowPugl::onDisplay(PuglView* view)
+{
+	NativeWindowPugl* native = (NativeWindowPugl*)puglGetHandle(view);
+	Window& window = native->window;
+
+	glDisable(GL_DEPTH_TEST);
+	glClear(GL_COLOR_BUFFER_BIT);
+
+	GLuint image;
+
+	glGenTextures(1, &image);
+
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //GL_NEAREST = no smoothing
+	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+	glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, window.wpixbuf.width,
+	             window.wpixbuf.height, 0, GL_RGB, GL_UNSIGNED_BYTE,
+	             window.wpixbuf.buf);
+
+	glEnable(GL_TEXTURE_2D);
+
+	glBegin(GL_QUADS);
+	glTexCoord2d(0.0, 0.0); glVertex2f(0.0, 0.0);
+	glTexCoord2d(0.0, 1.0); glVertex2f(0.0, window.wpixbuf.height);
+	glTexCoord2d(1.0, 1.0); glVertex2f(window.wpixbuf.width, window.wpixbuf.height);
+	glTexCoord2d(1.0, 0.0); glVertex2f(window.wpixbuf.width, 0.0);
+	glEnd();
+
+	glDeleteTextures(1, &image);
+	glDisable(GL_TEXTURE_2D);
+	glFlush();
+
+	puglPostRedisplay(view);
+}
+
+void NativeWindowPugl::onMouse(PuglView* view, int button, bool press, int x, int y)
+{
+	NativeWindowPugl* native = (NativeWindowPugl*)puglGetHandle(view);
+
+	DEBUG(nativewindow_pugl, "Mouse %d %s at (%d,%d)\n", button,
+	      press? "down":"up", x, y);
+
+	ButtonEvent* e = new ButtonEvent();
+	e->x = x;
+	e->y = y;
+
+	switch(button) {
+	case 1:
+		e->button = MouseButton::left;
+		break;
+	case 2:
+		e->button = MouseButton::middle;
+		break;
+	case 3:
+	default:
+		e->button = MouseButton::right;
+		break;
+	}
+
+	e->direction = press ? Direction::down : Direction::up;
+	e->doubleClick = false;
+
+	native->eventq.push_back(e);
+}
+
+void NativeWindowPugl::onKeyboard(PuglView* view, bool press, uint32_t key)
+{
+	NativeWindowPugl* native = (NativeWindowPugl*)puglGetHandle(view);
+
+	KeyEvent* e = new KeyEvent();
+	e->direction = press ? Direction::down : Direction::up;
+
+	printf("%d\n", key);
+
+	switch(key) {
+	case PUGL_KEY_LEFT: e->keycode = Key::left; break;
+	case PUGL_KEY_RIGHT: e->keycode = Key::right; break;
+	case PUGL_KEY_UP: e->keycode = Key::up; break;
+	case PUGL_KEY_DOWN: e->keycode = Key::down; break;
+	case PUGL_KEY_PAGE_UP: e->keycode = Key::pageDown; break;
+	case PUGL_KEY_PAGE_DOWN: e->keycode = Key::pageUp; break;
+	default: e->keycode = Key::unknown; break;
+	}
+
+	// TODO: perform character type check
+	if(e->keycode == Key::unknown)
+	{
+		e->keycode = Key::character;
+		e->text.assign(1, (char)key);
+	}
+
+	printf("\t text: %s\n", e->text.c_str());
+
+	native->eventq.push_back(e);
+}
+
+NativeWindowPugl::NativeWindowPugl(void* native_window, Window& window)
+	: window(window)
+	, native_window(native_window)
+{
+	INFO(nativewindow, "Running with PuGL native window\n");
+	init();
+}
+
+NativeWindowPugl::~NativeWindowPugl()
+{
+	puglDestroy(view);
+}
+
+void NativeWindowPugl::init()
+{
+	PuglView* oldView = view;
+	if(view)
+	{
+		oldView = view;
+	}
+
+//	view = puglCreate(0, "DrumgGizmo", window.x(), window.y(), false, true);
+	view = puglCreate((PuglNativeWindow)native_window, "DrumgGizmo", 370, 330, false, true);
+	puglSetHandle(view, (PuglHandle)this);
+	puglSetDisplayFunc(view, onDisplay);
+	puglSetMouseFunc(view, onMouse);
+	puglSetKeyboardFunc(view, onKeyboard);
+
+	if(oldView)
+	{
+		free(oldView);
+	}
+}
+
+void NativeWindowPugl::setFixedSize(int width, int height)
+{
+//	redraw();
+}
+
+void NativeWindowPugl::resize(int width, int height)
+{
+//	DEBUG(nativewindow_pugl, "Resizing to %dx%d\n", width, height);
+//	init();
+//	redraw();
+}
+
+void NativeWindowPugl::move(int x, int y)
+{
+//	redraw();
+}
+
+void NativeWindowPugl::show()
+{
+//	redraw();
+}
+
+void NativeWindowPugl::hide()
+{
+//	redraw();
+}
+
+void NativeWindowPugl::handleBuffer()
+{
+	onDisplay(view);
+}
+
+void NativeWindowPugl::redraw()
+{
+//	handleBuffer();
+}
+
+void NativeWindowPugl::setCaption(const std::string &caption)
+{
+//	redraw();
+}
+
+void NativeWindowPugl::grabMouse(bool grab)
+{
+//	redraw();
+}
+
+bool NativeWindowPugl::hasEvent()
+{
+	// dirty hack - assume that this function is called enough times to get fluent gui
+	// ^^ Bad assumption
+	puglProcessEvents(view);
+	return !eventq.empty();
+}
+
+Event *NativeWindowPugl::getNextEvent()
+{
+	Event *event = nullptr;
+
+	if(!eventq.empty()) {
+		event = eventq.front();
+		eventq.pop_front();
+	}
+	return event;
+}
+
+Event *NativeWindowPugl::peekNextEvent()
+{
+	Event *event = nullptr;
+
+	if(!eventq.empty()) {
+		event = eventq.front();
+	}
+	return event;
+}
+
+} // GUI::
diff --git a/plugingui/nativewindow_win32.cc b/plugingui/nativewindow_win32.cc
index 871bafe..f49f3c6 100644
--- a/plugingui/nativewindow_win32.cc
+++ b/plugingui/nativewindow_win32.cc
@@ -11,64 +11,71 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "nativewindow_win32.h"
 
-#ifdef WIN32
-
 #include "window.h"
 
-LRESULT CALLBACK dialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+#include <cstring>
+
+namespace GUI {
+
+LRESULT CALLBACK NativeWindowWin32::dialogProc(HWND hwnd, UINT msg,
+                                               WPARAM wp, LPARAM lp)
 {
-  GUI::NativeWindowWin32 *native =
-    (GUI::NativeWindowWin32 *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+	NativeWindowWin32* native =
+		(NativeWindowWin32*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
 
-  // NOTE: 'native' is NULL intil the WM_CREATE message has been handled. 
-  if(!native) return DefWindowProc(hwnd, msg, wp, lp);
+	// NOTE: 'native' is nullptr intil the WM_CREATE message has been handled.
+	if(!native)
+	{
+		return DefWindowProc(hwnd, msg, wp, lp);
+	}
 
-  GUI::Window *window = native->window;
+	Window& window = native->window;
 
 	switch(msg) {
 	case WM_SIZE:
-    {
-      static bool first = true;
-      if(!first) {
-        GUI::ResizeEvent *e = new GUI::ResizeEvent();
-        e->width = LOWORD(lp);
-        e->height = HIWORD(lp);
-        native->event = e;
-        first = false;
-      }
-    }
+		{
+			static bool first = true;
+			if(!first)
+			{
+				ResizeEvent* resizeEvent = new ResizeEvent();
+				resizeEvent->width = LOWORD(lp);
+				resizeEvent->height = HIWORD(lp);
+				native->event_queue.push(resizeEvent);
+				first = false;
+			}
+		}
 		break;
 
 	case WM_MOVE:
-    {
-//      GUI::MoveEvent *e = new GUI::MoveEvent();
-//      e->x = (int)(short) LOWORD(lp);
-//      e->y = (int)(short) HIWORD(lp);
-//      native->event = e;
-    }
+		{
+//      MoveEvent* moveEvent = new MoveEvent();
+//      moveEvent->x = (short)LOWORD(lp);
+//      moveEvent->y = (short)HIWORD(lp);
+//      native->event_queue.push(moveEvent);
+		}
 		break;
 
 	case WM_CLOSE:
-    {
-      GUI::CloseEvent *e = new GUI::CloseEvent();
-      native->event = e;
-    }
-    break;
+		{
+			CloseEvent* closeEvent = new CloseEvent();
+			native->event_queue.push(closeEvent);
+		}
+		break;
 //		HWND child, old;
 //		old	= 0;
 
@@ -83,31 +90,30 @@ LRESULT CALLBACK dialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
 //		else PostQuitMessage(0);
 //		return 0;
 	case WM_MOUSEMOVE:
-    {
-      
-      GUI::MouseMoveEvent *e = new GUI::MouseMoveEvent();
-      e->x = (int)(short) LOWORD(lp);
-      e->y = (int)(short) HIWORD(lp);
-      native->event = e;
-    }
+		{
+			MouseMoveEvent* mouseMoveEvent = new MouseMoveEvent();
+			mouseMoveEvent->x = (short)LOWORD(lp);
+			mouseMoveEvent->y = (short)HIWORD(lp);
+			native->event_queue.push(mouseMoveEvent);
+		}
 		break;
 
 	case WM_MOUSEWHEEL:
-    {
-      GUI::ScrollEvent *e = new GUI::ScrollEvent();
-
-      // NOTE: lp is coordinates in screen space, not client space.
-      POINT p;
-      p.x = (int)(short) LOWORD(lp);
-      p.y = (int)(short) HIWORD(lp);
-      ScreenToClient(hwnd, &p);
-
-      e->x = p.x;
-      e->y = p.y;
-      e->delta = -1 * (short)HIWORD(wp) / 60;
-      native->event = e;
-    }
- 		break;
+		{
+			ScrollEvent* scrollEvent = new ScrollEvent();
+
+			// NOTE: lp is coordinates in screen space, not client space.
+			POINT p;
+			p.x = (short)LOWORD(lp);
+			p.y = (short)HIWORD(lp);
+			ScreenToClient(hwnd, &p);
+
+			scrollEvent->x = p.x;
+			scrollEvent->y = p.y;
+			scrollEvent->delta = -1 * (short)HIWORD(wp) / 60;
+			native->event_queue.push(scrollEvent);
+		}
+		break;
 
 	case WM_LBUTTONUP:
 	case WM_LBUTTONDBLCLK:
@@ -118,283 +124,355 @@ LRESULT CALLBACK dialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
 	case WM_MBUTTONUP:
 	case WM_MBUTTONDBLCLK:
 	case WM_MBUTTONDOWN:
-    {
-      GUI::ButtonEvent *e = new GUI::ButtonEvent();
-      e->x = (int)(short) LOWORD(lp);
-      e->y = (int)(short) HIWORD(lp);
-
-      if(msg == WM_LBUTTONUP ||
-         msg == WM_LBUTTONDBLCLK ||
-         msg == WM_LBUTTONDOWN) e->button = 0;
-
-      if(msg == WM_RBUTTONUP ||
-         msg == WM_RBUTTONDBLCLK ||
-         msg == WM_RBUTTONDOWN) e->button = 1;
-
-      if(msg == WM_MBUTTONUP ||
-         msg == WM_MBUTTONDBLCLK ||
-         msg == WM_MBUTTONDOWN) e->button = 2;
-
-      e->direction = 0;
-      if(msg == WM_LBUTTONUP ||
-         msg == WM_RBUTTONUP ||
-         msg == WM_MBUTTONUP) e->direction = -1;
-
-      if(msg == WM_LBUTTONDOWN ||
-         msg == WM_RBUTTONDOWN ||
-         msg == WM_MBUTTONDOWN) e->direction = 1;
-
-      e->doubleclick = (msg == WM_LBUTTONDBLCLK ||
-                        msg == WM_RBUTTONDBLCLK ||
-                        msg == WM_MBUTTONDBLCLK);
-
-      native->event = e;
-    }
+		{
+			ButtonEvent* buttonEvent = new ButtonEvent();
+
+			buttonEvent->x = (short)LOWORD(lp);
+			buttonEvent->y = (short)HIWORD(lp);
+
+			if(msg == WM_LBUTTONUP ||
+			   msg == WM_LBUTTONDBLCLK ||
+			   msg == WM_LBUTTONDOWN)
+			{
+				buttonEvent->button = MouseButton::left;
+			}
+			else if(msg == WM_RBUTTONUP ||
+			        msg == WM_RBUTTONDBLCLK ||
+			        msg == WM_RBUTTONDOWN)
+			{
+				buttonEvent->button = MouseButton::middle;
+			}
+			else if(msg == WM_MBUTTONUP ||
+			        msg == WM_MBUTTONDBLCLK ||
+			        msg == WM_MBUTTONDOWN)
+			{
+				buttonEvent->button = MouseButton::right;
+			}
+			else
+			{
+				delete buttonEvent;
+				break; // unknown button
+			}
+
+			if(msg == WM_LBUTTONUP ||
+			   msg == WM_RBUTTONUP ||
+			   msg == WM_MBUTTONUP)
+			{
+				buttonEvent->direction = Direction::up;
+			}
+			else if(msg == WM_LBUTTONDOWN ||
+			        msg == WM_RBUTTONDOWN ||
+			        msg == WM_MBUTTONDOWN)
+			{
+				buttonEvent->direction = Direction::down;
+			}
+
+			buttonEvent->doubleClick = (msg == WM_LBUTTONDBLCLK ||
+			                            msg == WM_RBUTTONDBLCLK ||
+			                            msg == WM_MBUTTONDBLCLK);
+
+			native->event_queue.push(buttonEvent);
+		}
 		break;
 
 	case WM_KEYDOWN:
-    {
-      GUI::KeyEvent *e = new GUI::KeyEvent();
-      //printf("wp: %d\n", wp);
-      switch(wp) {
-      case 37: e->keycode = GUI::KeyEvent::KEY_LEFT; break;
-      case 39: e->keycode = GUI::KeyEvent::KEY_RIGHT; break;
-      case 38: e->keycode = GUI::KeyEvent::KEY_UP; break;
-      case 40: e->keycode = GUI::KeyEvent::KEY_DOWN; break;
-      case 8: e->keycode = GUI::KeyEvent::KEY_BACKSPACE; break;
-      case 46: e->keycode = GUI::KeyEvent::KEY_DELETE; break;
-      case 36: e->keycode = GUI::KeyEvent::KEY_HOME; break;
-      case 35: e->keycode = GUI::KeyEvent::KEY_END; break;
-      case 33: e->keycode = GUI::KeyEvent::KEY_PGUP; break;
-      case 34: e->keycode = GUI::KeyEvent::KEY_PGDOWN; break;
-      case 13: e->keycode = GUI::KeyEvent::KEY_ENTER; break;
-      default: e->keycode = GUI::KeyEvent::KEY_UNKNOWN; break;
-      }
-      e->text = "";
-      e->direction = -1;
-      native->event = e;
-    }
+	case WM_KEYUP:
+		{
+			KeyEvent* keyEvent = new KeyEvent();
+
+			switch(wp) {
+			case VK_LEFT:   keyEvent->keycode = Key::left;      break;
+			case VK_RIGHT:  keyEvent->keycode = Key::right;     break;
+			case VK_UP:     keyEvent->keycode = Key::up;        break;
+			case VK_DOWN:   keyEvent->keycode = Key::down;      break;
+			case VK_BACK:   keyEvent->keycode = Key::backspace; break;
+			case VK_DELETE: keyEvent->keycode = Key::deleteKey; break;
+			case VK_HOME:   keyEvent->keycode = Key::home;      break;
+			case VK_END:    keyEvent->keycode = Key::end;       break;
+			case VK_PRIOR:  keyEvent->keycode = Key::pageUp;    break;
+			case VK_NEXT:   keyEvent->keycode = Key::pageDown;  break;
+			case VK_RETURN: keyEvent->keycode = Key::enter;     break;
+			default:        keyEvent->keycode = Key::unknown;   break;
+			}
+
+			keyEvent->text = "";
+			keyEvent->direction =
+				(msg == WM_KEYDOWN) ? Direction::down : Direction::up;
+
+			native->event_queue.push(keyEvent);
+		}
 		break;
 
 	case WM_CHAR:
-    {
-      //printf("WM_CHAR %d %d\n", (int)lp, (int)wp);
-      if(wp >= ' ') { // Filter control chars.
-        GUI::KeyEvent *e = new GUI::KeyEvent();
-        e->keycode = GUI::KeyEvent::KEY_CHARACTER;
-        e->text += (char)wp;
-        e->direction = -1;
-        native->event = e;
-      }
-    }
+		{
+			if(wp >= ' ') // Filter control chars.
+			{
+				KeyEvent* keyEvent = new KeyEvent();
+				keyEvent->keycode = Key::character;
+				keyEvent->text += (char)wp;
+				keyEvent->direction = Direction::up;
+				native->event_queue.push(keyEvent);
+			}
+		}
 		break;
 
 	case WM_PAINT:
-    {
-      GUI::RepaintEvent *e = new GUI::RepaintEvent();
-      e->x = 0;
-      e->y = 0;
-      e->width = 100;
-      e->height = 100;
-      native->event = e;
-
-      // Move to window.h (in class)
-      HDC pDC;
-      HBITMAP old;
-      HBITMAP ourbitmap;
-      int * framebuf;
-      GUI::PixelBuffer &px = window->wpixbuf;
-
-      { // Create bitmap (move to window.cc)
-        HDC hDC;
-        BITMAPINFO bitmapinfo;
-        hDC = CreateCompatibleDC(NULL);
-        bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-        bitmapinfo.bmiHeader.biWidth = px.width;
-        bitmapinfo.bmiHeader.biHeight = -px.height; /* top-down */
-        bitmapinfo.bmiHeader.biPlanes = 1;
-        bitmapinfo.bmiHeader.biBitCount = 32;
-        bitmapinfo.bmiHeader.biCompression = BI_RGB;
-        bitmapinfo.bmiHeader.biSizeImage = 0;
-        bitmapinfo.bmiHeader.biClrUsed = 256;
-        bitmapinfo.bmiHeader.biClrImportant = 256;
-        ourbitmap=CreateDIBSection(hDC, &bitmapinfo,
-                                   DIB_RGB_COLORS, (void**)&framebuf, 0, 0);
-        pDC=CreateCompatibleDC(NULL);
-        old = (HBITMAP__*)SelectObject(pDC, ourbitmap);
-        DeleteDC(hDC);
-      }
-
-      { // Copy GUI::PixelBuffer to framebuffer (move to window.cc)
-        int i,j,k;
-        for (k=0,i=0;i<(int)px.height;i++) {
-          for (j=0;j<(int)px.width;j++,k++) {
-            *(framebuf+k)=RGB(px.buf[(j + i * px.width) * 3 + 2],
-                              px.buf[(j + i * px.width) * 3 + 1],
-                              px.buf[(j + i * px.width) * 3 + 0]);
-          }
-        }
-      }
-      
-      PAINTSTRUCT	ps;
-      HDC	hdc = BeginPaint(native->m_hwnd, &ps);
-      BitBlt(hdc, 0, 0, px.width, px.height, pDC, 0, 0, SRCCOPY);
-      EndPaint(native->m_hwnd, &ps);
-
-      { // Destroy bitmap (move to window.cc)
-        SelectObject(pDC,old);
-        DeleteDC(pDC);
-        DeleteObject(ourbitmap);
-        
-      }
-    }
+		{
+			RepaintEvent* repaintEvent = new RepaintEvent();
+			repaintEvent->x = 0;
+			repaintEvent->y = 0;
+			repaintEvent->width = 100;
+			repaintEvent->height = 100;
+			native->event_queue.push(repaintEvent);
+
+			// Move to window.h (in class)
+			HDC pDC;
+			HBITMAP old;
+			HBITMAP ourbitmap;
+			int* framebuf;
+			PixelBuffer& px = window.wpixbuf;
+
+			{ // Create bitmap
+				HDC hDC;
+				BITMAPINFO bitmapinfo;
+				hDC = CreateCompatibleDC(nullptr);
+				bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+				bitmapinfo.bmiHeader.biWidth = px.width;
+				bitmapinfo.bmiHeader.biHeight = -px.height; // top-down
+				bitmapinfo.bmiHeader.biPlanes = 1;
+				bitmapinfo.bmiHeader.biBitCount = 32;
+				bitmapinfo.bmiHeader.biCompression = BI_RGB;
+				bitmapinfo.bmiHeader.biSizeImage = 0;
+				bitmapinfo.bmiHeader.biClrUsed = 256;
+				bitmapinfo.bmiHeader.biClrImportant = 256;
+				ourbitmap = CreateDIBSection(hDC, &bitmapinfo,
+				                             DIB_RGB_COLORS, (void**)&framebuf, 0, 0);
+				pDC=CreateCompatibleDC(nullptr);
+				old = (HBITMAP__*)SelectObject(pDC, ourbitmap);
+				DeleteDC(hDC);
+			}
+
+			{ // Copy PixelBuffer to framebuffer
+				int i, j, k;
+				for(k = 0, i = 0; i < (int)px.height; ++i)
+				{
+					for(j = 0; j < (int)px.width; ++j, ++k)
+					{
+						*(framebuf + k) = RGB(px.buf[(j + i * px.width) * 3 + 2],
+						                      px.buf[(j + i * px.width) * 3 + 1],
+						                      px.buf[(j + i * px.width) * 3 + 0]);
+					}
+				}
+			}
+
+			PAINTSTRUCT ps;
+			HDC hdc = BeginPaint(native->m_hwnd, &ps);
+			BitBlt(hdc, 0, 0, px.width, px.height, pDC, 0, 0, SRCCOPY);
+			EndPaint(native->m_hwnd, &ps);
+
+			{ // Destroy bitmap (move to window.cc)
+				SelectObject(pDC,old);
+				DeleteDC(pDC);
+				DeleteObject(ourbitmap);
+			}
+		}
+
 		return DefWindowProc(hwnd, msg, wp, lp);
 	}
 
 	return DefWindowProc(hwnd, msg, wp, lp);
 }
 
-// Delared in eventhandler.cc
-LRESULT CALLBACK dialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
-
-GUI::NativeWindowWin32::NativeWindowWin32(GUI::Window *window)
-  : GUI::NativeWindow()
+NativeWindowWin32::NativeWindowWin32(void* native_window, Window& window)
+	: window(window)
 {
-  this->window = window;
-
-	WNDCLASSEX wcex;
-	WNDID wndId;
+	WNDCLASSEX wcex{};
 
-	m_hwnd = 0;
-	m_className = NULL;
-  event = NULL;
-
-	memset(&wcex, 0, sizeof(wcex));
-	
 	//Time to register a window class.
-  //Generic flags and everything. cbWndExtra is the size of a pointer to an
-  // object - we need this in the wndproc handler.
-	
+	//Generic flags and everything. cbWndExtra is the size of a pointer to an
+	// object - we need this in the wndproc handler.
+
 	wcex.cbSize = sizeof(WNDCLASSEX);
 	wcex.style = CS_DBLCLKS;//class_style;
 	wcex.lpfnWndProc = (WNDPROC)dialogProc;
-  wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
-  // Set data:
+	wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
+	// Set data:
 	wcex.cbWndExtra = sizeof(NativeWindowWin32*); // Size of data.
-	wcex.hInstance = GetModuleHandle(NULL);
+	wcex.hInstance = GetModuleHandle(nullptr);
 
-  //	if(ex_style && WS_EX_TRANSPARENT == WS_EX_TRANSPARENT) {
-  //		wcex.hbrBackground = NULL;
-  //	} else {
-  wcex.hbrBackground = NULL;//(HBRUSH) COLOR_BACKGROUND + 1;
-  //	}
-	
-	wcex.lpszClassName = m_className = strdup("DrumGizmoClass");
+	//	if(ex_style && WS_EX_TRANSPARENT == WS_EX_TRANSPARENT) {
+	//		wcex.hbrBackground = nullptr;
+	//	} else {
+	wcex.hbrBackground = nullptr;//(HBRUSH) COLOR_BACKGROUND + 1;
+	//	}
+
+	const char* name = "DrumGizmoClass";
+	char* c_name = (char*)malloc(strlen(name) + 1);
+	strcpy(c_name, name);
+	wcex.lpszClassName = m_className = c_name;
 
 	RegisterClassEx(&wcex);
 
-  /*
-	if(parent) {
-		style = style | WS_CHILD;
-		wndId = parent->getWndId();
-	} else {
-  */
-  //style = style | WS_OVERLAPPEDWINDOW;
-		wndId = 0;
-    //	}
+	parent_window = (HWND)native_window;
 
 	m_hwnd = CreateWindowEx(0/*ex_style*/, m_className,
-                          "DGBasisWidget",
-                          (WS_OVERLAPPEDWINDOW | WS_VISIBLE),
-                          window->x(), window->y(),
-                          window->width(), window->height(),
-                          wndId, NULL,
-                          GetModuleHandle(NULL), NULL);
+	                        "DGBasisWidget",
+	                        (native_window?WS_CHILD:WS_OVERLAPPEDWINDOW) | WS_VISIBLE,
+	                        window.x(), window.y(),
+	                        window.width(), window.height(),
+	                        parent_window, nullptr,
+	                        GetModuleHandle(nullptr), nullptr);
 
 	SetWindowLongPtr(m_hwnd, GWLP_USERDATA, (LONG_PTR)this);
 }
 
-GUI::NativeWindowWin32::~NativeWindowWin32()
+NativeWindowWin32::~NativeWindowWin32()
 {
-	UnregisterClass(m_className, GetModuleHandle(NULL));
+	UnregisterClass(m_className, GetModuleHandle(nullptr));
 	free(m_className);
 }
 
-void GUI::NativeWindowWin32::setFixedSize(int width, int height)
+void NativeWindowWin32::setFixedSize(int width, int height)
 {
-  resize(width, height);
-  LONG style =  GetWindowLong(m_hwnd, GWL_STYLE);
-  style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
-  SetWindowLong(m_hwnd, GWL_STYLE, style);
+	resize(width, height);
+	LONG style =  GetWindowLong(m_hwnd, GWL_STYLE);
+	style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
+	SetWindowLong(m_hwnd, GWL_STYLE, style);
 }
 
-void GUI::NativeWindowWin32::resize(int width, int height)
+void NativeWindowWin32::resize(int width, int height)
 {
-  SetWindowPos(m_hwnd, NULL, -1, -1, (int)width, (int)height, SWP_NOMOVE);
-  RECT r;
-  GetClientRect(m_hwnd, &r);
-  int w = width - r.right;
-  int h = height - r.bottom;
+	SetWindowPos(m_hwnd, nullptr, -1, -1, (int)width, (int)height, SWP_NOMOVE);
+	RECT r;
+	GetClientRect(m_hwnd, &r);
+	int w = width - r.right;
+	int h = height - r.bottom;
+
+	SetWindowPos(m_hwnd, nullptr, -1, -1, width + w, height + h, SWP_NOMOVE);
+}
 
-  SetWindowPos(m_hwnd, NULL, -1, -1, width + w, height + h, SWP_NOMOVE);
+void NativeWindowWin32::move(int x, int y)
+{
+	SetWindowPos(m_hwnd, nullptr, (int)x, (int)y, -1, -1, SWP_NOSIZE);
 }
 
-void GUI::NativeWindowWin32::move(int x, int y)
+void NativeWindowWin32::show()
 {
-  SetWindowPos(m_hwnd, NULL, (int)x, (int)y, -1, -1, SWP_NOSIZE);
+	ShowWindow(m_hwnd, SW_SHOW);
 }
 
-void GUI::NativeWindowWin32::show()
+void NativeWindowWin32::handleBuffer()
 {
-  ShowWindow(m_hwnd, SW_SHOW);
 }
 
-void GUI::NativeWindowWin32::handleBuffer()
+void NativeWindowWin32::hide()
 {
+	ShowWindow(m_hwnd, SW_HIDE);
 }
 
-void GUI::NativeWindowWin32::hide()
+void NativeWindowWin32::redraw()
 {
-  ShowWindow(m_hwnd, SW_HIDE);
+	if(parent_window == nullptr)
+	{
+		RedrawWindow(m_hwnd, nullptr, nullptr, RDW_ERASE|RDW_INVALIDATE);
+		UpdateWindow(m_hwnd);
+	}
+	else
+	{
+		InvalidateRect(m_hwnd, 0, TRUE);
+	}
 }
 
-void GUI::NativeWindowWin32::redraw()
+void NativeWindowWin32::setCaption(const std::string &caption)
 {
-  RedrawWindow(m_hwnd, NULL, NULL, RDW_ERASE|RDW_INVALIDATE);
-  UpdateWindow(m_hwnd);
+	SetWindowText(m_hwnd, caption.c_str());
 }
 
-void GUI::NativeWindowWin32::setCaption(const std::string &caption)
+void NativeWindowWin32::grabMouse(bool grab)
 {
-  SetWindowText(m_hwnd, caption.c_str());
+	if(grab)
+	{
+		SetCapture(m_hwnd);
+	}
+	else
+	{
+		ReleaseCapture();
+	}
 }
 
-void GUI::NativeWindowWin32::grabMouse(bool grab)
+bool NativeWindowWin32::hasEvent()
 {
-  if(grab) SetCapture(m_hwnd);
-  else ReleaseCapture();
+	if(!event_queue.empty())
+	{
+		return true;
+	}
+
+	// Parented windows have their event loop somewhere else.
+	if(parent_window == nullptr)
+	{
+		MSG msg;
+		return PeekMessage(&msg, m_hwnd, 0, 0, PM_NOREMOVE) != 0;
+	}
+
+	return false;
 }
 
-bool GUI::NativeWindowWin32::hasEvent()
+Event* NativeWindowWin32::getNextEvent()
 {
-	MSG	msg;
-  return PeekMessage(&msg, NULL, 0, 0, 0) != 0;
+	if(!event_queue.empty())
+	{
+		auto event = event_queue.front();
+		event_queue.pop();
+		return event;
+	}
+
+	// Parented windows have their event loop somewhere else.
+	if(parent_window == nullptr)
+	{
+		MSG msg;
+		if(GetMessage(&msg, m_hwnd, 0, 0))
+		{
+			TranslateMessage(&msg);
+			DispatchMessage(&msg);
+		}
+	}
+
+	if(event_queue.empty())
+	{
+		return nullptr;
+	}
+
+	auto event = event_queue.front();
+	event_queue.pop();
+	return event;
 }
 
-GUI::Event *GUI::NativeWindowWin32::getNextEvent()
+Event* NativeWindowWin32::peekNextEvent()
 {
-  Event *event = NULL;
+	if(!event_queue.empty())
+	{
+		auto event = event_queue.front();
+		return event;
+	}
 
-	MSG	msg;
-	if(GetMessage(&msg, NULL, 0, 0)) {
-    TranslateMessage(&msg);
-    DispatchMessage(&msg);
+	// Parented windows have their event loop somewhere else.
+	if(parent_window == nullptr)
+	{
+		MSG msg;
+		if(PeekMessage(&msg, m_hwnd, 0, 0, PM_NOREMOVE))
+		{
+			TranslateMessage(&msg);
+			DispatchMessage(&msg);
+		}
 	}
 
-  event = this->event;
-  this->event = NULL;
+	if(event_queue.empty())
+	{
+		return nullptr;
+	}
 
-  return event;
+	auto event = event_queue.front();
+	return event;
 }
 
-#endif/*WIN32*/
+} // GUI::
diff --git a/plugingui/nativewindow_win32.h b/plugingui/nativewindow_win32.h
index 6afc7b1..3d708b8 100644
--- a/plugingui/nativewindow_win32.h
+++ b/plugingui/nativewindow_win32.h
@@ -11,26 +11,26 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_NATIVEWINDOW_WIN32_H__
-#define __DRUMGIZMO_NATIVEWINDOW_WIN32_H__
+#pragma once
 
-#ifdef WIN32
+#include <queue>
 
 #include "nativewindow.h"
 
+#define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 typedef HWND WNDID;
 
@@ -41,31 +41,31 @@ class Event;
 
 class NativeWindowWin32 : public NativeWindow {
 public:
-  NativeWindowWin32(GUI::Window *window);
-  ~NativeWindowWin32();
+	NativeWindowWin32(void* native_window, Window& window);
+	~NativeWindowWin32();
 
-  void setFixedSize(int width, int height);
-  void resize(int width, int height);
-  void move(int x, int y);
-  void show();
-  void setCaption(const std::string &caption);
-  void hide();
-  void handleBuffer();
-  void redraw();
-  void grabMouse(bool grab);
+	void setFixedSize(int width, int height) override;
+	void resize(int width, int height) override;
+	void move(int x, int y) override;
+	void show() override;
+	void setCaption(const std::string &caption) override;
+	void hide() override;
+	void handleBuffer() override;
+	void redraw() override;
+	void grabMouse(bool grab) override;
 
-  bool hasEvent();
-  Event *getNextEvent();
+	bool hasEvent() override;
+	Event* getNextEvent() override;
+	Event* peekNextEvent() override;
 
-  // Needed by dialogProc
-  GUI::Window *window;
-	WNDID	m_hwnd;
-	char *m_className;
-  Event *event;
-};
+private:
+	static LRESULT CALLBACK dialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
 
+	HWND parent_window;
+	Window& window;
+	WNDID m_hwnd = 0;
+	char* m_className = nullptr;
+	std::queue<Event*> event_queue;
 };
 
-#endif/*WIN32*/
-
-#endif/*__DRUMGIZMO_NATIVEWINDOW_WIN32_H__*/
+} // GUI::
diff --git a/plugingui/nativewindow_x11.cc b/plugingui/nativewindow_x11.cc
index cb6cf73..63381d3 100644
--- a/plugingui/nativewindow_x11.cc
+++ b/plugingui/nativewindow_x11.cc
@@ -11,120 +11,169 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "nativewindow_x11.h"
 
-#ifdef X11
 #include <X11/Xutil.h>
 #include <stdlib.h>
 
+#include <hugin.hpp>
+
 #include "window.h"
 
-GUI::NativeWindowX11::NativeWindowX11(GUI::Window *window)
-  : GUI::NativeWindow()
+namespace GUI {
+
+NativeWindowX11::NativeWindowX11(void* native_window, Window& window)
+	: buffer(nullptr)
+	, window(window)
 {
-  display = XOpenDisplay(NULL);
-
-  this->window = window;
-  buffer = NULL;
-
-  // Get some colors
-  int blackColor = BlackPixel(display, DefaultScreen(display));
-  
-  ::Window w = DefaultRootWindow(display);
-
-  // Create the window
-  xwindow = XCreateSimpleWindow(display,
-                                w,
-                                window->x(), window->y(),
-                                window->width(), window->height(),
-                                0,
-                                blackColor, blackColor);
-
-  XSelectInput(display, xwindow,
-               StructureNotifyMask |
-               PointerMotionMask |
-               ButtonPressMask |
-               ButtonReleaseMask |
-               KeyPressMask |
-               KeyReleaseMask|
-               ExposureMask |
-               StructureNotifyMask |
-               SubstructureNotifyMask);
-
-  // register interest in the delete window message
-  wmDeleteMessage = XInternAtom(display, "WM_DELETE_WINDOW", false);
-  XSetWMProtocols(display, xwindow, &wmDeleteMessage, 1);
-
-  // "Map" the window (that is, make it appear on the screen)
-  XMapWindow(display, xwindow);
-
-  // Create a "Graphics Context"
-  gc = XCreateGC(display, xwindow, 0, NULL);
+	display = XOpenDisplay(nullptr);
+	if(display  == nullptr)
+	{
+		ERR(X11, "XOpenDisplay failed");
+		return;
+	}
+
+	screen = DefaultScreen(display);
+
+	// Get some colors
+	int blackColor = BlackPixel(display, screen);
+
+	::Window parentWindow;
+	if(native_window)
+	{
+		parentWindow = (::Window)native_window;
+	}
+	else
+	{
+		parentWindow = DefaultRootWindow(display);
+	}
+
+	// Create the window
+	unsigned long border = 0;
+	xwindow = XCreateSimpleWindow(display,
+	                              parentWindow,
+	                              window.x(), window.y(),
+	                              window.width(), window.height(),
+	                              border,
+	                              blackColor, blackColor);
+
+	long mask = (StructureNotifyMask |
+	             PointerMotionMask |
+	             ButtonPressMask |
+	             ButtonReleaseMask |
+	             KeyPressMask |
+	             KeyReleaseMask|
+	             ExposureMask |
+	             StructureNotifyMask |
+	             SubstructureNotifyMask);
+	XSelectInput(display, xwindow, mask);
+
+	// Register the delete window message:
+	wmDeleteMessage = XInternAtom(display, "WM_DELETE_WINDOW", false);
+
+	Atom protocols[] = { wmDeleteMessage };
+	int count = sizeof(protocols)/sizeof(Atom);
+	XSetWMProtocols(display, xwindow, protocols, count);
+
+	// "Map" the window (that is, make it appear on the screen)
+	XMapWindow(display, xwindow);
+
+	// Create a "Graphics Context"
+	gc = XCreateGC(display, xwindow, 0, nullptr);
 }
 
-GUI::NativeWindowX11::~NativeWindowX11()
+NativeWindowX11::~NativeWindowX11()
 {
-  XDestroyWindow(display, xwindow);
-  //widgets.erase(window);
-  XCloseDisplay(display);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XDestroyWindow(display, xwindow);
+	XCloseDisplay(display);
 }
 
-void GUI::NativeWindowX11::setFixedSize(int width, int height)
+void NativeWindowX11::setFixedSize(int width, int height)
 {
-  resize(width, height);
-
-  XSizeHints *size_hints;
-  size_hints = XAllocSizeHints();
-
-  if(size_hints == NULL) {
-    //fprintf(stderr,"XMallocSizeHints() failed\n");
-    //exit(1);
-    return;
-  }
-
-  size_hints->flags = USPosition | PMinSize | PMaxSize;
-  size_hints->min_width = size_hints->max_width = width;
-  size_hints->min_height = size_hints->max_height = height;
-  /*
-    size_hints->min_aspect.x = window->width()/window->height();
-    size_hints->max_aspect.x = window->width()/window->height();
-    size_hints->min_aspect.y = window->width()/window->height();
-    size_hints->max_aspect.y = size_hints->min_aspect.y;
-  */
-  XSetWMNormalHints(display, xwindow, size_hints);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	resize(width, height);
+
+	XSizeHints* size_hints;
+	size_hints = XAllocSizeHints();
+
+	if(size_hints == nullptr)
+	{
+		ERR(X11,"XMallocSizeHints() failed");
+		return;
+	}
+
+	size_hints->flags = USPosition | PMinSize | PMaxSize;
+	size_hints->min_width = size_hints->max_width = width;
+	size_hints->min_height = size_hints->max_height = height;
+
+	//size_hints->min_aspect.x = (float)window.width()/(float)window.height();
+	//size_hints->max_aspect.x = (float)window.width()/(float)window.height();
+	//size_hints->min_aspect.y = (float)window.width()/(float)window.height();
+	//size_hints->max_aspect.y = size_hints->min_aspect.y;
+
+	XSetWMNormalHints(display, xwindow, size_hints);
 }
 
-void GUI::NativeWindowX11::resize(int width, int height)
+void NativeWindowX11::resize(int width, int height)
 {
-  XResizeWindow(display, xwindow, width, height);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XResizeWindow(display, xwindow, width, height);
 }
 
-void GUI::NativeWindowX11::move(int x, int y)
+void NativeWindowX11::move(int x, int y)
 {
-  XMoveWindow(display, xwindow, x, y);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XMoveWindow(display, xwindow, x, y);
 }
 
-void GUI::NativeWindowX11::show()
+void NativeWindowX11::show()
 {
-  XMapWindow(display, xwindow);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XMapWindow(display, xwindow);
 }
 
-void GUI::NativeWindowX11::hide()
+void NativeWindowX11::hide()
 {
-  XUnmapWindow(display, xwindow);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XUnmapWindow(display, xwindow);
 }
 
 static int get_byte_order (void)
@@ -135,254 +184,345 @@ static int get_byte_order (void)
 	} order;
 
 	order.s = 1;
-	if ((1 == order.c[0])) {
+	if((1 == order.c[0]))
+	{
 		return LSBFirst;
-	} else {
+	}
+	else
+	{
 		return MSBFirst;
 	}
 }
 
-static XImage *create_image_from_buffer(Display *dis, int screen,
-                                        unsigned char *buf,
-                                        int width, int height)
+XImage* NativeWindowX11::createImageFromBuffer(unsigned char* buf,
+                                               int width, int height)
 {
 	int depth;
-	XImage *img = NULL;
-	Visual *vis;
+	XImage* img = nullptr;
+	Visual* vis;
 	double rRatio;
 	double gRatio;
 	double bRatio;
-	int outIndex = 0;	
+	int outIndex = 0;
 	int i;
 	int numBufBytes = (3 * (width * height));
-		
-	depth = DefaultDepth(dis, screen);
-	vis = DefaultVisual(dis, screen);
+
+	depth = DefaultDepth(display, screen);
+	vis = DefaultVisual(display, screen);
 
 	rRatio = vis->red_mask / 255.0;
 	gRatio = vis->green_mask / 255.0;
 	bRatio = vis->blue_mask / 255.0;
-		
-	if (depth >= 24) {
+
+	if(depth >= 24)
+	{
 		size_t numNewBufBytes = (4 * (width * height));
 		u_int32_t *newBuf = (u_int32_t *)malloc (numNewBufBytes);
-	
-		for (i = 0; i < numBufBytes; ++i) {
+
+		for(i = 0; i < numBufBytes; ++i)
+		{
 			unsigned int r, g, b;
 			r = (buf[i] * rRatio);
 			++i;
 			g = (buf[i] * gRatio);
 			++i;
 			b = (buf[i] * bRatio);
-					
-			r &= vis->red_mask;
-			g &= vis->green_mask;
-			b &= vis->blue_mask;
-			
-			newBuf[outIndex] = r | g | b;
-			++outIndex;
-		}		
-		
-		img = XCreateImage (dis, 
-			CopyFromParent, depth, 
-			ZPixmap, 0, 
-			(char *) newBuf,
-			width, height,
-			32, 0
-		);
-		
-	} else if (depth >= 15) {
-		size_t numNewBufBytes = (2 * (width * height));
-		u_int16_t *newBuf = (u_int16_t *)malloc (numNewBufBytes);
-		
-		for (i = 0; i < numBufBytes; ++i) {
-			unsigned int r, g, b;
 
-			r = (buf[i] * rRatio);
-			++i;
-			g = (buf[i] * gRatio);
-			++i;
-			b = (buf[i] * bRatio);
-					
 			r &= vis->red_mask;
 			g &= vis->green_mask;
 			b &= vis->blue_mask;
-			
+
 			newBuf[outIndex] = r | g | b;
 			++outIndex;
-		}		
-		
-		img = XCreateImage(dis, CopyFromParent, depth, ZPixmap, 0, (char *) newBuf,
-                        width, height, 16, 0);
-	} else {
-		//fprintf (stderr, "This program does not support displays with a depth less than 15.");
-		return NULL;				
+		}
+
+		img = XCreateImage (display,
+		                    CopyFromParent, depth,
+		                    ZPixmap, 0,
+		                    (char*) newBuf,
+		                    width, height,
+		                    32, 0);
+	}
+	else
+	{
+		if(depth >= 15)
+		{
+			size_t numNewBufBytes = (2 * (width * height));
+			u_int16_t* newBuf = (u_int16_t*)malloc (numNewBufBytes);
+
+			for(i = 0; i < numBufBytes; ++i)
+			{
+				unsigned int r, g, b;
+
+				r = (buf[i] * rRatio);
+				++i;
+				g = (buf[i] * gRatio);
+				++i;
+				b = (buf[i] * bRatio);
+
+				r &= vis->red_mask;
+				g &= vis->green_mask;
+				b &= vis->blue_mask;
+
+				newBuf[outIndex] = r | g | b;
+				++outIndex;
+			}
+
+			img = XCreateImage(display, CopyFromParent, depth, ZPixmap, 0,
+			                   (char*)newBuf, width, height, 16, 0);
+		}
+		else
+		{
+			//fprintf (stderr, "This program does not support displays with a depth less than 15.");
+			return nullptr;
+		}
 	}
 
 	XInitImage (img);
-	/*Set the client's byte order, so that XPutImage knows what to do with the data.*/
-	/*The default in a new X image is the server's format, which may not be what we want.*/
-	if ((LSBFirst == get_byte_order ())) {
+
+	// Set the client's byte order, so that XPutImage knows what
+	// to do with the data.
+	// The default in a new X image is the server's format, which
+	// may not be what we want.
+	if((LSBFirst == get_byte_order ()))
+	{
 		img->byte_order = LSBFirst;
-	} else {
+	}
+	else
+	{
 		img->byte_order = MSBFirst;
 	}
-	
-	/*The bitmap_bit_order doesn't matter with ZPixmap images.*/
+
+	// The bitmap_bit_order doesn't matter with ZPixmap images.
 	img->bitmap_bit_order = MSBFirst;
 
 	return img;
-}		
+}
+
+void NativeWindowX11::handleBuffer()
+{
+	if(buffer)
+	{
+		XDestroyImage(buffer);
+	}
+
+	buffer = createImageFromBuffer(window.wpixbuf.buf,
+	                               window.wpixbuf.width,
+	                               window.wpixbuf.height);
+}
 
-void GUI::NativeWindowX11::handleBuffer()
+void NativeWindowX11::redraw()
 {
-  if(buffer) XDestroyImage(buffer);
-  buffer =
-    create_image_from_buffer(display, DefaultScreen(display),
-                             window->wpixbuf.buf,
-                             window->wpixbuf.width,
-                             window->wpixbuf.height);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	if(buffer == nullptr)
+	{
+		window.updateBuffer();
+	}
+
+	XPutImage(display, xwindow, gc, buffer, 0, 0, 0, 0,
+	          window.width(), window.height());
+	XFlush(display);
 }
 
-void GUI::NativeWindowX11::redraw()
+void NativeWindowX11::setCaption(const std::string &caption)
 {
-  // http://stackoverflow.com/questions/6384987/load-image-onto-a-window-using-xlib
-  if(buffer == NULL) window->updateBuffer();
-  XPutImage(display, xwindow, gc, buffer, 0, 0, 0, 0,
-            window->width(), window->height());
-  XFlush(display);
+	if(display == nullptr)
+	{
+		return;
+	}
+
+	XStoreName(display, xwindow, caption.c_str());
 }
 
-void GUI::NativeWindowX11::setCaption(const std::string &caption)
+void NativeWindowX11::grabMouse(bool grab)
 {
-  XStoreName(display, xwindow, caption.c_str());
+	(void)grab;
+	// Don't need to do anything on this platform...
 }
 
-void GUI::NativeWindowX11::grabMouse(bool grab)
+bool NativeWindowX11::hasEvent()
 {
-  (void)grab;
-  // Don't need to do anything on this platoform...
+	if(display == nullptr)
+	{
+		return false;
+	}
+
+	return XPending(display);
 }
 
-bool GUI::NativeWindowX11::hasEvent()
+Event* NativeWindowX11::getNextEvent()
 {
-  return XPending(display);
+	if(display == nullptr)
+	{
+		return nullptr;
+	}
+
+	XEvent xEvent;
+	XNextEvent(display, &xEvent);
+	return translateXMessage(xEvent);
 }
 
-GUI::Event *GUI::NativeWindowX11::getNextEvent()
+Event* NativeWindowX11::peekNextEvent()
 {
-  Event *event = NULL;
-
-  XEvent xe;
-  XNextEvent(display, &xe);
-
-  if(xe.type == MotionNotify) {
-    while(true) { // Hack to make sure only the last event is played.
-      if(!hasEvent()) break;
-      XEvent nxe;
-      XPeekEvent(display, &nxe);
-      if(nxe.type != MotionNotify) break;
-      XNextEvent(display, &xe);
-    }
-
-    MouseMoveEvent *e = new MouseMoveEvent();
-    e->window_id = xe.xmotion.window;
-    e->x = xe.xmotion.x;
-    e->y = xe.xmotion.y;
-    event = e;
-  }
-
-  if(xe.type == Expose && xe.xexpose.count == 0) {
-    RepaintEvent *e = new RepaintEvent();
-    e->window_id = xe.xexpose.window;
-    e->x = xe.xexpose.x;
-    e->y = xe.xexpose.y;
-    e->width = xe.xexpose.width;
-    e->height = xe.xexpose.height;
-    event = e;
-  }
-
-  if(xe.type == ConfigureNotify) {
-    ResizeEvent *e = new ResizeEvent();
-    e->window_id = xe.xconfigure.window;
-    //    e->x = xe.xconfigure.x;
-    //    e->y = xe.xconfigure.y;
-    e->width = xe.xconfigure.width;
-    e->height = xe.xconfigure.height;
-    event = e;
-  }
-
-  if(xe.type == ButtonPress || xe.type == ButtonRelease) {
-    if(xe.xbutton.button == 4 || xe.xbutton.button == 5) {
-      int scroll = 1;
-      while(true) { // Hack to make sure only the last event is played.
-        if(!hasEvent()) break;
-        XEvent nxe;
-        XPeekEvent(display, &nxe);
-        if(nxe.type != ButtonPress && nxe.type != ButtonRelease) break;
-        scroll += 1;
-        XNextEvent(display, &xe);
-      }
-      ScrollEvent *e = new ScrollEvent();
-      e->window_id = xe.xbutton.window;
-      e->x = xe.xbutton.x;
-      e->y = xe.xbutton.y;
-      e->delta = scroll * (xe.xbutton.button==4?-1:1);
-      event = e;
-    } else {
-      ButtonEvent *e = new ButtonEvent();
-      e->window_id = xe.xbutton.window;
-      e->x = xe.xbutton.x;
-      e->y = xe.xbutton.y;
-      e->button = 0;
-      e->direction = xe.type == ButtonPress?1:-1;
-      e->doubleclick =
-        xe.type == ButtonPress && (xe.xbutton.time - last_click) < 200;
-      
-      if(xe.type == ButtonPress) last_click = xe.xbutton.time;
-      event = e;
-    }
-  }
-
-  if(xe.type == KeyPress || xe.type == KeyRelease) {
-    //printf("key: %d\n", xe.xkey.keycode);
-    KeyEvent *e = new KeyEvent();
-    e->window_id = xe.xkey.window;
-
-    switch(xe.xkey.keycode) {
-    case 113: e->keycode = KeyEvent::KEY_LEFT; break;
-    case 114: e->keycode = KeyEvent::KEY_RIGHT; break;
-    case 111: e->keycode = KeyEvent::KEY_UP; break;
-    case 116: e->keycode = KeyEvent::KEY_DOWN; break;
-    case 119: e->keycode = KeyEvent::KEY_DELETE; break;
-    case 22: e->keycode = KeyEvent::KEY_BACKSPACE; break;
-    case 110: e->keycode = KeyEvent::KEY_HOME; break;
-    case 115: e->keycode = KeyEvent::KEY_END; break;
-    case 117: e->keycode = KeyEvent::KEY_PGDOWN; break;
-    case 112: e->keycode = KeyEvent::KEY_PGUP; break;
-    case 36: e->keycode = KeyEvent::KEY_ENTER; break;
-    default: e->keycode = KeyEvent::KEY_UNKNOWN; break;
-    }
-
-    char buf[1024];
-    int sz = XLookupString(&xe.xkey, buf, sizeof(buf),  NULL, NULL);
-    if(sz && e->keycode == KeyEvent::KEY_UNKNOWN) {
-      e->keycode = KeyEvent::KEY_CHARACTER;
-    }
-    e->text.append(buf, sz);
-
-    e->direction = xe.type == KeyPress?1:-1;
-    event = e;
-  }
-
-  if(xe.type == ClientMessage &&
-     (unsigned int)xe.xclient.data.l[0] == wmDeleteMessage) {
-    CloseEvent *e = new CloseEvent();
-    event = e;
-  }
-
-  return event;
+	if(display == nullptr)
+	{
+		return nullptr;
+	}
+
+	XEvent peekXEvent;
+	XPeekEvent(display, &peekXEvent);
+	return translateXMessage(peekXEvent, true);
 }
 
-#endif/*X11*/
+	Event* NativeWindowX11::translateXMessage(XEvent& xevent, bool peek)
+{
+	Event* event = nullptr;
+
+	switch(xevent.type) {
+	case MotionNotify:
+		{
+			auto mouseMoveEvent = new MouseMoveEvent();
+			mouseMoveEvent->window_id = xevent.xmotion.window;
+			mouseMoveEvent->x = xevent.xmotion.x;
+			mouseMoveEvent->y = xevent.xmotion.y;
+			event = mouseMoveEvent;
+		}
+		break;
+
+	case Expose:
+		if(xevent.xexpose.count == 0)
+		{
+			auto repaintEvent = new RepaintEvent();
+			repaintEvent->window_id = xevent.xexpose.window;
+			repaintEvent->x = xevent.xexpose.x;
+			repaintEvent->y = xevent.xexpose.y;
+			repaintEvent->width = xevent.xexpose.width;
+			repaintEvent->height = xevent.xexpose.height;
+			event = repaintEvent;
+		}
+		break;
+
+	case ConfigureNotify:
+		{
+			auto resizeEvent = new ResizeEvent();
+			resizeEvent->window_id = xevent.xconfigure.window;
+			//resizeEvent->x = xevent.xconfigure.x;
+			//resizeEvent->y = xevent.xconfigure.y;
+			resizeEvent->width = xevent.xconfigure.width;
+			resizeEvent->height = xevent.xconfigure.height;
+			event = resizeEvent;
+		}
+		break;
+
+	case ButtonPress:
+	case ButtonRelease:
+		{
+			if((xevent.xbutton.button == 4) || (xevent.xbutton.button == 5))
+			{
+				int scroll = 1;
+				auto scrollEvent = new ScrollEvent();
+				scrollEvent->window_id = xevent.xbutton.window;
+				scrollEvent->x = xevent.xbutton.x;
+				scrollEvent->y = xevent.xbutton.y;
+				scrollEvent->delta = scroll * ((xevent.xbutton.button == 4) ? -1 : 1);
+				event = scrollEvent;
+			}
+			else
+			{
+				auto buttonEvent = new ButtonEvent();
+				buttonEvent->window_id = xevent.xbutton.window;
+				buttonEvent->x = xevent.xbutton.x;
+				buttonEvent->y = xevent.xbutton.y;
+				switch(xevent.xbutton.button) {
+				case 1:
+					buttonEvent->button = MouseButton::left;
+					break;
+				case 2:
+					buttonEvent->button = MouseButton::middle;
+					break;
+				case 3:
+					buttonEvent->button = MouseButton::right;
+					break;
+				default:
+					WARN(X11, "Unknown button %d, setting to MouseButton::left\n",
+					     xevent.xbutton.button);
+					buttonEvent->button = MouseButton::left;
+					break;
+				}
+
+				buttonEvent->direction =
+					(xevent.type == ButtonPress) ?
+					Direction::down : Direction::up;
+
+				buttonEvent->doubleClick =
+					(xevent.type == ButtonPress) &&
+					((xevent.xbutton.time - last_click) < 200);
+
+				if(!peek && (xevent.type == ButtonPress))
+				{
+					last_click = xevent.xbutton.time;
+				}
+				event = buttonEvent;
+			}
+		}
+		break;
+
+	case KeyPress:
+	case KeyRelease:
+		{
+			auto keyEvent = new KeyEvent();
+			keyEvent->window_id = xevent.xkey.window;
+
+			switch(xevent.xkey.keycode) {
+			case 113: keyEvent->keycode = Key::left; break;
+			case 114: keyEvent->keycode = Key::right; break;
+			case 111: keyEvent->keycode = Key::up; break;
+			case 116: keyEvent->keycode = Key::down; break;
+			case 119: keyEvent->keycode = Key::deleteKey; break;
+			case 22:  keyEvent->keycode = Key::backspace; break;
+			case 110: keyEvent->keycode = Key::home; break;
+			case 115: keyEvent->keycode = Key::end; break;
+			case 117: keyEvent->keycode = Key::pageDown; break;
+			case 112: keyEvent->keycode = Key::pageUp; break;
+			case 36:  keyEvent->keycode = Key::enter; break;
+			default:  keyEvent->keycode = Key::unknown; break;
+			}
+
+			char stringBuffer[1024];
+			int size = XLookupString(&xevent.xkey, stringBuffer,
+		                         sizeof(stringBuffer), nullptr, nullptr);
+			if(size && keyEvent->keycode == Key::unknown)
+			{
+				keyEvent->keycode = Key::character;
+			}
+
+			keyEvent->text.append(stringBuffer, size);
+
+			keyEvent->direction =
+				(xevent.type == KeyPress) ? Direction::down : Direction::up;
+
+			event = keyEvent;
+		}
+		break;
+
+	case ClientMessage:
+		if(((unsigned int)xevent.xclient.data.l[0] == wmDeleteMessage))
+		{
+			auto closeEvent = new CloseEvent();
+			event = closeEvent;
+		}
+		break;
+
+	default:
+		WARN(X11, "Unhandled xevent.type: %d\n", xevent.type);
+		break;
+	}
+
+	return event;
+}
 
+} // GUI::
diff --git a/plugingui/nativewindow_x11.h b/plugingui/nativewindow_x11.h
index 3dcc0bb..2d99556 100644
--- a/plugingui/nativewindow_x11.h
+++ b/plugingui/nativewindow_x11.h
@@ -11,24 +11,21 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_NATIVEWINDOW_X11_H__
-#define __DRUMGIZMO_NATIVEWINDOW_X11_H__
-#endif/*__DRUMGIZMO_NATIVEWINDOW_X11_H__*/
+#pragma once
 
-#ifdef X11
 #include <X11/Xlib.h>
 
 #include "nativewindow.h"
@@ -38,35 +35,38 @@ namespace GUI {
 class Window;
 class NativeWindowX11 : public NativeWindow {
 public:
-  NativeWindowX11(GUI::Window *window);
-  ~NativeWindowX11();
+	NativeWindowX11(void* native_window, Window& window);
+	~NativeWindowX11();
 
-  void setFixedSize(int width, int height);
-  void resize(int width, int height);
-  void move(int x, int y);
-  void show();
-  void setCaption(const std::string &caption);
-  void hide();
-  void handleBuffer();
-  void redraw();
-  void grabMouse(bool grab);
-
-  bool hasEvent();
-  Event *getNextEvent();
+	// From NativeWindow:
+	void setFixedSize(int width, int height) override;
+	void resize(int width, int height) override;
+	void move(int x, int y) override;
+	void show() override;
+	void hide() override;
+	void setCaption(const std::string &caption) override;
+	void handleBuffer() override;
+	void redraw() override;
+	void grabMouse(bool grab) override;
+	bool hasEvent() override;
+	Event* getNextEvent() override;
+	Event* peekNextEvent() override;
 
 private:
-  ::Window xwindow;
-  GC gc;
-  XImage *buffer;
+	Event* translateXMessage(XEvent& xevent, bool peek = false);
+	XImage* createImageFromBuffer(unsigned char* buf, int width, int height);
 
-  GUI::Window *window;
+	::Window xwindow{0};
+	GC gc{0};
+	XImage* buffer{nullptr};
 
-  int last_click;
+	Window& window;
 
-  Display *display;
-  Atom wmDeleteMessage;
-};
+	int last_click{0};
 
+	Display* display{nullptr};
+	int screen{0};
+	Atom wmDeleteMessage{0};
 };
 
-#endif/*X11*/
+} // GUI::
diff --git a/plugingui/notifier.h b/plugingui/notifier.h
new file mode 100644
index 0000000..9e9f6eb
--- /dev/null
+++ b/plugingui/notifier.h
@@ -0,0 +1,163 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            notifier.h
+ *
+ *  Thu Sep  3 15:48:39 CEST 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <functional>
+#include <vector>
+#include <map>
+#include <set>
+#include <memory>
+
+namespace aux
+{
+	template<int>
+	struct placeholder
+	{
+	};
+}
+
+namespace std
+{
+	template<int N>
+	struct is_placeholder<aux::placeholder<N>>
+		: integral_constant<int, N+1>
+	{
+	};
+}
+
+namespace aux
+{
+	// std::integer_sequence introduced in C++14 so remove this once we start requiring that.
+
+	template<int... Ns>
+	struct int_sequence
+	{
+	};
+
+	template<int N, int... Ns>
+	struct gen_int_sequence
+		: gen_int_sequence<N-1, N-1, Ns...>
+	{
+	};
+
+	template<int... Ns>
+	struct gen_int_sequence<0, Ns...>
+		: int_sequence<Ns...>
+	{
+	};
+};
+
+
+namespace GUI {
+
+class Listener;
+class NotifierBase {
+public:
+	virtual void disconnect(Listener* object) {}
+};
+
+class Listener {
+public:
+	virtual ~Listener()
+	{
+		for(auto signal : signals)
+		{
+			signal->disconnect(this);
+		}
+	}
+
+	void registerNotifier(NotifierBase* signal)
+	{
+		signals.insert(signal);
+	}
+
+	void unregisterNotifier(NotifierBase* signal)
+	{
+		signals.erase(signal);
+	}
+
+private:
+	std::set<NotifierBase*> signals;
+};
+
+template<typename... Args>
+class Notifier : public NotifierBase {
+public:
+	Notifier() {}
+
+	//! \brief When dtor is called it will automatically disconnect all its listeners.
+	~Notifier()
+	{
+		for(auto& slot : slots)
+		{
+			slot.first->unregisterNotifier(this);
+		}
+	}
+
+	using callback_type = std::function<void(Args...)>;
+
+	//! \brief Connect object to this Notifier.
+	template<typename O, typename F>
+	void connect(O* p, const F& fn)
+	{
+		slots[p] = std::move(construct_mem_fn(fn, p, aux::gen_int_sequence<sizeof...(Args)>{}));
+		if(p && dynamic_cast<Listener*>(p))
+		{
+			dynamic_cast<Listener*>(p)->registerNotifier(this);
+		}
+	}
+
+	//! \brief Disconnect object from this Notifier.
+	void disconnect(Listener* object)
+	{
+		slots.erase(object);
+	}
+
+	//! \brief Activate this notifier by pretending it is a function.
+	//! Example: Notifier<int> foo; foo(42);
+	void operator()(Args... args)
+	{
+		for(auto& slot : slots)
+		{
+			slot.second(args...);
+		}
+	}
+
+private:
+	std::map<Listener*, callback_type> slots;
+
+	template<typename F, typename O, int... Ns>
+	callback_type construct_mem_fn(const F& fn, O* p, aux::int_sequence<Ns...>) const
+	{
+		return std::bind(fn, p, aux::placeholder<Ns>{}...);
+	}
+
+};
+
+} // GUI::
+
+#define CONNECT(SRC, SIG, TAR, SLO) (SRC)->SIG.connect(TAR, SLO)
diff --git a/plugingui/painter.cc b/plugingui/painter.cc
index 842ff11..2128c4e 100644
--- a/plugingui/painter.cc
+++ b/plugingui/painter.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,461 +28,494 @@
 
 #include "window.h"
 
-#include <string.h>
+#include <cmath>
 
-GUI::Painter::Painter(GUI::Widget *widget)
-{
-  this->widget = widget;
-  widget->window()->beginPaint();
-  pixbuf = &widget->pixbuf;
-  colour = Colour(0, 0, 0, 0.5);
-}
+namespace GUI {
 
-GUI::Painter::~Painter()
+Painter::Painter(Widget& widget)
+	: widget(widget)
 {
-  widget->window()->endPaint();
-  flush();
-}
+	if(widget.window())
+	{
+		widget.window()->beginPaint();
+	}
 
-void GUI::Painter::setColour(Colour colour)
-{
-  this->colour = colour;
+	pixbuf = &widget.pixbuf;
+	colour = Colour(0, 0, 0, 0.5);
 }
 
-void GUI::Painter::plot(int x, int y, double c)
+Painter::~Painter()
 {
-  // plot the pixel at (x, y) with brightness c (where 0 ≤ c ≤ 1)
-  pixbuf->addPixel(x, y,
-                   (unsigned char)(colour.red * 255.0),
-                   (unsigned char)(colour.green * 255.0),
-                   (unsigned char)(colour.blue * 255.0),
-                   (unsigned char)(colour.alpha * 255 * c));
+	if(widget.window())
+	{
+		widget.window()->endPaint();
+	}
 
+	flush();
 }
 
-#include <math.h>
-double GUI::Painter::ipart(double x)
+void Painter::setColour(const Colour& colour)
 {
-  return floor(x); //integer part of x'
+	this->colour = colour;
 }
- 
-double GUI::Painter::round(double x)
-{
-  return ipart(x + 0.5);
-}
- 
-double GUI::Painter::fpart(double x)
-{
-  return x - ipart(x);//'fractional part of x'
-}
- 
-double GUI::Painter::rfpart(double x)
+
+static void plot(PixelBufferAlpha* pixbuf, const Colour& colour,
+                 int x, int y, double c)
 {
-  return 1 - fpart(x);
-}
+	if((x >= (int)pixbuf->width) || (y >= (int)pixbuf->height))
+	{
+		return;
+	}
+
+	// plot the pixel at (x, y) with brightness c (where 0 ≤ c ≤ 1)
+	pixbuf->addPixel(x, y,
+	                 (unsigned char)(colour.red * 255.0),
+	                 (unsigned char)(colour.green * 255.0),
+	                 (unsigned char)(colour.blue * 255.0),
+	                 (unsigned char)(colour.alpha * 255 * c));
 
+}
 
-#define SWAP(x, y) { int tmp = x; x = y; y = tmp; }
-void GUI::Painter::drawLine(int x0, int y0, int x1, int y1)
+static inline double fpart(double x)
 {
-  bool steep = abs(y1 - y0) > abs(x1 - x0);
- 
-  if(steep) {
-    SWAP(x0, y0);
-    SWAP(x1, y1);
-  }
-  if(x0 > x1) {
-    SWAP(x0, x1);
-    SWAP(y0, y1);
-  }
- 
-  double dx = x1 - x0;
-  double dy = y1 - y0;
-  double gradient = dy / dx;
- 
-  // Handle first endpoint:
-  double xend = round(x0);
-  double yend = y0 + gradient * (xend - x0);
-  //double xgap = rfpart(x0 + 0.5);
-  double xpxl1 = xend;   //this will be used in the main loop
-  double ypxl1 = ipart(yend);
-
-  if(steep) {
-    plot(ypxl1, xpxl1, 1);
-    //plot(ypxl1,   xpxl1, rfpart(yend) * xgap);
-    //plot(ypxl1+1, xpxl1,  fpart(yend) * xgap);
-  } else {
-    plot(xpxl1, ypxl1, 1);
-    //plot(xpxl1, ypxl1  , rfpart(yend) * xgap);
-    //plot(xpxl1, ypxl1+1,  fpart(yend) * xgap);
-  }
-
-  double intery = yend + gradient; // first y-intersection for the main loop
- 
-  // Handle second endpoint:
-   xend = round(x1);
-  yend = y1 + gradient * (xend - x1);
-  //xgap = fpart(x1 + 0.5);
-  double xpxl2 = xend; //this will be used in the main loop
-  double ypxl2 = ipart(yend);
-
-  if(steep) {
-    plot(ypxl2, xpxl2, 1);
-    //plot(ypxl2  , xpxl2, rfpart(yend) * xgap);
-    //plot(ypxl2+1, xpxl2,  fpart(yend) * xgap);
-  } else {
-    plot(xpxl2, ypxl2, 1);
-    //plot(xpxl2, ypxl2,   rfpart(yend) * xgap);
-    //plot(xpxl2, ypxl2+1,  fpart(yend) * xgap);
-  }
-
-  // main loop
-  for(int x = xpxl1 + 1; x <= xpxl2 - 1; x++) {
-    if(steep) {
-      plot(ipart(intery)  , x, rfpart(intery));
-      plot(ipart(intery)+1, x,  fpart(intery));
-    } else {
-      plot(x, ipart (intery),  rfpart(intery));
-      plot(x, ipart (intery)+1, fpart(intery));
-    }
-    intery += gradient;
-  }
+	return x - std::floor(x);// fractional part of x
 }
 
-void GUI::Painter::drawRectangle(int x1, int y1, int x2, int y2)
+static inline double rfpart(double x)
 {
-  drawLine(x1, y1, x2 - 1, y1);
-  drawLine(x2, y1, x2, y2 - 1);
-  drawLine(x1 + 1, y2, x2, y2);
-  drawLine(x1, y1 + 1, x1, y2);
+	return 1 - fpart(x); // reverse fractional part of x
 }
 
-void GUI::Painter::drawFilledRectangle(int x1, int y1, int x2, int y2)
+void Painter::drawLine(int x0, int y0, int x1, int y1)
 {
-  for(int y = y1; y < y2; y++) {
-    drawLine(x1, y, x2, y);
-  }
+	bool steep = abs(y1 - y0) > abs(x1 - x0);
+
+	if(steep)
+	{
+		std::swap(x0, y0);
+		std::swap(x1, y1);
+	}
+	if(x0 > x1)
+	{
+		std::swap(x0, x1);
+		std::swap(y0, y1);
+	}
+
+	double dx = x1 - x0;
+	double dy = y1 - y0;
+	double gradient = dy / dx;
+
+	// Handle first endpoint:
+	double xend = std::round(x0);
+	double yend = y0 + gradient * (xend - x0);
+
+	double xpxl1 = xend;   // this will be used in the main loop
+	double ypxl1 = std::floor(yend);
+
+	if(steep)
+	{
+		plot(pixbuf, colour, ypxl1, xpxl1, 1);
+	}
+	else
+	{
+		plot(pixbuf, colour, xpxl1, ypxl1, 1);
+	}
+
+	double intery = yend + gradient; // first y-intersection for the main loop
+
+	// Handle second endpoint:
+	xend = std::round(x1);
+	yend = y1 + gradient * (xend - x1);
+
+	double xpxl2 = xend; // this will be used in the main loop
+	double ypxl2 = std::floor(yend);
+
+	if(steep)
+	{
+		plot(pixbuf, colour, ypxl2, xpxl2, 1);
+	}
+	else
+	{
+		plot(pixbuf, colour, xpxl2, ypxl2, 1);
+	}
+
+	// main loop
+	for(int x = xpxl1 + 1; x <= xpxl2 - 1; ++x)
+	{
+		if(steep)
+		{
+			plot(pixbuf, colour, std::floor(intery)  , x, rfpart(intery));
+			plot(pixbuf, colour, std::floor(intery)+1, x,  fpart(intery));
+		}
+		else
+		{
+			plot(pixbuf, colour, x, std::floor(intery),  rfpart(intery));
+			plot(pixbuf, colour, x, std::floor(intery)+1, fpart(intery));
+		}
+		intery += gradient;
+	}
 }
 
-void GUI::Painter::clear()
+void Painter::drawRectangle(int x1, int y1, int x2, int y2)
 {
-  for(int x = 0; x < (int)pixbuf->width; x++) {
-    for(int y = 0; y < (int)pixbuf->height; y++) {
-      pixbuf->setPixel(x, y, 0, 0, 0, 0);
-    }
-  }
+	drawLine(x1, y1, x2 - 1, y1);
+	drawLine(x2, y1, x2, y2 - 1);
+	drawLine(x1 + 1, y2, x2, y2);
+	drawLine(x1, y1 + 1, x1, y2);
 }
 
-void GUI::Painter::drawText(int x0, int y0, GUI::Font &font, std::string text,
-                            bool nocolour)
+void Painter::drawFilledRectangle(int x1, int y1, int x2, int y2)
 {
-  PixelBufferAlpha *textbuf = font.render(text);
-  if(nocolour) {
-    for(size_t x = 0; x < textbuf->width; x++) {
-      for(size_t y = 0; y < textbuf->height; y++) {
-        unsigned char r,g,b,a;
-        textbuf->pixel(x, y, &r, &g, &b, &a);
-        pixbuf->addPixel(x + x0, y + y0 - textbuf->height, r,g,b,a);
-      }
-    }
-  } else {
-    for(size_t x = 0; x < textbuf->width; x++) {
-      for(size_t y = 0; y < textbuf->height; y++) {
-        unsigned char r,g,b,a;
-        textbuf->pixel(x, y, &r, &g, &b, &a);
-        pixbuf->addPixel(x + x0, y + y0 - textbuf->height,
-                         colour.red * 255,
-                         colour.green * 255,
-                         colour.blue * 255,
-                         colour.alpha * a);
-      }
-    }
-  }
-
-  delete textbuf;
+	for(int y = y1; y < y2; ++y)
+	{
+		drawLine(x1, y, x2, y);
+	}
 }
 
-#include <stdio.h>
-void GUI::Painter::drawPoint(int x, int y)
+void Painter::clear()
 {
-  pixbuf->setPixel(x, y,
-                   (unsigned char)(colour.red * 255.0),
-                   (unsigned char)(colour.green * 255.0),
-                   (unsigned char)(colour.blue * 255.0),
-                   (unsigned char)(colour.alpha * 255.0));
+	for(int x = 0; x < (int)pixbuf->width; ++x)
+	{
+		for(int y = 0; y < (int)pixbuf->height; ++y)
+		{
+			pixbuf->setPixel(x, y, 0, 0, 0, 0);
+		}
+	}
 }
 
-#if 0
-static double distance(double r, double y)
+void Painter::drawText(int x0, int y0, const Font& font,
+                       const std::string& text, bool nocolour)
 {
-  double real_point = sqrt(pow(r, 2) - pow(y, 2));
-  return ceil(real_point) - real_point;
+	PixelBufferAlpha* textbuf = font.render(text);
+
+	y0 -= textbuf->height; // The y0 offset (baseline) is the bottom of the text.
+
+	// If the text offset is outside the buffer; skip it.
+	if((x0 > (int)pixbuf->width) || (y0 > (int)pixbuf->height))
+	{
+		delete textbuf;
+		return;
+	}
+
+	// Make sure we don't try to draw outside the pixbuf.
+	int renderWidth = textbuf->width;
+	if(renderWidth > (int)(pixbuf->width - x0))
+	{
+		renderWidth = pixbuf->width - x0;
+	}
+
+	int renderHeight = textbuf->height;
+	if(renderHeight > ((int)pixbuf->height - y0))
+	{
+		renderHeight = ((int)pixbuf->height - y0);
+	}
+
+	if(nocolour)
+	{
+		for(int y = 0; y < renderHeight; ++y)
+		{
+			for(int x = 0; x < renderWidth; ++x)
+			{
+				unsigned char r, g, b, a;
+				textbuf->pixel(x, y, &r, &g, &b, &a);
+				pixbuf->addPixel(x + x0, y + y0, r, g, b, a);
+			}
+		}
+	}
+	else
+	{
+		for(int y = 0; y < renderHeight; ++y)
+		{
+			for(int x = 0; x < renderWidth; ++x)
+			{
+				unsigned char r,g,b,a;
+				textbuf->pixel(x, y, &r, &g, &b, &a);
+				pixbuf->addPixel(x + x0, y + y0,
+				                 colour.red * 255,
+				                 colour.green * 255,
+				                 colour.blue * 255,
+				                 colour.alpha * a);
+			}
+		}
+	}
+
+	delete textbuf;
 }
 
-double new_color(double i) {
- return i * 127;
+void Painter::drawPoint(int x, int y)
+{
+	pixbuf->setPixel(x, y,
+	                 (unsigned char)(colour.red * 255.0),
+	                 (unsigned char)(colour.green * 255.0),
+	                 (unsigned char)(colour.blue * 255.0),
+	                 (unsigned char)(colour.alpha * 255.0));
 }
 
-void GUI::Painter::drawCircle(int cx, int cy, double radius)
+static void plot4points(Painter *p, int cx, int cy, int x, int y)
 {
-  // wu_circle($image, $r, $color, $offset_x = null, $offset_y = null) {
-  //$red = $color["red"];
-  //$green = $color["green"];
-  //$blue = $color["blue"];
-  int offset_x = cx;
-  int offset_y = cy;
-  int x = radius;
-  //  int xx = radius;
-  int y = -1;
-  //  int yy = -1;
-  double t = 0;
-  //$color = imagecolorallocate($image, $red, $green, $blue);
-  while(x > y) {
-    y++;
-    double current_distance = distance(radius, y);
-    if(current_distance < t) {
-      x--;
-    }
-
-    double trasparency = new_color(current_distance);
-    double alpha = trasparency;
-    double alpha2 = 127.0 - trasparency;
-
-    double color = 1;
-
-    plot(x + offset_x, y + offset_y, color);
-    plot(x + offset_x - 1, y + offset_y, alpha2 );
-    plot(x + offset_x + 1, y + offset_y, alpha );
-
-    plot(y + offset_x, x + offset_y, color);
-    plot(y + offset_x, x + offset_y - 1, alpha2);
-    plot(y + offset_x, x + offset_y + 1, alpha);
-
-    plot(offset_x - x , y + offset_y, color);
-    plot(offset_x - x + 1, y + offset_y, alpha2);
-    plot(offset_x - x - 1, y + offset_y, alpha);
-
-    plot(offset_x - y, x + offset_y, color);
-    plot(offset_x - y, x + offset_y - 1, alpha2);
-    plot(offset_x - y, x + offset_y + 1, alpha);
-
-    plot(x + offset_x, offset_y - y, color);
-    plot(x + offset_x - 1, offset_y - y, alpha2);
-    plot(x + offset_x + 1, offset_y - y, alpha);
-
-    plot(y + offset_x, offset_y - x, color);
-    plot(y + offset_x, offset_y - x - 1, alpha);
-    plot(y + offset_x, offset_y - x + 1, alpha2);
-
-    plot(offset_x - y, offset_y - x, color);
-    plot(offset_x - y, offset_y - x - 1, alpha);
-    plot(offset_x - y, offset_y - x + 1, alpha2);
-
-    plot(offset_x - x, offset_y - y, color);
-    plot(offset_x - x - 1, offset_y - y, alpha);
-    plot(offset_x - x + 1, offset_y - y, alpha2);
-
-    t = current_distance;
-  }
+	p->drawPoint(cx + x, cy + y);
+	if(x != 0)
+	{
+		p->drawPoint(cx - x, cy + y);
+	}
+
+	if(y != 0)
+	{
+		p->drawPoint(cx + x, cy - y);
+	}
+
+	if(x != 0 && y != 0)
+	{
+		p->drawPoint(cx - x, cy - y);
+	}
 }
-#else
-static void plot4points(GUI::Painter *p, int cx, int cy, int x, int y)
+
+void Painter::drawCircle(int cx, int cy, double radius)
 {
-  p->drawPoint(cx + x, cy + y);
-  if(x != 0) p->drawPoint(cx - x, cy + y);
-  if(y != 0) p->drawPoint(cx + x, cy - y);
-  if(x != 0 && y != 0) p->drawPoint(cx - x, cy - y);
+	int error = -radius;
+	int x = radius;
+	int y = 0;
+
+	while(x >= y)
+	{
+		plot4points(this, cx, cy, x, y);
+
+		if(x != y)
+		{
+			plot4points(this, cx, cy, y, x);
+		}
+
+		error += y;
+		++y;
+		error += y;
+
+		if(error >= 0)
+		{
+			--x;
+			error -= x;
+			error -= x;
+		}
+	}
 }
 
-void GUI::Painter::drawCircle(int cx, int cy, double radius)
+static void plot4lines(Painter *p, int cx, int cy, int x, int y)
 {
-  int error = -radius;
-  int x = radius;
-  int y = 0;
- 
-  while(x >= y) {
-    plot4points(this, cx, cy, x, y);
-    if(x != y) plot4points(this, cx, cy, y, x);
- 
-    error += y;
-    ++y;
-    error += y;
- 
-    if(error >= 0) {
-      --x;
-      error -= x;
-      error -= x;
-    }
-  }
+	p->drawLine(cx + x, cy + y, cx - x, cy + y);
+	if(x != 0)
+	{
+		p->drawLine(cx - x, cy + y, cx + x, cy + y);
+	}
+
+	if(y != 0)
+	{
+		p->drawLine(cx + x, cy - y, cx - x, cy - y);
+	}
+
+	if(x != 0 && y != 0)
+	{
+		p->drawLine(cx - x, cy - y, cx + x, cy - y);
+	}
 }
-#endif
 
-static void plot4lines(GUI::Painter *p, int cx, int cy, int x, int y)
+void Painter::drawFilledCircle(int cx, int cy, int radius)
 {
-  p->drawLine(cx + x, cy + y, cx - x, cy + y);
-  if(x != 0) p->drawLine(cx - x, cy + y, cx + x, cy + y);
-  if(y != 0) p->drawLine(cx + x, cy - y, cx - x, cy - y);
-  if(x != 0 && y != 0) p->drawLine(cx - x, cy - y, cx + x, cy - y);
+	int error = -radius;
+	int x = radius;
+	int y = 0;
+
+	while(x >= y)
+	{
+		plot4lines(this, cx, cy, x, y);
+
+		if(x != y)
+		{
+			plot4lines(this, cx, cy, y, x);
+		}
+
+		error += y;
+		++y;
+		error += y;
+
+		if(error >= 0)
+		{
+			--x;
+			error -= x;
+			error -= x;
+		}
+	}
 }
 
-void GUI::Painter::drawFilledCircle(int cx, int cy, int radius)
+void Painter::drawImage(int x0, int y0, const Image& image)
 {
-  int error = -radius;
-  int x = radius;
-  int y = 0;
- 
-  while(x >= y) {
-    plot4lines(this, cx, cy, x, y);
-    if(x != y) plot4lines(this, cx, cy, y, x);
- 
-    error += y;
-    ++y;
-    error += y;
- 
-    if(error >= 0) {
-      --x;
-      error -= x;
-      error -= x;
-    }
-  }
+	size_t fw = image.width();
+	size_t fh = image.height();
+
+	// Make sure we don't try to draw outside the pixbuf.
+	if(fw > (pixbuf->width - x0))
+	{
+		fw = (pixbuf->width - x0);
+	}
+
+	if(fh > (pixbuf->height - y0))
+	{
+		fh = (pixbuf->height - y0);
+	}
+
+	for(size_t y = 0; y < fh; ++y)
+	{
+		for(size_t x = 0; x < fw; ++x)
+		{
+			Colour c = image.getPixel(x, y);
+			pixbuf->addPixel(x0 + x, y0 + y, c);
+		}
+	}
 }
 
-void GUI::Painter::drawImage(int x0, int y0, GUI::Image *image)
+void Painter::drawImageStretched(int x0, int y0, const Image& image,
+                                 int width, int height)
 {
-  size_t fw = image->width();
-  size_t fh = image->height();
-
-  for(size_t x = 0; x < fw; x++) {
-    for(size_t y = 0; y < fh; y++) {
-      GUI::Colour c = image->getPixel(x, y);
-      pixbuf->addPixel(x0 + x, y0 + y, c);
-    }
-  }
+	if((width < 1) || (height < 1))
+	{
+		return;
+	}
+
+	float fw = image.width();
+	float fh = image.height();
+
+	// Make sure we don't try to draw outside the pixbuf.
+	if(width > (int)(pixbuf->width - x0))
+	{
+		width = pixbuf->width - x0;
+	}
+
+	if(height > (int)(pixbuf->height - y0))
+	{
+		height = pixbuf->height - y0;
+	}
+
+	for(int y = 0; y < height; ++y)
+	{
+		for(int x = 0; x < width; ++x)
+		{
+			int lx = ((float)x / (float)width) * fw;
+			int ly = ((float)y / (float)height) * fh;
+			Colour c = image.getPixel(lx, ly);
+			pixbuf->addPixel(x0 + x, y0 + y, c);
+		}
+	}
 }
 
-void GUI::Painter::drawImageStretched(int x0, int y0, GUI::Image *image,
-                                      int w, int h)
+void Painter::drawBox(int x, int y, const Box& box, int width, int height)
 {
-  if(w < 1 || h < 1) return;
-
-  float fw = image->width();
-  float fh = image->height();
-
-  for(int x = 0; x < w; x++) {
-    for(int y = 0; y < h; y++) {
-      int lx = ((float)x/(float)w)*fw;
-      int ly = ((float)y/(float)h)*fh;
-      GUI::Colour c = image->getPixel(lx, ly);
-      pixbuf->addPixel(x0 + x, y0 + y, c);
-    }
-  }
+	int dx = x;
+	int dy = y;
+
+	// Top:
+	drawImage(dx, dy, *box.topLeft);
+
+	dx += box.topLeft->width();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImageStretched(dx, dy, *box.top,
+	                   width - box.topRight->width() - box.topLeft->width(),
+	                   box.top->height());
+
+	dx = x + width - box.topRight->width();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImage(dx, dy, *box.topRight);
+
+	// Center:
+	dy = y + box.topLeft->height();
+	dx = x + box.left->width();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImageStretched(dx, dy, *box.center,
+	                   width - box.left->width() - box.right->width(),
+	                   height - box.topLeft->height() - box.bottomLeft->height());
+
+	// Mid:
+	dx = x;
+	dy = y + box.topLeft->height();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImageStretched(dx, dy, *box.left, box.left->width(),
+	                   height - box.topLeft->height() - box.bottomLeft->height());
+
+	dx = x + width - box.right->width();
+	dy = y + box.topRight->height();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImageStretched(dx, dy, *box.right,
+	                   box.right->width(),
+	                   height - box.topRight->height() - box.bottomRight->height());
+
+	// Bottom:
+	dx = x;
+	dy = y + height - box.bottomLeft->height();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImage(dx, dy, *box.bottomLeft);
+
+	dx += box.bottomLeft->width();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImageStretched(dx, dy, *box.bottom,
+	                   width - box.bottomRight->width() - box.bottomLeft->width(),
+	                   box.bottom->height());
+
+	dx = x + width - box.bottomRight->width();
+	if((dx < 0) || (dy < 0))
+	{
+		return;
+	}
+
+	drawImage(dx, dy, *box.bottomRight);
 }
 
-void GUI::Painter::drawBox(int x, int y, Box *box, int width, int height)
+void Painter::drawBar(int x, int y, const Bar& bar, int width, int height)
 {
-  int dx = x;
-  int dy = y;
-
-  // Top:
-
-  drawImage(dx, dy, box->topLeft);
-
-  dx += box->topLeft->width();
-  if(dx < 0 || dy < 0) return;
-
-  drawImageStretched(dx, dy, box->top,
-                     width - box->topRight->width() - box->topLeft->width(),
-                     box->top->height());
-
-  dx = x + width - box->topRight->width();
-  if(dx < 0 || dy < 0) return;
+	if(width < ((int)bar.left->width() + (int)bar.right->width() + 1))
+	{
+		width = bar.left->width() + bar.right->width() + 1;
+	}
 
-  drawImage(dx, dy, box->topRight);
+	drawImageStretched(x, y, *bar.left, bar.left->width(), height);
 
-  // Center
-  dy = y + box->topLeft->height();
-  dx = x + box->left->width();
-  if(dx < 0 || dy < 0) return;
+	drawImageStretched(x + bar.left->width(), y, *bar.center,
+	                   width - bar.left->width() - bar.right->width(), height);
 
-  drawImageStretched(dx, dy, box->center,
-                     width - box->left->width() - box->right->width(),
-                     height - box->topLeft->height() - box->bottomLeft->height());
-
-  // Mid:
-  dx = x;
-  dy = y + box->topLeft->height();
-  if(dx < 0 || dy < 0) return;
-
-  drawImageStretched(dx, dy, box->left, box->left->width(),
-                     height - box->topLeft->height() - box->bottomLeft->height());
-
-  dx = x + width - box->right->width();
-  dy = y + box->topRight->height();
-  if(dx < 0 || dy < 0) return;
-
-  drawImageStretched(dx, dy, box->right,
-                     box->right->width(),
-                     height - box->topRight->height() - box->bottomRight->height());
-
-  // Bottom:
-  dx = x;
-  dy = y + height - box->bottomLeft->height();
-  if(dx < 0 || dy < 0) return;
-
-  drawImage(dx, dy, box->bottomLeft);
-
-  dx += box->bottomLeft->width();
-  if(dx < 0 || dy < 0) return;
-
-  drawImageStretched(dx, dy, box->bottom,
-                     width - box->bottomRight->width() - box->bottomLeft->width(),
-                     box->bottom->height());
-
-  dx = x + width - box->bottomRight->width();
-  if(dx < 0 || dy < 0) return;
-
-  drawImage(dx, dy, box->bottomRight);
-}
-
-void GUI::Painter::drawBar(int x, int y, Bar *bar, int width, int height)
-{
-  if(width < ((int)bar->left->width() + (int)bar->right->width() + 1)) {
-    width = bar->left->width() + bar->right->width() + 1;
-  }
-  drawImageStretched(x, y,
-                     bar->left,
-                     bar->left->width(), height);
-
-  drawImageStretched(x + bar->left->width(), y,
-                     bar->center,
-                     width - bar->left->width() - bar->right->width(), height);
-
-  drawImageStretched(x + width - bar->left->width(), y,
-                     bar->right,
-                     bar->right->width(), height);
+	drawImageStretched(x + width - bar.left->width(), y, *bar.right,
+	                   bar.right->width(), height);
 }
 
-void GUI::Painter::flush()
+void Painter::flush()
 {
 #ifdef X11
-  // Send the "DrawLine" request to the server
-  //XFlush(gctx->display);
+	// Send the "DrawLine" request to the server
+	//XFlush(gctx->display);
 #endif/*X11*/
 }
 
-#ifdef TEST_PAINTER
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_PAINTER*/
+} // GUI::
diff --git a/plugingui/painter.h b/plugingui/painter.h
index 0a93f50..42426bc 100644
--- a/plugingui/painter.h
+++ b/plugingui/painter.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_PAINTER_H__
-#define __DRUMGIZMO_PAINTER_H__
+#pragma once
 
 #include <string>
 
@@ -39,59 +38,51 @@ namespace GUI {
 
 class Painter {
 public:
-  Painter(Widget *widget);
-  ~Painter();
+	Painter(Widget& widget);
+	~Painter();
 
-  void flush();
+	void flush();
 
-  void setColour(Colour colour);
+	void setColour(const Colour& colour);
 
-  void drawLine(int x1, int y1, int x2, int y2);
-  void drawText(int x, int y, Font &font, std::string text,
-                bool nocolour = false);
-  void drawRectangle(int x1, int y1, int x2, int y2);
-  void drawFilledRectangle(int x1, int y1, int x2, int y2);
-  void drawPoint(int x, int y);
-  void drawCircle(int x, int y, double r);
-  void drawFilledCircle(int x, int y, int r);
-  void drawImage(int x, int y, Image *image);
-  void drawImageStretched(int x0, int y0, GUI::Image *image,
-                          int width, int height);
+	void drawLine(int x1, int y1, int x2, int y2);
+	void drawText(int x, int y, const Font& font, const std::string& text,
+	              bool nocolour = false);
+	void drawRectangle(int x1, int y1, int x2, int y2);
+	void drawFilledRectangle(int x1, int y1, int x2, int y2);
+	void drawPoint(int x, int y);
+	void drawCircle(int x, int y, double r);
+	void drawFilledCircle(int x, int y, int r);
+	void drawImage(int x, int y, const Image& image);
+	void drawImageStretched(int x, int y, const Image& image,
+	                        int width, int height);
 
-  typedef struct {
-    Image *topLeft;
-    Image *top;
-    Image *topRight;
-    Image *left;
-    Image *right;
-    Image *bottomLeft;
-    Image *bottom;
-    Image *bottomRight;
-    Image *center;
-  } Box;
-  void drawBox(int x, int y, Box *box, int width, int height);
+	typedef struct {
+		Image* topLeft;
+		Image* top;
+		Image* topRight;
+		Image* left;
+		Image* right;
+		Image* bottomLeft;
+		Image* bottom;
+		Image* bottomRight;
+		Image* center;
+	} Box;
+	void drawBox(int x, int y, const Box& box, int width, int height);
 
-  typedef struct {
-    Image *left;
-    Image *right;
-    Image *center;
-  } Bar;
-  void drawBar(int x, int y, Bar *bar, int width, int height);
+	typedef struct {
+		Image* left;
+		Image* right;
+		Image* center;
+	} Bar;
+	void drawBar(int x, int y, const Bar& bar, int width, int height);
 
-  void clear();
+	void clear();
 
 private:
-  void plot(int x, int y, double c);
-  double ipart(double x);
-  double round(double x);
-  double fpart(double x);
-  double rfpart(double x);
-
-  Widget *widget;
-  PixelBufferAlpha *pixbuf;
-  Colour colour;
-};
-
+	Widget& widget;
+	PixelBufferAlpha* pixbuf;
+	Colour colour;
 };
 
-#endif/*__DRUMGIZMO_PAINTER_H__*/
+} // GUI::
diff --git a/plugingui/pixelbuffer.cc b/plugingui/pixelbuffer.cc
index 2a6bf6f..f2fdf62 100644
--- a/plugingui/pixelbuffer.cc
+++ b/plugingui/pixelbuffer.cc
@@ -11,170 +11,155 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "pixelbuffer.h"
 
-#include <stdio.h>
+#include <cassert>
 
-GUI::PixelBuffer::PixelBuffer(size_t width, size_t height)
+namespace GUI {
+
+PixelBuffer::PixelBuffer(size_t width, size_t height)
+	: buf(nullptr)
 {
-  buf = NULL;
-  realloc(width, height);
+	realloc(width, height);
 }
 
-GUI::PixelBuffer::~PixelBuffer()
+PixelBuffer::~PixelBuffer()
 {
-  if(buf) free(buf);
+	free(buf);
 }
 
-void GUI::PixelBuffer::realloc(size_t width, size_t height)
+void PixelBuffer::realloc(size_t width, size_t height)
 {
-  if(buf) free(buf);
-  buf = (unsigned char *)calloc(width * height, 3);
-  this->width = width;
-  this->height = height;
+	free(buf);
+	buf = (unsigned char *)calloc(width * height, 3);
+	this->width = width;
+	this->height = height;
 }
 
-#define PX(k) (x + y * width) * 3 + k
-void GUI::PixelBuffer::setPixel(size_t x, size_t y,
-                                unsigned char red,
-                                unsigned char green,
-                                unsigned char blue,
-                                unsigned char alpha)
+#define PX(k) ((x + y * width) * 3 + k)
+void PixelBuffer::setPixel(size_t x, size_t y,
+                           unsigned char red,
+                           unsigned char green,
+                           unsigned char blue,
+                           unsigned char alpha)
 {
-  if(x >= width || y >= height) return;
-  /*
-  float a,b;
-  getAlpha(alpha, 255, a, b);
-
-  buf[PX(0)] = (unsigned char)((float)red   * a + (float)buf[PX(0)] * b);
-  buf[PX(0)] /= (a + b);
-  buf[PX(1)] = (unsigned char)((float)green * a + (float)buf[PX(1)] * b);
-  buf[PX(1)] /= (a + b);
-  buf[PX(2)] = (unsigned char)((float)blue  * a + (float)buf[PX(2)] * b);
-  buf[PX(2)] /= (a + b);
-  */
-  unsigned int a = alpha;
-  unsigned int b = 255 - alpha;
-  
-  buf[PX(0)] = (unsigned char)(((int)red   * a + (int)buf[PX(0)] * b) / 255);
-  buf[PX(1)] = (unsigned char)(((int)green * a + (int)buf[PX(1)] * b) / 255);
-  buf[PX(2)] = (unsigned char)(((int)blue  * a + (int)buf[PX(2)] * b) / 255);
+	assert(x < width);
+	assert(y < height);
+
+	unsigned int a = alpha;
+	unsigned int b = 255 - alpha;
+
+	buf[PX(0)] = (unsigned char)(((int)red   * a + (int)buf[PX(0)] * b) / 255);
+	buf[PX(1)] = (unsigned char)(((int)green * a + (int)buf[PX(1)] * b) / 255);
+	buf[PX(2)] = (unsigned char)(((int)blue  * a + (int)buf[PX(2)] * b) / 255);
 
 }
 
-static int idx = 0;
-GUI::PixelBufferAlpha::PixelBufferAlpha(size_t width, size_t height)
+PixelBufferAlpha::PixelBufferAlpha(size_t width, size_t height)
+	: buf(nullptr)
+	, x(0)
+	, y(0)
 {
-  this->idx = ::idx++;
-  buf = NULL;
-  x = y = 10;
-  realloc(width, height);
+	realloc(width, height);
 }
 
-GUI::PixelBufferAlpha::~PixelBufferAlpha()
+PixelBufferAlpha::~PixelBufferAlpha()
 {
-  if(buf) free(buf);
+	free(buf);
 }
 
-void GUI::PixelBufferAlpha::realloc(size_t width, size_t height)
+void PixelBufferAlpha::realloc(size_t width, size_t height)
 {
-  if(buf) free(buf);
-  buf = (unsigned char *)calloc(width * height, 4);
-  this->width = width;
-  this->height = height;
+	free(buf);
+	buf = (unsigned char *)calloc(width * height, 4);
+	this->width = width;
+	this->height = height;
 }
 
 #undef PX
-#define PX(k) (x + y * width) * 4 + k
-void GUI::PixelBufferAlpha::setPixel(size_t x, size_t y,
-                                     unsigned char red,
-                                     unsigned char green,
-                                     unsigned char blue,
-                                     unsigned char alpha)
+#define PX(k) ((x + y * width) * 4 + k)
+void PixelBufferAlpha::setPixel(size_t x, size_t y,
+                                unsigned char red,
+                                unsigned char green,
+                                unsigned char blue,
+                                unsigned char alpha)
 {
-  if(x >= width || y >= height) return;
+	assert(x < width);
+	assert(y < height);
 
-  buf[PX(0)] = red;
-  buf[PX(1)] = green;
-  buf[PX(2)] = blue;
-  buf[PX(3)] = alpha;
+	buf[PX(0)] = red;
+	buf[PX(1)] = green;
+	buf[PX(2)] = blue;
+	buf[PX(3)] = alpha;
 }
 
 // http://en.wikipedia.org/wiki/Alpha_compositing
-static void getAlpha(unsigned char _a, unsigned char _b, float &a, float &b)
+static inline void getAlpha(unsigned char _a, unsigned char _b,
+                            float &a, float &b)
 {
-  a = _a / 255.0;
-  b = _b / 255.0;
-  b *= (1-a);
+	a = _a / 255.0;
+	b = _b / 255.0;
+	b *= (1 - a);
 }
 
-void GUI::PixelBufferAlpha::addPixel(size_t x, size_t y,
-                                     unsigned char red,
-                                     unsigned char green,
-                                     unsigned char blue,
-                                     unsigned char alpha)
+void PixelBufferAlpha::addPixel(size_t x, size_t y,
+                                unsigned char red,
+                                unsigned char green,
+                                unsigned char blue,
+                                unsigned char alpha)
 {
-  if(x >= width || y >= height) return;
+	assert(x < width);
+	assert(y < height);
 
-  if(alpha == 0) return;
+	if(alpha == 0)
+	{
+		return;
+	}
 
-  float a,b;
-  getAlpha(alpha, buf[PX(3)], a, b);
+	float a, b;
+	getAlpha(alpha, buf[PX(3)], a, b);
 
-  buf[PX(0)] = (unsigned char)((float)red   * a + (float)buf[PX(0)] * b);
-  buf[PX(0)] /= (a + b);
-  buf[PX(1)] = (unsigned char)((float)green * a + (float)buf[PX(1)] * b);
-  buf[PX(1)] /= (a + b);
-  buf[PX(2)] = (unsigned char)((float)blue  * a + (float)buf[PX(2)] * b);
-  buf[PX(2)] /= (a + b);
+	buf[PX(0)] = (unsigned char)((float)red   * a + (float)buf[PX(0)] * b);
+	buf[PX(0)] /= (a + b);
+	buf[PX(1)] = (unsigned char)((float)green * a + (float)buf[PX(1)] * b);
+	buf[PX(1)] /= (a + b);
+	buf[PX(2)] = (unsigned char)((float)blue  * a + (float)buf[PX(2)] * b);
+	buf[PX(2)] /= (a + b);
 
-  buf[PX(3)] = (a + b) * 255;
+	buf[PX(3)] = (a + b) * 255;
 }
 
-void GUI::PixelBufferAlpha::addPixel(size_t x, size_t y, GUI::Colour c)
+void PixelBufferAlpha::addPixel(size_t x, size_t y, Colour c)
 {
-  addPixel(x, y, c.red * 255, c.green * 255, c.blue * 255, c.alpha * 255);
+	addPixel(x, y, c.red * 255, c.green * 255, c.blue * 255, c.alpha * 255);
 }
 
-void GUI::PixelBufferAlpha::pixel(size_t x, size_t y,
-                                  unsigned char *red,
-                                  unsigned char *green,
-                                  unsigned char *blue,
-                                  unsigned char *alpha)
+void PixelBufferAlpha::pixel(size_t x, size_t y,
+                             unsigned char* red,
+                             unsigned char* green,
+                             unsigned char* blue,
+                             unsigned char* alpha)
 {
-  if(x >= width || y >= height) return;
-  *red = buf[PX(0)];
-  *green = buf[PX(1)];
-  *blue = buf[PX(2)];
-  *alpha = buf[PX(3)];
-}
-
-#ifdef TEST_PIXELBUFFER
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
+	assert(x < width);
+	assert(y < height);
 
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
+	*red = buf[PX(0)];
+	*green = buf[PX(1)];
+	*blue = buf[PX(2)];
+	*alpha = buf[PX(3)];
+}
 
-#endif/*TEST_PIXELBUFFER*/
+} // GUI::
diff --git a/plugingui/pixelbuffer.h b/plugingui/pixelbuffer.h
index 2785eb1..f07f9a8 100644
--- a/plugingui/pixelbuffer.h
+++ b/plugingui/pixelbuffer.h
@@ -11,81 +11,77 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_PIXELBUFFER_H__
-#define __DRUMGIZMO_PIXELBUFFER_H__
-
-#include <stdlib.h>
+#pragma once
 
 #include "colour.h"
 
+#include <stdlib.h>
+
 namespace GUI {
 
 class PixelBuffer {
 public:
-  PixelBuffer(size_t width, size_t height);
-  ~PixelBuffer();
+	PixelBuffer(size_t width, size_t height);
+	~PixelBuffer();
 
-  void realloc(size_t width, size_t height);
+	void realloc(size_t width, size_t height);
 
-  void setPixel(size_t x, size_t y,
-                unsigned char red,
-                unsigned char green,
-                unsigned char blue,
-                unsigned char alpha);
+	void setPixel(size_t x, size_t y,
+	              unsigned char red,
+	              unsigned char green,
+	              unsigned char blue,
+	              unsigned char alpha);
 
-  unsigned char *buf;
-  size_t width;
-  size_t height;
+	unsigned char* buf;
+	size_t width;
+	size_t height;
 };
 
 class PixelBufferAlpha {
 public:
-  PixelBufferAlpha(size_t width, size_t height);
-  ~PixelBufferAlpha();
-
-  int idx;
-  size_t x, y;
-
-  void realloc(size_t width, size_t height);
-
-  void setPixel(size_t x, size_t y,
-                unsigned char red,
-                unsigned char green,
-                unsigned char blue,
-                unsigned char alpha);
-
-  void addPixel(size_t x, size_t y,
-                unsigned char red,
-                unsigned char green,
-                unsigned char blue,
-                unsigned char alpha);
-
-  void addPixel(size_t x, size_t y, Colour c);
-
-  void pixel(size_t x, size_t y,
-             unsigned char *red,
-             unsigned char *green,
-             unsigned char *blue,
-             unsigned char *alpha);
-
-  unsigned char *buf;
-  size_t width;
-  size_t height;
-};
-
+	PixelBufferAlpha(size_t width, size_t height);
+	~PixelBufferAlpha();
+
+	void realloc(size_t width, size_t height);
+
+	void setPixel(size_t x, size_t y,
+	              unsigned char red,
+	              unsigned char green,
+	              unsigned char blue,
+	              unsigned char alpha);
+
+	void addPixel(size_t x, size_t y,
+	              unsigned char red,
+	              unsigned char green,
+	              unsigned char blue,
+	              unsigned char alpha);
+
+	void addPixel(size_t x, size_t y, Colour c);
+
+	void pixel(size_t x, size_t y,
+	           unsigned char* red,
+	           unsigned char* green,
+	           unsigned char* blue,
+	           unsigned char* alpha);
+
+	unsigned char* buf;
+	size_t width;
+	size_t height;
+	size_t x;
+	size_t y;
 };
 
-#endif/*__DRUMGIZMO_PIXELBUFFER_H__*/
+} // GUI::
diff --git a/plugingui/pluginconfig.cc b/plugingui/pluginconfig.cc
index d57d9df..85e101d 100644
--- a/plugingui/pluginconfig.cc
+++ b/plugingui/pluginconfig.cc
@@ -1,6 +1,6 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
- *            config.cc
+ *            pluginconfig.cc
  *
  *  Tue Jun  3 13:54:05 CEST 2014
  *  Copyright 2014 Jonas Suhr Christensen
@@ -11,155 +11,58 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "pluginconfig.h"
 
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "directory.h"
-
-#ifdef WIN32
-#include <direct.h>
-#include <windows.h>
-#include <Shlobj.h>
-#include <Shlwapi.h>
-#else
-#endif
-
 #include <hugin.hpp>
-  
+
 #define CONFIGFILENAME "plugingui.conf"
 
-#ifdef WIN32
-  #define SEP "\\"
-  #define CONFIGDIRNAME ".drumgizmo"
-#else
-  #define SEP "/"
-  #define CONFIGDIRNAME ".drumgizmo"
-#endif
+namespace GUI {
 
 Config::Config()
+	: ConfigFile(CONFIGFILENAME)
 {
-
 }
 
 Config::~Config()
 {
-
 }
 
-static std::string configPath() {
- #ifdef WIN32
-  std::string configpath;
-  TCHAR szPath[256];
-  if(SUCCEEDED(SHGetFolderPath(NULL,
-                               CSIDL_APPDATA | CSIDL_FLAG_CREATE,
-                               NULL,
-                               0,
-                               szPath))); {
-    configpath = szPath;
-  }
-#else
-  std::string configpath = strdup(getenv("HOME"));
-#endif
-  configpath += SEP;
-  configpath += CONFIGDIRNAME;
-
-  return configpath;
-}
-
-static bool createConfigPath() {
-  std::string configpath = configPath();
-
-  if(!Directory::exists(configpath)) {
-    DEBUG(pluginconfig, "No configuration exists, creating directory '%s'\n", configpath.c_str());
-#ifdef WIN32
-    if( (mkdir(configpath.c_str())) < 0) { 
-#else
-    if( (mkdir(configpath.c_str(), 0755)) < 0) { 
-#endif
-      DEBUG(pluginconfig, "Could not create config directory\n");
-    }
-    return false;
-  }
-
-  return true;
-}
-
-static FILE* openConfigFile(std::string mode) {
-
-  std::string configpath = configPath();
+bool Config::load()
+{
+	lastkit.clear();
+	lastmidimap.clear();
 
-  FILE *fp;
-  std::string configfile = configpath;
-  configfile += SEP;
-  configfile += CONFIGFILENAME;
+	if(!ConfigFile::load())
+	{
+		return false;
+	}
 
-  DEBUG(pluginconfig, "Opening config file '%s'\n", configfile.c_str());
-  if(! (fp = fopen(configfile.c_str(), mode.c_str())) ) {
-    return NULL;
-  }
+	lastkit = getValue("lastkit");
+	lastmidimap = getValue("lastmidimap");
 
-  return fp;
+	return true;
 }
 
-void Config::load()
+bool Config::save()
 {
-  DEBUG(pluginconfig, "Loading config file...\n");
-  FILE *fp = openConfigFile("r");
-  if(!fp) return;
+	setValue("lastkit", lastkit);
+	setValue("lastmidimap", lastmidimap);
 
-  lastkit.clear();
-  lastmidimap.clear();
-
-  char buf[4096];
-  while( fgets(buf, 4096, fp) ) {
-    if(!strncmp(buf, "lastkit:", 8)) {
-      DEBUG(pluginconfig, "Loading last kit path\n");
-      // Dont copy newline
-      if(strlen(buf) > 8 + 1) { 
-        lastkit.append(buf+8, strlen(buf+8) - 1);
-        DEBUG(pluginconfig, "\t path is %s\n", lastkit.c_str());
-      }
-    }
-    if(!strncmp(buf, "lastmidimap:", 12)) {
-      DEBUG(pluginconfig, "Loading lastmidimap path\n");
-      // Dont copy newline
-      if(strlen(buf) > 12+1) lastmidimap.append(buf+12, strlen(buf+12) - 1);
-      DEBUG(pluginconfig, "\t path is %s\n", lastmidimap.c_str());
-    }
-  }
+	return ConfigFile::save();
 }
 
-void Config::save()
-{
-  DEBUG(pluginconfig, "Saving configuration...\n");
-
-  createConfigPath();
-
-  FILE *fp = openConfigFile("w");
-  if(!fp) return;
-
-  std::string buf;
-  buf.append("lastkit:" + lastkit + '\n');
-  buf.append("lastmidimap:" + lastmidimap + '\n');
-
-  fputs(buf.c_str(), fp);
-
-  fclose(fp);
-}
+} // GUI::
diff --git a/plugingui/pluginconfig.h b/plugingui/pluginconfig.h
index d0e9bcd..82344cc 100644
--- a/plugingui/pluginconfig.h
+++ b/plugingui/pluginconfig.h
@@ -1,6 +1,6 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
- *            config.h
+ *            pluginconfig.h
  *
  *  Tue Jun  3 13:51:29 CEST 2014
  *  Copyright 2014 Jonas Suhr Christensen
@@ -11,38 +11,35 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_CONFIG_H__
-#define __DRUMGIZMO_CONFIG_H__
+#pragma once
 
-#include <string>
-#include <list>
+#include <configfile.h>
 
-#define DIRECTORY_HIDDEN 1
+namespace GUI {
 
-class Config {
+class Config : public ConfigFile {
+public:
+	Config();
+	~Config();
 
-  public:
-    Config();
-    ~Config();
+	bool load();
+	bool save();
 
-    void load();
-    void save();
-
-    std::string lastkit;
-    std::string lastmidimap;
+	std::string lastkit;
+	std::string lastmidimap;
 };
 
-#endif/*__DRUMGIZMO_CONFIG_H__*/
+} // GUI::
diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc
index 5408334..e34c471 100644
--- a/plugingui/plugingui.cc
+++ b/plugingui/plugingui.cc
@@ -11,549 +11,205 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "plugingui.h"
 
 #include <hugin.hpp>
-#include <stdio.h>
-
-#include "knob.h"
-#include "verticalline.h"
-#include "../version.h"
 
 #include "pluginconfig.h"
 #include "messagehandler.h"
 
-static void checkClick(void *ptr)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  ChangeSettingMessage *msg =
-    new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier,
-                             gui->check->checked());
-  msghandler.sendMessage(MSGRCV_ENGINE, msg);
-}
-
-static void knobChange(void *ptr)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  ChangeSettingMessage *msg =
-    new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight,
-                             gui->knob->value());
-
-  msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
-#ifdef STANDALONE
-  int i = gui->knob->value() * 4;
-  switch(i) {
-  case 0: gui->progress->setState(GUI::ProgressBar::off); break;
-  case 1: gui->progress->setState(GUI::ProgressBar::blue); break;
-  case 2: gui->progress->setState(GUI::ProgressBar::green); break;
-  case 3: gui->progress->setState(GUI::ProgressBar::red); break;
-  default: break;
-  }
-#endif
-}
-
-static void knobChange2(void *ptr)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  ChangeSettingMessage *msg =
-    new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff,
-                             gui->knob2->value());
-  msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
-#ifdef STANDALONE
-  gui->progress->setProgress(gui->knob2->value());
-#endif
-}
-
-//static void quit(void *ptr) {
-//  PluginGUI *gui = (PluginGUI*)ptr;
-//
-//  gui->stopThread();
-//}
-
-GUI::FileBrowser *fb;
-static void selectKitFile(void *ptr, std::string filename)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  gui->lineedit->setText(filename);
-
-  fb->hide();
-
-  std::string drumkit = gui->lineedit->text();
-
-  gui->config->lastkit = drumkit;
-  gui->config->save();
-
-  gui->progress->setProgress(0);
-  gui->progress->setState(GUI::ProgressBar::blue);
-
-  LoadDrumKitMessage *msg = new LoadDrumKitMessage();
-  msg->drumkitfile = drumkit;
-
-  msghandler.sendMessage(MSGRCV_ENGINE, msg);
-}
-
-static void kitBrowseClick(void *ptr)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  std::string path = gui->lineedit->text();
-  if(path == "") path = gui->config->lastkit;
-  if(path == "") path = gui->lineedit2->text();
-
-  fb->setPath(path);
-  fb->registerFileSelectHandler(selectKitFile, gui);
-  fb->show();
-}
-
-static void selectMapFile(void *ptr, std::string filename)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  gui->lineedit2->setText(filename);
-  fb->hide();
+namespace GUI {
 
-  std::string midimap = gui->lineedit2->text();
-
-  gui->config->lastmidimap = midimap;
-  gui->config->save();
-
-  LoadMidimapMessage *msg = new LoadMidimapMessage();
-  msg->midimapfile = midimap;
-  msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
-  /*
-  if(gui->changeMidimapHandler)
-    gui->changeMidimapHandler(gui->changeMidimapPtr, midimap.c_str());
-  gui->progress2->setState(GUI::ProgressBar::green);
-  */
-}
-
-static void midimapBrowseClick(void *ptr)
+PluginGUI::PluginGUI(void* native_window)
+	: MessageReceiver(MSGRCV_UI)
+	, native_window(native_window)
 {
-  PluginGUI *gui = (PluginGUI*)ptr;
-
-  std::string path = gui->lineedit2->text();
-  if(path == "") path = gui->config->lastmidimap;
-  if(path == "") path = gui->lineedit->text();
-
-  fb->setPath(path);
-  fb->registerFileSelectHandler(selectMapFile, gui);
-  fb->show();
-}
-
-/*
-void closeClick(void *ptr)
-{
-  PluginGUI *gui = (PluginGUI*)ptr;
-  if(gui->windowClosedHandler) gui->windowClosedHandler(gui->windowClosedPtr);
-}
-*/
-
-PluginGUI::PluginGUI()
-  : MessageReceiver(MSGRCV_UI), sem("plugingui")
-{
-  initialised = false;
-
-  windowClosedHandler = NULL;
-  changeMidimapHandler = NULL;
-
-  window = NULL;
- 
-  running = true;
-  closing = false;
-
-#ifdef USE_THREAD
-  run();
-#else
-  init();
-#endif/*USE_THREAD*/
-
-  sem.wait();
+	init();
 }
 
 PluginGUI::~PluginGUI()
 {
-  stopThread();
 }
 
-void PluginGUI::stopThread()
-{
-  if(running) {
-    running = false;
-    wait_stop();
-  }
-}
-
-
 void PluginGUI::handleMessage(Message *msg)
 {
-  GUI::Painter p(window);// Make sure we only redraw buffer one time.
-
-  switch(msg->type()) {
-  case Message::LoadStatus:
-    {
-      LoadStatusMessage *ls = (LoadStatusMessage*)msg;
-      progress->setProgress((float)ls->numer_of_files_loaded /
-                            (float)ls->number_of_files);
-      if(ls->numer_of_files_loaded == ls->number_of_files) {
-        progress->setState(GUI::ProgressBar::green);
-      }
-    }
-    break;
-  case Message::LoadStatusMidimap:
-    {
-      LoadStatusMessageMidimap *ls = (LoadStatusMessageMidimap*)msg;
-      progress2->setProgress(1);
-      if(ls->success) {
-        progress2->setState(GUI::ProgressBar::green);
-      } else {
-        progress2->setState(GUI::ProgressBar::red);
-      }
-    }
-    break;
-  case Message::EngineSettingsMessage:
-    {
-      EngineSettingsMessage *settings = (EngineSettingsMessage *)msg;
-      lineedit->setText(settings->drumkitfile);
-      if(settings->drumkit_loaded) {
-        progress->setProgress(1);
-        progress->setState(GUI::ProgressBar::green);
-      } else {
-        progress->setProgress(0);
-        progress->setState(GUI::ProgressBar::blue);
-      }
-      lineedit2->setText(settings->midimapfile);
-      if(settings->midimap_loaded) {
-        progress2->setProgress(1);
-        progress2->setState(GUI::ProgressBar::green);
-      } else {
-        progress2->setProgress(0);
-        progress2->setState(GUI::ProgressBar::blue);
-      }
-      check->setChecked(settings->enable_velocity_modifier);
-      knob->setValue(settings->velocity_modifier_weight);
-      knob2->setValue(settings->velocity_modifier_falloff);
-      
-    }
-  default:
-    break;
-  }
+	Painter p(*window);// Make sure we only redraw buffer once (set refcount to 1)
+
+	switch(msg->type()) {
+	case Message::LoadStatus:
+		{
+			LoadStatusMessage *ls = (LoadStatusMessage*)msg;
+			window->drumkitFileProgress->setProgress((float)ls->numer_of_files_loaded /
+			                              (float)ls->number_of_files);
+			if(ls->numer_of_files_loaded == ls->number_of_files)
+			{
+				window->drumkitFileProgress->setState(ProgressBarState::Green);
+			}
+		}
+		break;
+	case Message::LoadStatusMidimap:
+		{
+			LoadStatusMessageMidimap *ls = (LoadStatusMessageMidimap*)msg;
+			window->midimapFileProgress->setProgress(1);
+			if(ls->success)
+			{
+				window->midimapFileProgress->setState(ProgressBarState::Green);
+			}
+			else
+			{
+				window->midimapFileProgress->setState(ProgressBarState::Red);
+			}
+		}
+		break;
+	case Message::EngineSettingsMessage:
+		{
+			EngineSettingsMessage *settings = (EngineSettingsMessage *)msg;
+			window->lineedit->setText(settings->drumkitfile);
+			if(settings->drumkit_loaded)
+			{
+				window->drumkitFileProgress->setProgress(1);
+				window->drumkitFileProgress->setState(ProgressBarState::Green);
+			}
+			else
+			{
+				window->drumkitFileProgress->setProgress(0);
+				window->drumkitFileProgress->setState(ProgressBarState::Blue);
+			}
+			window->lineedit2->setText(settings->midimapfile);
+			if(settings->midimap_loaded)
+			{
+				window->midimapFileProgress->setProgress(1);
+				window->midimapFileProgress->setState(ProgressBarState::Green);
+			}
+			else
+			{
+				window->midimapFileProgress->setProgress(0);
+				window->midimapFileProgress->setState(ProgressBarState::Blue);
+			}
+			window->velocityCheck->setChecked(settings->enable_velocity_modifier);
+			window->attackKnob->setValue(settings->velocity_modifier_weight);
+			window->falloffKnob->setValue(settings->velocity_modifier_falloff);
+		}
+	default:
+		break;
+	}
+}
+
+bool PluginGUI::processEvents()
+{
+	if(!initialised)
+	{
+		return running;
+	}
+
+	window->eventHandler()->processEvents();
+	handleMessages();
+
+	if(closing)
+	{
+		closeNotifier();
+		closing = false;
+		return false;
+	}
+
+	return running;
 }
 
-void PluginGUI::thread_main()
+void PluginGUI::init()
 {
-  init();
+	DEBUG(gui, "init");
 
-  { // Request all engine settings
-    EngineSettingsMessage *msg = new EngineSettingsMessage();
-    msghandler.sendMessage(MSGRCV_ENGINE, msg);
-  }
+	config = new Config();
+	config->load();
 
-  while(running) {
-#ifdef WIN32
-    SleepEx(50, FALSE);
-#else
-    usleep(50000);
-#endif/*WIN32*/
+	window = new DGWindow(native_window, msghandler, *config);
 
-    //    DEBUG(gui, "loop");
+	auto eventHandler = window->eventHandler();
+	CONNECT(eventHandler, closeNotifier, this, &PluginGUI::closeEventHandler);
 
-    window->eventHandler()->processEvents();
-    handleMessages();
-  }
+	window->show();
 
-  deinit();
+	{ // Request all engine settings
+		EngineSettingsMessage *msg = new EngineSettingsMessage();
+		msghandler.sendMessage(MSGRCV_ENGINE, msg);
+	}
+
+	initialised = true;
 }
 
 void PluginGUI::deinit()
 {
-  if(config) {
-    config->save();
-    delete config;
-  }
-  if(window) delete window;
-}
+	if(config)
+	{
+		config->save();
+		delete config;
+	}
 
-void closeEventHandler(void *ptr)
-{
-  volatile bool *closing = (volatile bool*)ptr;
-  *closing = true;
-}
-
-void PluginGUI::init()
-{
-  DEBUG(gui, "init");
-
-  config = new Config();
-  config->load();
-
-  window = new GUI::Window();
-  window->eventHandler()->registerCloseHandler(closeEventHandler,
-                                               (void*)&closing);
-
-  window->setFixedSize(370, 330);
-  window->setCaption("DrumGizmo v"VERSION);
-
-  GUI::Label *lbl_title = new GUI::Label(window);
-  lbl_title->setText("DrumGizmo");
-  lbl_title->move(127, 7);
-  lbl_title->resize(200, 20);
-  
-  GUI::VerticalLine *l1 = new GUI::VerticalLine(window);
-  l1->move(20, 30);
-  l1->resize(window->width() - 40, 2);
-
-#define OFFSET1 17
-#define OFFSET2 38
-#define OFFSET3 20
-
-#define XOFFSET 20
-  // Drumkit file
-  {
-    int y = 37;
-    GUI::Label *lbl = new GUI::Label(window);
-    lbl->setText("Drumkit file:");
-    lbl->move(XOFFSET - 4, y);
-    lbl->resize(100, 20);
-
-    y += OFFSET1;
-    lineedit = new GUI::LineEdit(window);
-    lineedit->move(XOFFSET, y);
-    lineedit->resize(243, 29);
-    lineedit->setReadOnly(true);
-
-    GUI::Button *btn_brw = new GUI::Button(window);
-    btn_brw->setText("Browse...");
-    btn_brw->move(266, y - 6 + 4);
-    btn_brw->resize(85, 35 + 6 - 4);
-    btn_brw->registerClickHandler(kitBrowseClick, this);
-
-    y += OFFSET2;
-    progress = new GUI::ProgressBar(window);
-    progress->move(XOFFSET, y);
-    progress->resize(window->width() - 2*XOFFSET, 11);
-
-    y += OFFSET3;
-    GUI::VerticalLine *l = new GUI::VerticalLine(window);
-    l->move(XOFFSET, y);
-    l->resize(window->width() - 2*XOFFSET, 2);
-  }
-
-  // Midimap file
-  {
-    int y = 120;
-    lbl2 = new GUI::Label(window);
-    lbl2->setText("Midimap file:");
-    lbl2->move(XOFFSET - 4, y);
-    lbl2->resize(100, 20);
-    
-    y += OFFSET1;
-    lineedit2 = new GUI::LineEdit(window);
-    lineedit2->move(XOFFSET, y);
-    lineedit2->resize(243, 29);
-    lineedit2->setReadOnly(true);
-
-    GUI::Button *btn_brw = new GUI::Button(window);
-    btn_brw->setText("Browse...");
-    btn_brw->move(266, y - 6 + 4);
-    btn_brw->resize(85, 35 + 6 - 4);
-    btn_brw->registerClickHandler(midimapBrowseClick, this);
-
-    y += OFFSET2;
-    progress2 = new GUI::ProgressBar(window);
-    progress2->move(XOFFSET, y);
-    progress2->resize(window->width() - 2*XOFFSET, 11);
-
-    y += OFFSET3;
-    GUI::VerticalLine *l = new GUI::VerticalLine(window);
-    l->move(XOFFSET, y);
-    l->resize(window->width() - 2*XOFFSET, 2);
-  }
-
-  {
-    int y = 203;
-#define OFFSET4 21
-
-    // Enable Velocity
-    GUI::Label *lbl_velocity = new GUI::Label(window);
-    lbl_velocity->resize(78 ,20);
-    lbl_velocity->move(16, y);
-    lbl_velocity->setText("Humanizer");
-
-    check = new GUI::CheckBox(window);
-    //check->setText("Enable Velocity Modifier");
-    check->move(26, y + OFFSET4);
-    check->resize(59,38);
-    check->registerClickHandler(checkClick, this);
-
-    // Velocity Weight Modifier:
-    {
-      GUI::Label *lbl_weight = new GUI::Label(window);
-      lbl_weight->setText("Attack");
-      lbl_weight->move(107, y);
-      lbl_weight->resize(100, 20);
-      
-      knob = new GUI::Knob(window);
-      knob->move(109, y + OFFSET4 - 4);
-      knob->resize(57, 57);
-      knob->registerClickHandler(knobChange, this);
-    }
-    
-    // Velocity Falloff Modifier:
-    {
-      GUI::Label *lbl_falloff = new GUI::Label(window);
-      lbl_falloff->setText("Release");
-      lbl_falloff->move(202 - 17 - 7, y);
-      lbl_falloff->resize(100, 20);
-      
-      knob2 = new GUI::Knob(window);
-      knob2->move(202 - 13 - 5,  y + OFFSET4 - 4);
-      knob2->resize(57, 57);
-      knob2->registerClickHandler(knobChange2, this);
-    }
-  }
-
-  GUI::VerticalLine *l2 = new GUI::VerticalLine(window);
-  l2->move(20, 310 - 15 - 9);
-  l2->resize(window->width() - 40, 2);
-
-  GUI::Label *lbl_version = new GUI::Label(window);
-  lbl_version->setText(".::. v"VERSION"  .::.  http://www.drumgizmo.org  .::.  GPLv3 .::.");
-  lbl_version->move(16, 300);
-  lbl_version->resize(window->width(), 20);
-  /*
-  {
-    GUI::ComboBox *cmb = new GUI::ComboBox(window);
-    cmb->addItem("Foo", "Bar");
-    cmb->addItem("Hello", "World");
-    cmb->move(10,10);
-    cmb->resize(70, 30);
-  }
-  */
-  // Create filebrowser
-  filebrowser = new GUI::FileBrowser(window);
-  filebrowser->move(0, 0);
-  filebrowser->resize(window->width() - 1, window->height() - 1);
-  filebrowser->hide();
-  fb = filebrowser;
-
-  // Enable quit button
-//  GUI::Button *btn_quit = new GUI::Button(window);
-//  btn_quit->setText("Quit");
-//  btn_quit->move(50,280);
-//  btn_quit->resize(80,80);
-//  btn_quit->registerClickHandler(quit, this);
-
-  window->show();
-
-  sem.post();
-
-  initialised = true;
+	if(window)
+	{
+		delete window;
+	}
 }
 
 void PluginGUI::show()
 {
-  while(!initialised) usleep(10000);
+	while(!initialised)
+	{
+		usleep(10000);
+	}
 
-  if(!window) init();
+	if(!window)
+	{
+		init();
+	}
 
-  window->show();
+	if(window)
+	{
+		window->show();
+	}
 }
 
 void PluginGUI::hide()
 {
-  while(!initialised) usleep(10000);
-
-  if(window) window->hide();
-}
-
-void PluginGUI::processEvents()
-{
-  if(!initialised) return;
-
-  if(closing) {
-    if(windowClosedHandler) windowClosedHandler(windowClosedPtr);
-    closing = false;
-  }
+	while(!initialised)
+	{
+		usleep(10000);
+	}
 
-#ifndef USE_THREAD
-  window->eventHandler()->processEvents(window);
-#endif/*USE_THREAD*/
+	if(window)
+	{
+		window->hide();
+	}
 }
 
-void PluginGUI::setWindowClosedCallback(void (*handler)(void *), void *ptr)
+void PluginGUI::setWindowClosedCallback(void (*handler)(void *), void* ptr)
 {
-  windowClosedHandler = handler;
-  windowClosedPtr = ptr;
+	windowClosedHandler = handler;
+	windowClosedPtr = ptr;
 }
 
-#ifdef STANDALONE
-
-class Engine : public MessageHandler {
-public:
-  void handleMessage(Message *msg) {}
-};
-
-
-void stop(void *ptr)
+void PluginGUI::closeEventHandler()
 {
-  DEBUG(stop, "Stopping...\n");
-  bool *running = (bool*)ptr;
-  *running = false;
-}
-
-int main()
-{
-/*
-  hug_status_t status = hug_init(HUG_FLAG_OUTPUT_TO_SYSLOG,
-                                 HUG_OPTION_SYSLOG_HOST, "192.168.0.10",
-                                 HUG_OPTION_SYSLOG_PORT, 514,
-                                 HUG_OPTION_END);
-
-  if(status != HUG_STATUS_OK) {
-    printf("Error: %d\n", status);
-    return 1;
-  }
-*/
-  INFO(example, "We are up and running");
-
-  bool running = true;
-
-  PluginGUI gui;
-  gui.setWindowClosedCallback(stop, &running);
-
-  // gui.show();
-
-  while(running) {
-    //    gui.processEvents();
-#ifdef WIN32
-    SleepEx(1000, FALSE);
-#else
-    //    usleep(10000);
-    sleep(1);
-#endif
-  }
-
-  return 0;
+	closing = true;
+	closeNotifier();
+	// Call old-style notifier if one is registered.
+	if(windowClosedHandler)
+	{
+		windowClosedHandler(windowClosedPtr);
+	}
 }
 
-#endif/*STANDALONE*/
+} // GUI::
diff --git a/plugingui/plugingui.h b/plugingui/plugingui.h
index 39643e1..f441696 100644
--- a/plugingui/plugingui.h
+++ b/plugingui/plugingui.h
@@ -11,90 +11,80 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_PLUGINGUI_H__
-#define __DRUMGIZMO_PLUGINGUI_H__
+#pragma once
 
-#include "window.h"
+#include "dgwindow.h"
 #include "eventhandler.h"
 
-#include "label.h"
-#include "lineedit.h"
-#include "checkbox.h"
-#include "button.h"
-#include "knob.h"
-#include "progressbar.h"
 #include "pluginconfig.h"
 
-#include "filebrowser.h"
 
 #include "thread.h"
 #include "semaphore.h"
 
 #include "messagereceiver.h"
+#include "notifier.h"
 
-class PluginGUI : public Thread, public MessageReceiver {
+namespace GUI {
+
+class PluginGUI
+	: public MessageReceiver
+	, public Listener
+{
 public:
-  PluginGUI();
-  virtual ~PluginGUI();
+	PluginGUI(void* native_window = nullptr);
+	virtual ~PluginGUI();
 
-  void thread_main();
-  void stopThread();
+	//! Process all events and messages in queue
+	//! \return true if not closing, returns false if closing.
+	bool processEvents();
 
-  void init();
-  void deinit();
+	void init();
+	void deinit();
 
-  void show();
-  void hide();
-  void processEvents();
-  void setWindowClosedCallback(void (*handler)(void *), void *ptr);
+	void show();
+	void hide();
 
-  void handleMessage(Message *msg);
 
-  //private:
-  GUI::Window *window;
-  GUI::EventHandler *eventhandler;
+	void handleMessage(Message* msg);
 
-  GUI::FileBrowser *filebrowser;
+	DGWindow* window{nullptr};
+	EventHandler* eventhandler{nullptr};
 
-  GUI::CheckBox *check;
-  GUI::Knob *knob;
-  GUI::Knob *knob2;
+	Config* config{nullptr};
 
-  GUI::Label *lbl;
-  GUI::LineEdit *lineedit;
-  GUI::ProgressBar *progress;
+	Notifier<> closeNotifier;
 
-  GUI::Label *lbl2;
-  GUI::LineEdit *lineedit2;
-  GUI::ProgressBar *progress2;
+	// Support old interface a little while longer..
+	void setWindowClosedCallback(void (*handler)(void*), void* ptr);
 
-  Config *config;
+private:
+	void closeEventHandler();
 
-  void (*windowClosedHandler)(void *);
-  void *windowClosedPtr;
+	void* native_window{nullptr};
 
-  void (*changeMidimapHandler)(void *, const char *);
-  void *changeMidimapPtr;
+	volatile bool running{true};
+	volatile bool closing{false};
+	volatile bool initialised{false};
 
-private:
-  volatile bool running;
-  volatile bool closing;
-  volatile bool initialised;
+	Semaphore sem{"plugingui"};
 
-  Semaphore sem;
+	// For the old-style notifier.
+	void (*windowClosedHandler)(void *){nullptr};
+	void *windowClosedPtr{nullptr};
 };
 
-#endif/*__DRUMGIZMO_PLUGINGUI_H__*/
+} // GUI::
diff --git a/plugingui/progressbar.cc b/plugingui/progressbar.cc
index 3b821bb..932f17c 100644
--- a/plugingui/progressbar.cc
+++ b/plugingui/progressbar.cc
@@ -11,98 +11,116 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "progressbar.h"
 
-#include "painter.h"
+namespace GUI {
 
-GUI::ProgressBar::ProgressBar(GUI::Widget *parent) : GUI::Widget(parent)
+ProgressBar::ProgressBar(Widget *parent)
+	: Widget(parent)
 {
-  bar_bg.left    = new Image(":progress_back_l.png");
-  bar_bg.right   = new Image(":progress_back_r.png");
-  bar_bg.center  = new Image(":progress_back_c.png");
+	bar_bg.left    = new Image(":progress_back_l.png");
+	bar_bg.right   = new Image(":progress_back_r.png");
+	bar_bg.center  = new Image(":progress_back_c.png");
 
-  bar_blue.left    = new Image(":progress_front_blue_l.png");
-  bar_blue.right   = new Image(":progress_front_blue_r.png");
-  bar_blue.center  = new Image(":progress_front_blue_c.png");
+	bar_blue.left    = new Image(":progress_front_blue_l.png");
+	bar_blue.right   = new Image(":progress_front_blue_r.png");
+	bar_blue.center  = new Image(":progress_front_blue_c.png");
 
-  bar_red.left    = new Image(":progress_front_red_l.png");
-  bar_red.right   = new Image(":progress_front_red_r.png");
-  bar_red.center  = new Image(":progress_front_red_c.png");
+	bar_red.left    = new Image(":progress_front_red_l.png");
+	bar_red.right   = new Image(":progress_front_red_r.png");
+	bar_red.center  = new Image(":progress_front_red_c.png");
 
-  bar_green.left    = new Image(":progress_front_green_l.png");
-  bar_green.right   = new Image(":progress_front_green_r.png");
-  bar_green.center  = new Image(":progress_front_green_c.png");
+	bar_green.left    = new Image(":progress_front_green_l.png");
+	bar_green.right   = new Image(":progress_front_green_r.png");
+	bar_green.center  = new Image(":progress_front_green_c.png");
 
-  state = blue;
-  _progress = .5;
+	state = ProgressBarState::Blue;
+	_progress = .5;
 }
 
-void GUI::ProgressBar::setState(GUI::ProgressBar::state_t state)
+ProgressBar::~ProgressBar()
 {
-  if(this->state != state) {
-    this->state = state;
-    repaintEvent(NULL);
-  }
+	delete bar_bg.left;
+	delete bar_bg.right;
+	delete bar_bg.center;
+
+	delete bar_blue.left;
+	delete bar_blue.right;
+	delete bar_blue.center;
+
+	delete bar_red.left;
+	delete bar_red.right;
+	delete bar_red.center;
+
+	delete bar_green.left;
+	delete bar_green.right;
+	delete bar_green.center;
 }
 
-float GUI::ProgressBar::progress()
+void ProgressBar::setState(ProgressBarState state)
 {
-  return _progress;
+	if(this->state != state)
+	{
+		this->state = state;
+		repaintEvent(nullptr);
+	}
 }
 
-void GUI::ProgressBar::setProgress(float progress)
+float ProgressBar::progress()
 {
-  _progress = progress;
-  repaintEvent(NULL);
+	return _progress;
 }
 
-void GUI::ProgressBar::repaintEvent(GUI::RepaintEvent *e)
+void ProgressBar::setProgress(float progress)
 {
-  Painter p(this);
-
-  int max = width() * _progress;
-
-  p.clear();
-
-  int brd = 4;
-  p.drawBar(0, 0, &bar_bg, width(), height());
-
-  GUI::Painter::Bar *b = NULL;
-  switch(state) {
-  case red: b = &bar_red; break;
-  case green: b = &bar_green; break;
-  case blue: b = &bar_blue; break;
-  default: break;    
-  }
-  if(b) p.drawBar(brd, 0, b, max - 2*brd, height());
+	_progress = progress;
+	repaintEvent(nullptr);
 }
 
-#ifdef TEST_PROGRESSBAR
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
+void ProgressBar::repaintEvent(RepaintEvent* repaintEvent)
+{
+	Painter p(*this);
+
+	int max = width() * _progress;
+
+	p.clear();
+
+	int brd = 4;
+	p.drawBar(0, 0, bar_bg, width(), height());
+
+	Painter::Bar* bar = nullptr;
+	switch(state) {
+	case ProgressBarState::Red:
+		bar = &bar_red;
+		break;
+	case ProgressBarState::Green:
+		bar = &bar_green;
+		break;
+	case ProgressBarState::Blue:
+		bar = &bar_blue;
+		break;
+	case ProgressBarState::Off:
+		bar = nullptr;
+		break;
+	}
+
+	if(bar)
+	{
+		p.drawBar(brd, 0, *bar, max - 2 * brd, height());
+	}
+}
 
-#endif/*TEST_PROGRESSBAR*/
+} // GUI::
diff --git a/plugingui/progressbar.h b/plugingui/progressbar.h
index 9d08a9e..d5f6c61 100644
--- a/plugingui/progressbar.h
+++ b/plugingui/progressbar.h
@@ -11,61 +11,60 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_PROGRESSBAR_H__
-#define __DRUMGIZMO_PROGRESSBAR_H__
+#pragma once
 
 #include "widget.h"
 
-#include <string>
-
 #include "guievent.h"
 #include "painter.h"
 
 namespace GUI {
 
+enum class ProgressBarState
+{
+	Red,
+	Green,
+	Blue,
+	Off
+};
+
 class ProgressBar : public Widget {
 public:
-  ProgressBar(Widget *parent);
+	ProgressBar(Widget *parent);
+	~ProgressBar();
 
-  float progress();
-  void setProgress(float progress);
+	float progress();
+	void setProgress(float progress);
 
-  typedef enum {
-    red,
-    green,
-    blue,
-    off
-  } state_t;
-  void setState(state_t state);
+	void setState(ProgressBarState state);
 
-  //protected:
-  virtual void repaintEvent(RepaintEvent *e);
+protected:
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
 
 private:
-  state_t state;
+	ProgressBarState state;
 
-  Painter::Bar bar_bg;
+	Painter::Bar bar_bg;
 
-  Painter::Bar bar_green;
-  Painter::Bar bar_blue;
-  Painter::Bar bar_red;
-
-  float _progress;
-};
+	Painter::Bar bar_green;
+	Painter::Bar bar_blue;
+	Painter::Bar bar_red;
 
+	float _progress;
 };
 
-#endif/*__DRUMGIZMO_PROGRESSBAR_H__*/
+} // GUI::
diff --git a/plugingui/rcgen.cc b/plugingui/rcgen.cc
index 5cb0999..9f93472 100644
--- a/plugingui/rcgen.cc
+++ b/plugingui/rcgen.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/plugingui/resource.cc b/plugingui/resource.cc
index 80bd51e..7d1c5b0 100644
--- a/plugingui/resource.cc
+++ b/plugingui/resource.cc
@@ -11,109 +11,134 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "resource.h"
 
-#include <stdio.h>
 #include <hugin.hpp>
+#include <cstdio>
+
+// rcgen generated file containing rc_data declaration.
 #include "resource_data.h"
 
-GUI::Resource::Resource(std::string name)
+namespace GUI {
+
+// Internal resources start with a colon.
+static bool nameIsInternal(const std::string& name)
+{
+	return name.size() && (name[0] == ':');
+}
+
+Resource::Resource(const std::string& name)
 {
-  is_valid = false;
-  is_internal = false;
-
-  if(name.length() == 0) return;
-  if(name[0] == ':') {
-    i_data = NULL;
-    i_size = 0;
-
-    // Use internal resource:
-    const rc_data_t *p = rc_data;
-    while(p->name[0] == ':') {
-      if(std::string(p->name) == name) {
-        i_data = p->data;
-        i_size = p->size;
-        break;
-      }
-      p++;
-    }
-
-    // We did not find the named resource.
-    if(i_data == NULL) {
-      ERR(rc, "Could not find '%s'\n", name.c_str());
-      return;
-    }
-
-    is_internal = true;
-  } else {
-    // Read from file:
-    FILE *fp = fopen(name.c_str(), "r");
-    if(!fp) return;
-    char buf[32];
-    while(!feof(fp)) {
-      size_t sz = fread(buf, 1, sizeof(buf), fp);
-      e_data.append(buf, sz);
-    }
-    fclose(fp);
-    is_internal = false;
+	if(nameIsInternal(name))
+	{
+		// Use internal resource:
+
+		// Find internal resource in rc_data.
+		const rc_data_t* p = rc_data;
+		while(p->name) // last entry in rc_data has the name := ""
+		{
+			if(name == p->name)
+			{
+				internalData = p->data;
+				internalSize = p->size;
+				break;
+			}
+			++p;
+		}
+
+		// We did not find the named resource.
+		if(internalData == nullptr)
+		{
+			ERR(rc, "Could not find '%s'\n", name.c_str());
+			return;
+		}
+
+		isInternal = true;
+	}
+	else
+	{
+		// Read from file:
+		std::FILE *fp = std::fopen(name.c_str(), "rb");
+		if(!fp)
+		{
+			return;
+		}
+
+		// Get the file size
+		std::fseek(fp, 0, SEEK_END);
+		size_t filesize = ftell(fp);
+
+		// Reserve space in the string for the data.
+		externalData.reserve(filesize);
+
+		// Rewind and read...
+		std::rewind(fp);
+
+		char buffer[32];
+		while(!std::feof(fp))
+		{
+			size_t size = std::fread(buffer, 1, sizeof(buffer), fp);
+			externalData.append(buffer, size);
+		}
+
+		std::fclose(fp);
+
+		isInternal = false;
  }
 
-  is_valid = true;
+	isValid = true;
 }
 
-const char *GUI::Resource::data()
+const char *Resource::data()
 {
-  if(is_valid == false) return NULL;
-  if(is_internal) {
-    return i_data;
-  } else {
-    return e_data.data();
-  }
-  return NULL;
+	if(isValid == false)
+	{
+		return nullptr;
+	}
+
+	if(isInternal)
+	{
+		return internalData;
+	}
+	else
+	{
+		return externalData.data();
+	}
 }
 
-size_t GUI::Resource::size()
+size_t Resource::size()
 {
-  if(is_valid == false) return 0;
-  if(is_internal) {
-    return i_size;
-  } else {
-    return e_data.length();
-  }
-  return 0;
+	if(isValid == false)
+	{
+	  return 0;
+	}
+
+	if(isInternal)
+	{
+		return internalSize;
+	}
+	else
+	{
+		return externalData.length();
+	}
 }
 
-bool GUI::Resource::valid()
+bool Resource::valid()
 {
-  return is_valid;
+	return isValid;
 }
 
-#ifdef TEST_RESOURCE
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_RESOURCE*/
+} // GUI::
diff --git a/plugingui/resource.h b/plugingui/resource.h
index 4b494f7..5f7b3b4 100644
--- a/plugingui/resource.h
+++ b/plugingui/resource.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_RESOURCE_H__
-#define __DRUMGIZMO_RESOURCE_H__
+#pragma once
 
 #include <string>
 
@@ -33,21 +32,19 @@ namespace GUI {
 
 class Resource {
 public:
-  Resource(std::string name);
+	Resource(const std::string& name);
 
-  const char *data();
-  size_t size();
+	const char* data();
+	size_t size();
 
-  bool valid();
+	bool valid();
 
-private:
-  std::string e_data;
-  bool is_valid;
-  bool is_internal;
-  const char *i_data;
-  size_t i_size;
+protected:
+	std::string externalData;
+	bool isValid{false};
+	bool isInternal{false};
+	const char *internalData{nullptr};
+	size_t internalSize{0};
 };
 
-};
-
-#endif/*__DRUMGIZMO_RESOURCE_H__*/
+} // GUI::
diff --git a/plugingui/resource_data.h b/plugingui/resource_data.h
index c81c6cc..337caf6 100644
--- a/plugingui/resource_data.h
+++ b/plugingui/resource_data.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_RESOURCE_DATA_H__
-#define __DRUMGIZMO_RESOURCE_DATA_H__
+#pragma once
 
 typedef struct {
 	const char *name;
@@ -34,5 +33,3 @@ typedef struct {
 } rc_data_t;
 
 extern const rc_data_t rc_data[];
-
-#endif/*__DRUMGIZMO_RESOURCE_DATA_H__*/
diff --git a/plugingui/scrollbar.cc b/plugingui/scrollbar.cc
index 07dc36b..654de29 100644
--- a/plugingui/scrollbar.cc
+++ b/plugingui/scrollbar.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -30,156 +30,180 @@
 
 #include "painter.h"
 
-GUI::ScrollBar::ScrollBar(GUI::Widget *parent)
-  : GUI::Widget(parent), bg_img(":widget_c.png")
+namespace GUI {
+
+ScrollBar::ScrollBar(Widget *parent)
+	: Widget(parent)
+	, bg_img(":widget_c.png")
 {
-  handler = NULL;
-  ptr = NULL;
 }
 
-void GUI::ScrollBar::setRange(int r)
+void ScrollBar::setRange(int r)
 {
-  DEBUG(scroll, "%d\n", r);
-  ran = r;
-  setValue(value());
-  repaintEvent(NULL);
+	rangeValue = r;
+	setValue(value());
+	repaintEvent(nullptr);
 }
 
-int GUI::ScrollBar::range()
+int ScrollBar::range()
 {
-  return ran;
+	return rangeValue;
 }
 
-void GUI::ScrollBar::setMaximum(int m)
+void ScrollBar::setMaximum(int m)
 {
-  DEBUG(scroll, "%d\n", m);
-  max = m;
-  if(max < ran) ran = max;
-  setValue(value());
-  repaintEvent(NULL);
+	maxValue = m;
+	if(maxValue < rangeValue)
+	{
+		rangeValue = maxValue;
+	}
+	setValue(value());
+	repaintEvent(nullptr);
 }
 
-int GUI::ScrollBar::maximum()
+int ScrollBar::maximum()
 {
-  return max;
+	return maxValue;
 }
 
-void GUI::ScrollBar::setValue(int value)
+void ScrollBar::addValue(int delta)
 {
-  val = value;
-  if(val > max - ran) val = max - ran;
-  if(val < 0) val = 0;
-
-  if(handler) handler(ptr);
-
-  repaintEvent(NULL);
+	setValue(value() + delta);
 }
 
-int GUI::ScrollBar::value()
+void ScrollBar::setValue(int value)
 {
-  return val;
+	if(value > (maxValue - rangeValue))
+	{
+		value = maxValue - rangeValue;
+	}
+
+	if(value < 0)
+	{
+		value = 0;
+	}
+
+	if(currentValue == value)
+	{
+		return;
+	}
+
+	currentValue = value;
+
+	valueChangeNotifier(value);
+
+	repaintEvent(nullptr);
 }
 
-void GUI::ScrollBar::registerValueChangeHandler(void (*handler)(void *),
-                                                void *ptr)
+int ScrollBar::value()
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	return currentValue;
 }
 
-static void drawArrow(GUI::Painter &p, int x, int y, int w, int h)
+//! Draw an up/down arrow at (x,y) with the bounding box size (w,h)
+//! If h is negative the arrow will point down, if positive it will point up.
+static void drawArrow(Painter &p, int x, int y, int w, int h)
 {
-  if(h < 0) y -= h;
+	if(h < 0)
+	{
+		y -= h;
+	}
 
-  p.drawLine(x, y, x+(w/2), y+h);
-  p.drawLine(x+(w/2), y+h, x+w, y);
+	p.drawLine(x, y, x + (w / 2), y + h);
+	p.drawLine(x + (w / 2), y + h, x + w, y);
 
-  y++;
-  p.drawLine(x, y, x+(w/2), y+h);
-  p.drawLine(x+(w/2), y+h, x+w, y);
+	++y;
+	p.drawLine(x, y, x + (w / 2), y + h);
+	p.drawLine(x + (w / 2), y + h, x + w, y);
 }
 
-void GUI::ScrollBar::repaintEvent(RepaintEvent *e)
+void ScrollBar::repaintEvent(RepaintEvent* repaintEvent)
 {
-  GUI::Painter p(this);
+	Painter p(*this);
 
-  p.clear();
+	p.clear();
 
-  p.drawImageStretched(0, 0, &bg_img, width(), height());
+	p.drawImageStretched(0, 0, bg_img, width(), height());
 
-  p.setColour(GUI::Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
-  if(!max) return;
+	p.setColour(Colour(183.0/255.0, 219.0/255.0 , 255.0/255.0, 1));
+	if(!maxValue)
+	{
+		return;
+	}
 
-  {
-  int h = height() - 2 * width() - 3;
-  int offset = width() + 2;
+	{
+		int h = height() - 2 * width() - 3;
+		int offset = width() + 2;
 
-  int y_val1 = (val * h) / max; 
-  int y_val2 = ((val + ran) * h) / max;  
+		int y_val1 = (currentValue * h) / maxValue;
+		int y_val2 = ((currentValue + rangeValue) * h) / maxValue;
 
-  p.drawFilledRectangle(2, y_val1 + offset, width() - 1, y_val2 + offset);
-  }
+		p.drawFilledRectangle(2, y_val1 + offset, width() - 1, y_val2 + offset);
+	}
 
-  p.drawLine(0, 0, 0, height());
+	p.drawLine(0, 0, 0, height());
 
-  drawArrow(p, width()/4, width()/4, width()/2, -1 * (width()/3));
-  p.drawLine(0, width(), width(), width());
+	drawArrow(p, width()/4, width()/4, width()/2, -1 * (width()/3));
+	p.drawLine(0, width(), width(), width());
 
-  drawArrow(p, width()/4, height() - width() + width()/4, width()/2, width()/3);
-  p.drawLine(0, height() - width(), width(), height() - width());
+	drawArrow(p, width()/4, height() - width() + width()/4, width()/2, width()/3);
+	p.drawLine(0, height() - width(), width(), height() - width());
 }
 
-void GUI::ScrollBar::scrollEvent(ScrollEvent *e)
+void ScrollBar::scrollEvent(ScrollEvent* scrollEvent)
 {
-  setValue(value() + e->delta);
+	setValue(value() + scrollEvent->delta);
 }
 
-void GUI::ScrollBar::mouseMoveEvent(MouseMoveEvent *e)
+void ScrollBar::mouseMoveEvent(MouseMoveEvent* mouseMoveEvent)
 {
-  if(!dragging) return;
+	if(!dragging)
+	{
+		return;
+	}
 
-  float delta = yoffset - e->y;
+	float delta = yOffset - mouseMoveEvent->y;
 
-  int h = height() - 2 * width() - 3;
-  delta /= (float)h / (float)max;
+	int h = height() - 2 * width() - 3;
+	delta /= (float)h / (float)maxValue;
 
-  int newval = value_offset - delta;
-  if(newval != value()) setValue(newval);
+	int newval = valueOffset - delta;
+	if(newval != value())
+	{
+		setValue(newval);
+	}
 }
 
-void GUI::ScrollBar::buttonEvent(ButtonEvent *e)
+void ScrollBar::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(e->y < (int)width() && e->y > 0) {
-    if(e->direction == -1) setValue(value() - 1);
-    return;
-  }
-
-  if(e->y > (int)height() - (int)width() && e->y < (int)height()) {
-    if(e->direction == -1) setValue(value() + 1);
-    return;
-  }
-
-  if(e->direction == 1) {
-    yoffset = e->y;
-    value_offset = value();
-  }
-
-  dragging = (e->direction == 1);
+	if((buttonEvent->y < (int)width()) && buttonEvent->y > 0)
+	{
+		if(buttonEvent->direction == Direction::down)
+		{
+			addValue(-1);
+		}
+
+		return;
+	}
+
+	if((buttonEvent->y > ((int)height() - (int)width())) &&
+	   (buttonEvent->y < (int)height()))
+	{
+		if(buttonEvent->direction == Direction::down)
+		{
+			addValue(1);
+		}
+
+		return;
+	}
+
+	if(buttonEvent->direction == Direction::down)
+	{
+		yOffset = buttonEvent->y;
+		valueOffset = value();
+	}
+
+	dragging = (buttonEvent->direction == Direction::down);
 }
 
-#ifdef TEST_SCROLLBAR
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_SCROLLBAR*/
+} // GUI::
diff --git a/plugingui/scrollbar.h b/plugingui/scrollbar.h
index 52acf9d..c9b78d0 100644
--- a/plugingui/scrollbar.h
+++ b/plugingui/scrollbar.h
@@ -11,65 +11,64 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_SCROLLBAR_H__
-#define __DRUMGIZMO_SCROLLBAR_H__
+#pragma once
+
+#include <limits>
 
 #include "widget.h"
 #include "image.h"
+#include "notifier.h"
 
 namespace GUI {
 
 class ScrollBar : public Widget {
+	friend class ListBoxBasic;
 public:
-  ScrollBar(Widget *parent);
-
-  bool catchMouse() { return true; }
+	ScrollBar(Widget *parent);
 
-  void setRange(int range);
-  int range();
+	void setRange(int range);
+	int range();
 
-  void setMaximum(int max);
-  int maximum();
+	void setMaximum(int max);
+	int maximum();
 
-  void setValue(int value);
-  int value();
+	void addValue(int delta);
+	void setValue(int value);
+	int value();
 
-  void registerValueChangeHandler(void (*handler)(void *), void *ptr);
+	Notifier<int> valueChangeNotifier; // (int value)
 
-  void repaintEvent(RepaintEvent *e);
-  void scrollEvent(ScrollEvent *e);
-  void buttonEvent(ButtonEvent *e);
-  void mouseMoveEvent(MouseMoveEvent *e);
+protected:
+	// From Widget:
+	bool catchMouse() override { return true; }
+	void scrollEvent(ScrollEvent* scrollEvent) override;
+	void repaintEvent(RepaintEvent* repaintEvent) override;
+	void buttonEvent(ButtonEvent* buttonEvent) override;
+	void mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) override;
 
 private:
-  int max;
-  int val;
-  int ran;
-
-  int yoffset;
-  int value_offset;
-  bool dragging;
+	int maxValue{100};
+	int currentValue{0};
+	int rangeValue{10};
 
-  Image bg_img;
+	int yOffset{0};
+	int valueOffset{0};
+	bool dragging{false};
 
-  void (*handler)(void *);
-  void *ptr;
+	Image bg_img;
 };
 
-};
-
-
-#endif/*__DRUMGIZMO_SCROLLBAR_H__*/
+} // GUI::
diff --git a/plugingui/slider.cc b/plugingui/slider.cc
index 953c8e6..71dd0c5 100644
--- a/plugingui/slider.cc
+++ b/plugingui/slider.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -31,128 +31,132 @@
 #include <hugin.hpp>
 #include <stdio.h>
 
-GUI::Slider::Slider(Widget *parent)
-  : GUI::Widget(parent)
-{
-  state = up;
+namespace GUI {
 
-  val = 0.0;
-  maximum = 1.0;
-  minimum = 0.0;
+Slider::Slider(Widget *parent)
+	: Widget(parent)
+{
+	state = State::up;
 
-  handler = NULL;
-  ptr = NULL;
+	currentValue = 0.0;
+	maximum = 1.0;
+	minimum = 0.0;
 }
 
-void GUI::Slider::setValue(float v)
+void Slider::setValue(float newValue)
 {
-  val = v;
-  if(handler) handler(ptr);
-  repaintEvent(NULL);
+	currentValue = newValue;
+	repaintEvent(nullptr);
+	clickNotifier();
 }
 
-float GUI::Slider::value()
+float Slider::value()
 {
-  return val;
+	return currentValue;
 }
 
-void GUI::Slider::registerClickHandler(void (*handler)(void *), void *ptr)
+void Slider::repaintEvent(RepaintEvent* repaintEvent)
 {
-  this->handler = handler;
-  this->ptr = ptr;
+	Painter p(*this);
+
+	float alpha = 0.8;
+
+	int xpos = (int)((currentValue / maximum) * (float)(width() - 1));
+
+	if(hasKeyboardFocus())
+	{
+		p.setColour(Colour(0.6, alpha));
+	}
+	else
+	{
+		p.setColour(Colour(0.5, alpha));
+	}
+
+	p.drawFilledRectangle(0,0,width(),height());
+
+	//p.setColour(Colour(0.1, alpha));
+	//p.drawRectangle(0,0,width()-1,height() - 1);
+
+	p.setColour(Colour(1, 0, 0, alpha));
+	p.drawLine(xpos, 0, xpos, height() - 1);
+
+	//p.setColour(Colour(0.8, alpha));
+	//switch(state) {
+	//case State::up:
+	//	p.drawLine(0, 0, 0, height() - 1);
+	//	p.drawLine(0, 0, width() - 1, 0);
+	//	break;
+	//case State::down:
+	//	p.drawLine(width() - 1, 0, width() - 1, height() - 1);
+	//	p.drawLine(width() - 1, height() - 1, 0, height() - 1);
+	//	break;
+	//}
+
+	p.setColour(Colour(0.3, alpha));
+	p.drawPoint(0, height() - 1);
+	p.drawPoint(width() - 1, 0);
 }
 
-void GUI::Slider::mouseMoveEvent(MouseMoveEvent *e)
+void Slider::buttonEvent(ButtonEvent* buttonEvent)
 {
-  if(state == down) {
-    val = maximum / (float)width() * (float)e->x;
-
-    if(val < 0) val = 0;
-    if(val > 1) val = 1;
-
-    if(handler) handler(ptr);
-    repaintEvent(NULL);
-  }
+	if(buttonEvent->direction == Direction::down)
+	{
+		state = State::down;
+		currentValue = maximum / (float)width() * (float)buttonEvent->x;
+
+		if(currentValue < 0)
+		{
+			currentValue = 0;
+		}
+
+		if(currentValue > 1)
+		{
+			currentValue = 1;
+		}
+
+		repaintEvent(nullptr);
+		clickNotifier();
+	}
+
+	if(buttonEvent->direction == Direction::up)
+	{
+		state = State::up;
+		currentValue = maximum / (float)width() * (float)buttonEvent->x;
+
+		if(currentValue < 0)
+		{
+			currentValue = 0;
+		}
+
+		if(currentValue > 1)
+		{
+			currentValue = 1;
+		}
+
+		repaintEvent(nullptr);
+		clickNotifier();
+	}
 }
 
-void GUI::Slider::buttonEvent(ButtonEvent *e)
+void Slider::mouseMoveEvent(MouseMoveEvent* mouseMoveEvent)
 {
-  if(e->direction == 1) {
-    state = down;
-    val = maximum / (float)width() * (float)e->x;
-
-    if(val < 0) val = 0;
-    if(val > 1) val = 1;
-
-    if(handler) handler(ptr);
-    repaintEvent(NULL);
-  }
-  if(e->direction == -1) {
-    state = up;
-    val = maximum / (float)width() * (float)e->x;
-    
-    if(val < 0) val = 0;
-    if(val > 1) val = 1;
-
-    repaintEvent(NULL);
-    clicked();
-    if(handler) handler(ptr);
-  }
+	if(state == State::down)
+	{
+		currentValue = maximum / (float)width() * (float)mouseMoveEvent->x;
+
+		if(currentValue < 0)
+		{
+			currentValue = 0;
+		}
+
+		if(currentValue > 1)
+		{
+			currentValue = 1;
+		}
+
+		repaintEvent(nullptr);
+		clickNotifier();
+	}
 }
 
-void GUI::Slider::repaintEvent(GUI::RepaintEvent *e)
-{
-  //DEBUG(slider, "Slider::repaintEvent (%f)\n", val);
-
-  Painter p(this);
-
-  float alpha = 0.8;
-
-  int xpos = (int)((val / maximum) * (float)(width() - 1));
-
-  if(hasKeyboardFocus()) {
-    p.setColour(Colour(0.6, alpha));
-  } else {
-    p.setColour(Colour(0.5, alpha));
-  }
-  p.drawFilledRectangle(0,0,width(),height());
-  /*
-  p.setColour(Colour(0.1, alpha));
-  p.drawRectangle(0,0,width()-1,height()-1);
-  */
-  p.setColour(Colour(1, 0, 0, alpha));
-  p.drawLine(xpos, 0, xpos, height()-1);
-  /*
-  p.setColour(Colour(0.8, alpha));
-  switch(state) {
-  case up:
-    p.drawLine(0,0,0,height()-1);
-    p.drawLine(0,0,width()-1,0);
-    break;
-  case down:
-    p.drawLine(width()-1,0, width()-1,height()-1);
-    p.drawLine(width()-1,height()-1,0, height()-1);
-    break;
-  }
-  */
-  p.setColour(Colour(0.3, alpha));
-  p.drawPoint(0,height()-1);
-  p.drawPoint(width()-1,0);
-}
-
-#ifdef TEST_SLIDER
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_SLIDER*/
+} // GUI::
diff --git a/plugingui/slider.h b/plugingui/slider.h
index f07ccff..694be59 100644
--- a/plugingui/slider.h
+++ b/plugingui/slider.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_SLIDER_H__
-#define __DRUMGIZMO_SLIDER_H__
+#pragma once
 
 #include "widget.h"
 
@@ -33,38 +32,32 @@ namespace GUI {
 
 class Slider : public Widget {
 public:
-  Slider(Widget *parent);
+	Slider(Widget* parent);
 
-  bool catchMouse() { return true; }
+	// From Widget:
+	bool catchMouse() override { return true; }
 
-  void setValue(float value);
-  float value();
+	void setValue(float value);
+	float value();
 
-  void registerClickHandler(void (*handler)(void *), void *ptr);
+	Notifier<> clickNotifier;
 
-  //protected:
-  virtual void clicked() {}
-
-  virtual void repaintEvent(RepaintEvent *e);
-  virtual void buttonEvent(ButtonEvent *e);
-  virtual void mouseMoveEvent(MouseMoveEvent *e);
+protected:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+	virtual void buttonEvent(ButtonEvent* buttonEvent) override;
+	virtual void mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) override;
 
 private:
-  typedef enum {
-    up,
-    down
-  } state_t;
-
-  float val;
-  float maximum;
-  float minimum;
+	enum class State {
+		up,
+		down
+	};
 
-  state_t state;
-
-  void (*handler)(void *);
-  void *ptr;
-};
+	float currentValue;
+	float maximum;
+	float minimum;
 
+	State state;
 };
 
-#endif/*__DRUMGIZMO_SLIDER_H__*/
+} // GUI::
diff --git a/plugingui/testmain.cc b/plugingui/testmain.cc
new file mode 100644
index 0000000..8282bc8
--- /dev/null
+++ b/plugingui/testmain.cc
@@ -0,0 +1,76 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            testmain.cc
+ *
+ *  Sun Nov 22 20:06:42 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "plugingui.h"
+
+#include <hugin.hpp>
+
+// Dummy Engine class.
+class Engine : public MessageHandler {
+public:
+	void handleMessage(Message *msg) {}
+};
+
+class TestMain : public GUI::Listener {
+public:
+	TestMain()
+	{
+		CONNECT(&gui, closeNotifier, this, &TestMain::stop);
+	}
+
+	void stop()
+	{
+		DEBUG(stop, "Stopping...\n");
+		running = false;
+	}
+
+	void run()
+	{
+		while(running)
+		{
+#ifdef WIN32
+			SleepEx(50, FALSE);
+#else
+			usleep(50000);
+#endif
+			gui.processEvents();
+		}
+	}
+
+	bool running = true;
+
+	GUI::PluginGUI gui;
+};
+
+int main()
+{
+	INFO(example, "We are up and running");
+
+	TestMain testMain;
+	testMain.run();
+
+	return 0;
+}
diff --git a/plugingui/textedit.cc b/plugingui/textedit.cc
new file mode 100644
index 0000000..01895a8
--- /dev/null
+++ b/plugingui/textedit.cc
@@ -0,0 +1,214 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            lineedit.cc
+ *
+ *  Tue Oct 21 11:25:26 CEST 2014
+ *  Copyright 2014 Jonas Suhr Christensen
+ *  jsc at umbraculum.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "textedit.h"
+
+#include "window.h"
+
+#include <assert.h>
+#include <list>
+#include <hugin.hpp>
+#include <stdio.h>
+
+#define BORDER 10
+
+namespace GUI {
+
+TextEdit::TextEdit(Widget *parent)
+	: Widget(parent)
+	, scroll(this)
+{
+	setReadOnly(true);
+
+	scroll.move(width() - 5, 1);
+	scroll.resize(20, 100);
+	CONNECT(&scroll, valueChangeNotifier, this, &TextEdit::scrolled);
+
+	box.topLeft     = new Image(":widget_tl.png");
+	box.top         = new Image(":widget_t.png");
+	box.topRight    = new Image(":widget_tr.png");
+	box.left        = new Image(":widget_l.png");
+	box.right       = new Image(":widget_r.png");
+	box.bottomLeft  = new Image(":widget_bl.png");
+	box.bottom      = new Image(":widget_b.png");
+	box.bottomRight = new Image(":widget_br.png");
+	box.center      = new Image(":widget_c.png");
+}
+
+TextEdit::~TextEdit()
+{
+	delete box.topLeft;
+	delete box.top;
+	delete box.topRight;
+	delete box.left;
+	delete box.right;
+	delete box.bottomLeft;
+	delete box.bottom;
+	delete box.bottomRight;
+	delete box.center;
+}
+
+void TextEdit::resize(int height, int width)
+{
+	Widget::resize(height, width);
+	scroll.resize(scroll.width(), height-10);
+	scroll.move(width-30,7);
+}
+
+void TextEdit::setReadOnly(bool readonly)
+{
+	this->readonly = readonly;
+}
+
+bool TextEdit::readOnly()
+{
+	return readonly;
+}
+
+void TextEdit::setText(const std::string& text)
+{
+	_text = text;
+
+	preprocessText();
+
+	int ran = height() / font.textHeight();
+
+	DEBUG(textedit, "Setting range and max of scrollbar to '%d' and '%d'\n",
+	      ran, (int)preprocessedtext.size());
+
+	scroll.setRange(ran);
+	scroll.setMaximum(preprocessedtext.size());
+
+	repaintEvent(nullptr);
+
+	textChangedNotifier();
+}
+
+std::string TextEdit::text()
+{
+	return _text;
+}
+
+void TextEdit::preprocessText()
+{
+	preprocessedtext.clear();
+	std::string text = _text;
+
+	{ // Handle tab characters
+		for(size_t i = 0; i < text.length(); ++i)
+		{
+			char ch = text.at(i);
+			if(ch == '\t')
+			{
+				text.erase(i, 1);
+				text.insert(i, 4, ' ');
+			}
+		}
+	}
+
+	std::list<std::string> lines;
+	{ // Handle new line characters
+		size_t pos = 0;
+		do
+		{
+			pos = text.find("\n");
+			lines.push_back(text.substr(0, pos));
+			text = text.substr(pos+1);
+		}
+		while(pos != std::string::npos);
+	}
+
+	{ // Wrap long lines
+		std::list<std::string>::iterator it;
+		for(it = lines.begin(); it != lines.end(); ++it)
+		{
+			std::string line = *it;
+
+			for(size_t i = 0; i < line.length(); ++i)
+			{
+				size_t linewidth = font.textWidth(line.substr(0, i));
+				if(linewidth >= width() - BORDER - 4 + 3 - 10 - scroll.width()) {
+					preprocessedtext.push_back(line.substr(0, i));
+					line = line.substr(i);
+					i = 0;
+				}
+			}
+			preprocessedtext.push_back(line);
+		}
+	}
+}
+
+void TextEdit::repaintEvent(RepaintEvent* repaintEvent)
+{
+	Painter p(*this);
+
+	p.clear();
+
+	int w = width();
+	int h = height();
+	if((w == 0) || (h == 0))
+	{
+		return;
+	}
+
+	p.drawBox(0, 0, box, w, h);
+
+	p.setColour(Colour(183.0 / 255.0, 219.0 / 255.0 , 255.0 / 255.0, 1));
+
+	int skip = scroll.value();
+
+	int ypos = font.textHeight() + 5 + 1 + 1 + 1;
+	std::list<std::string>::iterator it;
+	it = preprocessedtext.begin();
+
+	int c = 0;
+	for( ; c < skip; c++)
+	{
+		++it;
+	}
+
+	c = 0;
+	for( ; it != preprocessedtext.end(); it++)
+	{
+		if((c * font.textHeight()) >= (height() - 8 - font.textHeight()))
+		{
+			break;
+		}
+
+		std::string line = *it;
+		p.drawText(BORDER - 4 + 3, ypos, font, line);
+		ypos += font.textHeight();
+		++c;
+	}
+}
+
+void TextEdit::scrolled(int value)
+{
+	(void)value;
+	repaintEvent(nullptr);
+}
+
+} // GUI::
diff --git a/plugingui/textedit.h b/plugingui/textedit.h
new file mode 100644
index 0000000..6e8fadf
--- /dev/null
+++ b/plugingui/textedit.h
@@ -0,0 +1,79 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            textedit.h
+ *
+ *  Tue Oct 21 11:23:58 CEST 2014
+ *  Copyright 2014 Jonas Suhr Christensen
+ *  jsc at umbraculum.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <string>
+#include <list>
+
+#include "widget.h"
+#include "font.h"
+#include "painter.h"
+#include "scrollbar.h"
+
+#include "notifier.h"
+
+namespace GUI {
+
+class TextEdit : public Widget {
+public:
+	TextEdit(Widget *parent);
+	~TextEdit();
+
+	// From Widget
+	bool isFocusable() override { return true; }
+	void resize(int width, int height) override;
+
+	std::string text();
+	void setText(const std::string& text);
+
+	void setReadOnly(bool readonly);
+	bool readOnly();
+
+	void preprocessText();
+
+	Notifier<> textChangedNotifier;
+
+protected:
+	// From Widget
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
+
+private:
+	void scrolled(int value);
+
+	Painter::Box box;
+	ScrollBar scroll;
+	Font font;
+
+	std::string _text;
+	size_t pos{0};
+
+	bool readonly{true};
+
+	std::list< std::string > preprocessedtext;
+};
+
+} // GUI::
diff --git a/plugingui/verticalline.cc b/plugingui/verticalline.cc
index 53d82a6..46d39e6 100644
--- a/plugingui/verticalline.cc
+++ b/plugingui/verticalline.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,14 +28,24 @@
 
 #include "painter.h"
 
-GUI::VerticalLine::VerticalLine(GUI::Widget *parent)
-  : Widget(parent), vline(":vertline.png")
+namespace GUI {
+
+VerticalLine::VerticalLine(Widget *parent)
+	: Widget(parent)
+	, vline(":vertline.png")
 {
 }
 
-void GUI::VerticalLine::repaintEvent(RepaintEvent *e)
+void VerticalLine::repaintEvent(RepaintEvent* repaintEvent)
 {
-  (void)e;
-  GUI::Painter p(this);
-  p.drawImageStretched(0, 0, &vline, width(), height());
+	if(height() < 2)
+	{
+		return;
+	}
+
+	Painter p(*this);
+	p.drawImageStretched(0, (height() - vline.height()) / 2,
+	                     vline, width(), vline.height());
 }
+
+} // GUI::
diff --git a/plugingui/verticalline.h b/plugingui/verticalline.h
index 7c1bc27..dce5563 100644
--- a/plugingui/verticalline.h
+++ b/plugingui/verticalline.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_VERTICALLINE_H__
-#define __DRUMGIZMO_VERTICALLINE_H__
+#pragma once
 
 #include "widget.h"
 #include "image.h"
@@ -34,15 +33,14 @@ namespace GUI {
 
 class VerticalLine : public Widget {
 public:
-  VerticalLine(Widget *parent);
+	VerticalLine(Widget* parent);
 
-  //protected:
-  virtual void repaintEvent(RepaintEvent *e);
+protected:
+	// From Widget:
+	virtual void repaintEvent(RepaintEvent* repaintEvent) override;
 
 private:
-  Image vline;
+	Image vline;
 };
 
-};
-
-#endif/*__DRUMGIZMO_VERTICALLINE_H__*/
+} // GUI::
diff --git a/plugingui/widget.cc b/plugingui/widget.cc
index 05966aa..9bac566 100644
--- a/plugingui/widget.cc
+++ b/plugingui/widget.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -31,188 +31,190 @@
 
 #include <stdio.h>
 
-GUI::Widget::Widget(Widget *parent)
-  : pixbuf(1, 1)
+namespace GUI {
+
+Widget::Widget(Widget* parent)
+	: parent(parent)
 {
-  _width = _height = 10;
+	if(parent)
+	{
+		parent->addChild(this);
+		_window = parent->window();
+	}
 
-  this->parent = parent;
-  if(parent) {
-    parent->addChild(this);
-    _window = parent->window();
-  }
-  _width = _height = 0;
-  _visible = true;
+	_width = _height = 0;
+	_visible = true;
 }
 
-GUI::Widget::~Widget()
+Widget::~Widget()
 {
-  if(parent) parent->removeChild(this);
+	if(parent)
+	{
+		parent->removeChild(this);
+	}
 }
 
-void GUI::Widget::show()
+void Widget::show()
 {
-  setVisible(true);
+	setVisible(true);
 }
 
-void GUI::Widget::hide()
+void Widget::hide()
 {
-  setVisible(false);
+	setVisible(false);
 }
 
-void GUI::Widget::setVisible(bool v)
+void Widget::setVisible(bool visible)
 {
-  _visible = v;
-  repaintEvent(NULL);
+	_visible = visible;
+	repaintEvent(nullptr);
 }
 
-bool GUI::Widget::visible()
+bool Widget::visible()
 {
-  return _visible;
+	return _visible;
 }
 
-void GUI::Widget::addChild(GUI::Widget *widget)
+void Widget::addChild(Widget* widget)
 {
-  children.push_back(widget);
+	children.push_back(widget);
 }
 
-void GUI::Widget::removeChild(GUI::Widget *widget)
+void Widget::removeChild(Widget* widget)
 {
-  std::vector<Widget *>::iterator i = children.begin();
-  while(i != children.end()) {
-    if(*i == widget) {
-      children.erase(i);
-      return;
-    }
-    i++;
-  }
+	for(auto i = children.begin(); i != children.end(); ++i)
+	{
+		if(*i == widget)
+		{
+			children.erase(i);
+			return;
+		}
+	}
 }
 
-void GUI::Widget::resize(int width, int height)
+void Widget::resize(int width, int height)
 {
-  if(width < 1 || height < 1) return;
-  _width = width;
-  _height = height;
-  pixbuf.realloc(width, height);
+	if((width < 1) || (height < 1) ||
+	   (((size_t)width == _width) && ((size_t)height == _height)))
+	{
+		return;
+	}
+
+	_width = width;
+	_height = height;
+	pixbuf.realloc(width, height);
+
+	sizeChangeNotifier(width, height);
 }
 
-void GUI::Widget::move(size_t x, size_t y)
+void Widget::move(size_t x, size_t y)
 {
-  _x = x;
-  _y = y;
+	_x = x;
+	_y = y;
 }
 
-size_t GUI::Widget::x() { return _x; }
-size_t GUI::Widget::y() { return _y; }
-size_t GUI::Widget::width() { return _width; }
-size_t GUI::Widget::height() { return _height; }
-
-size_t GUI::Widget::windowX()
+int Widget::x()
 {
-  size_t window_x = x();
-  if(parent) window_x += parent->windowX();
-  return window_x;
+	return _x;
 }
 
-size_t GUI::Widget::windowY()
+int Widget::y()
 {
-  size_t window_y = y();
-  if(parent) window_y += parent->windowY();
-  return window_y;
+	return _y;
 }
 
-GUI::Widget *GUI::Widget::find(size_t x, size_t y)
+size_t Widget::width()
 {
-  std::vector<Widget*>::reverse_iterator i = children.rbegin();
-  while(i != children.rend()) {
-    Widget *w = *i;
-    if(w->visible()) {
-      if(w->x() <= x && (w->x() + w->width()) >= x &&
-         w->y() <= y && w->y() + w->height() >= y)
-        return w->find(x - w->x(), y - w->y());
-    }
-    i++;
-  }
-
-  if(x > width() || x < 0 || y > height() || y < 0) return NULL;
-  return this;
+	return _width;
 }
 
-GUI::Window *GUI::Widget::window()
+size_t Widget::height()
 {
-  return _window;
+	return _height;
 }
 
-void GUI::Widget::repaint_r(GUI::RepaintEvent *e)
+size_t Widget::windowX()
 {
-  Painter p(this); // make sure pixbuf refcount is incremented.
+	size_t window_x = x();
+	if(parent)
+	{
+		window_x += parent->windowX();
+	}
 
-  repaintEvent(e);
-
-  std::vector<Widget*>::iterator i = children.begin();
-  while(i != children.end()) {
-    Widget *w = *i;
-    w->repaint_r(e);
-    i++;
-  }
+	return window_x;
 }
 
-std::vector<GUI::PixelBufferAlpha *> GUI::Widget::getPixelBuffers()
+size_t Widget::windowY()
 {
-  std::vector<PixelBufferAlpha *> pbs;
-
-  pixbuf.x = windowX();
-  pixbuf.y = windowY();
+	size_t window_y = y();
+	if(parent)
+	{
+		window_y += parent->windowY();
+	}
 
-  pbs.push_back(&pixbuf);
+	return window_y;
+}
 
-  std::vector<Widget*>::iterator i = children.begin();
-  while(i != children.end()) {
-    Widget *w = *i;
-    if(w->visible()) {
-      std::vector<PixelBufferAlpha *> pbs0 = w->getPixelBuffers();
-      pbs.insert(pbs.end(), pbs0.begin(), pbs0.end());
-    }
-    i++;
-  }
+Widget* Widget::find(int x, int y)
+{
+	for(auto i = children.rbegin(); i != children.rend(); ++i)
+	{
+		Widget* widget = *i;
+		if(widget->visible())
+		{
+			if((x >= widget->x()) && (x < (widget->x() + (int)widget->width())) &&
+			   (y >= widget->y()) && (y < (widget->y() + (int)widget->height())))
+			{
+				return widget->find(x - widget->x(), y - widget->y());
+			}
+		}
+	}
 
-  return pbs;
+	return this;
 }
 
-bool GUI::Widget::hasKeyboardFocus()
+Window* Widget::window()
 {
-  return window()->keyboardFocus() == this;
+	return _window;
 }
 
-#ifdef TEST_WIDGET
-//deps: window.cc globalcontext.cc
-//cflags:
-//libs:
-#include "test.h"
+std::vector<PixelBufferAlpha*> Widget::getPixelBuffers()
+{
+	std::vector<PixelBufferAlpha*> pixelBuffers;
 
-#include "window.h"
+	pixbuf.x = windowX();
+	pixbuf.y = windowY();
 
-TEST_BEGIN;
+	pixelBuffers.push_back(&pixbuf);
 
-GUI::Window w1(NULL);
-w1.move(0,0);
-w1.resize(100, 100);
+	for(auto child : children)
+	{
+		if(child->visible())
+		{
+			auto childPixelBuffers = child->getPixelBuffers();
+			pixelBuffers.insert(pixelBuffers.end(),
+			                    childPixelBuffers.begin(), childPixelBuffers.end());
+		}
+	}
+
+	return pixelBuffers;
+}
 
-GUI::Widget w2(&w1);
-w2.resize(40,40);
-w2.move(10,10);
+bool Widget::hasKeyboardFocus()
+{
+	return window()->keyboardFocus() == this;
+}
 
-GUI::Widget w3(&w2);
-w3.resize(20,20);
-w3.move(10,10);
+void Widget::repaintChildren(RepaintEvent* repaintEvent)
+{
+	Painter p(*this); // make sure pixbuf refcount is incremented.
 
-TEST_EQUAL_PTR(w1.find(101,0), NULL, "Miss?");
-TEST_EQUAL_PTR(w1.find(0,0), &w1, "Hit w1?");
-TEST_EQUAL_PTR(w1.find(100,100), &w1, "Hit w1?");
-TEST_EQUAL_PTR(w1.find(0,0), &w1, "Hit w1?");
-TEST_EQUAL_PTR(w1.find(11,11), &w2, "Hit w2?");
-TEST_EQUAL_PTR(w1.find(22,22), &w3, "Hit w3?");
+	this->repaintEvent(repaintEvent);
 
-TEST_END;
+	for(auto child : children)
+	{
+		child->repaintChildren(repaintEvent);
+	}
+}
 
-#endif/*TEST_WIDGET*/
+} // GUI::
diff --git a/plugingui/widget.h b/plugingui/widget.h
index 47c374e..02b8c07 100644
--- a/plugingui/widget.h
+++ b/plugingui/widget.h
@@ -11,24 +11,25 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_WIDGET_H__
-#define __DRUMGIZMO_WIDGET_H__
+#pragma once
 
 #include "guievent.h"
 #include "pixelbuffer.h"
+#include "notifier.h"
+#include "layout.h"
 
 #include <vector>
 
@@ -36,64 +37,69 @@ namespace GUI {
 
 class Window;
 
-class Widget {
+class Widget : public Listener, public LayoutItem {
+	friend class Painter;
 public:
-  Widget(Widget *parent);
-  virtual ~Widget();
+	Widget(Widget* parent);
+	virtual ~Widget();
 
-  virtual void show();
-  virtual void hide();
+	virtual void show();
+	virtual void hide();
 
-  virtual void resize(int width, int height);
-  virtual void move(size_t x, size_t y);
+	// From LayoutItem
+	virtual void resize(int width, int height) override;
+	virtual void move(size_t x, size_t y) override;
+	virtual int x() override;
+	virtual int y() override;
+	virtual size_t width() override;
+	virtual size_t height() override;
 
-  virtual size_t x();
-  virtual size_t y();
-  virtual size_t windowX();
-  virtual size_t windowY();
-  virtual size_t width();
-  virtual size_t height();
+	virtual size_t windowX();
+	virtual size_t windowY();
 
-  virtual bool isFocusable() { return false; }
-  virtual bool catchMouse() { return false; }
+	virtual bool isFocusable() { return false; }
+	virtual bool catchMouse() { return false; }
 
-  void addChild(Widget *widget);
-  void removeChild(Widget *widget);
+	void addChild(Widget* widget);
+	void removeChild(Widget* widget);
 
-  virtual void repaintEvent(RepaintEvent *e) {}
-  virtual void mouseMoveEvent(MouseMoveEvent *e) {}
-  virtual void buttonEvent(ButtonEvent *e) {}
-  virtual void scrollEvent(ScrollEvent *e) {}
-  virtual void keyEvent(KeyEvent *e) {}
+	virtual void repaintEvent(RepaintEvent* repaintEvent) {}
+	virtual void mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) {}
+	virtual void buttonEvent(ButtonEvent* buttonEvent) {}
+	virtual void scrollEvent(ScrollEvent* scrollEvent) {}
+	virtual void keyEvent(KeyEvent* keyEvent) {}
+	virtual void mouseLeaveEvent() {}
+	virtual void mouseEnterEvent() {}
 
-  virtual void mouseLeaveEvent() {}
-  virtual void mouseEnterEvent() {}
+	Widget* find(int x, int y);
 
-  Widget *find(size_t x, size_t y);
+	virtual Window* window();
 
-  virtual Window *window();
+	std::vector<PixelBufferAlpha*> getPixelBuffers();
 
-  void repaint_r(RepaintEvent *e);
+	bool hasKeyboardFocus();
 
-  PixelBufferAlpha pixbuf;
-  std::vector<PixelBufferAlpha *> getPixelBuffers();
+	bool visible();
+	void setVisible(bool visible);
 
-  bool hasKeyboardFocus();
+	Notifier<int, int> sizeChangeNotifier; // (int, width, int height)
 
-  Widget *parent;
+protected:
+	void repaintChildren(RepaintEvent* repaintEvent);
 
-  bool visible();
-  void setVisible(bool visible);
+	PixelBufferAlpha pixbuf{0,0};
 
-protected:
-  std::vector<Widget*> children;
-  Window *_window;
-  size_t _x, _y, _width, _height;
+	std::vector<Widget*> children;
 
-private:
-  bool _visible;
-};
+	Widget* parent = nullptr;
+	Window* _window = nullptr;
+
+	int _x{0};
+	int _y{0};
+	size_t _width{0};
+	size_t _height{0};
 
+	bool _visible = true;
 };
 
-#endif/*__DRUMGIZMO_WIDGET_H__*/
+} // GUI::
diff --git a/plugingui/window.cc b/plugingui/window.cc
index 8337533..8d56926 100644
--- a/plugingui/window.cc
+++ b/plugingui/window.cc
@@ -11,28 +11,23 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "window.h"
 
-#include "painter.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <string.h>
 #include <hugin.hpp>
+#include "painter.h"
 
 #ifndef PUGL
 #ifdef X11
@@ -45,201 +40,230 @@
 #include "nativewindow_pugl.h"
 #endif
 
-GUI::Window::Window() 
-  : Widget(NULL), wpixbuf(100, 100), back(":bg.png"), logo(":logo.png")
-{
-  _x = _y = 100;
-  _width = wpixbuf.width;
-  _height = wpixbuf.height;
+namespace GUI {
 
-  refcount = 0;
-  max_refcount = 0;
-  _keyboardFocus = this;
-  _buttonDownFocus = NULL;
-  _mouseFocus = NULL;
+Window::Window(void* native_window)
+	: Widget(nullptr)
+	, wpixbuf(100, 100)
+{
+	// Make sure we have a valid size when initialising the NativeWindow
+	_width = wpixbuf.width;
+	_height = wpixbuf.height;
 
 #ifndef PUGL
 #ifdef X11
-  native = new NativeWindowX11(this);
+	native = new NativeWindowX11(native_window, *this);
 #endif/*X11*/
 #ifdef WIN32
-  native = new NativeWindowWin32(this);
+	native = new NativeWindowWin32(native_window, *this);
 #endif/*WIN32*/
 #else/*Use pugl*/
-  native = new NativeWindowPugl(this);
+	native = new NativeWindowPugl(native_window, *this);
 #endif
 
-  eventhandler = new GUI::EventHandler(native, this);
+	eventhandler = new EventHandler(*native, *this);
 }
 
-GUI::Window::~Window()
+Window::~Window()
 {
-  delete native;
-  delete eventhandler;
+	delete native;
+	delete eventhandler;
 }
 
-GUI::EventHandler *GUI::Window::eventHandler()
+void Window::setFixedSize(int w, int h)
 {
-  return eventhandler;
+	native->setFixedSize(w, h);
+	resize(w,h);
 }
 
-void GUI::Window::setCaption(std::string caption)
+void Window::setCaption(const std::string& caption)
 {
-  native->setCaption(caption);
+	native->setCaption(caption);
 }
 
-void GUI::Window::repaintEvent(GUI::RepaintEvent *e)
+void Window::resize(int width, int height)
 {
-  if(!visible()) return;
-
-  Painter p(this);
-  p.drawImageStretched(0,0, &back, width(), height());
-  p.drawImage(width() - logo.width(),
-              height() - logo.height(), &logo);
+	if((width < 1) || (height < 1))
+	{
+		return;
+	}
+
+	resized(width, height);
+	Widget::resize(width, height);
+	native->resize(width, height);
 }
 
-void GUI::Window::setFixedSize(int w, int h)
+void Window::move(size_t x, size_t y)
 {
-  native->setFixedSize(w, h);
-  resize(w,h);
+	native->move(x, y);
+
+	// Make sure widget corrdinates are updated.
+	Widget::move(x, y);
 }
 
-void GUI::Window::resize(int width, int height)
+size_t Window::windowX()
 {
-  if(width < 1 || height < 1) return;
-
-  // This needs to be done on all platoforms when setFixedSize is introduced.
-  //#ifdef WIN32
-  // Fix to force buffer size reallocation
-  // FIXME: This should've been done indirectly through a WM_SIZE message in the
-  //  EventHandler...
-  resized(width, height);
-  //#endif
-
-  Widget::resize(width, height);
-  native->resize(width, height);
+	return 0;
 }
 
-void GUI::Window::move(size_t x, size_t y)
+size_t Window::windowY()
 {
-  native->move(x, y);
-
-  // Make sure widget corrds are updated.
-  Widget::move(x, y);
+	return 0;
 }
 
-size_t GUI::Window::x() { return _x; }
-size_t GUI::Window::y() { return _y; }
-size_t GUI::Window::width() { return _width; }
-size_t GUI::Window::height() { return _height; }
-size_t GUI::Window::windowX() { return 0; }
-size_t GUI::Window::windowY() { return 0; }
-
-void GUI::Window::show()
+void Window::show()
 {
-  repaint_r(NULL);
-  native->show();
+	repaintChildren(nullptr);
+	native->show();
 }
 
-void GUI::Window::hide()
+void Window::hide()
 {
-  native->hide();
+	native->hide();
 }
 
-GUI::Window *GUI::Window::window()
+Window* Window::window()
 {
-  return this;
+	return this;
 }
 
-void GUI::Window::beginPaint()
+EventHandler* Window::eventHandler()
 {
-  refcount++;
-  if(refcount > max_refcount) max_refcount = refcount;
+	return eventhandler;
 }
 
-void GUI::Window::endPaint()
+Widget* Window::keyboardFocus()
 {
-  if(refcount) refcount--;
-
-  if(!refcount) {
-    if(max_refcount > 1) { // Did we go deep enough for a buffer update?
-      updateBuffer();
-      redraw();
-    }
-    max_refcount = 0;
-  }
+	return _keyboardFocus;
 }
 
-void GUI::Window::updateBuffer()
+void Window::setKeyboardFocus(Widget* widget)
 {
-  DEBUG(window, "Updating buffer\n");
-  memset(wpixbuf.buf, 0, wpixbuf.width * wpixbuf.height * 3);
-
-  std::vector<PixelBufferAlpha *> pl = getPixelBuffers();
-  std::vector<PixelBufferAlpha *>::iterator pli = pl.begin();
-  while(pli != pl.end()) {
-    PixelBufferAlpha *pb = *pli;
-    for(size_t x = 0; x < pb->width; x++) {
-      for(size_t y = 0; y < pb->height; y++) {
-        unsigned char r,g,b,a;
-        pb->pixel(x,y,&r,&g,&b,&a);
-        wpixbuf.setPixel(x + pb->x, y + pb->y, r, g, b, a);
-      }
-    }
-    pli++;
-  }
-  native->handleBuffer();
+	auto oldFocusWidget = _keyboardFocus;
+	_keyboardFocus = widget;
+
+	if(oldFocusWidget)
+	{
+		oldFocusWidget->repaintEvent(nullptr);
+	}
+
+	if(_keyboardFocus)
+	{
+		_keyboardFocus->repaintEvent(nullptr);
+	}
 }
 
-void GUI::Window::resized(size_t w, size_t h)
+Widget* Window::buttonDownFocus()
 {
-  if(_width == w && _height == h) return;
-
-  _width = w;
-  _height = h;
-  wpixbuf.realloc(w, h);
-  updateBuffer();
-
-  pixbuf.realloc(w, h);
-  repaintEvent(NULL);
+	return _buttonDownFocus;
 }
 
-void GUI::Window::redraw()
+void Window::setButtonDownFocus(Widget* widget)
 {
-  native->redraw();
+	_buttonDownFocus = widget;
+	native->grabMouse(widget != nullptr);
 }
 
-GUI::Widget *GUI::Window::keyboardFocus()
+Widget* Window::mouseFocus()
 {
-  return _keyboardFocus;
+	return _mouseFocus;
 }
 
-void GUI::Window::setKeyboardFocus(GUI::Widget *widget)
+void Window::setMouseFocus(Widget* widget)
 {
-  GUI::Widget *old_focus = _keyboardFocus;
-  _keyboardFocus = widget;
+	_mouseFocus = widget;
+
+}
 
-  if(old_focus) old_focus->repaintEvent(NULL);
-  if(_keyboardFocus) _keyboardFocus->repaintEvent(NULL);
+void Window::redraw()
+{
+	native->redraw();
 }
 
-GUI::Widget *GUI::Window::buttonDownFocus()
+void Window::resized(size_t width, size_t height)
 {
-  return _buttonDownFocus;
+	if((_width == width) && (_height == height))
+	{
+		return;
+	}
+
+	_width = width;
+	_height = height;
+
+	wpixbuf.realloc(width, height);
+	updateBuffer();
+
+	pixbuf.realloc(width, height);
+	repaintEvent(nullptr);
+
+	// Notify Widget
+	sizeChangeNotifier(width, height);
 }
 
-void GUI::Window::setButtonDownFocus(GUI::Widget *widget)
+void Window::updateBuffer()
 {
-  _buttonDownFocus = widget;
-  native->grabMouse(widget != NULL);
+	//DEBUG(window, "Updating buffer\n");
+	for(auto pixelBuffer : getPixelBuffers())
+	{
+		size_t updateWidth = pixelBuffer->width;
+		size_t updateHeight = pixelBuffer->height;
+
+		// Skip buffer if not inside window.
+		if((wpixbuf.width < pixelBuffer->x) || (wpixbuf.height < pixelBuffer->y))
+		{
+			continue;
+		}
+
+		if(updateWidth > (wpixbuf.width - pixelBuffer->x))
+		{
+			updateWidth = (wpixbuf.width - pixelBuffer->x);
+		}
+
+		if(updateHeight > (wpixbuf.height - pixelBuffer->y))
+		{
+			updateHeight = (wpixbuf.height - pixelBuffer->y);
+		}
+
+		unsigned char r,g,b,a;
+		for(size_t y = 0; y < updateHeight; y++)
+		{
+			for(size_t x = 0; x < updateWidth; x++)
+			{
+				pixelBuffer->pixel(x, y, &r, &g, &b, &a);
+				wpixbuf.setPixel(x + pixelBuffer->x, y + pixelBuffer->y, r, g, b, a);
+			}
+		}
+	}
+
+	native->handleBuffer();
 }
 
-GUI::Widget *GUI::Window::mouseFocus()
+void Window::beginPaint()
 {
-  return _mouseFocus;
+	++refcount;
+	if(refcount > maxRefcount)
+	{
+		maxRefcount = refcount;
+	}
 }
 
-void GUI::Window::setMouseFocus(GUI::Widget *widget)
+void Window::endPaint()
 {
-  _mouseFocus = widget;
+	if(refcount)
+	{
+		--refcount;
+	}
+
+	if(!refcount)
+	{
+		// Did we go deep enough for a buffer update?
+		if(maxRefcount > 1)
+		{
+			updateBuffer();
+			redraw();
+		}
+		maxRefcount = 0;
+	}
 }
+
+} // GUI::
diff --git a/plugingui/window.h b/plugingui/window.h
index f8deef0..0c93658 100644
--- a/plugingui/window.h
+++ b/plugingui/window.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_WINDOW_H__
-#define __DRUMGIZMO_WINDOW_H__
+#pragma once
 
 #include "widget.h"
 
@@ -38,68 +37,60 @@ namespace GUI {
 
 class Window : public Widget {
 public:
-  Window();
-  ~Window();
+	Window(void* native_window);
+	~Window();
 
-  void show();
-  void hide();
+	void setFixedSize(int width, int height);
+	void setCaption(const std::string& caption);
 
-  void setFixedSize(int width, int height);
-  void resize(int width, int height);
-  void move(size_t x, size_t y);
+	// From Widget:
+	void resize(int width, int height) override;
+	void move(size_t x, size_t y) override;
+	size_t windowX() override;
+	size_t windowY() override;
+	void show() override;
+	void hide() override;
+	Window* window() override;
 
-  size_t x();
-  size_t y();
-  size_t windowX();
-  size_t windowY();
-  size_t width();
-  size_t height();
+	EventHandler* eventHandler();
 
-  void setCaption(std::string caption);
+	Widget* keyboardFocus();
+	void setKeyboardFocus(Widget* widget);
 
-  void addChild(Widget *widget);
+	Widget* buttonDownFocus();
+	void setButtonDownFocus(Widget* widget);
 
-  void repaintEvent(GUI::RepaintEvent *e);
-
-  void beginPaint();
-  void endPaint();
-
-  Window *window();
-
-  EventHandler *eventHandler();
-
-  // handlers
-  virtual void redraw();
-  void resized(size_t w, size_t h);
-
-  Widget *keyboardFocus();
-  void setKeyboardFocus(Widget *widget);
-
-  Widget *buttonDownFocus();
-  void setButtonDownFocus(Widget *widget);
-
-  Widget *mouseFocus();
-  void setMouseFocus(Widget *widget);
-
-  PixelBuffer wpixbuf;
-  void updateBuffer();
+	Widget* mouseFocus();
+	void setMouseFocus(Widget* widget);
 
 protected:
-  size_t refcount;
+	// For the EventHandler
+	friend class EventHandler;
+	void redraw();
+	void resized(size_t w, size_t h);
+	void updateBuffer();
 
-  Widget *_keyboardFocus;
-  Widget *_buttonDownFocus;
-  Widget *_mouseFocus;
+	// For the Painter
+	friend class Painter;
+	void beginPaint();
+	void endPaint();
 
-  NativeWindow *native;
-  EventHandler *eventhandler;
+	// For the NativeWindow
+	friend class NativeWindowX11;
+	friend class NativeWindowWin32;
+	friend class NativeWindowPugl;
+	PixelBuffer wpixbuf;
 
-  Image back;
-  Image logo;
+	size_t refcount{0};
 
-  size_t max_refcount;
-};
+	Widget* _keyboardFocus{nullptr};
+	Widget* _buttonDownFocus{nullptr};
+	Widget* _mouseFocus{nullptr};
+
+	NativeWindow* native{nullptr};
+	EventHandler* eventhandler{nullptr};
 
+	size_t maxRefcount{0};
 };
 
-#endif/*__DRUMGIZMO_WINDOW_H__*/
+} // GUI::
diff --git a/pugl/pugl/pugl_x11.c b/pugl/pugl/pugl_x11.c
new file mode 100644
index 0000000..c25b273
--- /dev/null
+++ b/pugl/pugl/pugl_x11.c
@@ -0,0 +1,386 @@
+/*
+  Copyright 2012-2014 David Robillard <http://drobilla.net>
+  Copyright 2011-2012 Ben Loftis, Harrison Consoles
+
+  Permission to use, copy, modify, and/or distribute this software for any
+  purpose with or without fee is hereby granted, provided that the above
+  copyright notice and this permission notice appear in all copies.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+   @file pugl_x11.c X11 Pugl Implementation.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <GL/gl.h>
+#include <GL/glx.h>
+#include <X11/Xatom.h>
+#include <X11/Xlib.h>
+#include <X11/keysym.h>
+
+#include "pugl_internal.h"
+
+struct PuglInternalsImpl {
+	Display*   display;
+	int        screen;
+	Window     win;
+	GLXContext ctx;
+	Bool       doubleBuffered;
+};
+
+/**
+   Attributes for single-buffered RGBA with at least
+   4 bits per color and a 16 bit depth buffer.
+*/
+static int attrListSgl[] = {
+	GLX_RGBA,
+	GLX_RED_SIZE, 4,
+	GLX_GREEN_SIZE, 4,
+	GLX_BLUE_SIZE, 4,
+	GLX_DEPTH_SIZE, 16,
+	None
+};
+
+/**
+   Attributes for double-buffered RGBA with at least
+   4 bits per color and a 16 bit depth buffer.
+*/
+static int attrListDbl[] = {
+	GLX_RGBA, GLX_DOUBLEBUFFER,
+	GLX_RED_SIZE, 4,
+	GLX_GREEN_SIZE, 4,
+	GLX_BLUE_SIZE, 4,
+	GLX_DEPTH_SIZE, 16,
+	None
+};
+
+PuglView*
+puglCreate(PuglNativeWindow parent,
+           const char*      title,
+           int              width,
+           int              height,
+           bool             resizable,
+           bool             visible)
+{
+	PuglView*      view = (PuglView*)calloc(1, sizeof(PuglView));
+	PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals));
+	if (!view || !impl) {
+		return NULL;
+	}
+
+	view->impl   = impl;
+	view->width  = width;
+	view->height = height;
+
+	impl->display = XOpenDisplay(0);
+	impl->screen  = DefaultScreen(impl->display);
+
+	XVisualInfo* vi = glXChooseVisual(impl->display, impl->screen, attrListDbl);
+	if (!vi) {
+		vi = glXChooseVisual(impl->display, impl->screen, attrListSgl);
+		impl->doubleBuffered = False;
+		printf("singlebuffered rendering will be used, no doublebuffering available\n");
+	} else {
+		impl->doubleBuffered = True;
+		printf("doublebuffered rendering available\n");
+	}
+
+	int glxMajor, glxMinor;
+	glXQueryVersion(impl->display, &glxMajor, &glxMinor);
+	printf("GLX-Version %d.%d\n", glxMajor, glxMinor);
+
+	impl->ctx = glXCreateContext(impl->display, vi, 0, GL_TRUE);
+
+	Window xParent = parent
+		? (Window)parent
+		: RootWindow(impl->display, impl->screen);
+
+	Colormap cmap = XCreateColormap(
+		impl->display, xParent, vi->visual, AllocNone);
+
+	XSetWindowAttributes attr;
+	memset(&attr, 0, sizeof(XSetWindowAttributes));
+	attr.colormap     = cmap;
+	attr.border_pixel = 0;
+
+	attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask
+		| ButtonPressMask | ButtonReleaseMask
+		| PointerMotionMask | StructureNotifyMask;
+
+	impl->win = XCreateWindow(
+		impl->display, xParent,
+		0, 0, view->width, view->height, 0, vi->depth, InputOutput, vi->visual,
+		CWBorderPixel | CWColormap | CWEventMask, &attr);
+
+	XSizeHints sizeHints;
+	memset(&sizeHints, 0, sizeof(sizeHints));
+	if (!resizable) {
+		sizeHints.flags      = PMinSize|PMaxSize;
+		sizeHints.min_width  = width;
+		sizeHints.min_height = height;
+		sizeHints.max_width  = width;
+		sizeHints.max_height = height;
+		XSetNormalHints(impl->display, impl->win, &sizeHints);
+	}
+
+	if (title) {
+		XStoreName(impl->display, impl->win, title);
+	}
+
+	if (!parent) {
+		Atom wmDelete = XInternAtom(impl->display, "WM_DELETE_WINDOW", True);
+		XSetWMProtocols(impl->display, impl->win, &wmDelete, 1);
+	}
+
+	if (visible) {
+		XMapRaised(impl->display, impl->win);
+	}
+
+	if (glXIsDirect(impl->display, impl->ctx)) {
+		printf("DRI enabled\n");
+	} else {
+		printf("No DRI available\n");
+	}
+
+	XFree(vi);
+
+	return view;
+}
+
+void
+puglDestroy(PuglView* view)
+{
+	if (!view) {
+		return;
+	}
+
+	glXDestroyContext(view->impl->display, view->impl->ctx);
+	XDestroyWindow(view->impl->display, view->impl->win);
+	XCloseDisplay(view->impl->display);
+	free(view->impl);
+	free(view);
+}
+
+static void
+puglReshape(PuglView* view, int width, int height)
+{
+	glXMakeCurrent(view->impl->display, view->impl->win, view->impl->ctx);
+
+	if (view->reshapeFunc) {
+		view->reshapeFunc(view, width, height);
+	} else {
+		puglDefaultReshape(view, width, height);
+	}
+
+	view->width  = width;
+	view->height = height;
+}
+
+static void
+puglDisplay(PuglView* view)
+{
+	glXMakeCurrent(view->impl->display, view->impl->win, view->impl->ctx);
+	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+	glLoadIdentity();
+
+	if (view->displayFunc) {
+		view->displayFunc(view);
+	}
+
+	glFlush();
+	if (view->impl->doubleBuffered) {
+		glXSwapBuffers(view->impl->display, view->impl->win);
+	}
+
+	view->redisplay = false;
+}
+
+static PuglKey
+keySymToSpecial(KeySym sym)
+{
+	switch (sym) {
+	case XK_F1:        return PUGL_KEY_F1;
+	case XK_F2:        return PUGL_KEY_F2;
+	case XK_F3:        return PUGL_KEY_F3;
+	case XK_F4:        return PUGL_KEY_F4;
+	case XK_F5:        return PUGL_KEY_F5;
+	case XK_F6:        return PUGL_KEY_F6;
+	case XK_F7:        return PUGL_KEY_F7;
+	case XK_F8:        return PUGL_KEY_F8;
+	case XK_F9:        return PUGL_KEY_F9;
+	case XK_F10:       return PUGL_KEY_F10;
+	case XK_F11:       return PUGL_KEY_F11;
+	case XK_F12:       return PUGL_KEY_F12;
+	case XK_Left:      return PUGL_KEY_LEFT;
+	case XK_Up:        return PUGL_KEY_UP;
+	case XK_Right:     return PUGL_KEY_RIGHT;
+	case XK_Down:      return PUGL_KEY_DOWN;
+	case XK_Page_Up:   return PUGL_KEY_PAGE_UP;
+	case XK_Page_Down: return PUGL_KEY_PAGE_DOWN;
+	case XK_Home:      return PUGL_KEY_HOME;
+	case XK_End:       return PUGL_KEY_END;
+	case XK_Insert:    return PUGL_KEY_INSERT;
+	case XK_Shift_L:   return PUGL_KEY_SHIFT;
+	case XK_Shift_R:   return PUGL_KEY_SHIFT;
+	case XK_Control_L: return PUGL_KEY_CTRL;
+	case XK_Control_R: return PUGL_KEY_CTRL;
+	case XK_Alt_L:     return PUGL_KEY_ALT;
+	case XK_Alt_R:     return PUGL_KEY_ALT;
+	case XK_Super_L:   return PUGL_KEY_SUPER;
+	case XK_Super_R:   return PUGL_KEY_SUPER;
+	}
+	return (PuglKey)0;
+}
+
+static void
+setModifiers(PuglView* view, unsigned xstate, unsigned xtime)
+{
+	view->event_timestamp_ms = xtime;
+
+	view->mods = 0;
+	view->mods |= (xstate & ShiftMask)   ? PUGL_MOD_SHIFT  : 0;
+	view->mods |= (xstate & ControlMask) ? PUGL_MOD_CTRL   : 0;
+	view->mods |= (xstate & Mod1Mask)    ? PUGL_MOD_ALT    : 0;
+	view->mods |= (xstate & Mod4Mask)    ? PUGL_MOD_SUPER  : 0;
+}
+
+static void
+dispatchKey(PuglView* view, XEvent* event, bool press)
+{
+	KeySym    sym;
+	char      str[5];
+	const int n = XLookupString(&event->xkey, str, 4, &sym, NULL);
+	if (n == 0) {
+		return;
+	} else if (n > 1) {
+		fprintf(stderr, "warning: Unsupported multi-byte key %X\n", (int)sym);
+		return;
+	}
+
+	const PuglKey special = keySymToSpecial(sym);
+	if (special && view->specialFunc) {
+		view->specialFunc(view, press, special);
+	} else if (!special && view->keyboardFunc) {
+		view->keyboardFunc(view, press, str[0]);
+	}
+}
+
+PuglStatus
+puglProcessEvents(PuglView* view)
+{
+	XEvent event;
+	while (XPending(view->impl->display) > 0) {
+		XNextEvent(view->impl->display, &event);
+		switch (event.type) {
+		case MapNotify:
+			puglReshape(view, view->width, view->height);
+			break;
+		case ConfigureNotify:
+			if ((event.xconfigure.width != view->width) ||
+			    (event.xconfigure.height != view->height)) {
+				puglReshape(view,
+				            event.xconfigure.width,
+				            event.xconfigure.height);
+			}
+			break;
+		case Expose:
+			if (event.xexpose.count != 0) {
+				break;
+			}
+			puglDisplay(view);
+			break;
+		case MotionNotify:
+			setModifiers(view, event.xmotion.state, event.xmotion.time);
+			if (view->motionFunc) {
+				view->motionFunc(view, event.xmotion.x, event.xmotion.y);
+			}
+			break;
+		case ButtonPress:
+			setModifiers(view, event.xbutton.state, event.xbutton.time);
+			if (event.xbutton.button >= 4 && event.xbutton.button <= 7) {
+				if (view->scrollFunc) {
+					float dx = 0, dy = 0;
+					switch (event.xbutton.button) {
+					case 4: dy =  1.0f; break;
+					case 5: dy = -1.0f; break;
+					case 6: dx = -1.0f; break;
+					case 7: dx =  1.0f; break;
+					}
+					view->scrollFunc(view,
+					                 event.xbutton.x, event.xbutton.y,
+					                 dx, dy);
+				}
+				break;
+			}
+			// nobreak
+		case ButtonRelease:
+			setModifiers(view, event.xbutton.state, event.xbutton.time);
+			if (view->mouseFunc &&
+			    (event.xbutton.button < 4 || event.xbutton.button > 7)) {
+				view->mouseFunc(view,
+				                event.xbutton.button, event.type == ButtonPress,
+				                event.xbutton.x, event.xbutton.y);
+			}
+			break;
+		case KeyPress:
+			setModifiers(view, event.xkey.state, event.xkey.time);
+			dispatchKey(view, &event, true);
+			break;
+		case KeyRelease:
+			setModifiers(view, event.xkey.state, event.xkey.time);
+			if (view->ignoreKeyRepeat &&
+			    XEventsQueued(view->impl->display, QueuedAfterReading)) {
+				XEvent next;
+				XPeekEvent(view->impl->display, &next);
+				if (next.type == KeyPress &&
+				    next.xkey.time == event.xkey.time &&
+				    next.xkey.keycode == event.xkey.keycode) {
+					XNextEvent(view->impl->display, &event);
+					break;
+				}
+			}
+			dispatchKey(view, &event, false);
+			break;
+		case ClientMessage:
+			if (!strcmp(XGetAtomName(view->impl->display,
+			                         event.xclient.message_type),
+			            "WM_PROTOCOLS")) {
+				if (view->closeFunc) {
+					view->closeFunc(view);
+				}
+			}
+			break;
+		default:
+			break;
+		}
+	}
+
+	if (view->redisplay) {
+		puglDisplay(view);
+	}
+
+	return PUGL_SUCCESS;
+}
+
+void
+puglPostRedisplay(PuglView* view)
+{
+	view->redisplay = true;
+}
+
+PuglNativeWindow
+puglGetNativeWindow(PuglView* view)
+{
+	return view->impl->win;
+}
diff --git a/src/Makefile.am b/src/Makefile.am
index df9f4ca..a1b1615 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,8 @@
 EXTRA_DIST = \
+	audiocachefile.h \
+	audiocache.h \
+	audiocacheeventhandler.h \
+	audiocacheidmanager.h \
 	audio.h \
 	audiofile.h \
 	audioinputengine.h \
@@ -8,8 +12,10 @@ EXTRA_DIST = \
 	channel.h \
 	channelmixer.h \
 	chresampler.h \
+	configfile.h \
 	configuration.h \
 	configparser.h \
+	cpp11fix.h \
 	drumgizmo.h \
 	drumkit.h \
 	drumkitloader.h \
@@ -17,6 +23,7 @@ EXTRA_DIST = \
 	events.h \
 	instrument.h \
 	instrumentparser.h \
+	memchecker.h \
 	message.h \
 	messagehandler.h \
 	messagereceiver.h \
@@ -34,6 +41,10 @@ EXTRA_DIST = \
 	velocity.h \
 	versionstr.h \
  \
+	audiocachefile.cc \
+	audiocache.cc \
+	audiocacheeventhandler.cc \
+	audiocacheidmanager.cc \
 	audiofile.cc \
 	audioinputengine.cc \
 	audioinputenginemidi.cc \
@@ -42,6 +53,7 @@ EXTRA_DIST = \
 	channel.cc \
 	channelmixer.cc \
 	chresampler.cc \
+	configfile.cc \
 	configuration.cc \
 	configparser.cc \
 	drumgizmo.cc \
@@ -51,6 +63,7 @@ EXTRA_DIST = \
 	events.cc \
 	instrument.cc \
 	instrumentparser.cc \
+	memchecker.cc \
 	messagehandler.cc \
 	messagereceiver.cc \
 	midimapparser.cc \
@@ -63,4 +76,4 @@ EXTRA_DIST = \
 	semaphore.cc \
 	thread.cc \
 	velocity.cc \
-	versionstr.cc
\ No newline at end of file
+	versionstr.cc
diff --git a/src/Makefile.am.drumgizmo b/src/Makefile.am.drumgizmo
index 26e2a30..e41bacc 100644
--- a/src/Makefile.am.drumgizmo
+++ b/src/Makefile.am.drumgizmo
@@ -1,9 +1,16 @@
+# -*- Makefile -*-
+
 DRUMGIZMO_SOURCES = \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
 	$(top_srcdir)/src/audioinputenginemidi.cc \
 	$(top_srcdir)/src/audiofile.cc \
 	$(top_srcdir)/src/channel.cc \
 	$(top_srcdir)/src/channelmixer.cc \
 	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
 	$(top_srcdir)/src/configuration.cc \
 	$(top_srcdir)/src/configparser.cc \
 	$(top_srcdir)/src/drumgizmo.cc \
@@ -13,6 +20,7 @@ DRUMGIZMO_SOURCES = \
 	$(top_srcdir)/src/events.cc \
 	$(top_srcdir)/src/instrument.cc \
 	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
 	$(top_srcdir)/src/messagehandler.cc \
 	$(top_srcdir)/src/messagereceiver.cc \
 	$(top_srcdir)/src/midimapparser.cc \
@@ -27,4 +35,12 @@ DRUMGIZMO_SOURCES = \
 	$(top_srcdir)/src/velocity.cc \
 	$(top_srcdir)/src/versionstr.cc
 
-DRUMGIZMO_LIBS = $(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS)
\ No newline at end of file
+DRUMGIZMO_LIBS = \
+	$(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS) \
+	$(PTHREAD_LIBS)
+
+DRUMGIZMO_CPPFLAGS = \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/hugin \
+	$(SSEFLAGS) \
+	$(ZITA_CPPFLAGS) $(SNDFILE_CXXFLAGS) $(EXPAT_CFLAGS) $(SAMPLERATE_CFLAGS) \
+	$(PTHREAD_CFLAGS)
diff --git a/src/Makefile.in b/src/Makefile.in
index 58191e8..6f13097 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -145,7 +145,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -209,8 +209,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -266,6 +264,10 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 EXTRA_DIST = \
+	audiocachefile.h \
+	audiocache.h \
+	audiocacheeventhandler.h \
+	audiocacheidmanager.h \
 	audio.h \
 	audiofile.h \
 	audioinputengine.h \
@@ -275,8 +277,10 @@ EXTRA_DIST = \
 	channel.h \
 	channelmixer.h \
 	chresampler.h \
+	configfile.h \
 	configuration.h \
 	configparser.h \
+	cpp11fix.h \
 	drumgizmo.h \
 	drumkit.h \
 	drumkitloader.h \
@@ -284,6 +288,7 @@ EXTRA_DIST = \
 	events.h \
 	instrument.h \
 	instrumentparser.h \
+	memchecker.h \
 	message.h \
 	messagehandler.h \
 	messagereceiver.h \
@@ -301,6 +306,10 @@ EXTRA_DIST = \
 	velocity.h \
 	versionstr.h \
  \
+	audiocachefile.cc \
+	audiocache.cc \
+	audiocacheeventhandler.cc \
+	audiocacheidmanager.cc \
 	audiofile.cc \
 	audioinputengine.cc \
 	audioinputenginemidi.cc \
@@ -309,6 +318,7 @@ EXTRA_DIST = \
 	channel.cc \
 	channelmixer.cc \
 	chresampler.cc \
+	configfile.cc \
 	configuration.cc \
 	configparser.cc \
 	drumgizmo.cc \
@@ -318,6 +328,7 @@ EXTRA_DIST = \
 	events.cc \
 	instrument.cc \
 	instrumentparser.cc \
+	memchecker.cc \
 	messagehandler.cc \
 	messagereceiver.cc \
 	midimapparser.cc \
diff --git a/src/audio.h b/src/audio.h
index dc890cc..a5ef06d 100644
--- a/src/audio.h
+++ b/src/audio.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/audiocache.cc b/src/audiocache.cc
new file mode 100644
index 0000000..65ddef9
--- /dev/null
+++ b/src/audiocache.cc
@@ -0,0 +1,297 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocache.cc
+ *
+ *  Fri Apr 10 10:39:24 CEST 2015
+ *  Copyright 2015 Jonas Suhr Christensen
+ *  jsc at umbraculum.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "audiocache.h"
+
+#include <mutex>
+
+#include <stdio.h>
+#include <assert.h>
+
+#include <hugin.hpp>
+
+#include "audiocachefile.h"
+
+#define CHUNKSIZE(x) (x * CHUNK_MULTIPLIER)
+
+AudioCache::~AudioCache()
+{
+	DEBUG(cache, "~AudioCache() pre\n");
+
+	deinit();
+	delete[] nodata;
+
+	DEBUG(cache, "~AudioCache() post\n");
+}
+
+void AudioCache::init(size_t poolsize)
+{
+	setAsyncMode(true);
+
+	id_manager.init(poolsize);
+	event_handler.start();
+}
+
+void AudioCache::deinit()
+{
+	event_handler.stop();
+}
+
+// Invariant: initial_samples_needed < preloaded audio data
+sample_t* AudioCache::open(const AudioFile& file, size_t initial_samples_needed,
+                           int channel, cacheid_t& id)
+{
+	if(!file.isValid())
+	{
+		// File preload not yet ready - skip this sample.
+		id = CACHE_DUMMYID;
+		assert(nodata);
+		return nodata;
+	}
+
+	// Register a new id for this cache session.
+	id = id_manager.registerID({});
+
+	// If we are out of available ids we get CACHE_DUMMYID
+	if(id == CACHE_DUMMYID)
+	{
+		// Use nodata buffer instead.
+		assert(nodata);
+		return nodata;
+	}
+
+	// Get the cache_t connected with the registered id.
+	cache_t& c = id_manager.getCache(id);
+
+	c.afile = nullptr; // File is opened when needed.
+	c.channel = channel;
+
+	// Next call to 'next()' will read from this point.
+	c.localpos = initial_samples_needed;
+
+	c.front = nullptr; // This is allocated when needed.
+	c.back = nullptr; // This is allocated when needed.
+
+	size_t cropped_size;
+
+	if(file.preloadedsize == file.size)
+	{
+		// We have preloaded the entire file, so use it.
+		cropped_size = file.preloadedsize;
+	}
+	else
+	{
+		// Make sure that the preload-data made available to the next() calls
+		// fit on frame boundary:
+		//
+		// [                  all preloaded data                    ]
+		// [ initial ][ biggest multiple of full frames ][ the rest ]
+		// \                                            /
+		//  \----------------------v-------------------/
+		//                     cropped_size
+
+		cropped_size = file.preloadedsize - c.localpos;
+		cropped_size -= cropped_size % framesize;
+		cropped_size += initial_samples_needed;
+	}
+
+	c.preloaded_samples = file.data;
+	c.preloaded_samples_size = cropped_size;
+
+	// Next potential read from disk will read from this point.
+	c.pos = cropped_size;
+
+	// Only load next buffer if there is more data in the file to be loaded...
+	if(c.pos < file.size)
+	{
+		c.afile = &event_handler.openFile(file.filename);
+
+		if(c.back == nullptr)
+		{
+			c.back = new sample_t[CHUNKSIZE(framesize)];
+		}
+
+		event_handler.pushLoadNextEvent(c.afile, c.channel, c.pos,
+		                                c.back, &c.ready);
+	}
+
+	return c.preloaded_samples; // return preloaded data
+}
+
+sample_t* AudioCache::next(cacheid_t id, size_t& size)
+{
+	size = framesize;
+
+	if(id == CACHE_DUMMYID)
+	{
+		assert(nodata);
+		return nodata;
+	}
+
+	cache_t& c = id_manager.getCache(id);
+
+	if(c.preloaded_samples)
+	{
+
+		// We are playing from memory:
+		if(c.localpos < c.preloaded_samples_size)
+		{
+			sample_t* s = c.preloaded_samples + c.localpos;
+
+			if((c.localpos + framesize) > c.preloaded_samples_size)
+			{
+				// Only a partial frame is returned. Reflect this in the size
+				size = c.preloaded_samples_size - c.localpos;
+			}
+
+			c.localpos += framesize;
+
+			return s;
+		}
+
+		c.preloaded_samples = nullptr; // Start using samples from disk.
+
+	}
+	else
+	{
+
+		// We are playing from cache:
+		if(c.localpos < CHUNKSIZE(framesize))
+		{
+			sample_t* s = c.front + c.localpos;
+			c.localpos += framesize;
+			return s;
+		}
+	}
+
+	// Check for buffer underrun
+	if(!c.ready)
+	{
+		// Just return silence.
+		++number_of_underruns;
+		return nodata;
+	}
+
+	// Swap buffers
+	std::swap(c.front, c.back);
+
+	// Next time we go here we have already read the first frame.
+	c.localpos = framesize;
+
+	c.pos += CHUNKSIZE(framesize);
+
+	// Does the file have remaining unread samples?
+	assert(c.afile); // Assert that we have an audio file.
+	if(c.pos < c.afile->getSize())
+	{
+		// Do we have a back buffer to read into?
+		if(c.back == nullptr)
+		{
+			c.back = new sample_t[CHUNKSIZE(framesize)];
+		}
+
+		event_handler.pushLoadNextEvent(c.afile, c.channel, c.pos,
+		                                c.back, &c.ready);
+	}
+
+	// We should always have a front buffer at this point.
+	assert(c.front);
+
+	return c.front;
+}
+
+bool AudioCache::isReady(cacheid_t id)
+{
+	if(id == CACHE_DUMMYID)
+	{
+		return true;
+	}
+
+	cache_t& cache = id_manager.getCache(id);
+	return cache.ready;
+}
+
+void AudioCache::close(cacheid_t id)
+{
+	if(id == CACHE_DUMMYID)
+	{
+		return;
+	}
+
+	event_handler.pushCloseEvent(id);
+}
+
+void AudioCache::setFrameSize(size_t framesize)
+{
+	DEBUG(cache, "%s\n", __PRETTY_FUNCTION__);
+
+	// Make sure the event handler thread is stalled while we set the framesize
+	// state.
+	std::lock_guard<AudioCacheEventHandler> event_handler_lock(event_handler);
+
+	// NOTE: Not threaded...
+	//std::lock_guard<AudioCacheIDManager> id_manager_lock(id_manager);
+
+	if(framesize > this->framesize)
+	{
+		delete[] nodata;
+		nodata = new sample_t[framesize];
+
+		for(size_t i = 0; i < framesize; ++i)
+		{
+			nodata[i] = 0.0f;
+		}
+	}
+
+	this->framesize = framesize;
+
+	event_handler.setChunkSize(CHUNKSIZE(framesize));
+}
+
+size_t AudioCache::frameSize() const
+{
+	return framesize;
+}
+
+void AudioCache::setAsyncMode(bool async)
+{
+	event_handler.setThreaded(async);
+}
+
+bool AudioCache::asyncMode() const
+{
+	return event_handler.isThreaded();
+}
+
+size_t AudioCache::getNumberOfUnderruns() const
+{
+	return number_of_underruns;
+}
+
+void AudioCache::resetNumberOfUnderruns()
+{
+	number_of_underruns = 0;
+}
diff --git a/src/audiocache.h b/src/audiocache.h
new file mode 100644
index 0000000..5e27cc5
--- /dev/null
+++ b/src/audiocache.h
@@ -0,0 +1,113 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocache.h
+ *
+ *  Fri Apr 10 10:39:24 CEST 2015
+ *  Copyright 2015 Jonas Suhr Christensen
+ *  jsc at umbraculum.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <string>
+#include <list>
+#include <vector>
+
+#include "audiotypes.h"
+#include "audiofile.h"
+
+#include "audiocachefile.h"
+#include "audiocacheidmanager.h"
+#include "audiocacheeventhandler.h"
+
+#define CHUNK_MULTIPLIER 16
+
+class AudioCache {
+public:
+	AudioCache() = default;
+
+	//! Destroy object and stop thread if needed.
+	~AudioCache();
+
+	//! Initialise cache manager and allocate needed resources
+	//! This method starts the cache manager thread.
+	//! This method blocks until the thread has been started.
+	//! \param poolsize The maximum number of parellel events supported.
+	void init(size_t poolsize);
+
+	//! Stop thread and clean up resources.
+	//! This method blocks until the thread has stopped.
+	void deinit();
+
+	//! Register new cache entry.
+	//! Prepares an entry in the cache manager for future disk streaming.
+	//! \param file A pointer to the file which is to be streamed from.
+	//! \param initial_samples_needed The number of samples needed in the first
+	//!  read that is not nessecarily of framesize. This is the number of samples
+	//!  from the input event offset to the end of the frame in which it resides.
+	//!  initial_samples_needed <= framesize.
+	//! \param channel The channel to which the cache id will be bound.
+	//! \param [out] new_id The newly created cache id.
+	//! \return A pointer to the first buffer containing the
+	//!  'initial_samples_needed' number of samples.
+	sample_t* open(const AudioFile& file, size_t initial_samples_needed, int channel,
+	               cacheid_t& new_id);
+
+	//! Get next buffer.
+	//! Returns the next buffer for reading based on cache id.
+	//! This function will (if needed) schedule a new disk read to make sure that
+	//! data is available in the next call to this method.
+	//! \param id The cache id to read from.
+	//! \param [out] size The size of the returned buffer.
+	//! \return A pointer to the buffer.
+	sample_t* next(cacheid_t id, size_t &size);
+
+	//! Returns true iff the next chunk of the supplied id has been read from disk.
+	bool isReady(cacheid_t id);
+
+	//! Unregister cache entry.
+	//! Close associated file handles and free associated buffers.
+	//! \param id The cache id to close.
+	void close(cacheid_t id);
+
+	//! Set/get internal framesize used when iterating through cache buffers.
+	void setFrameSize(size_t framesize);
+	size_t frameSize() const;
+
+	//! Control/get reader threaded mode.
+	//! True means reading happening threaded, false means all reading done
+	//! synchronious.
+	void setAsyncMode(bool async);
+	bool asyncMode() const;
+
+	//! Return the number of chunks that were read too late.
+	size_t getNumberOfUnderruns() const;
+
+	//! Set underrun counter to 0.
+	void resetNumberOfUnderruns();
+
+private:
+	size_t framesize{0};
+	sample_t* nodata{nullptr};
+	size_t number_of_underruns{0};
+
+	AudioCacheIDManager id_manager;
+	AudioCacheEventHandler event_handler{id_manager};
+};
diff --git a/src/audiocacheeventhandler.cc b/src/audiocacheeventhandler.cc
new file mode 100644
index 0000000..8ceabc8
--- /dev/null
+++ b/src/audiocacheeventhandler.cc
@@ -0,0 +1,326 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocacheeventhandler.cc
+ *
+ *  Sun Jan  3 19:57:55 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "audiocacheeventhandler.h"
+
+#include <assert.h>
+
+#include <hugin.hpp>
+
+#include "audiocachefile.h"
+#include "audiocache.h"
+#include "audiocacheidmanager.h"
+
+enum class EventType {
+	LoadNext,
+	Close,
+};
+
+class CacheEvent {
+public:
+	EventType event_type;
+
+	// For close event:
+	cacheid_t id;
+
+	// For load next event:
+	size_t pos;
+	AudioCacheFile* afile;
+	CacheChannels channels;
+};
+
+AudioCacheEventHandler::AudioCacheEventHandler(AudioCacheIDManager& id_manager)
+	: id_manager(id_manager)
+{
+}
+
+AudioCacheEventHandler::~AudioCacheEventHandler()
+{
+	// Close all ids already enqueued to be closed.
+	clearEvents();
+
+	auto active_ids = id_manager.getActiveIDs();
+	for(auto id : active_ids)
+	{
+		handleCloseCache(id);
+	}
+}
+
+void AudioCacheEventHandler::start()
+{
+	if(running)
+	{
+		return;
+	}
+
+	running = true;
+	run();
+	sem_run.wait();
+}
+
+void AudioCacheEventHandler::stop()
+{
+	if(!running)
+	{
+		return;
+	}
+
+	running = false;
+
+	sem.post();
+	wait_stop();
+}
+
+void AudioCacheEventHandler::setThreaded(bool threaded)
+{
+	if(this->threaded == threaded)
+	{
+		return;
+	}
+
+	if(threaded && !running)
+	{
+		start();
+	}
+	else if(!threaded && running)
+	{
+		stop();
+	}
+
+	this->threaded = threaded;
+}
+
+bool AudioCacheEventHandler::isThreaded() const
+{
+	return threaded;
+}
+
+void AudioCacheEventHandler::lock()
+{
+	mutex.lock();
+}
+
+void AudioCacheEventHandler::unlock()
+{
+	mutex.unlock();
+}
+
+void AudioCacheEventHandler::pushLoadNextEvent(AudioCacheFile* afile,
+                                               size_t channel,
+                                               size_t pos, sample_t* buffer,
+                                               volatile bool* ready)
+{
+	CacheEvent cache_event;
+	cache_event.event_type = EventType::LoadNext;
+	cache_event.pos = pos;
+	cache_event.afile = afile;
+
+	CacheChannel c;
+	c.channel = channel;
+	c.samples = buffer;
+
+	*ready = false;
+	c.ready = ready;
+
+	cache_event.channels.insert(cache_event.channels.end(), c);
+
+	pushEvent(cache_event);
+}
+
+void AudioCacheEventHandler::pushCloseEvent(cacheid_t id)
+{
+	CacheEvent cache_event;
+	cache_event.event_type = EventType::Close;
+	cache_event.id = id;
+
+	pushEvent(cache_event);
+}
+
+void AudioCacheEventHandler::setChunkSize(size_t chunksize)
+{
+	DEBUG(cache, "%s\n", __PRETTY_FUNCTION__);
+
+	// We should already locked when this method is called.
+	//assert(!mutex.try_lock());
+
+	if(this->chunksize == chunksize)
+	{
+		return;
+	}
+
+	DEBUG(cache, "setChunkSize 1\n");
+
+	// Remove all events from event queue.
+	clearEvents();
+
+	DEBUG(cache, "setChunkSize 2\n");
+
+	// Skip all active cacheids and make their buffers point at nodata.
+	id_manager.disableActive();
+
+	DEBUG(cache, "setChunkSize 3\n");
+
+	this->chunksize = chunksize;
+}
+
+size_t AudioCacheEventHandler::chunkSize()
+{
+	return chunksize;
+}
+
+AudioCacheFile& AudioCacheEventHandler::openFile(const std::string& filename)
+{
+	std::lock_guard<std::mutex> lock(mutex);
+	return files.getFile(filename);
+}
+
+void AudioCacheEventHandler::clearEvents()
+{
+	// Iterate all events ignoring load events and handling close events.
+	for(auto& event : eventqueue)
+	{
+		if(event.event_type == EventType::Close)
+		{
+			handleCloseCache(event.id); // This method does not lock.
+		}
+	}
+
+	eventqueue.clear();
+}
+
+void AudioCacheEventHandler::handleLoadNextEvent(CacheEvent& cache_event)
+{
+	assert(cache_event.afile); // Assert that we have an audio file
+
+	cache_event.afile->readChunk(cache_event.channels, cache_event.pos,
+	                             chunksize);
+}
+
+void AudioCacheEventHandler::handleCloseEvent(CacheEvent& cache_event)
+{
+	std::lock_guard<std::mutex> lock(mutex);
+	handleCloseCache(cache_event.id);
+}
+
+void AudioCacheEventHandler::handleCloseCache(cacheid_t id)
+{
+	auto& cache = id_manager.getCache(id);
+
+	// Only close the file if we have also opened it.
+	if(cache.afile)
+	{
+		files.releaseFile(cache.afile->getFilename());
+	}
+
+	delete[] cache.front;
+	delete[] cache.back;
+
+	id_manager.releaseID(id);
+}
+
+void AudioCacheEventHandler::handleEvent(CacheEvent& cache_event)
+{
+	switch(cache_event.event_type)
+	{
+	case EventType::LoadNext:
+		handleLoadNextEvent(cache_event);
+		break;
+	case EventType::Close:
+		handleCloseEvent(cache_event);
+		break;
+	}
+}
+
+void AudioCacheEventHandler::thread_main()
+{
+	sem_run.post(); // Signal that the thread has been started
+
+	while(running)
+	{
+		sem.wait();
+
+		mutex.lock();
+		if(eventqueue.empty())
+		{
+			mutex.unlock();
+			continue;
+		}
+
+		CacheEvent cache_event = eventqueue.front();
+		eventqueue.pop_front();
+		mutex.unlock();
+
+		handleEvent(cache_event);
+	}
+}
+
+void AudioCacheEventHandler::pushEvent(CacheEvent& cache_event)
+{
+	if(!threaded)
+	{
+		handleEvent(cache_event);
+		return;
+	}
+
+	{
+		std::lock_guard<std::mutex> lock(mutex);
+
+		bool found = false;
+
+		if(cache_event.event_type == EventType::LoadNext)
+		{
+			for(auto& queued_event : eventqueue)
+			{
+				if(queued_event.event_type == EventType::LoadNext)
+				{
+
+					assert(cache_event.afile); // Assert that we have an audio file
+					assert(queued_event.afile); // Assert that we have an audio file
+
+					if((cache_event.afile->getFilename() ==
+					    queued_event.afile->getFilename()) &&
+					   (cache_event.pos == queued_event.pos))
+					{
+						// Append channel and buffer to the existing event.
+						queued_event.channels.insert(queued_event.channels.end(),
+						                             cache_event.channels.begin(),
+						                             cache_event.channels.end());
+						found = true;
+						break;
+					}
+				}
+			}
+		}
+
+		if(!found)
+		{
+			// The event was not already on the list, create a new one.
+			eventqueue.push_back(cache_event);
+		}
+	}
+
+	sem.post();
+}
diff --git a/src/audiocacheeventhandler.h b/src/audiocacheeventhandler.h
new file mode 100644
index 0000000..87cb3eb
--- /dev/null
+++ b/src/audiocacheeventhandler.h
@@ -0,0 +1,113 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocacheeventhandler.h
+ *
+ *  Sun Jan  3 19:57:55 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <list>
+#include <mutex>
+
+#include "thread.h"
+#include "semaphore.h"
+#include "mutex.h"
+
+#include "audiocachefile.h"
+#include "audiocacheidmanager.h"
+
+class CacheEvent;
+
+class AudioCacheEventHandler
+	: protected Thread
+{
+public:
+	AudioCacheEventHandler(AudioCacheIDManager& id_manager);
+	~AudioCacheEventHandler();
+
+	//! Start event handler thread.
+	//! This method blocks until the thread has actually been started.
+	void start();
+
+	//! Stop event handler thread.
+	//! This method blocks until the thread has actually been stopped.
+	void stop();
+
+	//! Set thread status and start/stop thread accordingly.
+	//! \param threaded Set to true to start thread or false to stop it.
+	void setThreaded(bool threaded);
+
+	//! Get current threaded status.
+	bool isThreaded() const;
+
+	//! Lock thread mutex.
+	//! This methods are supplied to make this class lockable by std::lock_guard
+	void lock();
+
+	//! Unlock thread mutex.
+	//! This methods are supplied to make this class lockable by std::lock_guard
+	void unlock();
+
+	void pushLoadNextEvent(AudioCacheFile* afile, size_t channel,
+	                       size_t pos, sample_t* buffer,
+	                       volatile bool* ready);
+	void pushCloseEvent(cacheid_t id);
+
+	void setChunkSize(size_t chunksize);
+	size_t chunkSize();
+
+	AudioCacheFile& openFile(const std::string& filename);
+
+protected:
+	void clearEvents();
+
+	void handleLoadNextEvent(CacheEvent& cache_event);
+
+	//! Lock the mutex and calls handleCloseCache
+	void handleCloseEvent(CacheEvent& cache_event);
+
+	//! Close decrease the file ref and release the cache id.
+	void handleCloseCache(cacheid_t id);
+
+	void handleEvent(CacheEvent& cache_event);
+
+	// From Thread
+	void thread_main() override;
+
+	void pushEvent(CacheEvent& cache_event);
+
+	AudioCacheFiles files;
+
+	std::mutex mutex;
+
+	std::list<CacheEvent> eventqueue;
+
+	bool threaded{false};
+	Semaphore sem;
+	Semaphore sem_run;
+	bool running{false};
+
+	AudioCacheIDManager& id_manager;
+
+	size_t chunksize{1024};
+};
diff --git a/src/audiocachefile.cc b/src/audiocachefile.cc
new file mode 100644
index 0000000..41e9859
--- /dev/null
+++ b/src/audiocachefile.cc
@@ -0,0 +1,169 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            cacheaudiofile.cc
+ *
+ *  Thu Dec 24 12:17:58 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "audiocachefile.h"
+
+#include <assert.h>
+
+#include <hugin.hpp>
+
+#include <cstring>
+
+#include "audiocache.h"
+
+AudioCacheFile::AudioCacheFile(const std::string& filename,
+                               std::vector<sample_t>& read_buffer)
+	: filename(filename), read_buffer(read_buffer)
+{
+	std::memset(&sf_info, 0, sizeof(SF_INFO));
+
+	fh = sf_open(filename.c_str(), SFM_READ, &sf_info);
+	if(!fh)
+	{
+		ERR(audiofile,"SNDFILE Error (%s): %s\n",
+		    filename.c_str(), sf_strerror(fh));
+		return;
+	}
+
+	if(sf_info.frames == 0)
+	{
+		WARN(cache, "sf_info.frames == 0\n");
+	}
+}
+
+AudioCacheFile::~AudioCacheFile()
+{
+	if(fh)
+	{
+		sf_close(fh);
+		fh = nullptr;
+	}
+}
+
+size_t AudioCacheFile::getSize() const
+{
+	return sf_info.frames;
+}
+
+const std::string& AudioCacheFile::getFilename() const
+{
+	return filename;
+}
+
+size_t AudioCacheFile::getChannelCount()
+{
+	return sf_info.channels;
+}
+
+void AudioCacheFile::readChunk(const CacheChannels& channels,
+                               size_t pos, size_t num_samples)
+{
+	//assert(fh != nullptr); // File handle must never be nullptr
+	if(!fh)
+	{
+		return;
+	}
+
+	if((int)pos > sf_info.frames)
+	{
+		WARN(cache, "pos (%d) > sf_info.frames (%d)\n",
+		     (int)pos, (int)sf_info.frames);
+		return;
+	}
+
+	sf_seek(fh, pos, SEEK_SET);
+
+	size_t size = sf_info.frames - pos;
+	if(size > num_samples)
+	{
+		size = num_samples;
+	}
+
+	if((size * sf_info.channels) > read_buffer.size())
+	{
+		read_buffer.resize(size * sf_info.channels);
+	}
+
+	size_t read_size = sf_readf_float(fh, read_buffer.data(), size);
+	(void)read_size;
+
+	for(auto it = channels.begin(); it != channels.end(); ++it)
+	{
+		size_t channel = it->channel;
+		sample_t* data = it->samples;
+		for (size_t i = 0; i < size; ++i)
+		{
+			data[i] = read_buffer[(i * sf_info.channels) + channel];
+		}
+	}
+
+	for(auto it = channels.begin(); it != channels.end(); ++it)
+	{
+		*(it->ready) = true;
+	}
+}
+
+AudioCacheFile& AudioCacheFiles::getFile(const std::string& filename)
+{
+	std::lock_guard<std::mutex> lock(mutex);
+
+	auto it = audiofiles.find(filename);
+	if(it == audiofiles.end())
+	{
+		// Construct a new AudioCacheFile in place. The in place construction is relevant.
+		it = audiofiles.emplace(std::piecewise_construct, std::make_tuple(filename),
+		                        std::make_tuple(filename, std::ref(read_buffer))).first;
+	}
+
+	auto& cache_audio_file = it->second;
+
+	// Increase ref count.
+	++cache_audio_file.ref;
+
+	return cache_audio_file;
+}
+
+void AudioCacheFiles::releaseFile(const std::string& filename)
+{
+	std::lock_guard<std::mutex> lock(mutex);
+
+	auto it = audiofiles.find(filename);
+	if(it == audiofiles.end())
+	{
+		assert(false); // This should never happen!
+		return; // not open
+	}
+
+	auto& audiofile = it->second;
+
+	assert(audiofile.ref); // If ref is not > 0 it shouldn't be in the map.
+
+	--audiofile.ref;
+	if(audiofile.ref == 0)
+	{
+		audiofiles.erase(it);
+	}
+}
diff --git a/src/audiocachefile.h b/src/audiocachefile.h
new file mode 100644
index 0000000..88f1df2
--- /dev/null
+++ b/src/audiocachefile.h
@@ -0,0 +1,101 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            cacheaudiofile.h
+ *
+ *  Thu Dec 24 12:17:58 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <string>
+#include <list>
+#include <map>
+#include <vector>
+
+#include <mutex>
+#include "mutex.h"
+
+#include <sndfile.h>
+
+#include <audiotypes.h>
+
+//! Channel data container in the cache world.
+class CacheChannel {
+public:
+	size_t channel; //< Channel number
+	sample_t* samples; //< Sample buffer pointer.
+	size_t num_samples; //< Number of samples in the sample buffer
+	volatile bool* ready; //< Is set to true when the loading is done.
+};
+
+using CacheChannels = std::list<CacheChannel>;
+
+//! This class is used to encapsulate reading from a single file source.
+//! The access is ref counted so that the file is only opened once and closed
+//! when it is no longer required.
+class AudioCacheFile {
+	friend class AudioCacheFiles;
+	friend class TestableAudioCacheFiles;
+public:
+	//! Create file handle for filename.
+	AudioCacheFile(const std::string& filename, std::vector<sample_t>& read_buffer);
+
+	//! Closes file handle.
+	~AudioCacheFile();
+
+	//! Get sample count of the file connected with this cache object.
+	size_t getSize() const;
+
+	//! Get filename of the file connected with this cache object.
+	const std::string& getFilename() const;
+
+	//! Get number of channels in the file
+	size_t getChannelCount();
+
+	//! Read audio data from the file into the supplied channel caches.
+	void readChunk(const CacheChannels& channels, size_t pos, size_t num_samples);
+
+private:
+	int ref{0};
+	SNDFILE* fh{nullptr};
+	SF_INFO sf_info;
+	std::string filename;
+	std::vector<sample_t>& read_buffer;
+};
+
+class AudioCacheFiles {
+public:
+	//! Get the CacheAudioFile object corresponding to filename.
+	//! If it does not exist it will be created.
+	//! It's ref count will be increased.
+	AudioCacheFile& getFile(const std::string& filename);
+
+	//! Release the CacheAudioFile corresponding to filename.
+	//! It's ref count will be decreased.
+	//! If the ref count reaches 0 the object will be deleted.
+	void releaseFile(const std::string& filename);
+
+protected:
+	std::map<std::string, AudioCacheFile> audiofiles;
+	std::mutex mutex;
+	std::vector<sample_t> read_buffer;
+};
diff --git a/src/audiocacheidmanager.cc b/src/audiocacheidmanager.cc
new file mode 100644
index 0000000..efef17e
--- /dev/null
+++ b/src/audiocacheidmanager.cc
@@ -0,0 +1,124 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocacheidmanager.cc
+ *
+ *  Tue Jan  5 10:59:37 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "audiocacheidmanager.h"
+
+#include <limits>
+#include <assert.h>
+
+AudioCacheIDManager::~AudioCacheIDManager()
+{
+	assert(available_ids.size() == id2cache.size()); // All ids should be released.
+}
+
+void AudioCacheIDManager::init(unsigned int capacity)
+{
+	std::lock_guard<std::mutex> guard(mutex);
+
+	id2cache.resize(capacity);
+	available_ids.resize(capacity);
+	for(size_t i = 0; i < capacity; ++i)
+	{
+		available_ids[i] = i;
+	}
+}
+
+cache_t& AudioCacheIDManager::getCache(cacheid_t id)
+{
+	std::lock_guard<std::mutex> guard(mutex);
+
+	assert(id != CACHE_NOID);
+	assert(id != CACHE_DUMMYID);
+	assert(id >= 0);
+	assert(id < (int)id2cache.size());
+	assert(id2cache[id].id == id);
+
+	return id2cache[id];
+}
+
+cacheid_t AudioCacheIDManager::registerID(const cache_t& cache)
+{
+	std::lock_guard<std::mutex> guard(mutex);
+
+	cacheid_t id = CACHE_NOID;
+
+	if(available_ids.empty())
+	{
+		return CACHE_DUMMYID;
+	}
+	else
+	{
+		id = available_ids.back();
+		available_ids.pop_back();
+	}
+
+	assert(id2cache[id].id == CACHE_NOID); // Make sure it is not already in use
+
+	id2cache[id] = cache;
+	id2cache[id].id = id;
+
+	return id;
+}
+
+void AudioCacheIDManager::releaseID(cacheid_t id)
+{
+	std::lock_guard<std::mutex> guard(mutex);
+
+	assert(id2cache[id].id != CACHE_NOID); // Test if it wasn't already released.
+
+	id2cache[id].id = CACHE_NOID;
+
+	available_ids.push_back(id);
+}
+
+void AudioCacheIDManager::disableActive()
+{
+	// Run through all active cache_ts and disable them.
+	for(auto& cache : id2cache)
+	{
+		if(cache.id != CACHE_NOID)
+		{
+			// Force use of nodata in all of the rest of the next() calls:
+			cache.localpos = std::numeric_limits<size_t>::max();
+			cache.ready = false;
+		}
+	}
+}
+
+std::vector<cacheid_t> AudioCacheIDManager::getActiveIDs()
+{
+	std::vector<cacheid_t> active_ids;
+
+	for(auto& cache : id2cache)
+	{
+		if(cache.id != CACHE_NOID)
+		{
+			active_ids.push_back(cache.id);
+		}
+	}
+
+	return active_ids;
+}
diff --git a/src/audiocacheidmanager.h b/src/audiocacheidmanager.h
new file mode 100644
index 0000000..a5a9755
--- /dev/null
+++ b/src/audiocacheidmanager.h
@@ -0,0 +1,93 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocacheidmanager.h
+ *
+ *  Tue Jan  5 10:59:37 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <stdlib.h>
+
+#include <vector>
+
+#include <audiotypes.h>
+
+#include <mutex>
+#include "mutex.h"
+
+class AudioCacheFile;
+
+#define CACHE_DUMMYID -2
+#define CACHE_NOID -1
+
+typedef int cacheid_t;
+
+typedef struct {
+	cacheid_t id{CACHE_NOID}; //< Current id of this cache_t. CACHE_NOID means not in use.
+
+	AudioCacheFile* afile{nullptr};
+	size_t channel{0};
+	size_t pos{0}; //< File position
+	volatile bool ready{false};
+	sample_t* front{nullptr};
+	sample_t* back{nullptr};
+	size_t localpos{0}; //< Intra buffer (front) position.
+
+	sample_t* preloaded_samples{nullptr}; // nullptr means preload buffer not active.
+	size_t preloaded_samples_size{0};
+} cache_t;
+
+class AudioCacheIDManager {
+	friend class AudioCacheEventHandler;
+public:
+	AudioCacheIDManager() = default;
+	~AudioCacheIDManager();
+
+	//! Initialise id lists with specified capacity.
+	//! Exceeding this capacity will result in CACHE_DUMMYID on calls to
+	//! registerID.
+	void init(unsigned int capacity);
+
+	//! Get the cache object connected with the specified cacheid.
+	//! Note: The cacheid MUST be active.
+	cache_t& getCache(cacheid_t id);
+
+	//! Reserve a new cache object and return its cacheid.
+	//! The contents of the supplied cache object will be copied to the new
+	//! cache object.
+	cacheid_t registerID(const cache_t& cache);
+
+	//! Release a cache object and its correseponding cacheid.
+	//! After this call the cacheid can no longer be used.
+	void releaseID(cacheid_t id);
+
+protected:
+	// For AudioCacheEventHandler
+	void disableActive();
+	std::vector<cacheid_t> getActiveIDs();
+
+	std::mutex mutex;
+
+	std::vector<cache_t> id2cache;
+	std::vector<cacheid_t> available_ids;
+};
diff --git a/src/audiofile.cc b/src/audiofile.cc
index 59e0c14..58b248b 100644
--- a/src/audiofile.cc
+++ b/src/audiofile.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  *
@@ -38,223 +38,116 @@
 
 #include "configuration.h"
 
-AudioFile::AudioFile(std::string filename, int filechannel)
+AudioFile::AudioFile(const std::string& filename, int filechannel)
 {
-  is_loaded = false;
-  this->filename = filename;
-  this->filechannel = filechannel;
+	is_loaded = false;
+	this->filename = filename;
+	this->filechannel = filechannel;
 
-  data = NULL;
-  size = 0;
+	data = nullptr;
+	size = 0;
 
-#ifdef LAZYLOAD
-  preloaded_data = NULL;
-#endif/*LAZYLOAD*/
-
-  magic = this;
+	magic = this;
 }
 
 AudioFile::~AudioFile()
 {
-  magic = NULL;
-  unload();
+	magic = nullptr;
+	unload();
 }
 
-bool AudioFile::isValid()
+bool AudioFile::isValid() const
 {
-  return this == magic;
+	return this == magic;
 }
 
 void AudioFile::unload()
 {
-  // Make sure we don't unload the object while loading it...
-  MutexAutolock l(mutex);
+	// Make sure we don't unload the object while loading it...
+	MutexAutolock l(mutex);
 
-  is_loaded = false;
+	is_loaded = false;
 
-#ifdef LAZYLOAD
-  if(data == preloaded_data) {
-    delete[] data;
-    data = NULL;
-    size = 0;
-  } else {
-    size = 0;
-    delete[] data;
-    data = NULL;
-    delete preloaded_data;
-    preloaded_data = NULL;
-  }
-#else
-  delete[] data;
-  data = NULL;
-  size = 0;
-#endif/*LAZYLOAD*/
+	delete[] data;
+	data = nullptr;
+	size = 0;
 }
 
 #define	BUFFER_SIZE	4092
 
 void AudioFile::load(int num_samples)
 {
-  // Make sure we don't unload the object while loading it...
-  MutexAutolock l(mutex);
-
- /*
-  Lazy load of drum kits
-  init();
-  return;
-  */
-
-  if(data) return;
-
-  SF_INFO sf_info;
-  SNDFILE *fh = sf_open(filename.c_str(), SFM_READ, &sf_info);
-  if(!fh) {
-    ERR(audiofile,"SNDFILE Error (%s): %s\n",
-        filename.c_str(), sf_strerror(fh));
-    return;
-  }
- 
-  size = sf_info.frames;
-
-  double ratio = (double)Conf::samplerate / (double)sf_info.samplerate;
-
-  if(num_samples != ALL_SAMPLES) {
-    // Make sure we read enough samples, even after conversion.
-    num_samples /= ratio;
-    if((int)size > num_samples) size = num_samples;
-  }
-
-  sample_t* data = new sample_t[size]; 
-  if(sf_info.channels == 1) {
-    size = sf_read_float(fh, data, size);
-  }
-  else {
-    // check filechannel exists
-    if(filechannel >= sf_info.channels) {
-        filechannel = sf_info.channels - 1;
-    }
-    sample_t buffer[BUFFER_SIZE];
-    int readsize = BUFFER_SIZE / sf_info.channels;
-    int totalread = 0;
-    int read;
-    do {
-      read = sf_readf_float(fh, buffer, readsize);
-      for (int i = 0; i < read; i++) {
-        data[totalread++] = buffer[i * sf_info.channels + filechannel];
-      }
-    } while(read > 0 && totalread < (int)size);
-    // set data size to total bytes read
-    size = totalread;
-  }
-  
-  DEBUG(audiofile,"Loaded %d samples %p\n", (int)size, this);
-  
-  sf_close(fh);
-
-  this->data = data;
-  is_loaded = true;
-
-  //DEBUG(audiofile, "Loading of %s completed.\n", filename.c_str());
-}
-
-bool AudioFile::isLoaded()
-{
-  return is_loaded;
-}
-
-#ifdef LAZYLOAD
-#define SIZE 512*4 
-void AudioFile::init()
-{
-  //DEBUG(audiofile,"Initializing %p\n", this);
-  if(data) { 
-    //DEBUG(audiofile,"\t already initialized\n");
-    return;
-  }
-
-  SF_INFO sf_info;
-  SNDFILE *fh = sf_open(filename.c_str(), SFM_READ, &sf_info);
-  if(!fh) {
-    ERR(audiofile,"SNDFILE Error (%s): %s\n",
-        filename.c_str(), sf_strerror(fh));
-    return;
-  }
- 
-  int size = SIZE;
-
-  sample_t* data = new sample_t[size];
-  
-  size = sf_read_float(fh, data, size); 
-
-  //DEBUG(audiofile,"Lazy loaded %d samples\n", size);
-  sf_close(fh);
-
-  mutex.lock();
-  this->data = data;
-  this->size = size;
-  this->preloaded_data = data;
-  this->is_loaded = true;
-  mutex.unlock();
+	// Make sure we don't unload the object while loading it...
+	MutexAutolock l(mutex);
+
+	if(data)
+	{
+		return;
+	}
+
+	SF_INFO sf_info{};
+	SNDFILE *fh = sf_open(filename.c_str(), SFM_READ, &sf_info);
+	if(!fh)
+	{
+		ERR(audiofile,"SNDFILE Error (%s): %s\n",
+		    filename.c_str(), sf_strerror(fh));
+		return;
+	}
+
+	if(num_samples == ALL_SAMPLES)
+	{
+		num_samples = sf_info.frames;
+	}
+
+	size = sf_info.frames;
+	preloadedsize = sf_info.frames;
+
+	if(preloadedsize > (size_t)num_samples)
+	{
+		preloadedsize = num_samples;
+	}
+
+	sample_t* data = new sample_t[preloadedsize];
+	if(sf_info.channels == 1)
+	{
+		preloadedsize = sf_read_float(fh, data, preloadedsize);
+	}
+	else
+	{
+		// check filechannel exists
+		if(filechannel >= sf_info.channels)
+		{
+			filechannel = sf_info.channels - 1;
+		}
+
+		sample_t buffer[BUFFER_SIZE];
+		int readsize = BUFFER_SIZE / sf_info.channels;
+		int totalread = 0;
+		int read;
+
+		do
+		{
+	    read = sf_readf_float(fh, buffer, readsize);
+	    for(int i = 0; (i < read) && (totalread < num_samples); ++i)
+	    {
+		    data[totalread++] = buffer[i * sf_info.channels + filechannel];
+	    }
+		}
+		while( (read > 0) &&
+		       (totalread < (int)preloadedsize) &&
+		       (totalread < num_samples) );
+
+		// set data size to total bytes read
+		preloadedsize = totalread;
+	}
+
+	sf_close(fh);
+
+	this->data = data;
+	is_loaded = true;
 }
 
-void AudioFile::loadNext()
+bool AudioFile::isLoaded() const
 {
-  if(this->data != this->preloaded_data) {
-    //DEBUG(audiofile,"Already completely loaded %p\n", this);
-    return;
-  }
-
-  SF_INFO sf_info;
-  SNDFILE *fh = sf_open(filename.c_str(), SFM_READ, &sf_info);
-  if(!fh) {
-    ERR(audiofile,"SNDFILE Error (%s): %s\n",
-        filename.c_str(), sf_strerror(fh));
-    return;
-  }
-
-  int r;
-//  int size_accum = 0;
-  sample_t* data = new sample_t[sf_info.frames];
-  memcpy(data, this->preloaded_data, this->size * sizeof(sample_t));
-  this->data = data;
-  sf_seek(fh, this->size, SEEK_SET);
-//  sample_t* data_buf = new sample_t[SIZE];
-  while(this->size < sf_info.frames) {
-    //DEBUG(audiofile,"Accumulated %d of %llu\n", size_accum, sf_info.frames);
-    //if( (r = sf_read_float(fh, data_buf, SIZE)) < 0) {
-    if( (r = sf_read_float(fh, &data[this->size], SIZE)) < 0) {
-      ERR(audiofile,"Error reading sound file\n");
-      break;
-    }
-    //size_accum += r;
-    //memcpy(data+size_accum, data_buf, sizeof(sample_t) * r);
-    this->size += r;
-  }
-  //delete data_buf;
-  
-  //DEBUG(audiofile,"Finished loading %d samples %p\n", size, this);
-  sf_close(fh);
-
-  //mutex.lock();
-  //this->data = data;
-  //this->size = size;
-  //mutex.unlock();
-}
-
-void AudioFile::reset()
-{
-  //DEBUG(audiofile,"Resetting audio file %p\n", this);
-  if(this->data == this->preloaded_data) {
-    //DEBUG(audiofile,"\tNot completely loaded - skipping %p\n", this);
-    return;
-  }
-
-  mutex.lock();
-  volatile sample_t* old_data = data;
-  this->size = SIZE;
-  this->data = this->preloaded_data;
-  //DEBUG(audiofile,"Deleting data %p\n", this);
-  delete old_data; 
-  mutex.unlock();
+	return is_loaded;
 }
-#endif
diff --git a/src/audiofile.h b/src/audiofile.h
index 98bf101..c310a55 100644
--- a/src/audiofile.h
+++ b/src/audiofile.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_AUDIOFILE_H__
-#define __DRUMGIZMO_AUDIOFILE_H__
+#pragma once
 
 #include <string>
 #include <map>
@@ -36,72 +35,31 @@
 #include "mutex.h"
 #include "audio.h"
 
-/*
-  Plan for lazy loading of audio (Brainstorming)
-    * Encapsulate data array?
-      - Speed issues?
-      - Other suggestion
-        * Trigger on read begin and read done
-          - readnext(instrument)?
-        * size_t current latest loaded sample
-        * run in own thread? threads in drumgizmo??
-          - Add soundfile-loader-class which run in its own thread
-    * Add pre-loading constant
-    * Pointer to pos in audio stream (maybe just last position read)
-    * Strategy for how to handle pre-loading of remaining file
-      - Is it acceptable only to handle sequential reading of data (no random access)?
-
-   Thread A                                                  Thread B
-
-   :preload constant (user defined)
-   :speed modifier constant (in which time must 
-    sample n be loaded relative to trigger time) 
-  ----------                                                           ------
-  | Loader |   <------- Trigger load of InstrumentSample n  --------- | DG   | 
-  ----------                                                           ------
-    Load                  (int- right most loaded sample --> If current sample pos loaded
-      |            --------- |                                   |
-    Wave Into --> | SndFile | <----- Read data (directly from array)
-                   ---------  
-*/
-
-//#define LAZYLOAD
-
 #define ALL_SAMPLES -1
 
 class AudioFile {
 public:
-  AudioFile(std::string filename, int filechannel);
-  ~AudioFile();
+	AudioFile(const std::string& filename, int filechannel);
+	~AudioFile();
 
-  void load(int num_samples = ALL_SAMPLES);
-  void unload();
+	void load(int num_samples = ALL_SAMPLES);
+	void unload();
 
-  bool isLoaded();
+	bool isLoaded() const;
 
-  volatile size_t size;
-  volatile sample_t *data;
+	volatile size_t size{0}; // Full size of the file
+	volatile size_t preloadedsize{0}; // Number of samples preloaded (in data)
+	sample_t *data{nullptr};
 
-  std::string filename;
+	std::string filename;
 
-#ifdef LAZYLOAD
-//  SF_INFO sf_info;
-//  SNDFILE *fh;
-//  bool completely_loaded;
-  void init();
-  void reset();
-  void loadNext();
-  sample_t* preloaded_data; 
-#endif/*LAZYLOAD*/
+	bool isValid() const;
 
-  bool isValid();
+	Mutex mutex;
 
-  Mutex mutex;
+	int filechannel;
 
 private:
-  void *magic;
-  volatile bool is_loaded;
-  int filechannel;
+	void *magic;
+	volatile bool is_loaded;
 };
-
-#endif/*__DRUMGIZMO_AUDIOFILE_H__*/
diff --git a/src/audioinputengine.cc b/src/audioinputengine.cc
index 95c7c13..387de4f 100644
--- a/src/audioinputengine.cc
+++ b/src/audioinputengine.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/audioinputengine.h b/src/audioinputengine.h
index f2b49c0..b218086 100644
--- a/src/audioinputengine.h
+++ b/src/audioinputengine.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,6 +28,7 @@
 #define __DRUMGIZMO_AUDIOINPUTENGINE_H__
 
 #include <string>
+#include <vector>
 
 #include <event.h>
 
@@ -47,7 +48,7 @@ public:
   virtual void stop() = 0;
 
   virtual void pre() = 0;
-  virtual event_t *run(size_t pos, size_t len, size_t *nevents) = 0;
+  virtual void run(size_t pos, size_t len, std::vector<event_t>& events) = 0;
   virtual void post() = 0;
 };
 
diff --git a/src/audioinputenginemidi.cc b/src/audioinputenginemidi.cc
index 82cafbf..d81a49b 100644
--- a/src/audioinputenginemidi.cc
+++ b/src/audioinputenginemidi.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,16 +28,29 @@
 
 #include "midimapparser.h"
 
+#include "drumgizmo.h"
+
 #include <hugin.hpp>
 
 AudioInputEngineMidi::AudioInputEngineMidi()
+  : refs(REFSFILE)
 {
   is_valid = false;
 }
 
-bool AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
+bool AudioInputEngineMidi::loadMidiMap(std::string file, Instruments &instruments)
 {
-  file = "";
+  std::string f = file;
+
+  if(refs.load()) {
+    if(file.size() > 1 && file[0] == '@') {
+      f = refs.getValue(file.substr(1));
+    }
+  } else {
+    ERR(drumkitparser, "Error reading refs.conf");
+  }
+
+  midimap = "";
   is_valid = false;
 
   DEBUG(mmap, "loadMidiMap(%s, i.size() == %d)\n", f.c_str(),
@@ -57,7 +70,7 @@ bool AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
     mmap.instrmap[instruments[i]->name()] = i;
   }
 
-  file = f;
+  midimap = file;
   is_valid = true;
 
   return true;
@@ -65,27 +78,10 @@ bool AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
 
 std::string AudioInputEngineMidi::midimapFile()
 {
-  return file;
+  return midimap;
 }
 
 bool AudioInputEngineMidi::isValid()
 {
   return is_valid;
 }
-
-#ifdef TEST_AUDIOINPUTENGINEMIDI
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_AUDIOINPUTENGINEMIDI*/
diff --git a/src/audioinputenginemidi.h b/src/audioinputenginemidi.h
index b01fef0..3f96afe 100644
--- a/src/audioinputenginemidi.h
+++ b/src/audioinputenginemidi.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -34,6 +34,8 @@
 #include "midimapper.h"
 #include "instrument.h"
 
+#include "configfile.h"
+
 class AudioInputEngineMidi : public AudioInputEngine {
 public:
   AudioInputEngineMidi();
@@ -49,7 +51,7 @@ public:
   virtual void stop() = 0;
 
   virtual void pre() = 0;
-  virtual event_t *run(size_t pos, size_t len, size_t *nevents) = 0;
+  virtual void run(size_t pos, size_t len, std::vector<event_t>& events) = 0;
   virtual void post() = 0;
 
   bool loadMidiMap(std::string file, Instruments &i);
@@ -60,8 +62,10 @@ public:
 
 protected:
   MidiMapper mmap;
-  std::string file;
+  std::string midimap;
   bool is_valid;
+
+  ConfigFile refs;
 };
 
 #endif/*__DRUMGIZMO_AUDIOINPUTENGINEMIDI_H__*/
diff --git a/src/audiooutputengine.cc b/src/audiooutputengine.cc
index 7070222..115e3f1 100644
--- a/src/audiooutputengine.cc
+++ b/src/audiooutputengine.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/audiooutputengine.h b/src/audiooutputengine.h
index 7f15e49..0a9d65b 100644
--- a/src/audiooutputengine.h
+++ b/src/audiooutputengine.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -55,6 +55,8 @@ public:
    * Overload this method to force engine to use different buffer size.
    */
   virtual size_t getBufferSize() { return 1024; }
+  
+  virtual size_t samplerate() { return 44100; }
 };
 
 #endif/*__DRUMGIZMO_AUDIOOUTPUTENGINE_H__*/
diff --git a/src/beatmapper.cc b/src/beatmapper.cc
index 1b25d07..78441cb 100644
--- a/src/beatmapper.cc
+++ b/src/beatmapper.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/beatmapper.h b/src/beatmapper.h
index 8182e40..fde1988 100644
--- a/src/beatmapper.h
+++ b/src/beatmapper.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/channel.cc b/src/channel.cc
index 941847a..6aece18 100644
--- a/src/channel.cc
+++ b/src/channel.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/channel.h b/src/channel.h
index 2484d92..c031973 100644
--- a/src/channel.h
+++ b/src/channel.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/channelmixer.cc b/src/channelmixer.cc
index c8ee71a..76a25a6 100644
--- a/src/channelmixer.cc
+++ b/src/channelmixer.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/channelmixer.h b/src/channelmixer.h
index 06cef2f..fadf181 100644
--- a/src/channelmixer.h
+++ b/src/channelmixer.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/chresampler.cc b/src/chresampler.cc
index 301e650..414efc3 100644
--- a/src/chresampler.cc
+++ b/src/chresampler.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/chresampler.h b/src/chresampler.h
index 5943627..ae6cb3b 100644
--- a/src/chresampler.h
+++ b/src/chresampler.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/configfile.cc b/src/configfile.cc
new file mode 100644
index 0000000..fc1611e
--- /dev/null
+++ b/src/configfile.cc
@@ -0,0 +1,348 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            configfile.cc
+ *
+ *  Thu May 14 14:51:39 CEST 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "configfile.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#ifdef WIN32
+#include <direct.h>
+#include <windows.h>
+#include <Shlobj.h>
+#include <Shlwapi.h>
+#else
+#endif
+
+#include <hugin.hpp>
+  
+#ifdef WIN32
+  #define SEP "\\"
+#else
+  #define SEP "/"
+#endif
+
+#define CONFIGDIRNAME ".drumgizmo"
+
+/**
+ * Return the path containing the config files.
+ */
+static std::string configPath()
+{
+#ifdef WIN32
+  std::string configpath;
+  TCHAR szPath[256];
+  if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE,
+                               NULL, 0, szPath))) {
+    configpath = szPath;
+  }
+#else
+  std::string configpath = getenv("HOME");
+#endif
+  configpath += SEP;
+  configpath += CONFIGDIRNAME;
+
+  return configpath;
+}
+
+/**
+ * Calling this makes sure that the config path exists
+ */
+static bool createConfigPath()
+{
+  std::string configpath = configPath();
+
+  struct stat st;
+  if(stat(configpath.c_str(), &st) == 0) {
+    DEBUG(configfile, "No configuration exists, creating directory '%s'\n",
+          configpath.c_str());
+#ifdef WIN32
+    if(mkdir(configpath.c_str()) < 0) { 
+#else
+    if(mkdir(configpath.c_str(), 0755) < 0) { 
+#endif
+      DEBUG(configfile, "Could not create config directory\n");
+    }
+
+    return false;
+  }
+
+  return true;
+}
+
+ConfigFile::ConfigFile(std::string filename)
+  : filename(filename)
+  , fp(NULL)
+{
+}
+
+ConfigFile::~ConfigFile()
+{
+}
+
+bool ConfigFile::load()
+{
+  DEBUG(configfile, "Loading config file...\n");
+  if(!open("r")) {
+    return false;
+  }
+
+  values.clear();
+
+  std::string line;
+  while(true) {
+    line = readLine();
+
+    if(line == "") break;
+    
+    if(!parseLine(line)) {
+      return false;
+    }
+  }
+
+  close();
+
+  return true;
+}
+
+bool ConfigFile::save()
+{
+  DEBUG(configfile, "Saving configuration...\n");
+
+  createConfigPath();
+
+  if(!open("w")) {
+    return false;
+  }
+
+  std::map<std::string, std::string>::iterator v = values.begin();
+  for(; v != values.end(); ++v) {
+    fprintf(fp, "%s:%s\n", v->first.c_str(), v->second.c_str());
+  }
+
+  close();
+
+  return true;
+}
+
+std::string ConfigFile::getValue(const std::string& key)
+{
+  if(values.find(key) != values.end()) {
+    return values[key];
+  }
+
+  return "";
+}
+
+void ConfigFile::setValue(const std::string& key, const std::string& value)
+{
+  values[key] = value;
+}
+
+bool ConfigFile::open(std::string mode)
+{
+  if(fp) close();
+
+  std::string configpath = configPath();
+
+  std::string configfile = configpath;
+  configfile += SEP;
+  configfile += filename;
+
+  DEBUG(configfile, "Opening config file '%s'\n", configfile.c_str());
+  fp = fopen(configfile.c_str(), mode.c_str());
+
+  if(!fp) return false;
+
+  return true;
+}
+
+void ConfigFile::close()
+{
+  fclose(fp);
+  fp = NULL;
+}
+
+std::string ConfigFile::readLine()
+{
+  if(!fp) return "";
+
+  std::string line;
+
+  char buf[1024];
+  while(!feof(fp)) {
+    char *s = fgets(buf, sizeof(buf), fp);
+    if(s) {
+      line += buf;
+      if(buf[strlen(buf) - 1] == '\n') break;
+    }
+  }
+
+  return line;
+}
+
+bool ConfigFile::parseLine(const std::string& line)
+{
+  std::string key;
+  std::string value;
+  enum {
+    before_key,
+    in_key,
+    after_key,
+    before_value,
+    in_value,
+    in_value_single_quoted,
+    in_value_double_quoted,
+    after_value,
+  } state = before_key;
+
+  for(std::size_t p = 0; p < line.size(); ++p) {
+    switch(state) {
+    case before_key:
+      if(line[p] == '#') {
+        // Comment: Ignore line.
+        p = line.size();
+        continue;
+      }
+      if(std::isspace(line[p])) {
+        continue;
+      }
+      key += line[p];
+      state = in_key;
+      break;
+
+    case in_key:
+      if(std::isspace(line[p])) {
+        state = after_key;
+        continue;
+      }
+      if(line[p] == ':' || line[p] == '=') {
+        state = before_value;
+        continue;
+      }
+      key += line[p];
+      break;
+
+    case after_key:
+      if(std::isspace(line[p])) {
+        continue;
+      }
+      if(line[p] == ':' || line[p] == '=') {
+        state = before_value;
+        continue;
+      }
+      ERR(configfile, "Bad symbol."
+            " Expecting only whitespace or key/value seperator: '%s'",
+            line.c_str());
+      return false;
+
+    case before_value:
+      if(std::isspace(line[p])) {
+        continue;
+      }
+      if(line[p] == '\'') {
+        state = in_value_single_quoted;
+        continue;
+      }
+      if(line[p] == '"') {
+        state = in_value_double_quoted;
+        continue;
+      }
+      value += line[p];
+      state = in_value;
+      break;
+
+    case in_value:
+      if(std::isspace(line[p])) {
+        state = after_value;
+        continue;
+      }
+      if(line[p] == '#') {
+        // Comment: Ignore the rest of the line.
+        p = line.size();
+        state = after_value;
+        continue;
+      }
+      value += line[p];
+      break;
+
+    case in_value_single_quoted:
+      if(line[p] == '\'') {
+        state = after_value;
+        continue;
+      }
+      value += line[p];
+      break;
+
+    case in_value_double_quoted:
+      if(line[p] == '"') {
+        state = after_value;
+        continue;
+      }
+      value += line[p];
+      break;
+
+    case after_value:
+      if(std::isspace(line[p])) {
+        continue;
+      }
+      if(line[p] == '#') {
+        // Comment: Ignore the rest of the line.
+        p = line.size();
+        continue;
+      }
+      ERR(configfile, "Bad symbol."
+            " Expecting only whitespace or key/value seperator: '%s'",
+            line.c_str());
+      return false;
+    }
+  }
+
+  if(state == before_key) {
+    // Line did not contain any data (empty or comment)
+    return true;
+  }
+
+  // If state == in_value_XXX_quoted here, the string was not terminated.
+  if(state != after_value && state != in_value) {
+    ERR(configfile,"Malformed line: '%s'", line.c_str());
+    return false;
+  }
+
+  DEBUG(configfile, "key['%s'] value['%s']\n", key.c_str(), value.c_str());
+
+  if(key != "") {
+    values[key] = value;
+  }
+
+  return true;
+}
diff --git a/src/configfile.h b/src/configfile.h
new file mode 100644
index 0000000..3a781ec
--- /dev/null
+++ b/src/configfile.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            configfile.h
+ *
+ *  Thu May 14 14:51:38 CEST 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#ifndef __DRUMGIZMO_CONFIGFILE_H__
+#define __DRUMGIZMO_CONFIGFILE_H__
+
+#include <string>
+#include <map>
+#include <stdio.h>
+
+class ConfigFile {
+public:
+  ConfigFile(std::string filename);
+  virtual ~ConfigFile();
+
+  virtual bool load();
+  virtual bool save();
+
+  virtual std::string getValue(const std::string& key);
+  virtual void setValue(const std::string& key, const std::string& value);
+
+protected:
+  std::map<std::string, std::string> values;
+  std::string filename;
+
+  virtual bool open(std::string mode);
+  void close();
+  std::string readLine();
+  bool parseLine(const std::string& line);
+
+  FILE* fp;
+};
+
+#endif/*__DRUMGIZMO_CONFIGFILE_H__*/
diff --git a/src/configparser.cc b/src/configparser.cc
index 96e701b..ac8b876 100644
--- a/src/configparser.cc
+++ b/src/configparser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/configparser.h b/src/configparser.h
index e67babd..b5f4d74 100644
--- a/src/configparser.h
+++ b/src/configparser.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/configuration.cc b/src/configuration.cc
index 5c733ee..72f6e4a 100644
--- a/src/configuration.cc
+++ b/src/configuration.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/configuration.h b/src/configuration.h
index b8be49f..3adf525 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/vst/constants.h b/src/cpp11fix.h
similarity index 55%
rename from vst/constants.h
rename to src/cpp11fix.h
index ff07c54..c6512ae 100644
--- a/vst/constants.h
+++ b/src/cpp11fix.h
@@ -1,32 +1,38 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
- *            constants.h
+ *            cpp11fix.h
  *
- *  Tue Sep 20 11:49:29 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
+ *  Mi 20. Jan 10:22:36 CET 2016
+ *  Copyright 2016 Christian Glöckner
+ *  cgloeckner at freenet.de
  ****************************************************************************/
 
 /*
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_CONSTANTS_H__
-#define __DRUMGIZMO_CONSTANTS_H__
+#pragma once
 
-#define NUM_OUTPUTS 16
+#include <memory>
 
-#endif/*__DRUMGIZMO_CONSTANTS_H__*/
+namespace std {
+
+template <typename T, typename ...Args>
+std::unique_ptr<T> make_unique(Args&& ...args) {
+	return std::unique_ptr<T>{new T{std::forward<Args>(args)...}};
+}
+
+} // std
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc
index 7ce05ef..159b01b 100644
--- a/src/drumgizmo.cc
+++ b/src/drumgizmo.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -28,6 +28,7 @@
 
 #include <math.h>
 #include <stdio.h>
+#include <assert.h>
 
 #include <event.h>
 #include <audiotypes.h>
@@ -46,718 +47,733 @@
 #include "nolocale.h"
 
 DrumGizmo::DrumGizmo(AudioOutputEngine *o, AudioInputEngine *i)
-  : MessageReceiver(MSGRCV_ENGINE),
-    loader(), oe(o), ie(i)
+	: MessageReceiver(MSGRCV_ENGINE)
+	, loader()
+	, oe(o)
+	, ie(i)
+	, framesize(0)
+	, freewheel(false)
+	, events{}
 {
-  is_stopping = false;
+	is_stopping = false;
+	audioCache.init(10000); // start thread
+	
+	events.reserve(1000);
 }
 
 DrumGizmo::~DrumGizmo()
 {
+	audioCache.deinit(); // stop thread
 }
 
 bool DrumGizmo::loadkit(std::string file)
 {
-  if(file == "") return 1;
+	if(file == "")
+	{
+		return 1;
+	}
 
-  DEBUG(drumgizmo, "loadkit(%s)\n", file.c_str());
+	DEBUG(drumgizmo, "loadkit(%s)\n", file.c_str());
 
-  // Remove all queue AudioFiles from loader before we actually delete them.
-  loader.skip();
+	// Remove all queue AudioFiles from loader before we actually delete them.
+	loader.skip();
 
-  // Delete all Channels, Instruments, Samples and AudioFiles.
-  kit.clear();
+	// Delete all Channels, Instruments, Samples and AudioFiles.
+	kit.clear();
 
-  DrumKitParser parser(file, kit);
-  if(parser.parse()) {
-    ERR(drumgizmo, "Drumkit parser failed: %s\n", file.c_str());
-    return false;
-  }
+	DrumKitParser parser(file, kit);
+	if(parser.parse())
+	{
+		ERR(drumgizmo, "Drumkit parser failed: %s\n", file.c_str());
+		return false;
+	}
 
-  loader.loadKit(&kit);
+	// Check if there is enough free RAM to load the drumkit.
+	if(!memchecker.enoughFreeMemory(kit))
+	{
+		printf("WARNING: "
+		       "There doesn't seem to be enough RAM available to load the kit.\n"
+		       "Trying to load it anyway...\n");
+	}
+
+	loader.loadKit(&kit);
 
 #ifdef WITH_RESAMPLER
-  for(int i = 0; i < MAX_NUM_CHANNELS; i++) {
-    resampler[i].setup(kit.samplerate(), Conf::samplerate);
-  }
+	for(int i = 0; i < MAX_NUM_CHANNELS; ++i)
+	{
+		resampler[i].setup(kit.samplerate(), Conf::samplerate);
+	}
 #endif/*WITH_RESAMPLER*/
 
-  DEBUG(loadkit, "loadkit: Success\n");
+	DEBUG(loadkit, "loadkit: Success\n");
 
-  return true;
+	return true;
 }
 
 bool DrumGizmo::init()
 {
-  if(!ie->init(kit.instruments)) return false;
-  if(!oe->init(kit.channels)) return false;
+	if(!ie->init(kit.instruments))
+	{
+		return false;
+	}
+
+	if(!oe->init(kit.channels))
+	{
+		return false;
+	}
 
-  return true;
+	return true;
 }
 
 void DrumGizmo::handleMessage(Message *msg)
 {
-  DEBUG(msg, "got message.");
-  switch(msg->type()) {
-  case Message::LoadDrumKit:
-    {
-      DEBUG(msg, "got LoadDrumKitMessage message.");
-      LoadDrumKitMessage *m = (LoadDrumKitMessage*)msg;
-      loadkit(m->drumkitfile);
-      //init(true);
-    }
-    break;
-  case Message::LoadMidimap:
-    DEBUG(msg, "got LoadMidimapMessage message.");
-    if(!ie->isMidiEngine()) break;
-    {
-      AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
-      LoadMidimapMessage *m = (LoadMidimapMessage*)msg;
-      bool ret = aim->loadMidiMap(m->midimapfile, kit.instruments);
-      
-      LoadStatusMessageMidimap *ls = new LoadStatusMessageMidimap();
-      ls->success = ret;
-      msghandler.sendMessage(MSGRCV_UI, ls);
-    }
-    break;
-  case Message::EngineSettingsMessage:
-    {
-      bool mmap_loaded = false;
-      std::string mmapfile;
-      if(ie->isMidiEngine()) {
-        AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
-        mmapfile = aim->midimapFile();
-        mmap_loaded = aim->isValid();
-      }
-      
-      EngineSettingsMessage *msg = new EngineSettingsMessage();
-      msg->midimapfile = mmapfile;
-      msg->midimap_loaded = mmap_loaded;
-      msg->drumkitfile = kit.file();
-      msg->drumkit_loaded = loader.isDone();
-      msg->enable_velocity_modifier = Conf::enable_velocity_modifier;
-      msg->velocity_modifier_falloff = Conf::velocity_modifier_falloff;
-      msg->velocity_modifier_weight = Conf::velocity_modifier_weight;
-      msg->enable_velocity_randomiser = Conf::enable_velocity_randomiser;
-      msg->velocity_randomiser_weight = Conf::velocity_randomiser_weight;
-      msghandler.sendMessage(MSGRCV_UI, msg);
-    }
-    break;
-  case Message::ChangeSettingMessage:
-    {
-      ChangeSettingMessage *ch = (ChangeSettingMessage*)msg;
-      switch(ch->name) {
-      case ChangeSettingMessage::enable_velocity_modifier:
-        Conf::enable_velocity_modifier = ch->value;
-        break;
-      case ChangeSettingMessage::velocity_modifier_weight:
-        Conf::velocity_modifier_weight = ch->value;
-        break;
-      case ChangeSettingMessage::velocity_modifier_falloff:
-        Conf::velocity_modifier_falloff = ch->value;
-        break;
-      }
-    }
-    break;
-  default:
-    break;
-  }
+	DEBUG(msg, "got message.");
+	switch(msg->type()) {
+	case Message::LoadDrumKit:
+		{
+			DEBUG(msg, "got LoadDrumKitMessage message.");
+			LoadDrumKitMessage *m = (LoadDrumKitMessage*)msg;
+			loadkit(m->drumkitfile);
+			//init(true);
+		}
+		break;
+	case Message::LoadMidimap:
+		DEBUG(msg, "got LoadMidimapMessage message.");
+		if(!ie->isMidiEngine())
+		{
+			break;
+		}
+		{
+			AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
+			LoadMidimapMessage *m = (LoadMidimapMessage*)msg;
+			bool ret = aim->loadMidiMap(m->midimapfile, kit.instruments);
+
+			LoadStatusMessageMidimap *ls = new LoadStatusMessageMidimap();
+			ls->success = ret;
+			msghandler.sendMessage(MSGRCV_UI, ls);
+		}
+		break;
+	case Message::EngineSettingsMessage:
+		{
+			bool mmap_loaded = false;
+			std::string mmapfile;
+			if(ie->isMidiEngine())
+			{
+				AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
+				mmapfile = aim->midimapFile();
+				mmap_loaded = aim->isValid();
+			}
+
+			EngineSettingsMessage *msg = new EngineSettingsMessage();
+			msg->midimapfile = mmapfile;
+			msg->midimap_loaded = mmap_loaded;
+			msg->drumkitfile = kit.file();
+			msg->drumkit_loaded = loader.isDone();
+			msg->enable_velocity_modifier = Conf::enable_velocity_modifier;
+			msg->velocity_modifier_falloff = Conf::velocity_modifier_falloff;
+			msg->velocity_modifier_weight = Conf::velocity_modifier_weight;
+			msg->enable_velocity_randomiser = Conf::enable_velocity_randomiser;
+			msg->velocity_randomiser_weight = Conf::velocity_randomiser_weight;
+			msghandler.sendMessage(MSGRCV_UI, msg);
+		}
+		break;
+	case Message::ChangeSettingMessage:
+		{
+			ChangeSettingMessage *ch = (ChangeSettingMessage*)msg;
+			switch(ch->name) {
+			case ChangeSettingMessage::enable_velocity_modifier:
+				Conf::enable_velocity_modifier = ch->value;
+				break;
+			case ChangeSettingMessage::velocity_modifier_weight:
+				Conf::velocity_modifier_weight = ch->value;
+				break;
+			case ChangeSettingMessage::velocity_modifier_falloff:
+				Conf::velocity_modifier_falloff = ch->value;
+				break;
+			}
+		}
+		break;
+	default:
+		break;
+	}
 }
 
-bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples)
+void DrumGizmo::setFrameSize(size_t framesize)
 {
-  // Handle engine messages, at most one in each iteration:
-  handleMessages(1);
-
-  ie->pre();
-  oe->pre(nsamples);
-
-  //
-  // Read new events
-  //
-
-  //DEBUG(engine, "Number of active events: %d\n", activeevents[0].size());
-
-  size_t nev;
-  event_t *evs = ie->run(pos, nsamples, &nev);
-
-  for(size_t e = 0; e < nev; e++) {
-    if(evs[e].type == TYPE_ONSET) {
-      Instrument *i = NULL;
-      int d = evs[e].instrument;
-      /*
-        Instruments::iterator it = kit.instruments.begin();
-        while(d-- && it != kit.instruments.end()) {
-        i = &(it->second);
-        it++;
-        }
-      */
-      
-      if(!kit.isValid()) continue;
-
-      if(d < (int)kit.instruments.size()) {
-        i = kit.instruments[d];
-      }
-
-      if(i == NULL || !i->isValid()) {
-        ERR(drumgizmo, "Missing Instrument %d.\n", evs[e].instrument);
-        continue;
-      }
-
-      if(i->group() != "") {
-        // Add event to ramp down all existing events with the same groupname.
-        Channels::iterator j = kit.channels.begin();
-        while(j != kit.channels.end()) {
-          Channel &ch = *j;
-          std::list< Event* >::iterator evs = activeevents[ch.num].begin();
-          while(evs != activeevents[ch.num].end()) {
-            Event *ev = *evs;
-            if(ev->type() == Event::sample) {
-              EventSample *sev = (EventSample*)ev;
-              if(sev->group == i->group() && sev->instrument != i) {
-                sev->rampdown = 3000; // Ramp down 3000 samples
-                // TODO: This must be configurable at some point...
-                // ... perhaps even by instrument (ie. in the xml file)
-                sev->ramp_start = sev->rampdown;
-              }
-            }
-            evs++;
-          }
-          j++;
-        }
-      }
-
-      Sample *s = i->sample(evs[e].velocity, evs[e].offset + pos);
-      
-      if(s == NULL) {
-        ERR(drumgizmo, "Missing Sample.\n");
-        continue;
-      }
-      
-      Channels::iterator j = kit.channels.begin();
-      while(j != kit.channels.end()) {
-        Channel &ch = *j;
-        AudioFile *af = s->getAudioFile(&ch);
-        if(af) {
-          // LAZYLOAD:
-          // DEBUG(drumgizmo,"Requesting preparing of audio file\n");
-          // loader.prepare(af);
-        }
-        if(af == NULL || !af->isValid()) {
-          //DEBUG(drumgizmo,"Missing AudioFile.\n");
-        } else {
-          //DEBUG(drumgizmo, "Adding event %d.\n", evs[e].offset);
-          Event *evt = new EventSample(ch.num, 1.0, af, i->group(), i);
-          evt->offset = (evs[e].offset + pos) * resampler[0].ratio();
-          activeevents[ch.num].push_back(evt);
-        }
-        j++;
-      }
-    }
-    
-    if(evs[e].type == TYPE_STOP) {
-      is_stopping = true;
-    }
-
-    if(is_stopping) {
-      // Count the number of active events.
-      int num_active_events = 0;
-      Channels::iterator j = kit.channels.begin();
-      while(j != kit.channels.end()) {
-        Channel &ch = *j;
-        num_active_events += activeevents[ch.num].size();
-        j++;
-      }
-
-      if(num_active_events == 0) {
-        // No more active events - now we can stop the engine.
-        return false;
-      }
-    }
-    
-  }
-    
-  free(evs);
-
-  //
-  // Write audio
-  //
-#ifdef WITH_RESAMPLER
-  if(Conf::enable_resampling == false ||
-     resampler[0].ratio() == 1.0) { // No resampling needed
-#endif
-    for(size_t c = 0; c < kit.channels.size(); c++) {
-      sample_t *buf = samples;
-      bool internal = false;
-      if(oe->getBuffer(c)) {
-        buf = oe->getBuffer(c);
-        internal = true;
-      }
-      if(buf) {
-        memset(buf, 0, nsamples * sizeof(sample_t));
-
-        getSamples(c, pos, buf, nsamples);
-
-        if(!internal) oe->run(c, samples, nsamples);
-      }
-    }
-#ifdef WITH_RESAMPLER
-  } else {
-  // Resampling needed
-
-  //
-  // NOTE: Channels must be processed one buffer at a time on all channels in
-  // parallel - NOT all buffers on one channel and then all buffer on the next
-  // one since this would mess up the event queue (it would jump back and forth
-  // in time)
-  //
-
-  // Prepare output buffer
-  for(size_t c = 0; c < kit.channels.size(); c++) {
-    resampler[c].setOutputSamples(resampler_output_buffer[c], nsamples);
-  }
-
-  // Process channel data
-  size_t kitpos = pos * resampler[0].ratio();
-  size_t insize = sizeof(resampler_input_buffer[0]) / sizeof(sample_t);
-
-  //printf("ratio: %f\n", resampler[c].ratio());
-  while(resampler[0].getOutputSampleCount() > 0) {
-    for(size_t c = 0; c < kit.channels.size(); c++) {
-      if(resampler[c].getInputSampleCount() == 0) {
-        sample_t *sin = resampler_input_buffer[c];
-        memset(resampler_input_buffer[c], 0,
-               sizeof(resampler_input_buffer[c]));
-        getSamples(c, kitpos, sin, insize);
-
-        resampler[c].setInputSamples(sin, insize);
-      }
-      resampler[c].process();
-    }
-    kitpos += insize;
-  }
-
-  // Write output data to output engine.
-  for(size_t c = 0; c < kit.channels.size(); c++) {
-    oe->run(c, resampler_output_buffer[c], nsamples);
-  }
-
-  }
-#endif/*WITH_RESAMPLER*/
-  
-  ie->post();
-  oe->post(nsamples);
-  
-  pos += nsamples;
+	// If we are resampling override the frame size.
+	if(resampler[0].ratio() != 1)
+	{
+		framesize = RESAMPLER_INPUT_BUFFER;
+	}
+
+	if(this->framesize != framesize)
+	{
+		DEBUG(drumgizmo, "New framesize: %d\n", (int)framesize);
+
+		this->framesize = framesize;
+
+		// Update framesize in drumkitloader and cachemanager:
+		loader.setFrameSize(framesize);
+		audioCache.setFrameSize(framesize);
+	}
+}
 
-  return true;
+void DrumGizmo::setFreeWheel(bool freewheel)
+{
+	// Freewheel = true means that we are bouncing and therefore running faster
+	// than realtime.
+	if(freewheel != this->freewheel)
+	{
+		this->freewheel = freewheel;
+		audioCache.setAsyncMode(!freewheel);
+	}
 }
 
 void DrumGizmo::run(int endpos)
 {
-  size_t pos = 0;
-  size_t nsamples = oe->getBufferSize();
-  sample_t *samples = (sample_t *)malloc(nsamples * sizeof(sample_t));
+	size_t pos = 0;
+	size_t nsamples = oe->getBufferSize();
+	sample_t *samples = (sample_t *)malloc(nsamples * sizeof(sample_t));
+
+	setFrameSize(oe->getBufferSize());
 
-  ie->start();
-  oe->start();
+	ie->start();
+	oe->start();
+
+	while(run(pos, samples, nsamples) == true)
+	{
+		pos += nsamples;
+		if((endpos != -1) && (pos >= (size_t)endpos))
+		{
+			break;
+		}
+	}
+
+	ie->stop();
+	oe->stop();
+
+	free(samples);
+}
+
+bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples)
+{
+	setFrameSize(nsamples);
+
+	// Handle engine messages, at most one in each iteration:
+	handleMessages(1);
+
+	ie->pre();
+	oe->pre(nsamples);
+
+	//
+	// Read new events
+	//
+
+	//DEBUG(engine, "Number of active events: %d\n", activeevents[0].size());
+
+	ie->run(pos, nsamples, events);
+
+	for(const auto& event: events)
+	{
+		if(event.type == TYPE_ONSET)
+		{
+			Instrument *i = nullptr;
+			int d = event.instrument;
+			/*
+			  Instruments::iterator it = kit.instruments.begin();
+			  while(d-- && it != kit.instruments.end())
+			  {
+			  i = &(it->second);
+			  ++it;
+			  }
+			*/
+
+			if(!kit.isValid())
+			{
+				continue;
+			}
+
+			if(d < (int)kit.instruments.size())
+			{
+				i = kit.instruments[d];
+			}
+
+			if(i == nullptr || !i->isValid())
+			{
+				ERR(drumgizmo, "Missing Instrument %d.\n", (int)event.instrument);
+				continue;
+			}
+
+			if(i->group() != "")
+			{
+				// Add event to ramp down all existing events with the same groupname.
+				Channels::iterator j = kit.channels.begin();
+				while(j != kit.channels.end())
+				{
+					Channel &ch = *j;
+					std::list< Event* >::iterator evs = activeevents[ch.num].begin();
+					while(evs != activeevents[ch.num].end())
+					{
+						Event *ev = *evs;
+						if(ev->type() == Event::sample)
+						{
+							EventSample *sev = (EventSample*)ev;
+							if(sev->group == i->group() && sev->instrument != i)
+							{
+								sev->rampdown = 3000; // Ramp down 3000 samples
+								// TODO: This must be configurable at some point...
+								// ... perhaps even by instrument (ie. in the xml file)
+								sev->ramp_start = sev->rampdown;
+							}
+						}
+						++evs;
+					}
+					++j;
+				}
+			}
+
+			Sample *s = i->sample(event.velocity, event.offset + pos);
+
+			if(s == nullptr)
+			{
+				ERR(drumgizmo, "Missing Sample.\n");
+				continue;
+			}
+
+			Channels::iterator j = kit.channels.begin();
+			while(j != kit.channels.end())
+			{
+				Channel &ch = *j;
+				AudioFile *af = s->getAudioFile(&ch);
+				if(af)
+				{
+					// LAZYLOAD:
+					// DEBUG(drumgizmo,"Requesting preparing of audio file\n");
+					// loader.prepare(af);
+				}
+				if(af == nullptr || !af->isValid())
+				{
+					//DEBUG(drumgizmo,"Missing AudioFile.\n");
+				}
+				else
+				{
+					//DEBUG(drumgizmo, "Adding event %d.\n", event.offset);
+					Event *evt = new EventSample(ch.num, 1.0, af, i->group(), i);
+					evt->offset = (event.offset + pos) * resampler[0].ratio();
+					activeevents[ch.num].push_back(evt);
+				}
+				++j;
+			}
+		}
+
+		if(event.type == TYPE_STOP)
+		{
+			is_stopping = true;
+		}
+
+		if(is_stopping)
+		{
+			// Count the number of active events.
+			int num_active_events = 0;
+			Channels::iterator j = kit.channels.begin();
+			while(j != kit.channels.end())
+			{
+				Channel &ch = *j;
+				num_active_events += activeevents[ch.num].size();
+				++j;
+			}
+
+			if(num_active_events == 0)
+			{
+				// No more active events - now we can stop the engine.
+				return false;
+			}
+		}
+
+	}
+
+	events.clear();
+
+	//
+	// Write audio
+	//
+#ifdef WITH_RESAMPLER
+	if((Conf::enable_resampling == false) ||
+	   (resampler[0].ratio() == 1.0)) // No resampling needed
+	{
+#endif
+		for(size_t c = 0; c < kit.channels.size(); ++c)
+		{
+			sample_t *buf = samples;
+			bool internal = false;
+			if(oe->getBuffer(c))
+			{
+				buf = oe->getBuffer(c);
+				internal = true;
+			}
+
+			if(buf)
+			{
+				memset(buf, 0, nsamples * sizeof(sample_t));
+
+				getSamples(c, pos, buf, nsamples);
+
+				if(!internal)
+				{
+					oe->run(c, samples, nsamples);
+				}
+			}
+		}
+#ifdef WITH_RESAMPLER
+	}
+	else
+	{
+		// Resampling needed
+
+		//
+		// NOTE: Channels must be processed one buffer at a time on all channels in
+		// parallel - NOT all buffers on one channel and then all buffer on the next
+		// one since this would mess up the event queue (it would jump back and
+		// forth in time)
+		//
+
+		// Prepare output buffer
+		for(size_t c = 0; c < kit.channels.size(); ++c)
+		{
+			resampler[c].setOutputSamples(resampler_output_buffer[c], nsamples);
+		}
+
+		// Process channel data
+		size_t kitpos = pos * resampler[0].ratio();
+		size_t insize = sizeof(resampler_input_buffer[0]) / sizeof(sample_t);
+
+		while(resampler[0].getOutputSampleCount() > 0)
+		{
+			for(size_t c = 0; c < kit.channels.size(); ++c)
+			{
+				if(resampler[c].getInputSampleCount() == 0)
+				{
+					sample_t *sin = resampler_input_buffer[c];
+					memset(resampler_input_buffer[c], 0,
+					       sizeof(resampler_input_buffer[c]));
+					getSamples(c, kitpos, sin, insize);
+
+					resampler[c].setInputSamples(sin, insize);
+				}
+				resampler[c].process();
+			}
+			kitpos += insize;
+		}
+
+		// Write output data to output engine.
+		for(size_t c = 0; c < kit.channels.size(); ++c)
+		{
+			oe->run(c, resampler_output_buffer[c], nsamples);
+		}
+
+	}
+#endif/*WITH_RESAMPLER*/
 
-  while(run(pos, samples, nsamples) == true) {
-    pos += nsamples;
-    if(endpos != -1 && pos >= (size_t)endpos) break;
-  }
+	ie->post();
+	oe->post(nsamples);
 
-  ie->stop();
-  oe->stop();
+	pos += nsamples;
 
-  free(samples);
+	return true;
 }
 
+#undef SSE // SSE broken for now ... so disable it.
 #ifdef SSE
 #define N 8
-typedef float vNsf __attribute__ ((vector_size(sizeof(float)*N)));
+typedef float vNsf __attribute__ ((vector_size(sizeof(sample_t)*N)));
 #endif/*SSE*/
 
-void DrumGizmo::getSamples(int ch, int pos, sample_t *s, size_t sz)
+void DrumGizmo::getSamples(int ch, int pos, sample_t* s, size_t sz)
 {
-  std::list< Event* >::iterator i = activeevents[ch].begin();
-  while(i != activeevents[ch].end()) {
-    bool removeevent = false;
-
-    Event *event = *i;
-
-    Event::type_t type = event->type();
-    switch(type) {
-    case Event::sample:
-      {
-        EventSample *evt = (EventSample *)event;
-        AudioFile *af = evt->file;
-
-        if(!af->isLoaded() || !af->isValid() || s == NULL) {
-          removeevent = true;
-          break;
-        }
-
-        {
-        MutexAutolock l(af->mutex);
-
-        size_t n = 0;
-        if(evt->offset > (size_t)pos) n = evt->offset - pos;
-        size_t end = sz;
-        if((evt->t + end - n) > af->size) end = af->size - evt->t + n;
-        if(end > sz) end = sz;
-
-        if(evt->rampdown == NO_RAMPDOWN) {
+	std::vector< Event* > erase_list;
+	std::list< Event* >::iterator i = activeevents[ch].begin();
+	for(; i != activeevents[ch].end(); ++i)
+	{
+		bool removeevent = false;
+
+		Event* event = *i;
+
+		Event::type_t type = event->type();
+		switch(type) {
+		case Event::sample:
+			{
+				EventSample& evt = *static_cast<EventSample*>(event);
+				AudioFile& af = *evt.file;
+
+				if(!af.isLoaded() || !af.isValid() || (s == nullptr))
+				{
+					removeevent = true;
+					break;
+				}
+
+				// Don't handle event now is is scheduled for a future iteration?
+				if(evt.offset > (pos + sz))
+				{
+					continue;
+				}
+
+				if(evt.cache_id == CACHE_NOID)
+				{
+					size_t initial_chunksize = (pos + sz) - evt.offset;
+					evt.buffer = audioCache.open(af, initial_chunksize,
+					                             af.filechannel, evt.cache_id);
+					evt.buffer_size = initial_chunksize;
+				}
+
+				{
+					MutexAutolock l(af.mutex);
+
+					size_t n = 0; // default start point is 0.
+
+					// If we are not at offset 0 in current buffer:
+					if(evt.offset > (size_t)pos)
+					{
+						n = evt.offset - pos;
+					}
+
+					size_t end = sz; // default end point is the end of the buffer.
+
+					// Find the end point intra-buffer
+					if((evt.t + end - n) > af.size)
+					{
+						end = af.size - evt.t + n;
+					}
+
+					// This should not be necessary but make absolutely sure that we do
+					// not write over the end of the buffer.
+					if(end > sz)
+					{
+						end = sz;
+					}
+
+					size_t t = 0; // Internal buffer counter
+					if(evt.rampdown == NO_RAMPDOWN)
+					{
+
 #ifdef SSE
-//          DEBUG(drumgizmo,"%d\n", evt->t); fflush(stdout);
-         size_t optend = ((end - n) / N) * N + n;
-         for(; n < optend; n += N) {
-            *(vNsf*)&(s[n]) += *(vNsf*)&(af->data[evt->t]);
-            evt->t += N;
-          }
+						size_t optend = ((end - n) / N) * N + n;
+
+						// Force source addr to be 16 byte aligned...
+						// (might skip 1 or 2 samples)
+						while((size_t)&evt.buffer[t] % 16)
+						{
+							++t;
+						}
+
+						for(; (n < optend) && (t < evt.buffer_size); n += N)
+						{
+							*(vNsf*)&(s[n]) += *(vNsf*)&(evt.buffer[t]);
+							t += N;
+						}
 #endif
-          for(; n < end; n++) {
-            s[n] += af->data[evt->t];
-            evt->t++;
-          }
-        } else { // Ramp down in progress.
-          for(; n < end && evt->rampdown; n++) {
-            float scale = (float)evt->rampdown/(float)evt->ramp_start;
-            s[n] += af->data[evt->t] * scale;
-            evt->t++;
-            evt->rampdown--;
-          }
-          
-          if(evt->rampdown == 0) {
-            removeevent = true; // Down ramp done. Remove event.
-          }
-        }
-
-        if(evt->t >= af->size) { 
-          removeevent = true;
-        }
-
-        }
-      }
-      break;
-    }
-
-    if(removeevent) {
-      delete event;
-      i = activeevents[ch].erase(i);
-      continue;
-    }
-    i++;
-  }
+						for(; (n < end) && (t < evt.buffer_size); ++n)
+						{
+							assert(n >= 0);
+							assert(n < sz);
+
+							assert(t >= 0);
+							assert(t < evt.buffer_size);
+
+							s[n] += evt.buffer[t];
+							++t;
+						}
+					}
+					else
+					{ // Ramp down in progress.
+						for(; (n < end) && (t < evt.buffer_size) && evt.rampdown; ++n)
+						{
+							float scale = (float)evt.rampdown/(float)evt.ramp_start;
+							s[n] += evt.buffer[t] * scale;
+							++t;
+							evt.rampdown--;
+						}
+					}
+
+					// Add internal buffer counter to "global" event counter.
+					evt.t += evt.buffer_size;
+
+					if((evt.t < af.size) && (evt.rampdown != 0))
+					{
+						evt.buffer = audioCache.next(evt.cache_id, evt.buffer_size);
+					}
+					else
+					{
+						removeevent = true;
+					}
+
+					if(removeevent)
+					{
+						audioCache.close(evt.cache_id);
+					}
+				}
+			}
+			break;
+		}
+
+		if(removeevent)
+		{
+			erase_list.push_back(event); // don't delete until we are out of the loop.
+			continue;
+		}
+	}
+
+	for(auto& event : erase_list)
+	{
+		activeevents[ch].remove(event);
+		delete event;
+	}
 }
 
 void DrumGizmo::stop()
 {
-  // engine.stop();
+	// engine.stop();
 }
 
 int DrumGizmo::samplerate()
 {
-  return Conf::samplerate;
+	return Conf::samplerate;
 }
 
 void DrumGizmo::setSamplerate(int samplerate)
 {
-  Conf::samplerate = samplerate;
+	DEBUG(dgeditor, "%s samplerate: %d\n", __PRETTY_FUNCTION__, samplerate);
+	Conf::samplerate = samplerate;
 #ifdef WITH_RESAMPLER
-  for(int i = 0; i < MAX_NUM_CHANNELS; i++) {
-    resampler[i].setup(kit.samplerate(), Conf::samplerate);
-  }
+	for(int i = 0; i < MAX_NUM_CHANNELS; ++i)
+	{
+		resampler[i].setup(kit.samplerate(), Conf::samplerate);
+	}
+	if(resampler[0].ratio() != 1)
+	{
+		setFrameSize(RESAMPLER_INPUT_BUFFER);
+	}
 #endif/*WITH_RESAMPLER*/
-
 }
 
 std::string float2str(float a)
 {
-  char buf[256];
-  snprintf_nol(buf, sizeof(buf) - 1, "%f", a);
-  return buf;
+	char buf[256];
+	snprintf_nol(buf, sizeof(buf) - 1, "%f", a);
+	return buf;
 }
 
 std::string bool2str(bool a)
 {
-  return a?"true":"false";
+	return a?"true":"false";
 }
 
 float str2float(std::string a)
 {
-  if(a == "") return 0.0;
-  return atof_nol(a.c_str());
+	if(a == "")
+	{
+		return 0.0;
+	}
+
+	return atof_nol(a.c_str());
 }
 
 std::string DrumGizmo::configString()
 {
-  std::string mmapfile;
-  if(ie->isMidiEngine()) {
-    AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
-    mmapfile = aim->midimapFile();
-  }
-
-  return
-    "<config>\n"
-    "  <value name=\"drumkitfile\">" + kit.file() + "</value>\n"
-    "  <value name=\"midimapfile\">" + mmapfile + "</value>\n"
-    "  <value name=\"enable_velocity_modifier\">" +
-    bool2str(Conf::enable_velocity_modifier) + "</value>\n"
-    "  <value name=\"velocity_modifier_falloff\">" +
-    float2str(Conf::velocity_modifier_falloff) + "</value>\n"
-    "  <value name=\"velocity_modifier_weight\">" +
-    float2str(Conf::velocity_modifier_weight) + "</value>\n"
-    "  <value name=\"enable_velocity_randomiser\">" +
-    bool2str(Conf::enable_velocity_randomiser) + "</value>\n"
-    "  <value name=\"velocity_randomiser_weight\">" +
-    float2str(Conf::velocity_randomiser_weight) + "</value>\n"
-    "</config>";
+	std::string mmapfile;
+	if(ie->isMidiEngine())
+	{
+		AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
+		mmapfile = aim->midimapFile();
+	}
+
+	return
+		"<config>\n"
+		"  <value name=\"drumkitfile\">" + kit.file() + "</value>\n"
+		"  <value name=\"midimapfile\">" + mmapfile + "</value>\n"
+		"  <value name=\"enable_velocity_modifier\">" +
+		bool2str(Conf::enable_velocity_modifier) + "</value>\n"
+		"  <value name=\"velocity_modifier_falloff\">" +
+		float2str(Conf::velocity_modifier_falloff) + "</value>\n"
+		"  <value name=\"velocity_modifier_weight\">" +
+		float2str(Conf::velocity_modifier_weight) + "</value>\n"
+		"  <value name=\"enable_velocity_randomiser\">" +
+		bool2str(Conf::enable_velocity_randomiser) + "</value>\n"
+		"  <value name=\"velocity_randomiser_weight\">" +
+		float2str(Conf::velocity_randomiser_weight) + "</value>\n"
+		"</config>";
 }
 
-
 bool DrumGizmo::setConfigString(std::string cfg)
 {
-  DEBUG(config, "Load config: %s\n", cfg.c_str());
-
-  std::string dkf;
-  ConfigParser p;
-  if(p.parse(cfg)) {
-    ERR(drumgizmo, "Config parse error.\n");
-    return false;
-  }
-
-  if(p.value("enable_velocity_modifier") != "") {
-    Conf::enable_velocity_modifier =
-      p.value("enable_velocity_modifier") == "true";
-  }
-
-  if(p.value("velocity_modifier_falloff") != "") {
-    Conf::velocity_modifier_falloff =
-      str2float(p.value("velocity_modifier_falloff"));
-  }
-
-  if(p.value("velocity_modifier_weight") != "") {
-    Conf::velocity_modifier_weight =
-      str2float(p.value("velocity_modifier_weight"));
-  }
-
-  if(p.value("enable_velocity_randomiser") != "") {
-    Conf::enable_velocity_randomiser =
-      p.value("enable_velocity_randomiser") == "true";
-  }
-
-  if(p.value("velocity_randomiser_weight") != "") {
-    Conf::velocity_randomiser_weight =
-      str2float(p.value("velocity_randomiser_weight"));
-  }
-
-  if(p.value("enable_resampling") != "") {
-    Conf::enable_resampling =
-      p.value("enable_resampling") == "true";
-  }
-
-  std::string newkit = p.value("drumkitfile");
-  if(newkit != "" && kit.file() != newkit) {
-    /*
-    if(!loadkit(p.values["drumkitfile"])) return false;
-    init(true);
-    */
-    LoadDrumKitMessage *msg = new LoadDrumKitMessage();
-    msg->drumkitfile = newkit;
-    msghandler.sendMessage(MSGRCV_ENGINE, msg);
-  }
-
-  std::string newmidimap = p.value("midimapfile");
-  if(newmidimap != "") {
-    //midimapfile = newmidimap;
-    LoadMidimapMessage *msg = new LoadMidimapMessage();
-    msg->midimapfile = newmidimap;
-    msghandler.sendMessage(MSGRCV_ENGINE, msg);
-  }
-
-  return true;
-}
-
-#ifdef TEST_DRUMGIZMO
-//deps: instrument.cc sample.cc channel.cc audiofile.cc drumkit.cc drumkitparser.cc configuration.cc saxparser.cc instrumentparser.cc path.cc
-//cflags: $(SNDFILE_CFLAGS) $(EXPAT_CFLAGS) -I../include -DSSE -msse -msse2 -msse3
-//libs: $(SNDFILE_LIBS) $(EXPAT_LIBS)
-#include "test.h"
-
-static float f(size_t x)
-{
-  return x + 1.0;
-}
-
-class AITest : public AudioInputEngine {
-public:
-  bool init(Instruments &instruments) { return true; }
-  void setParm(std::string parm, std::string value) {}
-  bool start() { return true; }
-  void stop() {}
-  void pre() {}
-  event_t *run(size_t pos, size_t len, size_t *nevents)
-  {
-    event_t *e = NULL;
-    *nevents = 0;
-
-    if(pos <= offset && offset < pos + len) {
-      e = new event_t;
-
-      e->type = TYPE_ONSET;
-      e->instrument = 0;
-      e->velocity = 1.0;
-      e->offset = offset - pos;
-
-      *nevents = 1;
-    }
-    return e;
-  }
-  void post() {}
-  size_t offset;
-};
-
-class AOTest : public AudioOutputEngine {
-public:
-  bool init(Channels channels) { return true; }
-  void setParm(std::string parm, std::string value) {}
-  bool start() { return true; }
-  void stop() {}
-  void pre(size_t nsamples) {}
-  void run(int ch, sample_t *samples, size_t nsamples)
-  {
-  }
-  void post(size_t nsamples) {}
-};
-
-const char xml_kit[] =
-  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-  "<drumkit name=\"test\" description=\"\">\n"
-  "  <channels>\n"
-  "    <channel name=\"ch1\"/>\n"
-  "  </channels>\n"
-  "  <instruments>\n"
-  "    <instrument name=\"instr1\" file=\"instr1.xml\">\n"
-  "      <channelmap in=\"ch1\" out=\"ch1\"/>\n"
-  "		</instrument>\n"
-  "	</instruments>\n"
-  "</drumkit>";
-
-const char xml_instr[] =
-  "<?xml version='1.0' encoding='UTF-8'?>\n"
-  "<instrument name=\"instr1\">\n"
-  " <samples>\n"
-  "  <sample name=\"sample1\">\n"
-  "   <audiofile channel=\"ch1\" file=\"instr1.wav\"/>\n"
-  "  </sample>\n"
-  " </samples>\n"
-  " <velocities>\n"
-  "  <velocity lower=\"0\" upper=\"1.0\">\n"
-  "   <sampleref name=\"sample1\"/>\n"
-  "  </velocity>\n"
-  " </velocities>\n"
-  "</instrument>";
-
-#define PCM_SIZE 100
-
-void createTestKit()
-{
-  FILE *fp;
-  fp = fopen("/tmp/kit.xml", "w");
-  fwrite(xml_kit, strlen(xml_kit), 1, fp);
-  fclose(fp);
-
-  fp = fopen("/tmp/instr1.xml", "w");
-  fwrite(xml_instr, strlen(xml_instr), 1, fp);
-  fclose(fp);
-
-  SF_INFO sf_info;
-  sf_info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
-  sf_info.samplerate = 44100;
-  sf_info.channels = 1;
-
-  SNDFILE *fh = sf_open("/tmp/instr1.wav", SFM_WRITE, &sf_info);
-  if(!fh) {
-    printf("Error: %s\n", sf_strerror(fh));
-  }
-
-  size_t size = PCM_SIZE;
-  sample_t samples[size];
-
-  for(size_t i = 0; i < size; i++) {
-    samples[i] = f(i);//(float)i / (float)size;
-  }
-
-  sf_write_float(fh, samples, size); 
-  sf_close(fh);
-}
-
-void deleteTestKit()
-{
-  unlink("/tmp/kit.xml");
-  unlink("/tmp/instr1.xml");
-  unlink("/tmp/instr1.wav");
+	DEBUG(config, "Load config: %s\n", cfg.c_str());
+
+	std::string dkf;
+	ConfigParser p;
+	if(p.parse(cfg))
+	{
+	 ERR(drumgizmo, "Config parse error.\n");
+	 return false;
+	}
+
+	if(p.value("enable_velocity_modifier") != "")
+	{
+		Conf::enable_velocity_modifier =
+			p.value("enable_velocity_modifier") == "true";
+	}
+
+	if(p.value("velocity_modifier_falloff") != "")
+	{
+		Conf::velocity_modifier_falloff =
+			str2float(p.value("velocity_modifier_falloff"));
+	}
+
+	if(p.value("velocity_modifier_weight") != "")
+	{
+		Conf::velocity_modifier_weight =
+			str2float(p.value("velocity_modifier_weight"));
+	}
+
+	if(p.value("enable_velocity_randomiser") != "")
+	{
+		Conf::enable_velocity_randomiser =
+			p.value("enable_velocity_randomiser") == "true";
+	}
+
+	if(p.value("velocity_randomiser_weight") != "")
+	{
+		Conf::velocity_randomiser_weight =
+			str2float(p.value("velocity_randomiser_weight"));
+	}
+
+	if(p.value("enable_resampling") != "")
+	{
+		Conf::enable_resampling =
+			p.value("enable_resampling") == "true";
+	}
+
+	std::string newkit = p.value("drumkitfile");
+	if(newkit != "" && kit.file() != newkit)
+	{
+		/*
+		  if(!loadkit(p.values["drumkitfile"]))
+		  {
+		  return false;
+		  }
+		  init(true);
+		*/
+		LoadDrumKitMessage *msg = new LoadDrumKitMessage();
+		msg->drumkitfile = newkit;
+		msghandler.sendMessage(MSGRCV_ENGINE, msg);
+	}
+
+	std::string newmidimap = p.value("midimapfile");
+	if(newmidimap != "")
+	{
+		//midimapfile = newmidimap;
+		LoadMidimapMessage *msg = new LoadMidimapMessage();
+		msg->midimapfile = newmidimap;
+		msghandler.sendMessage(MSGRCV_ENGINE, msg);
+	}
+
+	return true;
 }
-
-TEST_BEGIN;
-
-createTestKit();
-
-size_t size = PCM_SIZE;
-//for(size_t chunksz = 1; chunksz < size + 1; chunksz++) {
-size_t chunksz = 16; {
-  sample_t samples[chunksz];
-
-  for(size_t offset = 0; offset < chunksz + size + 1; offset++) {
-    //size_t offset = 5; {
-    for(size_t padding = 0; padding < chunksz + size + offset + 1; padding++) {
-      //size_t padding = 2; {
-      TEST_MSG("Values (offset %d, padding %d, chunksz %d)",
-               offset, padding, chunksz);
-      
-      AOTest ao;
-      AITest ai; ai.offset = offset;
-      DrumGizmo dg(&ao, &ai);
-      dg.loadkit("/tmp/kit.xml");
-      
-      size_t pos = 0;
-      //      sample_t samples[chunksz];
-      while(pos < offset + size + padding) {
-        dg.run(pos, samples, chunksz);
-        
-        float err = 0;
-        size_t errcnt = 0;
-        for(size_t i = 0; i < chunksz && pos < offset + size + padding; i++) {
-          float val = 0.0;
-          if(pos >= offset && pos < (offset + size)) val = f(pos - offset);
-          float diff = samples[i] - val;
-          /*
-          if(diff != 0.0) {
-            TEST_EQUAL_FLOAT(samples[i], val,
-                           "samples[%d] ?= val, pos %d", i, pos);
-          }
-          */
-          if(diff != 0.0) errcnt++;
-
-          err += fabs(diff);
-          pos++;
-        }
-
-        TEST_EQUAL_FLOAT(err, 0.0,
-                         "Compare error (offset %d, padding %d, chunksz %d)",
-                         offset, padding, chunksz);
-        TEST_EQUAL_INT(errcnt, 0,
-                       "Compare count (offset %d, padding %d, chunksz %d)",
-                       offset, padding, chunksz);
-      }
-
-    }
-  }
-}
-
-deleteTestKit();
-
-TEST_END;
-
-#endif/*TEST_DRUMGIZMO*/
diff --git a/src/drumgizmo.h b/src/drumgizmo.h
index f8d45f5..632d5fc 100644
--- a/src/drumgizmo.h
+++ b/src/drumgizmo.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_DRUMGIZMO_H__
-#define __DRUMGIZMO_DRUMGIZMO_H__
+#pragma once
 
 #include <string>
 #include <list>
@@ -36,8 +35,10 @@
 #include "events.h"
 #include "audiofile.h"
 #include "drumkit.h"
+#include "memchecker.h"
 
 #include "drumkitloader.h"
+#include "audiocache.h"
 
 #include "mutex.h"
 
@@ -47,56 +48,64 @@
 
 #include "chresampler.h"
 
+#include "configfile.h"
+
 #define MAX_NUM_CHANNELS 64
+#define REFSFILE "refs.conf"
+#define RESAMPLER_INPUT_BUFFER 64
 
-class DrumGizmo : public MessageReceiver {
+class DrumGizmo
+	: public MessageReceiver
+{
 public:
-  DrumGizmo(AudioOutputEngine *outputengine, AudioInputEngine *inputengine);
-  virtual ~DrumGizmo();
+	DrumGizmo(AudioOutputEngine *outputengine, AudioInputEngine *inputengine);
+	virtual ~DrumGizmo();
 
-  bool loadkit(std::string kitfile);
+	bool loadkit(std::string kitfile);
 
-  bool init();
+	bool init();
 
-  /**
-   * @param endpos number of samples to process, -1 := never stop.
-   */
-  void run(int endpos);
-  bool run(size_t pos, sample_t *samples, size_t nsamples);
-  void stop();
+	void run(int endpos);
+	bool run(size_t pos, sample_t *samples, size_t nsamples);
+	void stop();
 
-  void getSamples(int ch, int pos, sample_t *s, size_t sz);
+	void getSamples(int ch, int pos, sample_t *s, size_t sz);
 
-  std::string configString();
-  bool setConfigString(std::string cfg);
+	std::string configString();
+	bool setConfigString(std::string cfg);
 
-  void handleMessage(Message *msg);
+	void handleMessage(Message *msg);
 
-  int samplerate();
-  void setSamplerate(int samplerate);
+	int samplerate();
+	void setSamplerate(int samplerate);
 
-private:
-  DrumKitLoader loader;
+	void setFrameSize(size_t framesize);
 
-  Mutex mutex;
-  bool is_stopping; ///< Is set to true when a TYPE_STOP event has been seen.
+	void setFreeWheel(bool freewheel);
 
-  AudioOutputEngine *oe;
-  AudioInputEngine *ie;
+protected:
+	DrumKitLoader loader;
 
-  std::list< Event* > activeevents[MAX_NUM_CHANNELS];
+	Mutex mutex;
+	bool is_stopping; ///< Is set to true when a TYPE_STOP event has been seen.
 
-  CHResampler resampler[MAX_NUM_CHANNELS];
-  sample_t resampler_output_buffer[MAX_NUM_CHANNELS][4096];
-  sample_t resampler_input_buffer[MAX_NUM_CHANNELS][64];
+	AudioOutputEngine *oe;
+	AudioInputEngine *ie;
 
-  std::map<std::string, AudioFile *> audiofiles;
+	std::list< Event* > activeevents[MAX_NUM_CHANNELS];
 
-#ifdef TEST_DRUMGIZMO
-public:
-#endif
-  DrumKit kit;
-};
+	CHResampler resampler[MAX_NUM_CHANNELS];
+	sample_t resampler_output_buffer[MAX_NUM_CHANNELS][4096];
+	sample_t resampler_input_buffer[MAX_NUM_CHANNELS][RESAMPLER_INPUT_BUFFER];
 
+	std::map<std::string, AudioFile *> audiofiles;
 
-#endif/*__DRUMGIZMO_DRUMGIZMO_H__*/
+	AudioCache audioCache;
+	DrumKit kit;
+	MemChecker memchecker;
+
+	size_t framesize;
+	bool freewheel;
+	
+	std::vector<event_t> events;
+};
diff --git a/src/drumkit.cc b/src/drumkit.cc
index 4d75f3b..d8596c7 100644
--- a/src/drumkit.cc
+++ b/src/drumkit.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/drumkit.h b/src/drumkit.h
index 04b2c56..24fce99 100644
--- a/src/drumkit.h
+++ b/src/drumkit.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -56,13 +56,13 @@ public:
   size_t samplerate();
 
 private:
-  void *magic;
+	void *magic{nullptr};
 
   std::string _file;
 
   std::string _name;
   std::string _description;
-  size_t _samplerate;
+	size_t _samplerate{0};
 
   VersionStr _version;
 };
diff --git a/src/drumkitloader.cc b/src/drumkitloader.cc
index bf01db6..ff489ea 100644
--- a/src/drumkitloader.cc
+++ b/src/drumkitloader.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -32,123 +32,168 @@
 #include "drumgizmo.h"
 
 DrumKitLoader::DrumKitLoader()
-  : semaphore("drumkitloader")
+	: semaphore("drumkitloader")
+	, framesize(0)
 {
-  run();
-  run_semaphore.wait(); // Wait for the thread to actually start.
+	run();
+	run_semaphore.wait(); // Wait for the thread to actually start.
 }
 
 DrumKitLoader::~DrumKitLoader()
 {
-  if(running) {
-    stop();
-  }
+	DEBUG(loader, "~DrumKitLoader() pre\n");
+
+	if(running)
+	{
+		framesize_semaphore.post();
+		stop();
+	}
+
+	DEBUG(loader, "~DrumKitLoader() post\n");
 }
 
 void DrumKitLoader::stop()
 {
-  {
-    MutexAutolock l(mutex);
-    load_queue.clear();
-  }
-
-  running = false;
-  semaphore.post();
-  wait_stop();
+	{
+		MutexAutolock l(mutex);
+		load_queue.clear();
+	}
+
+	running = false;
+	semaphore.post();
+	wait_stop();
 }
 
 void DrumKitLoader::skip()
 {
-  MutexAutolock l(mutex);  
-  load_queue.clear();
+	MutexAutolock l(mutex);
+	load_queue.clear();
+}
+
+void DrumKitLoader::setFrameSize(size_t framesize)
+{
+	DEBUG(loader, "%s pre\n", __PRETTY_FUNCTION__);
+
+	{
+		MutexAutolock l(mutex);
+		this->framesize = framesize;
+		framesize_semaphore.post(); // Signal that the framesize has been set.
+	}
+
+	DEBUG(loader, "%s post\n", __PRETTY_FUNCTION__);
 }
 
 bool DrumKitLoader::isDone()
 {
-  MutexAutolock l(mutex);
-  return load_queue.size() == 0;
+	MutexAutolock l(mutex);
+	return load_queue.size() == 0;
 }
 
 void DrumKitLoader::loadKit(DrumKit *kit)
 {
-  MutexAutolock l(mutex);
-
-  DEBUG(loader, "Create AudioFile queue from DrumKit\n");
-
-  total_num_audiofiles = 0;// For UI Progress Messages
-
-  { // Count total number of files that need loading:
-    Instruments::iterator i = kit->instruments.begin();
-    while(i != kit->instruments.end()) {
-      Instrument *instr = *i;
-      total_num_audiofiles += instr->audiofiles.size();
-      i++;
-    }
-  }
-
-  fraction = total_num_audiofiles / 200;
-  if(fraction == 0) fraction = 1;
-
-  { // Now actually queue them for loading:
-    Instruments::iterator i = kit->instruments.begin();
-    while(i != kit->instruments.end()) {
-      Instrument *instr = *i;
-      
-      std::vector<AudioFile*>::iterator af = instr->audiofiles.begin();
-      while(af != instr->audiofiles.end()) {
-        AudioFile *audiofile = *af;
-        load_queue.push_back(audiofile);
-        af++;
-      }
-  
-      i++;
-    }
-  }
-
-  loaded = 0; // For UI Progress Messages
-
-  DEBUG(loader, "Queued %d (size: %d) AudioFiles for loading.\n",
-        (int)total_num_audiofiles, (int)load_queue.size());
-
-  semaphore.post(); // Start loader loop.
+	MutexAutolock l(mutex);
+
+	DEBUG(loader, "Create AudioFile queue from DrumKit\n");
+
+	total_num_audiofiles = 0;// For UI Progress Messages
+
+	{ // Count total number of files that need loading:
+		Instruments::iterator i = kit->instruments.begin();
+		while(i != kit->instruments.end())
+		{
+			Instrument *instr = *i;
+			total_num_audiofiles += instr->audiofiles.size();
+			++i;
+		}
+	}
+
+	fraction = total_num_audiofiles / 200;
+	if(fraction == 0)
+	{
+		fraction = 1;
+	}
+
+	{ // Now actually queue them for loading:
+		Instruments::iterator i = kit->instruments.begin();
+		while(i != kit->instruments.end())
+		{
+			Instrument *instr = *i;
+
+			std::vector<AudioFile*>::iterator af = instr->audiofiles.begin();
+			while(af != instr->audiofiles.end())
+			{
+				AudioFile *audiofile = *af;
+				load_queue.push_back(audiofile);
+				af++;
+			}
+
+			++i;
+		}
+	}
+
+	loaded = 0; // For UI Progress Messages
+
+	DEBUG(loader, "Queued %d (size: %d) AudioFiles for loading.\n",
+	      (int)total_num_audiofiles, (int)load_queue.size());
+
+	semaphore.post(); // Start loader loop.
 }
 
 void DrumKitLoader::thread_main()
 {
-  running = true;
-
-  run_semaphore.post(); // Signal that the thread has been started.
-
-  while(running) {
-    size_t size;
-    {
-      MutexAutolock l(mutex);
-      size = load_queue.size();
-    }
-
-    // Only sleep if queue is empty.
-    if(size == 0) semaphore.wait();
-
-    std::string filename;
-    {
-      MutexAutolock l(mutex);
-      if(load_queue.size() == 0) continue;
-      AudioFile *audiofile = load_queue.front();
-      load_queue.pop_front();
-      filename = audiofile->filename;
-      audiofile->load();
-    }
-
-    loaded++;
-
-    if(loaded % fraction == 0 || loaded == total_num_audiofiles) {
-      LoadStatusMessage *ls = new LoadStatusMessage();
-      ls->number_of_files = total_num_audiofiles;
-      ls->numer_of_files_loaded = loaded;
-      ls->current_file = filename;
-      msghandler.sendMessage(MSGRCV_UI, ls);
-    }
-  }
-
-  DEBUG(loader, "Loader thread finished.");
+	running = true;
+
+	run_semaphore.post(); // Signal that the thread has been started.
+
+	framesize_semaphore.wait(); // Wait until the framesize has been set.
+
+	while(running)
+	{
+		size_t size;
+		{
+			MutexAutolock l(mutex);
+			size = load_queue.size();
+		}
+
+		// Only sleep if queue is empty.
+		if(size == 0)
+		{
+			semaphore.wait();
+		}
+
+		std::string filename;
+		{
+			MutexAutolock l(mutex);
+			if(load_queue.size() == 0)
+			{
+				continue;
+			}
+			AudioFile *audiofile = load_queue.front();
+			load_queue.pop_front();
+			filename = audiofile->filename;
+			int preload_size = framesize * CHUNK_MULTIPLIER + framesize;
+			if(preload_size < 1024)
+			{
+				preload_size = 1024;
+			}
+
+			// Note: Remove this line to enable diskstreaming
+			preload_size = ALL_SAMPLES;
+
+			audiofile->load(preload_size);
+		}
+
+		loaded++;
+
+		if(loaded % fraction == 0 || loaded == total_num_audiofiles)
+		{
+			LoadStatusMessage *ls = new LoadStatusMessage();
+			ls->number_of_files = total_num_audiofiles;
+			ls->numer_of_files_loaded = loaded;
+			ls->current_file = filename;
+			msghandler.sendMessage(MSGRCV_UI, ls);
+		}
+	}
+
+	DEBUG(loader, "Loader thread finished.");
 }
diff --git a/src/drumkitloader.h b/src/drumkitloader.h
index 2c0ea8e..3656839 100644
--- a/src/drumkitloader.h
+++ b/src/drumkitloader.h
@@ -11,21 +11,20 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_DRUMKITLOADER_H__
-#define __DRUMGIZMO_DRUMKITLOADER_H__
+#pragma once
 
 #include <string>
 #include <list>
@@ -36,64 +35,51 @@
 
 #include "drumkit.h"
 
-/**
- * This class is responsible for loading the drumkits in its own thread.
- * All interaction calls are simply modifying queues and not doing any
- * work in-sync with the caller.
- * This means that if loadKit(...) is called, one cannot assume that the
- * drumkit has actually been loaded when the call returns.
- */
-class DrumKitLoader : public Thread {
+//! This class is responsible for loading the drumkits in its own thread.
+//! All interaction calls are simply modifying queues and not doing any
+//! work in-sync with the caller.
+//! This means that if loadKit(...) is called, one cannot assume that the
+//! drumkit has actually been loaded when the call returns.
+class DrumKitLoader
+	: public Thread
+{
 public:
-  /**
-   * The constrcutor starts the loader thread.
-   */
-  DrumKitLoader();
+	//! The constrcutor starts the loader thread.
+	DrumKitLoader();
 
-  /**
-   * The destructor signals the thread to stop and waits to merge before
-   * returning (ie. deleting the object will garantuee that the thread has
-   * been stopped).
-   */
-  ~DrumKitLoader();
+	//! The destructor signals the thread to stop and waits to merge before
+	//! returning (ie. deleting the object will garantuee that the thread has
+	//! been stopped).
+	~DrumKitLoader();
 
-  /**
-   * Signal the loader to start loading all audio files contained in kit.
-   * All other AudioFiles in queue will be removed before the new ones are
-   * scheduled.
-   */
-  void loadKit(DrumKit *kit);
-  
-  // I have no idea what this does..
-  //void reset(AudioFile* af);
+	//! Signal the loader to start loading all audio files contained in kit.
+	//! All other AudioFiles in queue will be removed before the new ones are
+	//! scheduled.
+	void loadKit(DrumKit *kit);
 
-  void thread_main();
+	void thread_main();
 
-  /**
-   * Simply reports if the load queue is empty (i.e. all AudioFiles has been
-   * loaded).
-   */
-  bool isDone();
+	//! Simply reports if the load queue is empty (i.e. all AudioFiles has been
+	//! loaded).
+	bool isDone();
 
-  /**
-   * Signal the loader to stop and wait until it has.
-   */
-  void stop();
+	//! Signal the loader to stop and wait until it has.
+	void stop();
 
-  /**
-   * Skip all queued AudioFiles.
-   */
-  void skip();
+	//! Skip all queued AudioFiles.
+	void skip();
 
-private:
-  Semaphore run_semaphore;
-  Semaphore semaphore;
-  Mutex mutex;
-  volatile bool running;
-  std::list<AudioFile*> load_queue;
-  size_t total_num_audiofiles;
-  size_t fraction;
-  size_t loaded;
-};
+	void setFrameSize(size_t framesize);
 
-#endif/*__DRUMGIZMO_DRUMKITLOADER_H__*/
+protected:
+	Semaphore run_semaphore;
+	Semaphore semaphore;
+	Semaphore framesize_semaphore;
+	Mutex mutex;
+	volatile bool running{false};
+	std::list<AudioFile*> load_queue;
+	size_t total_num_audiofiles{0};
+	size_t fraction{1};
+	size_t loaded{0};
+	size_t framesize{0};
+};
diff --git a/src/drumkitparser.cc b/src/drumkitparser.cc
index 2c21c52..f0fddf8 100644
--- a/src/drumkitparser.cc
+++ b/src/drumkitparser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -32,10 +32,22 @@
 
 #include "instrumentparser.h"
 #include "path.h"
+#include "drumgizmo.h"
 
-DrumKitParser::DrumKitParser(const std::string &kitfile, DrumKit &k)
+DrumKitParser::DrumKitParser(const std::string &file, DrumKit &k)
   : kit(k)
+  , refs(REFSFILE)
 {
+  std::string kitfile = file;
+
+  if(refs.load()) {
+    if(file.size() > 1 && file[0] == '@') {
+      kitfile = refs.getValue(file.substr(1));
+    }
+  } else {
+    ERR(drumkitparser, "Error reading refs.conf");
+  }
+
   //  instr = NULL;
   path = getPath(kitfile);
 
@@ -45,7 +57,7 @@ DrumKitParser::DrumKitParser(const std::string &kitfile, DrumKit &k)
 
   if(!fd) return;
 
-  kit._file = kitfile;
+  kit._file = file;
 }
 
 DrumKitParser::~DrumKitParser()
diff --git a/src/drumkitparser.h b/src/drumkitparser.h
index 907b09d..b59e81b 100644
--- a/src/drumkitparser.h
+++ b/src/drumkitparser.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -29,6 +29,7 @@
 
 #include "saxparser.h"
 #include "drumkit.h"
+#include "configfile.h"
 
 class DrumKitParser : public SAXParser {
 public:
@@ -52,6 +53,8 @@ private:
   std::string instr_file;
   std::string instr_name;
   std::string instr_group;
+
+  ConfigFile refs;
 };
 
 #endif/*__DRUMGIZMO_DRUMKITPARSER_H__*/
diff --git a/src/events.cc b/src/events.cc
index c72646a..8149c08 100644
--- a/src/events.cc
+++ b/src/events.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/events.h b/src/events.h
index fa0147b..a965bd3 100644
--- a/src/events.h
+++ b/src/events.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -35,6 +35,7 @@
 #include "audiofile.h"
 #include "audio.h"
 #include "mutex.h"
+#include "audiocache.h"
 
 typedef unsigned int timepos_t;
 
@@ -58,6 +59,7 @@ public:
   EventSample(channel_t c, float g, AudioFile *af, std::string grp,
               void *instr)
   {
+    cache_id = CACHE_NOID;
     channel = c;
     gain = g;
     t = 0;
@@ -70,6 +72,10 @@ public:
 
   Event::type_t type() { return Event::sample; }
 
+  cacheid_t cache_id;
+  sample_t *buffer;
+  size_t buffer_size;
+
   float gain;
   unsigned int t;
   AudioFile *file;
diff --git a/src/instrument.cc b/src/instrument.cc
index d0b25aa..96a6bfd 100644
--- a/src/instrument.cc
+++ b/src/instrument.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/instrument.h b/src/instrument.h
index 416b6c2..e880d8d 100644
--- a/src/instrument.h
+++ b/src/instrument.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/instrumentparser.cc b/src/instrumentparser.cc
index 1f25bc7..b097c8c 100644
--- a/src/instrumentparser.cc
+++ b/src/instrumentparser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -90,6 +90,7 @@ void InstrumentParser::startTag(std::string name,
       DEBUG(instrparser, "Instrument power set to %f\n", power);
     }
     
+    // TODO get rid of new or delete it properly
     s = new Sample(attr["name"], power);
   }
 
@@ -117,6 +118,7 @@ void InstrumentParser::startTag(std::string name,
         }
     }
     filechannel = filechannel - 1; // 1-based in file, but zero-based internally
+    // TODO do those next two lines correspond with proper deletes? If not fix it.
     AudioFile *af = new AudioFile(path + "/" + attr["file"], filechannel);
     InstrumentChannel *ch = new InstrumentChannel(attr["channel"]);
     channellist.push_back(ch);
diff --git a/src/instrumentparser.h b/src/instrumentparser.h
index 2a7a9c9..e08b54c 100644
--- a/src/instrumentparser.h
+++ b/src/instrumentparser.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -47,14 +47,14 @@ protected:
   int readData(char *data, size_t size);
 
 private:
-  FILE *fd;
+	FILE *fd{nullptr};
   Instrument &instrument;
-  Sample *s;
+	Sample *s{nullptr};
 
   std::string path;
 
-  level_t lower;
-  level_t upper;
+	level_t lower{0};
+	level_t upper{0};
 };
 
 #endif/*__DRUMGIZMO_INSTRUMENTPARSER_H__*/
diff --git a/src/memchecker.cc b/src/memchecker.cc
new file mode 100644
index 0000000..1110e69
--- /dev/null
+++ b/src/memchecker.cc
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            memchecker.cc
+ *
+ *  Sat Jan 16 18:27:52 CET 2016
+ *  Copyright 2016 André Nusser
+ *  andre.nusser at googlemail.com
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include "memchecker.h"
+
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#else
+#include <sys/sysinfo.h>
+#endif
+#include <sndfile.h>
+#include <hugin.hpp>
+
+bool MemChecker::enoughFreeMemory(const DrumKit& drumkit) const
+{
+	uint64_t free_memory = calcFreeMemory();
+	uint64_t needed_memory = calcNeededMemory(drumkit);
+
+	return free_memory >= needed_memory;
+}
+
+uint64_t MemChecker::calcFreeMemory() const
+{
+	uint64_t free_memory = 0;
+
+	// Platform specific calculation of the amount of free memory.
+#ifdef WIN32
+	MEMORYSTATUSEX status;
+	status.dwLength = sizeof(status);
+	GlobalMemoryStatusEx(&status);
+	free_memory = status.ullAvailPhys;
+#else
+	struct sysinfo sys_info;
+	sysinfo(&sys_info);
+	free_memory = sys_info.freeram * sys_info.mem_unit;
+#endif
+
+	DEBUG(memchecker, "Calculated %" PRIu64 " free memory.\n", free_memory);
+
+	return free_memory;
+}
+
+uint64_t MemChecker::calcNeededMemory(const DrumKit& drumkit) const
+{
+	uint64_t needed_memory = 0;
+
+	// Calculate memory usage of all instruments of drumkit.
+	for(auto instrument : drumkit.instruments)
+	{
+		const auto& audiofiles = instrument->audiofiles;
+
+		// Calculate memory usage of all audiofiles.
+		for(auto audiofile : audiofiles)
+		{
+			needed_memory += calcBytesPerChannel(audiofile->filename);
+		}
+	}
+
+	DEBUG(memchecker, "Calculated %" PRIu64 " needed memory.\n", needed_memory);
+
+	return needed_memory;
+}
+
+uint64_t MemChecker::calcBytesPerChannel(const std::string& filename) const
+{
+	SF_INFO sf_info{};
+
+	SNDFILE* f = sf_open(filename.c_str(), SFM_READ, &sf_info);
+	if(!f)
+	{
+		ERR(memchecker, "SNDFILE Error (%s): %s\n", filename.c_str(), sf_strerror(f));
+		return 0;
+	}
+
+	sf_close(f);
+
+	return sf_info.frames * sizeof(sample_t);
+}
diff --git a/src/memchecker.h b/src/memchecker.h
new file mode 100644
index 0000000..aeefb3a
--- /dev/null
+++ b/src/memchecker.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            memchecker.h
+ *
+ *  Sat Jan 16 18:27:52 CET 2016
+ *  Copyright 2016 André Nusser
+ *  andre.nusser at googlemail.com
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include "drumkit.h"
+
+#include <string>
+// includes cstdint automatically and is needed for the PRIu64 macro
+#include <cinttypes>
+
+class MemChecker
+{
+public:
+	//! Checks if there is enough memory left to load drumkit into RAM.
+	//! \param drumkit The drumkit for which it is checked if there's enough memory left.
+	//! \return True iff there is enough memory left.
+	bool enoughFreeMemory(const DrumKit& drumkit) const;
+
+protected:
+	// Computes how much RAM (in bytes) is left.
+	uint64_t calcFreeMemory() const;
+
+	// Computes how much memory the drumkit takes when loaded into RAM (in bytes).
+	uint64_t calcNeededMemory(const DrumKit& drumkit) const;
+
+	// Computes the number of bytes per channel of <filename> using libsnd.
+	uint64_t calcBytesPerChannel(const std::string& filename) const;
+};
diff --git a/src/message.h b/src/message.h
index 07b0300..71d0da6 100644
--- a/src/message.h
+++ b/src/message.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/messagehandler.cc b/src/messagehandler.cc
index 52a89a5..7a0c7ea 100644
--- a/src/messagehandler.cc
+++ b/src/messagehandler.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/messagehandler.h b/src/messagehandler.h
index 9812777..2b6c40e 100644
--- a/src/messagehandler.h
+++ b/src/messagehandler.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/messagereceiver.cc b/src/messagereceiver.cc
index a24482b..590c98a 100644
--- a/src/messagereceiver.cc
+++ b/src/messagereceiver.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/messagereceiver.h b/src/messagereceiver.h
index 2794091..c1a8e60 100644
--- a/src/messagereceiver.h
+++ b/src/messagereceiver.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/midimapparser.cc b/src/midimapparser.cc
index 07210a5..8dabb05 100644
--- a/src/midimapparser.cc
+++ b/src/midimapparser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -50,20 +50,3 @@ int MidiMapParser::readData(char *data, size_t size)
   if(!fd) return -1;
   return fread(data, 1, size, fd);
 }
-
-#ifdef TEST_MIDIMAPPARSER
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_MIDIMAPPARSER*/
diff --git a/src/midimapparser.h b/src/midimapparser.h
index 98ab886..b9ef3e7 100644
--- a/src/midimapparser.h
+++ b/src/midimapparser.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/midimapper.cc b/src/midimapper.cc
index d4ff94e..8df5901 100644
--- a/src/midimapper.cc
+++ b/src/midimapper.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/midimapper.h b/src/midimapper.h
index 7439c4b..e8f7ab3 100644
--- a/src/midimapper.h
+++ b/src/midimapper.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/mutex.cc b/src/mutex.cc
index 22d59a6..84143be 100644
--- a/src/mutex.cc
+++ b/src/mutex.cc
@@ -9,147 +9,111 @@
  ****************************************************************************/
 
 /*
- *  This file is part of Pracro.
+ *  This file is part of DrumGizmo.
  *
- *  Pracro 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 2 of the License, or
+ *  DrumGizmo 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 3 of the License, or
  *  (at your option) any later version.
  *
- *  Pracro is distributed in the hope that it will be useful,
+ *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with Pracro; if not, write to the Free Software
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "mutex.h"
 
+#include <hugin.hpp>
+
 #ifdef WIN32
 #include <windows.h>
 #else
 #include <pthread.h>
+#include <errno.h>
 #endif
 
 struct mutex_private_t {
 #ifdef WIN32
-  HANDLE mutex; 
+	HANDLE mutex;
 #else
-  pthread_mutex_t mutex;
+	pthread_mutex_t mutex;
 #endif
 };
 
 Mutex::Mutex()
 {
-  prv = new struct mutex_private_t();
+	prv = new struct mutex_private_t();
 #ifdef WIN32
-  prv->mutex = CreateMutex(NULL,  // default security attributes
-                           FALSE, // initially not owned
-                           NULL); // unnamed mutex
+	prv->mutex = CreateMutex(nullptr,  // default security attributes
+	                         FALSE, // initially not owned
+	                         nullptr); // unnamed mutex
 #else
-  pthread_mutex_init (&prv->mutex, NULL);
+	pthread_mutex_init (&prv->mutex, nullptr);
 #endif
 }
 
 Mutex::~Mutex()
 {
 #ifdef WIN32
-  CloseHandle(prv->mutex);
+	CloseHandle(prv->mutex);
 #else
-  pthread_mutex_destroy(&prv->mutex);
+	pthread_mutex_destroy(&prv->mutex);
 #endif
 
-  if(prv) delete prv;
+	if(prv)
+	{
+	  delete prv;
+	}
+}
+
+//! \return true if the function succeeds in locking the mutex for the thread.
+//! false otherwise.
+bool Mutex::try_lock()
+{
+#ifdef WIN32
+	DEBUG(mutex, "%s\n", __PRETTY_FUNCTION__);
+
+	DWORD result = WaitForSingleObject(prv->mutex, 0);
+
+	DEBUG(mutex, "WAIT_OBJECT_0: %lu, WAIT_TIMEOUT: %lu, result: %lu\n",
+	      WAIT_OBJECT_0, WAIT_TIMEOUT, result);
+
+	return result != WAIT_TIMEOUT;
+#else
+	return pthread_mutex_trylock(&prv->mutex) != EBUSY;
+#endif
 }
 
 void Mutex::lock()
 {
 #ifdef WIN32
-  WaitForSingleObject(prv->mutex, // handle to mutex
-                      INFINITE);  // no time-out interval
+	WaitForSingleObject(prv->mutex, // handle to mutex
+	                    INFINITE);  // no time-out interval
 #else
-  pthread_mutex_lock(&prv->mutex);
+	pthread_mutex_lock(&prv->mutex);
 #endif
 }
 
 void Mutex::unlock()
 {
 #ifdef WIN32
-  ReleaseMutex(prv->mutex);
+	ReleaseMutex(prv->mutex);
 #else
-  pthread_mutex_unlock(&prv->mutex);
+	pthread_mutex_unlock(&prv->mutex);
 #endif
 }
 
 MutexAutolock::MutexAutolock(Mutex &m)
-  : mutex(m)
+	: mutex(m)
 {
-  mutex.lock();
+	mutex.lock();
 }
 
 MutexAutolock::~MutexAutolock()
 {
-  mutex.unlock();
-}
-
-#ifdef TEST_MUTEX
-//deps:
-//cflags: $(PTHREAD_CFLAGS)
-//libs: $(PTHREAD_LIBS)
-#include <test.h>
-
-#include <unistd.h>
-
-volatile int cnt = 0;
-
-static void* thread_run(void *data)
-{
-  Mutex *mutex = (Mutex*)data;
-  mutex->lock();
-  cnt++;
-  mutex->unlock();
-  return NULL;
+	mutex.unlock();
 }
-
-TEST_BEGIN;
-
-Mutex mutex;
-
-mutex.lock();
-TEST_FALSE(mutex.trylock(), "Testing if trylock works negative.");
-mutex.unlock();
-TEST_TRUE(mutex.trylock(), "Testing if trylock works positive.");
-mutex.unlock();
-
-mutex.lock();
-
-pthread_attr_t attr;
-pthread_t tid;
-pthread_attr_init(&attr);
-pthread_create(&tid, &attr, thread_run, &mutex);
-
-sleep(1);
-TEST_EQUAL_INT(cnt, 0, "Testing if lock prevent cnt from increasing.");
-mutex.unlock();
-
-sleep(1);
-TEST_EQUAL_INT(cnt, 1, "Testing if unlock makes cnt increase.");
-
-pthread_join(tid, NULL);
-pthread_attr_destroy(&attr);
-
-{
-  TEST_TRUE(mutex.trylock(), "Testing if autolock has not yet locked the mutex.");
-  mutex.unlock();
-  MutexAutolock mlock(mutex);
-  TEST_FALSE(mutex.trylock(), "Testing if autolock worked.");
-}
-
-TEST_TRUE(mutex.trylock(), "Testing if autolock has released the lock on the mutex.");
-mutex.unlock();
-
-TEST_END;
-
-#endif/*TEST_MUTEX*/
diff --git a/src/mutex.h b/src/mutex.h
index 11704d4..7e31296 100644
--- a/src/mutex.h
+++ b/src/mutex.h
@@ -9,47 +9,51 @@
  ****************************************************************************/
 
 /*
- *  This file is part of Pracro.
+ *  This file is part of DrumGizmo.
  *
- *  Pracro 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 2 of the License, or
+ *  DrumGizmo 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 3 of the License, or
  *  (at your option) any later version.
  *
- *  Pracro is distributed in the hope that it will be useful,
+ *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with Pracro; if not, write to the Free Software
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __PRACRO_MUTEX_H__
-#define __PRACRO_MUTEX_H__
+#pragma once
 
 struct mutex_private_t;
 
 class Mutex {
 public:
-  Mutex();
-  ~Mutex();
+	Mutex();
+	~Mutex();
 
-  bool trylock();
-  void lock();
-  void unlock();
+	bool try_lock();
+	void lock();
+	void unlock();
 
 private:
-  struct mutex_private_t* prv;
+	struct mutex_private_t* prv;
 };
 
+#ifdef WIN32
+// Hack: mingw doesn't have std::mutex
+namespace std {
+	class mutex : public Mutex {};
+}
+#endif
+
 class MutexAutolock {
 public:
-  MutexAutolock(Mutex &mutex);
-  ~MutexAutolock();
+	MutexAutolock(Mutex &mutex);
+	~MutexAutolock();
 
 private:
-  Mutex &mutex;
+	Mutex &mutex;
 };
-
-#endif/*__PRACRO_MUTEX_H__*/
diff --git a/src/nolocale.h b/src/nolocale.h
index 816dd9c..4d6fc75 100644
--- a/src/nolocale.h
+++ b/src/nolocale.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/path.cc b/src/path.cc
index 1b4ede3..5c899f2 100644
--- a/src/path.cc
+++ b/src/path.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/path.h b/src/path.h
index bdad0a5..17b63d9 100644
--- a/src/path.h
+++ b/src/path.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/powerlist.cc b/src/powerlist.cc
index 6fc77ad..efb1f97 100644
--- a/src/powerlist.cc
+++ b/src/powerlist.cc
@@ -11,27 +11,33 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "powerlist.h"
 
 #include <stdlib.h>
-#include <math.h>
+
 #include <string.h>
 
 #include <hugin.hpp>
 
+// M_PI is not defined in math.h if __STRICT_ANSI__ is defined.
+#ifdef __STRICT_ANSI__
+#undef __STRICT_ANSI__
+#endif
+#include <math.h>
+
 /**
  * Minimum sample set size.
  * Smaller means wider 'velocity groups'.
diff --git a/src/powerlist.h b/src/powerlist.h
index 3a07b37..43f51d2 100644
--- a/src/powerlist.h
+++ b/src/powerlist.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/rangemap.h b/src/rangemap.h
index d863052..34a50b1 100644
--- a/src/rangemap.h
+++ b/src/rangemap.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/sample.cc b/src/sample.cc
index d50137d..27382af 100644
--- a/src/sample.cc
+++ b/src/sample.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/sample.h b/src/sample.h
index 61a3468..26c7be2 100644
--- a/src/sample.h
+++ b/src/sample.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/saxparser.cc b/src/saxparser.cc
index 1bd98a8..1ed3050 100644
--- a/src/saxparser.cc
+++ b/src/saxparser.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/saxparser.h b/src/saxparser.h
index aff90d7..cc1800e 100644
--- a/src/saxparser.h
+++ b/src/saxparser.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/semaphore.cc b/src/semaphore.cc
index 47ce8e0..cd29bbf 100644
--- a/src/semaphore.cc
+++ b/src/semaphore.cc
@@ -8,26 +8,28 @@
  ****************************************************************************/
 
 /*
- *  This file is part of Pracro.
+ *  This file is part of DrumGizmo.
  *
- *  Pracro 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 2 of the License, or
+ *  DrumGizmo 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 3 of the License, or
  *  (at your option) any later version.
  *
- *  Pracro is distributed in the hope that it will be useful,
+ *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with Pracro; if not, write to the Free Software
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include "semaphore.h"
 
 #include <hugin.hpp>
 
+#include <limits>
+
 #ifdef WIN32
 #include <windows.h>
 #else
@@ -46,14 +48,14 @@ struct semaphore_private_t {
 Semaphore::Semaphore(const char *name)
 {
   this->name = name;
-  DEBUG(semaphore, "Create [%s]\n", name);
+  //  DEBUG(semaphore, "Create [%s]\n", name);
 
   prv = new struct semaphore_private_t();
 
 #ifdef WIN32
   prv->semaphore = CreateSemaphore(NULL,  // default security attributes
                                    0, // initial count
-                                   2147483647, // maximum count (Max LONG)
+                                   std::numeric_limits<LONG>::max(),
                                    NULL); // unnamed semaphore
 #else
   sem_init(&prv->semaphore, 0, 0);
@@ -62,7 +64,7 @@ Semaphore::Semaphore(const char *name)
 
 Semaphore::~Semaphore()
 {
-  DEBUG(semaphore, "Delete [%s]\n", name);
+  //  DEBUG(semaphore, "Delete [%s]\n", name);
 
 #ifdef WIN32
   CloseHandle(prv->semaphore);
@@ -70,12 +72,12 @@ Semaphore::~Semaphore()
   sem_destroy(&prv->semaphore);
 #endif
 
-  if(prv) delete prv;
+  delete prv;
 }
 
 void Semaphore::post()
 {
-  DEBUG(semaphore, "Post [%s]\n", name);
+  //  DEBUG(semaphore, "Post [%s]\n", name);
 
 #ifdef WIN32
   ReleaseSemaphore(prv->semaphore, 1, NULL);
@@ -86,7 +88,7 @@ void Semaphore::post()
 
 void Semaphore::wait()
 {
-  DEBUG(semaphore, "Wait [%s]\n", name);
+  //  DEBUG(semaphore, "Wait [%s]\n", name);
 
 #ifdef WIN32
   WaitForSingleObject(prv->semaphore, INFINITE);
diff --git a/src/semaphore.h b/src/semaphore.h
index 7e39f5a..4464898 100644
--- a/src/semaphore.h
+++ b/src/semaphore.h
@@ -8,20 +8,20 @@
  ****************************************************************************/
 
 /*
- *  This file is part of Pracro.
+ *  This file is part of DrumGizmo.
  *
- *  Pracro 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 2 of the License, or
+ *  DrumGizmo 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 3 of the License, or
  *  (at your option) any later version.
  *
- *  Pracro is distributed in the hope that it will be useful,
+ *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with Pracro; if not, write to the Free Software
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #ifndef __PRACRO_SEMAPHORE_H__
@@ -38,8 +38,8 @@ public:
   void wait();
 
 private:
-  struct semaphore_private_t *prv;
-  const char *name;
+	struct semaphore_private_t *prv{nullptr};
+	const char *name{nullptr};
 };
 
 #endif/*__PRACRO_SEMAPHORE_H__*/
diff --git a/src/thread.cc b/src/thread.cc
index 8abf3cb..030c5dd 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -29,18 +29,6 @@
 #include <stdio.h>
 #include <hugin.hpp>
 
-#ifdef WIN32
-static DWORD WINAPI thread_run(void *data)
-#else
-static void* thread_run(void *data)
-#endif/*WIN32*/
-{
-  DEBUG(thread, "Thread run\n");
-  Thread *t = (Thread*)data;
-  t->thread_main();
-  return 0;
-}
-
 Thread::Thread()
 {}
 
@@ -66,19 +54,15 @@ void Thread::wait_stop()
 #endif/*WIN32*/
 }
 
-#ifdef TEST_THREAD
-//Additional dependency files
-//deps:
-//Required cflags (autoconf vars may be used)
-//cflags:
-//Required link options (autoconf vars may be used)
-//libs:
-#include "test.h"
-
-TEST_BEGIN;
-
-// TODO: Put some testcode here (see test.h for usable macros).
-
-TEST_END;
-
-#endif/*TEST_THREAD*/
+#ifdef WIN32
+DWORD WINAPI
+#else
+void*
+#endif/*WIN32*/
+Thread::thread_run(void *data)
+{
+  DEBUG(thread, "Thread run\n");
+  Thread *t = (Thread*)data;
+  t->thread_main();
+  return 0;
+}
diff --git a/src/thread.h b/src/thread.h
index 837222a..6d3b920 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -11,23 +11,23 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-#ifndef __DRUMGIZMO_THREAD_H__
-#define __DRUMGIZMO_THREAD_H__
+#pragma once
 
 #ifdef WIN32
+#define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #else
 #include <pthread.h>
@@ -41,14 +41,16 @@ public:
   void run();
   void wait_stop();
 
+protected:
   virtual void thread_main() = 0;
   
 private:
 #ifdef WIN32
-  HANDLE tid;
+	HANDLE tid{nullptr};
+  static DWORD WINAPI
 #else
-  pthread_t tid;
+  pthread_t tid{0};
+  static void*
 #endif/*WIN32*/
+    thread_run(void *data);
 };
-
-#endif/*__DRUMGIZMO_THREAD_H__*/
diff --git a/src/velocity.cc b/src/velocity.cc
index 319dc82..04d0475 100644
--- a/src/velocity.cc
+++ b/src/velocity.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/velocity.h b/src/velocity.h
index 10a3eb0..439ca68 100644
--- a/src/velocity.h
+++ b/src/velocity.h
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/versionstr.cc b/src/versionstr.cc
index 90557f6..48764ba 100644
--- a/src/versionstr.cc
+++ b/src/versionstr.cc
@@ -12,16 +12,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/src/versionstr.h b/src/versionstr.h
index ecb1df3..9cdd056 100644
--- a/src/versionstr.h
+++ b/src/versionstr.h
@@ -12,16 +12,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/test/Makefile.am b/test/Makefile.am
index 5aaf33f..6e56043 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,13 +1,81 @@
 # Rules for the test code (use `make check` to execute)
 include $(top_srcdir)/src/Makefile.am.drumgizmo
 
-TESTS = engine gui resampler lv2
+TESTS = resource engine gui resampler lv2 configfile audiocache \
+	audiocachefile audiocacheidmanager audiocacheeventhandler \
+	memchecker
 
 check_PROGRAMS = $(TESTS)
 
+resource_CXXFLAGS = -DOUTPUT=\"resource\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/hugin
+resource_LDFLAGS = $(CPPUNIT_LIBS)
+resource_SOURCES = \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	test.cc \
+	resource_test.cc
+
+audiocache_CXXFLAGS = -DOUTPUT=\"audiocache\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+audiocache_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocache_SOURCES = \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/audiofile.cc \
+	test.cc \
+	audiocachetest.cc
+
+audiocachefile_CXXFLAGS = -DOUTPUT=\"audiocachefile\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+audiocachefile_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocachefile_SOURCES = \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/audiofile.cc \
+	test.cc \
+	audiocachefiletest.cc
+
+audiocacheidmanager_CXXFLAGS = -DOUTPUT=\"audiocacheidmanager\" \
+	$(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(SNDFILE_CFLAGS)
+audiocacheidmanager_LDFLAGS = $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocacheidmanager_SOURCES = \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	test.cc \
+	audiocacheidmanagertest.cc
+
+audiocacheeventhandler_CXXFLAGS = -DOUTPUT=\"audiocacheeventhandler\" \
+	$(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+audiocacheeventhandler_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocacheeventhandler_SOURCES = \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	test.cc \
+	audiocacheeventhandlertest.cc
+
 engine_CXXFLAGS = -DOUTPUT=\"engine\" $(CPPUNIT_CFLAGS) \
 	-I$(top_srcdir)/src -I$(top_srcdir)/include \
-	-I$(top_srcdir)/hugin -DDISABLE_HUGIN
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS)
 engine_CFLAGS = -DDISABLE_HUGIN
 engine_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS)
 engine_SOURCES = \
@@ -40,3 +108,25 @@ lv2_SOURCES = \
 	test.cc \
 	lv2_test_host.cc \
 	lv2.cc
+
+configfile_CXXFLAGS = -DOUTPUT=\"configfile\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/hugin
+configfile_LDFLAGS = $(CPPUNIT_LIBS)
+configfile_SOURCES = \
+	$(top_srcdir)/src/configfile.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	test.cc \
+	configtest.cc
+
+memchecker_CXXFLAGS = -DOUTPUT=\"memchecker\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS)
+memcheckere_CFLAGS = -DDISABLE_HUGIN
+memchecker_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS)
+memchecker_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	test.cc \
+	memcheckertest.cc
+
+EXTRA_DIST = \
+	lv2_test_host.h
diff --git a/test/Makefile.in b/test/Makefile.in
index b8f4c47..c761102 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -13,6 +13,8 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
+# -*- Makefile -*-
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -80,7 +82,11 @@ host_triplet = @host@
 DIST_COMMON = $(top_srcdir)/src/Makefile.am.drumgizmo \
 	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/depcomp $(top_srcdir)/test-driver
-TESTS = engine$(EXEEXT) gui$(EXEEXT) resampler$(EXEEXT) lv2$(EXEEXT)
+TESTS = resource$(EXEEXT) engine$(EXEEXT) gui$(EXEEXT) \
+	resampler$(EXEEXT) lv2$(EXEEXT) configfile$(EXEEXT) \
+	audiocache$(EXEEXT) audiocachefile$(EXEEXT) \
+	audiocacheidmanager$(EXEEXT) audiocacheeventhandler$(EXEEXT) \
+	memchecker$(EXEEXT)
 check_PROGRAMS = $(am__EXEEXT_1)
 subdir = test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -91,17 +97,88 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__EXEEXT_1 = engine$(EXEEXT) gui$(EXEEXT) resampler$(EXEEXT) \
-	lv2$(EXEEXT)
-am__objects_1 = engine-audioinputenginemidi.$(OBJEXT) \
+am__EXEEXT_1 = resource$(EXEEXT) engine$(EXEEXT) gui$(EXEEXT) \
+	resampler$(EXEEXT) lv2$(EXEEXT) configfile$(EXEEXT) \
+	audiocache$(EXEEXT) audiocachefile$(EXEEXT) \
+	audiocacheidmanager$(EXEEXT) audiocacheeventhandler$(EXEEXT) \
+	memchecker$(EXEEXT)
+am_audiocache_OBJECTS = audiocache-audiocache.$(OBJEXT) \
+	audiocache-audiocacheeventhandler.$(OBJEXT) \
+	audiocache-audiocachefile.$(OBJEXT) \
+	audiocache-audiocacheidmanager.$(OBJEXT) \
+	audiocache-thread.$(OBJEXT) audiocache-mutex.$(OBJEXT) \
+	audiocache-semaphore.$(OBJEXT) \
+	audiocache-configuration.$(OBJEXT) \
+	audiocache-audiofile.$(OBJEXT) audiocache-test.$(OBJEXT) \
+	audiocache-audiocachetest.$(OBJEXT)
+audiocache_OBJECTS = $(am_audiocache_OBJECTS)
+audiocache_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+audiocache_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(audiocache_CXXFLAGS) \
+	$(CXXFLAGS) $(audiocache_LDFLAGS) $(LDFLAGS) -o $@
+am_audiocacheeventhandler_OBJECTS =  \
+	audiocacheeventhandler-audiocacheeventhandler.$(OBJEXT) \
+	audiocacheeventhandler-audiocacheidmanager.$(OBJEXT) \
+	audiocacheeventhandler-audiocachefile.$(OBJEXT) \
+	audiocacheeventhandler-mutex.$(OBJEXT) \
+	audiocacheeventhandler-thread.$(OBJEXT) \
+	audiocacheeventhandler-semaphore.$(OBJEXT) \
+	audiocacheeventhandler-test.$(OBJEXT) \
+	audiocacheeventhandler-audiocacheeventhandlertest.$(OBJEXT)
+audiocacheeventhandler_OBJECTS = $(am_audiocacheeventhandler_OBJECTS)
+audiocacheeventhandler_LDADD = $(LDADD)
+audiocacheeventhandler_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) \
+	$(audiocacheeventhandler_LDFLAGS) $(LDFLAGS) -o $@
+am_audiocachefile_OBJECTS = audiocachefile-audiocachefile.$(OBJEXT) \
+	audiocachefile-thread.$(OBJEXT) audiocachefile-mutex.$(OBJEXT) \
+	audiocachefile-semaphore.$(OBJEXT) \
+	audiocachefile-configuration.$(OBJEXT) \
+	audiocachefile-audiofile.$(OBJEXT) \
+	audiocachefile-test.$(OBJEXT) \
+	audiocachefile-audiocachefiletest.$(OBJEXT)
+audiocachefile_OBJECTS = $(am_audiocachefile_OBJECTS)
+audiocachefile_LDADD = $(LDADD)
+audiocachefile_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(audiocachefile_CXXFLAGS) $(CXXFLAGS) \
+	$(audiocachefile_LDFLAGS) $(LDFLAGS) -o $@
+am_audiocacheidmanager_OBJECTS =  \
+	audiocacheidmanager-audiocacheidmanager.$(OBJEXT) \
+	audiocacheidmanager-test.$(OBJEXT) \
+	audiocacheidmanager-audiocacheidmanagertest.$(OBJEXT)
+audiocacheidmanager_OBJECTS = $(am_audiocacheidmanager_OBJECTS)
+audiocacheidmanager_LDADD = $(LDADD)
+audiocacheidmanager_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) \
+	$(audiocacheidmanager_LDFLAGS) $(LDFLAGS) -o $@
+am_configfile_OBJECTS = configfile-configfile.$(OBJEXT) \
+	hugin.$(OBJEXT) configfile-test.$(OBJEXT) \
+	configfile-configtest.$(OBJEXT)
+configfile_OBJECTS = $(am_configfile_OBJECTS)
+configfile_LDADD = $(LDADD)
+configfile_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(configfile_CXXFLAGS) \
+	$(CXXFLAGS) $(configfile_LDFLAGS) $(LDFLAGS) -o $@
+am__objects_1 = engine-audiocachefile.$(OBJEXT) \
+	engine-audiocache.$(OBJEXT) \
+	engine-audiocacheeventhandler.$(OBJEXT) \
+	engine-audiocacheidmanager.$(OBJEXT) \
+	engine-audioinputenginemidi.$(OBJEXT) \
 	engine-audiofile.$(OBJEXT) engine-channel.$(OBJEXT) \
 	engine-channelmixer.$(OBJEXT) engine-chresampler.$(OBJEXT) \
-	engine-configuration.$(OBJEXT) engine-configparser.$(OBJEXT) \
-	engine-drumgizmo.$(OBJEXT) engine-drumkit.$(OBJEXT) \
-	engine-drumkitloader.$(OBJEXT) engine-drumkitparser.$(OBJEXT) \
-	engine-events.$(OBJEXT) engine-instrument.$(OBJEXT) \
-	engine-instrumentparser.$(OBJEXT) \
-	engine-messagehandler.$(OBJEXT) \
+	engine-configfile.$(OBJEXT) engine-configuration.$(OBJEXT) \
+	engine-configparser.$(OBJEXT) engine-drumgizmo.$(OBJEXT) \
+	engine-drumkit.$(OBJEXT) engine-drumkitloader.$(OBJEXT) \
+	engine-drumkitparser.$(OBJEXT) engine-events.$(OBJEXT) \
+	engine-instrument.$(OBJEXT) engine-instrumentparser.$(OBJEXT) \
+	engine-memchecker.$(OBJEXT) engine-messagehandler.$(OBJEXT) \
 	engine-messagereceiver.$(OBJEXT) \
 	engine-midimapparser.$(OBJEXT) engine-midimapper.$(OBJEXT) \
 	engine-mutex.$(OBJEXT) engine-path.$(OBJEXT) \
@@ -113,10 +190,6 @@ am_engine_OBJECTS = $(am__objects_1) engine-hugin.$(OBJEXT) \
 	engine-test.$(OBJEXT) engine-engine.$(OBJEXT)
 engine_OBJECTS = $(am_engine_OBJECTS)
 engine_LDADD = $(LDADD)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
 engine_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(engine_CXXFLAGS) \
 	$(CXXFLAGS) $(engine_LDFLAGS) $(LDFLAGS) -o $@
@@ -133,6 +206,38 @@ lv2_LDADD = $(LDADD)
 lv2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(lv2_CXXFLAGS) \
 	$(CXXFLAGS) $(lv2_LDFLAGS) $(LDFLAGS) -o $@
+am__objects_2 = memchecker-audiocachefile.$(OBJEXT) \
+	memchecker-audiocache.$(OBJEXT) \
+	memchecker-audiocacheeventhandler.$(OBJEXT) \
+	memchecker-audiocacheidmanager.$(OBJEXT) \
+	memchecker-audioinputenginemidi.$(OBJEXT) \
+	memchecker-audiofile.$(OBJEXT) memchecker-channel.$(OBJEXT) \
+	memchecker-channelmixer.$(OBJEXT) \
+	memchecker-chresampler.$(OBJEXT) \
+	memchecker-configfile.$(OBJEXT) \
+	memchecker-configuration.$(OBJEXT) \
+	memchecker-configparser.$(OBJEXT) \
+	memchecker-drumgizmo.$(OBJEXT) memchecker-drumkit.$(OBJEXT) \
+	memchecker-drumkitloader.$(OBJEXT) \
+	memchecker-drumkitparser.$(OBJEXT) memchecker-events.$(OBJEXT) \
+	memchecker-instrument.$(OBJEXT) \
+	memchecker-instrumentparser.$(OBJEXT) \
+	memchecker-memchecker.$(OBJEXT) \
+	memchecker-messagehandler.$(OBJEXT) \
+	memchecker-messagereceiver.$(OBJEXT) \
+	memchecker-midimapparser.$(OBJEXT) \
+	memchecker-midimapper.$(OBJEXT) memchecker-mutex.$(OBJEXT) \
+	memchecker-path.$(OBJEXT) memchecker-powerlist.$(OBJEXT) \
+	memchecker-sample.$(OBJEXT) memchecker-semaphore.$(OBJEXT) \
+	memchecker-saxparser.$(OBJEXT) memchecker-thread.$(OBJEXT) \
+	memchecker-velocity.$(OBJEXT) memchecker-versionstr.$(OBJEXT)
+am_memchecker_OBJECTS = $(am__objects_2) memchecker-test.$(OBJEXT) \
+	memchecker-memcheckertest.$(OBJEXT)
+memchecker_OBJECTS = $(am_memchecker_OBJECTS)
+memchecker_LDADD = $(LDADD)
+memchecker_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(memchecker_CXXFLAGS) \
+	$(CXXFLAGS) $(memchecker_LDFLAGS) $(LDFLAGS) -o $@
 am_resampler_OBJECTS = resampler-chresampler.$(OBJEXT) \
 	resampler-test.$(OBJEXT) resampler-resampler.$(OBJEXT)
 resampler_OBJECTS = $(am_resampler_OBJECTS)
@@ -140,6 +245,14 @@ resampler_LDADD = $(LDADD)
 resampler_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(resampler_CXXFLAGS) \
 	$(CXXFLAGS) $(resampler_LDFLAGS) $(LDFLAGS) -o $@
+am_resource_OBJECTS = resource-resource.$(OBJEXT) \
+	resource-resource_data.$(OBJEXT) hugin.$(OBJEXT) \
+	resource-test.$(OBJEXT) resource-resource_test.$(OBJEXT)
+resource_OBJECTS = $(am_resource_OBJECTS)
+resource_LDADD = $(LDADD)
+resource_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(resource_CXXFLAGS) \
+	$(CXXFLAGS) $(resource_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -192,10 +305,16 @@ AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
 am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
-SOURCES = $(engine_SOURCES) $(gui_SOURCES) $(lv2_SOURCES) \
-	$(resampler_SOURCES)
-DIST_SOURCES = $(engine_SOURCES) $(gui_SOURCES) $(lv2_SOURCES) \
-	$(resampler_SOURCES)
+SOURCES = $(audiocache_SOURCES) $(audiocacheeventhandler_SOURCES) \
+	$(audiocachefile_SOURCES) $(audiocacheidmanager_SOURCES) \
+	$(configfile_SOURCES) $(engine_SOURCES) $(gui_SOURCES) \
+	$(lv2_SOURCES) $(memchecker_SOURCES) $(resampler_SOURCES) \
+	$(resource_SOURCES)
+DIST_SOURCES = $(audiocache_SOURCES) $(audiocacheeventhandler_SOURCES) \
+	$(audiocachefile_SOURCES) $(audiocacheidmanager_SOURCES) \
+	$(configfile_SOURCES) $(engine_SOURCES) $(gui_SOURCES) \
+	$(lv2_SOURCES) $(memchecker_SOURCES) $(resampler_SOURCES) \
+	$(resource_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -462,7 +581,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -526,8 +645,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -583,11 +700,16 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 DRUMGIZMO_SOURCES = \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
 	$(top_srcdir)/src/audioinputenginemidi.cc \
 	$(top_srcdir)/src/audiofile.cc \
 	$(top_srcdir)/src/channel.cc \
 	$(top_srcdir)/src/channelmixer.cc \
 	$(top_srcdir)/src/chresampler.cc \
+	$(top_srcdir)/src/configfile.cc \
 	$(top_srcdir)/src/configuration.cc \
 	$(top_srcdir)/src/configparser.cc \
 	$(top_srcdir)/src/drumgizmo.cc \
@@ -597,6 +719,7 @@ DRUMGIZMO_SOURCES = \
 	$(top_srcdir)/src/events.cc \
 	$(top_srcdir)/src/instrument.cc \
 	$(top_srcdir)/src/instrumentparser.cc \
+	$(top_srcdir)/src/memchecker.cc \
 	$(top_srcdir)/src/messagehandler.cc \
 	$(top_srcdir)/src/messagereceiver.cc \
 	$(top_srcdir)/src/midimapparser.cc \
@@ -611,10 +734,90 @@ DRUMGIZMO_SOURCES = \
 	$(top_srcdir)/src/velocity.cc \
 	$(top_srcdir)/src/versionstr.cc
 
-DRUMGIZMO_LIBS = $(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS)
+DRUMGIZMO_LIBS = \
+	$(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS) \
+	$(PTHREAD_LIBS)
+
+DRUMGIZMO_CPPFLAGS = \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/hugin \
+	$(SSEFLAGS) \
+	$(ZITA_CPPFLAGS) $(SNDFILE_CXXFLAGS) $(EXPAT_CFLAGS) $(SAMPLERATE_CFLAGS) \
+	$(PTHREAD_CFLAGS)
+
+resource_CXXFLAGS = -DOUTPUT=\"resource\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/hugin
+
+resource_LDFLAGS = $(CPPUNIT_LIBS)
+resource_SOURCES = \
+	$(top_srcdir)/plugingui/resource.cc \
+	$(top_srcdir)/plugingui/resource_data.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	test.cc \
+	resource_test.cc
+
+audiocache_CXXFLAGS = -DOUTPUT=\"audiocache\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+
+audiocache_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocache_SOURCES = \
+	$(top_srcdir)/src/audiocache.cc \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/audiofile.cc \
+	test.cc \
+	audiocachetest.cc
+
+audiocachefile_CXXFLAGS = -DOUTPUT=\"audiocachefile\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+
+audiocachefile_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocachefile_SOURCES = \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	$(top_srcdir)/src/configuration.cc \
+	$(top_srcdir)/src/audiofile.cc \
+	test.cc \
+	audiocachefiletest.cc
+
+audiocacheidmanager_CXXFLAGS = -DOUTPUT=\"audiocacheidmanager\" \
+	$(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(SNDFILE_CFLAGS)
+
+audiocacheidmanager_LDFLAGS = $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocacheidmanager_SOURCES = \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	test.cc \
+	audiocacheidmanagertest.cc
+
+audiocacheeventhandler_CXXFLAGS = -DOUTPUT=\"audiocacheeventhandler\" \
+	$(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS)
+
+audiocacheeventhandler_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS)
+audiocacheeventhandler_SOURCES = \
+	$(top_srcdir)/src/audiocacheeventhandler.cc \
+	$(top_srcdir)/src/audiocacheidmanager.cc \
+	$(top_srcdir)/src/audiocachefile.cc \
+	$(top_srcdir)/src/mutex.cc \
+	$(top_srcdir)/src/thread.cc \
+	$(top_srcdir)/src/semaphore.cc \
+	test.cc \
+	audiocacheeventhandlertest.cc
+
 engine_CXXFLAGS = -DOUTPUT=\"engine\" $(CPPUNIT_CFLAGS) \
 	-I$(top_srcdir)/src -I$(top_srcdir)/include \
-	-I$(top_srcdir)/hugin -DDISABLE_HUGIN
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS)
 
 engine_CFLAGS = -DDISABLE_HUGIN
 engine_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS)
@@ -652,6 +855,30 @@ lv2_SOURCES = \
 	lv2_test_host.cc \
 	lv2.cc
 
+configfile_CXXFLAGS = -DOUTPUT=\"configfile\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/hugin
+
+configfile_LDFLAGS = $(CPPUNIT_LIBS)
+configfile_SOURCES = \
+	$(top_srcdir)/src/configfile.cc \
+	$(top_srcdir)/hugin/hugin.c \
+	test.cc \
+	configtest.cc
+
+memchecker_CXXFLAGS = -DOUTPUT=\"memchecker\" $(CPPUNIT_CFLAGS) \
+	-I$(top_srcdir)/src -I$(top_srcdir)/include \
+	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS)
+
+memcheckere_CFLAGS = -DDISABLE_HUGIN
+memchecker_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS)
+memchecker_SOURCES = \
+	$(DRUMGIZMO_SOURCES) \
+	test.cc \
+	memcheckertest.cc
+
+EXTRA_DIST = \
+	lv2_test_host.h
+
 all: all-am
 
 .SUFFIXES:
@@ -697,6 +924,26 @@ clean-checkPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
+audiocache$(EXEEXT): $(audiocache_OBJECTS) $(audiocache_DEPENDENCIES) $(EXTRA_audiocache_DEPENDENCIES) 
+	@rm -f audiocache$(EXEEXT)
+	$(AM_V_CXXLD)$(audiocache_LINK) $(audiocache_OBJECTS) $(audiocache_LDADD) $(LIBS)
+
+audiocacheeventhandler$(EXEEXT): $(audiocacheeventhandler_OBJECTS) $(audiocacheeventhandler_DEPENDENCIES) $(EXTRA_audiocacheeventhandler_DEPENDENCIES) 
+	@rm -f audiocacheeventhandler$(EXEEXT)
+	$(AM_V_CXXLD)$(audiocacheeventhandler_LINK) $(audiocacheeventhandler_OBJECTS) $(audiocacheeventhandler_LDADD) $(LIBS)
+
+audiocachefile$(EXEEXT): $(audiocachefile_OBJECTS) $(audiocachefile_DEPENDENCIES) $(EXTRA_audiocachefile_DEPENDENCIES) 
+	@rm -f audiocachefile$(EXEEXT)
+	$(AM_V_CXXLD)$(audiocachefile_LINK) $(audiocachefile_OBJECTS) $(audiocachefile_LDADD) $(LIBS)
+
+audiocacheidmanager$(EXEEXT): $(audiocacheidmanager_OBJECTS) $(audiocacheidmanager_DEPENDENCIES) $(EXTRA_audiocacheidmanager_DEPENDENCIES) 
+	@rm -f audiocacheidmanager$(EXEEXT)
+	$(AM_V_CXXLD)$(audiocacheidmanager_LINK) $(audiocacheidmanager_OBJECTS) $(audiocacheidmanager_LDADD) $(LIBS)
+
+configfile$(EXEEXT): $(configfile_OBJECTS) $(configfile_DEPENDENCIES) $(EXTRA_configfile_DEPENDENCIES) 
+	@rm -f configfile$(EXEEXT)
+	$(AM_V_CXXLD)$(configfile_LINK) $(configfile_OBJECTS) $(configfile_LDADD) $(LIBS)
+
 engine$(EXEEXT): $(engine_OBJECTS) $(engine_DEPENDENCIES) $(EXTRA_engine_DEPENDENCIES) 
 	@rm -f engine$(EXEEXT)
 	$(AM_V_CXXLD)$(engine_LINK) $(engine_OBJECTS) $(engine_LDADD) $(LIBS)
@@ -709,21 +956,67 @@ lv2$(EXEEXT): $(lv2_OBJECTS) $(lv2_DEPENDENCIES) $(EXTRA_lv2_DEPENDENCIES)
 	@rm -f lv2$(EXEEXT)
 	$(AM_V_CXXLD)$(lv2_LINK) $(lv2_OBJECTS) $(lv2_LDADD) $(LIBS)
 
+memchecker$(EXEEXT): $(memchecker_OBJECTS) $(memchecker_DEPENDENCIES) $(EXTRA_memchecker_DEPENDENCIES) 
+	@rm -f memchecker$(EXEEXT)
+	$(AM_V_CXXLD)$(memchecker_LINK) $(memchecker_OBJECTS) $(memchecker_LDADD) $(LIBS)
+
 resampler$(EXEEXT): $(resampler_OBJECTS) $(resampler_DEPENDENCIES) $(EXTRA_resampler_DEPENDENCIES) 
 	@rm -f resampler$(EXEEXT)
 	$(AM_V_CXXLD)$(resampler_LINK) $(resampler_OBJECTS) $(resampler_LDADD) $(LIBS)
 
+resource$(EXEEXT): $(resource_OBJECTS) $(resource_DEPENDENCIES) $(EXTRA_resource_DEPENDENCIES) 
+	@rm -f resource$(EXEEXT)
+	$(AM_V_CXXLD)$(resource_LINK) $(resource_OBJECTS) $(resource_LDADD) $(LIBS)
+
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiocache.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiocacheeventhandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiocacheidmanager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiocachetest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-audiofile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-configuration.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-semaphore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocache-thread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-semaphore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheeventhandler-thread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-audiocachefiletest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-audiofile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-configuration.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-semaphore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocachefile-thread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/audiocacheidmanager-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/configfile-configfile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/configfile-configtest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/configfile-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audiocache.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audiocacheeventhandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audiocacheidmanager.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audiofile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-audioinputenginemidi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-channel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-channelmixer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-chresampler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-configfile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-configparser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-configuration.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-drumgizmo.Po at am__quote@
@@ -735,6 +1028,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-hugin.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-instrument.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-instrumentparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-memchecker.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-messagehandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-messagereceiver.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-midimapparser.Po at am__quote@
@@ -751,12 +1045,52 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/engine-versionstr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gui-gui.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gui-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lv2-lv2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lv2-lv2_test_host.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lv2-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audiocache.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audiocacheeventhandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audiocachefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audiocacheidmanager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audiofile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-audioinputenginemidi.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-channel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-channelmixer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-chresampler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-configfile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-configparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-configuration.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-drumgizmo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-drumkit.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-drumkitloader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-drumkitparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-events.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-instrument.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-instrumentparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-memchecker.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-memcheckertest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-messagehandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-messagereceiver.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-midimapparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-midimapper.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-mutex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-path.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-powerlist.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-sample.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-saxparser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-semaphore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-thread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-velocity.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memchecker-versionstr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resampler-chresampler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resampler-resampler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resampler-test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource-resource.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource-resource_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource-resource_test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource-test.Po at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -779,6 +1113,20 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+hugin.o: $(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.o -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
+
+hugin.obj: $(top_srcdir)/hugin/hugin.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.obj -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.obj `if test -f '$(top_srcdir)/hugin/hugin.c'; then $(CYGPATH_W) '$(top_srcdir)/hugin/hugin.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/hugin/hugin.c'; fi`
+
 engine-hugin.o: $(top_srcdir)/hugin/hugin.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CFLAGS) $(CFLAGS) -MT engine-hugin.o -MD -MP -MF $(DEPDIR)/engine-hugin.Tpo -c -o engine-hugin.o `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-hugin.Tpo $(DEPDIR)/engine-hugin.Po
@@ -814,6 +1162,524 @@ engine-hugin.obj: $(top_srcdir)/hugin/hugin.c
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
+audiocache-audiocache.o: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocache.o -MD -MP -MF $(DEPDIR)/audiocache-audiocache.Tpo -c -o audiocache-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocache.Tpo $(DEPDIR)/audiocache-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='audiocache-audiocache.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+audiocache-audiocache.obj: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocache.obj -MD -MP -MF $(DEPDIR)/audiocache-audiocache.Tpo -c -o audiocache-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocache.Tpo $(DEPDIR)/audiocache-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='audiocache-audiocache.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+
+audiocache-audiocacheeventhandler.o: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocacheeventhandler.o -MD -MP -MF $(DEPDIR)/audiocache-audiocacheeventhandler.Tpo -c -o audiocache-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocacheeventhandler.Tpo $(DEPDIR)/audiocache-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='audiocache-audiocacheeventhandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+audiocache-audiocacheeventhandler.obj: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocacheeventhandler.obj -MD -MP -MF $(DEPDIR)/audiocache-audiocacheeventhandler.Tpo -c -o audiocache-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocacheeventhandler.Tpo $(DEPDIR)/audiocache-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='audiocache-audiocacheeventhandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+
+audiocache-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocachefile.o -MD -MP -MF $(DEPDIR)/audiocache-audiocachefile.Tpo -c -o audiocache-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocachefile.Tpo $(DEPDIR)/audiocache-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocache-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+audiocache-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocachefile.obj -MD -MP -MF $(DEPDIR)/audiocache-audiocachefile.Tpo -c -o audiocache-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocachefile.Tpo $(DEPDIR)/audiocache-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocache-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+audiocache-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/audiocache-audiocacheidmanager.Tpo -c -o audiocache-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocacheidmanager.Tpo $(DEPDIR)/audiocache-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocache-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+audiocache-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/audiocache-audiocacheidmanager.Tpo -c -o audiocache-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocacheidmanager.Tpo $(DEPDIR)/audiocache-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocache-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
+audiocache-thread.o: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-thread.o -MD -MP -MF $(DEPDIR)/audiocache-thread.Tpo -c -o audiocache-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-thread.Tpo $(DEPDIR)/audiocache-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocache-thread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+audiocache-thread.obj: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-thread.obj -MD -MP -MF $(DEPDIR)/audiocache-thread.Tpo -c -o audiocache-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-thread.Tpo $(DEPDIR)/audiocache-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocache-thread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+
+audiocache-mutex.o: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-mutex.o -MD -MP -MF $(DEPDIR)/audiocache-mutex.Tpo -c -o audiocache-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-mutex.Tpo $(DEPDIR)/audiocache-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocache-mutex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+audiocache-mutex.obj: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-mutex.obj -MD -MP -MF $(DEPDIR)/audiocache-mutex.Tpo -c -o audiocache-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-mutex.Tpo $(DEPDIR)/audiocache-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocache-mutex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+
+audiocache-semaphore.o: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-semaphore.o -MD -MP -MF $(DEPDIR)/audiocache-semaphore.Tpo -c -o audiocache-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-semaphore.Tpo $(DEPDIR)/audiocache-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocache-semaphore.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+audiocache-semaphore.obj: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-semaphore.obj -MD -MP -MF $(DEPDIR)/audiocache-semaphore.Tpo -c -o audiocache-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-semaphore.Tpo $(DEPDIR)/audiocache-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocache-semaphore.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+
+audiocache-configuration.o: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-configuration.o -MD -MP -MF $(DEPDIR)/audiocache-configuration.Tpo -c -o audiocache-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-configuration.Tpo $(DEPDIR)/audiocache-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='audiocache-configuration.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+
+audiocache-configuration.obj: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-configuration.obj -MD -MP -MF $(DEPDIR)/audiocache-configuration.Tpo -c -o audiocache-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-configuration.Tpo $(DEPDIR)/audiocache-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='audiocache-configuration.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+
+audiocache-audiofile.o: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiofile.o -MD -MP -MF $(DEPDIR)/audiocache-audiofile.Tpo -c -o audiocache-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiofile.Tpo $(DEPDIR)/audiocache-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='audiocache-audiofile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+
+audiocache-audiofile.obj: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiofile.obj -MD -MP -MF $(DEPDIR)/audiocache-audiofile.Tpo -c -o audiocache-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiofile.Tpo $(DEPDIR)/audiocache-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='audiocache-audiofile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+
+audiocache-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-test.o -MD -MP -MF $(DEPDIR)/audiocache-test.Tpo -c -o audiocache-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-test.Tpo $(DEPDIR)/audiocache-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocache-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+audiocache-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-test.obj -MD -MP -MF $(DEPDIR)/audiocache-test.Tpo -c -o audiocache-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-test.Tpo $(DEPDIR)/audiocache-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocache-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+audiocache-audiocachetest.o: audiocachetest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocachetest.o -MD -MP -MF $(DEPDIR)/audiocache-audiocachetest.Tpo -c -o audiocache-audiocachetest.o `test -f 'audiocachetest.cc' || echo '$(srcdir)/'`audiocachetest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocachetest.Tpo $(DEPDIR)/audiocache-audiocachetest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocachetest.cc' object='audiocache-audiocachetest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocachetest.o `test -f 'audiocachetest.cc' || echo '$(srcdir)/'`audiocachetest.cc
+
+audiocache-audiocachetest.obj: audiocachetest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -MT audiocache-audiocachetest.obj -MD -MP -MF $(DEPDIR)/audiocache-audiocachetest.Tpo -c -o audiocache-audiocachetest.obj `if test -f 'audiocachetest.cc'; then $(CYGPATH_W) 'audiocachetest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocachetest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocache-audiocachetest.Tpo $(DEPDIR)/audiocache-audiocachetest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocachetest.cc' object='audiocache-audiocachetest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocache_CXXFLAGS) $(CXXFLAGS) -c -o audiocache-audiocachetest.obj `if test -f 'audiocachetest.cc'; then $(CYGPATH_W) 'audiocachetest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocachetest.cc'; fi`
+
+audiocacheeventhandler-audiocacheeventhandler.o: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheeventhandler.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Tpo -c -o audiocacheeventhandler-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='audiocacheeventhandler-audiocacheeventhandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+audiocacheeventhandler-audiocacheeventhandler.obj: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheeventhandler.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Tpo -c -o audiocacheeventhandler-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='audiocacheeventhandler-audiocacheeventhandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+
+audiocacheeventhandler-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Tpo -c -o audiocacheeventhandler-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocacheeventhandler-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+audiocacheeventhandler-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Tpo -c -o audiocacheeventhandler-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocacheeventhandler-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
+audiocacheeventhandler-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocachefile.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocachefile.Tpo -c -o audiocacheeventhandler-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocachefile.Tpo $(DEPDIR)/audiocacheeventhandler-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocacheeventhandler-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+audiocacheeventhandler-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocachefile.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocachefile.Tpo -c -o audiocacheeventhandler-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocachefile.Tpo $(DEPDIR)/audiocacheeventhandler-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocacheeventhandler-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+audiocacheeventhandler-mutex.o: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-mutex.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-mutex.Tpo -c -o audiocacheeventhandler-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-mutex.Tpo $(DEPDIR)/audiocacheeventhandler-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocacheeventhandler-mutex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+audiocacheeventhandler-mutex.obj: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-mutex.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-mutex.Tpo -c -o audiocacheeventhandler-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-mutex.Tpo $(DEPDIR)/audiocacheeventhandler-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocacheeventhandler-mutex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+
+audiocacheeventhandler-thread.o: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-thread.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-thread.Tpo -c -o audiocacheeventhandler-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-thread.Tpo $(DEPDIR)/audiocacheeventhandler-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocacheeventhandler-thread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+audiocacheeventhandler-thread.obj: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-thread.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-thread.Tpo -c -o audiocacheeventhandler-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-thread.Tpo $(DEPDIR)/audiocacheeventhandler-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocacheeventhandler-thread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+
+audiocacheeventhandler-semaphore.o: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-semaphore.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-semaphore.Tpo -c -o audiocacheeventhandler-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-semaphore.Tpo $(DEPDIR)/audiocacheeventhandler-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocacheeventhandler-semaphore.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+audiocacheeventhandler-semaphore.obj: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-semaphore.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-semaphore.Tpo -c -o audiocacheeventhandler-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-semaphore.Tpo $(DEPDIR)/audiocacheeventhandler-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocacheeventhandler-semaphore.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+
+audiocacheeventhandler-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-test.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-test.Tpo -c -o audiocacheeventhandler-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-test.Tpo $(DEPDIR)/audiocacheeventhandler-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocacheeventhandler-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+audiocacheeventhandler-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-test.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-test.Tpo -c -o audiocacheeventhandler-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-test.Tpo $(DEPDIR)/audiocacheeventhandler-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocacheeventhandler-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+audiocacheeventhandler-audiocacheeventhandlertest.o: audiocacheeventhandlertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheeventhandlertest.o -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Tpo -c -o audiocacheeventhandler-audiocacheeventhandlertest.o `test -f 'audiocacheeventhandlertest.cc' || echo '$(srcdir)/'`audiocacheeventhandlertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocacheeventhandlertest.cc' object='audiocacheeventhandler-audiocacheeventhandlertest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheeventhandlertest.o `test -f 'audiocacheeventhandlertest.cc' || echo '$(srcdir)/'`audiocacheeventhandlertest.cc
+
+audiocacheeventhandler-audiocacheeventhandlertest.obj: audiocacheeventhandlertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -MT audiocacheeventhandler-audiocacheeventhandlertest.obj -MD -MP -MF $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Tpo -c -o audiocacheeventhandler-audiocacheeventhandlertest.obj `if test -f 'audiocacheeventhandlertest.cc'; then $(CYGPATH_W) 'audiocacheeventhandlertest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocacheeventhandlertest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Tpo $(DEPDIR)/audiocacheeventhandler-audiocacheeventhandlertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocacheeventhandlertest.cc' object='audiocacheeventhandler-audiocacheeventhandlertest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheeventhandler_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheeventhandler-audiocacheeventhandlertest.obj `if test -f 'audiocacheeventhandlertest.cc'; then $(CYGPATH_W) 'audiocacheeventhandlertest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocacheeventhandlertest.cc'; fi`
+
+audiocachefile-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiocachefile.o -MD -MP -MF $(DEPDIR)/audiocachefile-audiocachefile.Tpo -c -o audiocachefile-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiocachefile.Tpo $(DEPDIR)/audiocachefile-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocachefile-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+audiocachefile-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiocachefile.obj -MD -MP -MF $(DEPDIR)/audiocachefile-audiocachefile.Tpo -c -o audiocachefile-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiocachefile.Tpo $(DEPDIR)/audiocachefile-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='audiocachefile-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+audiocachefile-thread.o: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-thread.o -MD -MP -MF $(DEPDIR)/audiocachefile-thread.Tpo -c -o audiocachefile-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-thread.Tpo $(DEPDIR)/audiocachefile-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocachefile-thread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+audiocachefile-thread.obj: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-thread.obj -MD -MP -MF $(DEPDIR)/audiocachefile-thread.Tpo -c -o audiocachefile-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-thread.Tpo $(DEPDIR)/audiocachefile-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='audiocachefile-thread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+
+audiocachefile-mutex.o: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-mutex.o -MD -MP -MF $(DEPDIR)/audiocachefile-mutex.Tpo -c -o audiocachefile-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-mutex.Tpo $(DEPDIR)/audiocachefile-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocachefile-mutex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+audiocachefile-mutex.obj: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-mutex.obj -MD -MP -MF $(DEPDIR)/audiocachefile-mutex.Tpo -c -o audiocachefile-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-mutex.Tpo $(DEPDIR)/audiocachefile-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='audiocachefile-mutex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+
+audiocachefile-semaphore.o: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-semaphore.o -MD -MP -MF $(DEPDIR)/audiocachefile-semaphore.Tpo -c -o audiocachefile-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-semaphore.Tpo $(DEPDIR)/audiocachefile-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocachefile-semaphore.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+audiocachefile-semaphore.obj: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-semaphore.obj -MD -MP -MF $(DEPDIR)/audiocachefile-semaphore.Tpo -c -o audiocachefile-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-semaphore.Tpo $(DEPDIR)/audiocachefile-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='audiocachefile-semaphore.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+
+audiocachefile-configuration.o: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-configuration.o -MD -MP -MF $(DEPDIR)/audiocachefile-configuration.Tpo -c -o audiocachefile-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-configuration.Tpo $(DEPDIR)/audiocachefile-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='audiocachefile-configuration.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+
+audiocachefile-configuration.obj: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-configuration.obj -MD -MP -MF $(DEPDIR)/audiocachefile-configuration.Tpo -c -o audiocachefile-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-configuration.Tpo $(DEPDIR)/audiocachefile-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='audiocachefile-configuration.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+
+audiocachefile-audiofile.o: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiofile.o -MD -MP -MF $(DEPDIR)/audiocachefile-audiofile.Tpo -c -o audiocachefile-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiofile.Tpo $(DEPDIR)/audiocachefile-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='audiocachefile-audiofile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+
+audiocachefile-audiofile.obj: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiofile.obj -MD -MP -MF $(DEPDIR)/audiocachefile-audiofile.Tpo -c -o audiocachefile-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiofile.Tpo $(DEPDIR)/audiocachefile-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='audiocachefile-audiofile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+
+audiocachefile-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-test.o -MD -MP -MF $(DEPDIR)/audiocachefile-test.Tpo -c -o audiocachefile-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-test.Tpo $(DEPDIR)/audiocachefile-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocachefile-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+audiocachefile-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-test.obj -MD -MP -MF $(DEPDIR)/audiocachefile-test.Tpo -c -o audiocachefile-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-test.Tpo $(DEPDIR)/audiocachefile-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocachefile-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+audiocachefile-audiocachefiletest.o: audiocachefiletest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiocachefiletest.o -MD -MP -MF $(DEPDIR)/audiocachefile-audiocachefiletest.Tpo -c -o audiocachefile-audiocachefiletest.o `test -f 'audiocachefiletest.cc' || echo '$(srcdir)/'`audiocachefiletest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiocachefiletest.Tpo $(DEPDIR)/audiocachefile-audiocachefiletest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocachefiletest.cc' object='audiocachefile-audiocachefiletest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiocachefiletest.o `test -f 'audiocachefiletest.cc' || echo '$(srcdir)/'`audiocachefiletest.cc
+
+audiocachefile-audiocachefiletest.obj: audiocachefiletest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -MT audiocachefile-audiocachefiletest.obj -MD -MP -MF $(DEPDIR)/audiocachefile-audiocachefiletest.Tpo -c -o audiocachefile-audiocachefiletest.obj `if test -f 'audiocachefiletest.cc'; then $(CYGPATH_W) 'audiocachefiletest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocachefiletest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocachefile-audiocachefiletest.Tpo $(DEPDIR)/audiocachefile-audiocachefiletest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocachefiletest.cc' object='audiocachefile-audiocachefiletest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocachefile_CXXFLAGS) $(CXXFLAGS) -c -o audiocachefile-audiocachefiletest.obj `if test -f 'audiocachefiletest.cc'; then $(CYGPATH_W) 'audiocachefiletest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocachefiletest.cc'; fi`
+
+audiocacheidmanager-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Tpo -c -o audiocacheidmanager-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Tpo $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocacheidmanager-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+audiocacheidmanager-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Tpo -c -o audiocacheidmanager-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Tpo $(DEPDIR)/audiocacheidmanager-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='audiocacheidmanager-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
+audiocacheidmanager-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-test.o -MD -MP -MF $(DEPDIR)/audiocacheidmanager-test.Tpo -c -o audiocacheidmanager-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-test.Tpo $(DEPDIR)/audiocacheidmanager-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocacheidmanager-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+audiocacheidmanager-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-test.obj -MD -MP -MF $(DEPDIR)/audiocacheidmanager-test.Tpo -c -o audiocacheidmanager-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-test.Tpo $(DEPDIR)/audiocacheidmanager-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='audiocacheidmanager-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+audiocacheidmanager-audiocacheidmanagertest.o: audiocacheidmanagertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-audiocacheidmanagertest.o -MD -MP -MF $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Tpo -c -o audiocacheidmanager-audiocacheidmanagertest.o `test -f 'audiocacheidmanagertest.cc' || echo '$(srcdir)/'`audiocacheidmanagertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Tpo $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocacheidmanagertest.cc' object='audiocacheidmanager-audiocacheidmanagertest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-audiocacheidmanagertest.o `test -f 'audiocacheidmanagertest.cc' || echo '$(srcdir)/'`audiocacheidmanagertest.cc
+
+audiocacheidmanager-audiocacheidmanagertest.obj: audiocacheidmanagertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -MT audiocacheidmanager-audiocacheidmanagertest.obj -MD -MP -MF $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Tpo -c -o audiocacheidmanager-audiocacheidmanagertest.obj `if test -f 'audiocacheidmanagertest.cc'; then $(CYGPATH_W) 'audiocacheidmanagertest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocacheidmanagertest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Tpo $(DEPDIR)/audiocacheidmanager-audiocacheidmanagertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='audiocacheidmanagertest.cc' object='audiocacheidmanager-audiocacheidmanagertest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(audiocacheidmanager_CXXFLAGS) $(CXXFLAGS) -c -o audiocacheidmanager-audiocacheidmanagertest.obj `if test -f 'audiocacheidmanagertest.cc'; then $(CYGPATH_W) 'audiocacheidmanagertest.cc'; else $(CYGPATH_W) '$(srcdir)/audiocacheidmanagertest.cc'; fi`
+
+configfile-configfile.o: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-configfile.o -MD -MP -MF $(DEPDIR)/configfile-configfile.Tpo -c -o configfile-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-configfile.Tpo $(DEPDIR)/configfile-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='configfile-configfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+configfile-configfile.obj: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-configfile.obj -MD -MP -MF $(DEPDIR)/configfile-configfile.Tpo -c -o configfile-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-configfile.Tpo $(DEPDIR)/configfile-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='configfile-configfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+
+configfile-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-test.o -MD -MP -MF $(DEPDIR)/configfile-test.Tpo -c -o configfile-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-test.Tpo $(DEPDIR)/configfile-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='configfile-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+configfile-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-test.obj -MD -MP -MF $(DEPDIR)/configfile-test.Tpo -c -o configfile-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-test.Tpo $(DEPDIR)/configfile-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='configfile-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+configfile-configtest.o: configtest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-configtest.o -MD -MP -MF $(DEPDIR)/configfile-configtest.Tpo -c -o configfile-configtest.o `test -f 'configtest.cc' || echo '$(srcdir)/'`configtest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-configtest.Tpo $(DEPDIR)/configfile-configtest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='configtest.cc' object='configfile-configtest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-configtest.o `test -f 'configtest.cc' || echo '$(srcdir)/'`configtest.cc
+
+configfile-configtest.obj: configtest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -MT configfile-configtest.obj -MD -MP -MF $(DEPDIR)/configfile-configtest.Tpo -c -o configfile-configtest.obj `if test -f 'configtest.cc'; then $(CYGPATH_W) 'configtest.cc'; else $(CYGPATH_W) '$(srcdir)/configtest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/configfile-configtest.Tpo $(DEPDIR)/configfile-configtest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='configtest.cc' object='configfile-configtest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(configfile_CXXFLAGS) $(CXXFLAGS) -c -o configfile-configtest.obj `if test -f 'configtest.cc'; then $(CYGPATH_W) 'configtest.cc'; else $(CYGPATH_W) '$(srcdir)/configtest.cc'; fi`
+
+engine-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocachefile.o -MD -MP -MF $(DEPDIR)/engine-audiocachefile.Tpo -c -o engine-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocachefile.Tpo $(DEPDIR)/engine-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='engine-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+engine-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocachefile.obj -MD -MP -MF $(DEPDIR)/engine-audiocachefile.Tpo -c -o engine-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocachefile.Tpo $(DEPDIR)/engine-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='engine-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+engine-audiocache.o: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocache.o -MD -MP -MF $(DEPDIR)/engine-audiocache.Tpo -c -o engine-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocache.Tpo $(DEPDIR)/engine-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='engine-audiocache.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+engine-audiocache.obj: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocache.obj -MD -MP -MF $(DEPDIR)/engine-audiocache.Tpo -c -o engine-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocache.Tpo $(DEPDIR)/engine-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='engine-audiocache.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+
+engine-audiocacheeventhandler.o: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocacheeventhandler.o -MD -MP -MF $(DEPDIR)/engine-audiocacheeventhandler.Tpo -c -o engine-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocacheeventhandler.Tpo $(DEPDIR)/engine-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='engine-audiocacheeventhandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+engine-audiocacheeventhandler.obj: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocacheeventhandler.obj -MD -MP -MF $(DEPDIR)/engine-audiocacheeventhandler.Tpo -c -o engine-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocacheeventhandler.Tpo $(DEPDIR)/engine-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='engine-audiocacheeventhandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+
+engine-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/engine-audiocacheidmanager.Tpo -c -o engine-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocacheidmanager.Tpo $(DEPDIR)/engine-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='engine-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+engine-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/engine-audiocacheidmanager.Tpo -c -o engine-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audiocacheidmanager.Tpo $(DEPDIR)/engine-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='engine-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
 engine-audioinputenginemidi.o: $(top_srcdir)/src/audioinputenginemidi.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-audioinputenginemidi.o -MD -MP -MF $(DEPDIR)/engine-audioinputenginemidi.Tpo -c -o engine-audioinputenginemidi.o `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-audioinputenginemidi.Tpo $(DEPDIR)/engine-audioinputenginemidi.Po
@@ -884,6 +1750,20 @@ engine-chresampler.obj: $(top_srcdir)/src/chresampler.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-chresampler.obj `if test -f '$(top_srcdir)/src/chresampler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/chresampler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/chresampler.cc'; fi`
 
+engine-configfile.o: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-configfile.o -MD -MP -MF $(DEPDIR)/engine-configfile.Tpo -c -o engine-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-configfile.Tpo $(DEPDIR)/engine-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='engine-configfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+engine-configfile.obj: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-configfile.obj -MD -MP -MF $(DEPDIR)/engine-configfile.Tpo -c -o engine-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-configfile.Tpo $(DEPDIR)/engine-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='engine-configfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+
 engine-configuration.o: $(top_srcdir)/src/configuration.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-configuration.o -MD -MP -MF $(DEPDIR)/engine-configuration.Tpo -c -o engine-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-configuration.Tpo $(DEPDIR)/engine-configuration.Po
@@ -1010,6 +1890,20 @@ engine-instrumentparser.obj: $(top_srcdir)/src/instrumentparser.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-instrumentparser.obj `if test -f '$(top_srcdir)/src/instrumentparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrumentparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrumentparser.cc'; fi`
 
+engine-memchecker.o: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-memchecker.o -MD -MP -MF $(DEPDIR)/engine-memchecker.Tpo -c -o engine-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-memchecker.Tpo $(DEPDIR)/engine-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='engine-memchecker.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+
+engine-memchecker.obj: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-memchecker.obj -MD -MP -MF $(DEPDIR)/engine-memchecker.Tpo -c -o engine-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-memchecker.Tpo $(DEPDIR)/engine-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='engine-memchecker.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -c -o engine-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+
 engine-messagehandler.o: $(top_srcdir)/src/messagehandler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(engine_CXXFLAGS) $(CXXFLAGS) -MT engine-messagehandler.o -MD -MP -MF $(DEPDIR)/engine-messagehandler.Tpo -c -o engine-messagehandler.o `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/engine-messagehandler.Tpo $(DEPDIR)/engine-messagehandler.Po
@@ -1290,6 +2184,496 @@ lv2-lv2.obj: lv2.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lv2_CXXFLAGS) $(CXXFLAGS) -c -o lv2-lv2.obj `if test -f 'lv2.cc'; then $(CYGPATH_W) 'lv2.cc'; else $(CYGPATH_W) '$(srcdir)/lv2.cc'; fi`
 
+memchecker-audiocachefile.o: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocachefile.o -MD -MP -MF $(DEPDIR)/memchecker-audiocachefile.Tpo -c -o memchecker-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocachefile.Tpo $(DEPDIR)/memchecker-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='memchecker-audiocachefile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocachefile.o `test -f '$(top_srcdir)/src/audiocachefile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocachefile.cc
+
+memchecker-audiocachefile.obj: $(top_srcdir)/src/audiocachefile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocachefile.obj -MD -MP -MF $(DEPDIR)/memchecker-audiocachefile.Tpo -c -o memchecker-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocachefile.Tpo $(DEPDIR)/memchecker-audiocachefile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocachefile.cc' object='memchecker-audiocachefile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocachefile.obj `if test -f '$(top_srcdir)/src/audiocachefile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocachefile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocachefile.cc'; fi`
+
+memchecker-audiocache.o: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocache.o -MD -MP -MF $(DEPDIR)/memchecker-audiocache.Tpo -c -o memchecker-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocache.Tpo $(DEPDIR)/memchecker-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='memchecker-audiocache.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocache.o `test -f '$(top_srcdir)/src/audiocache.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocache.cc
+
+memchecker-audiocache.obj: $(top_srcdir)/src/audiocache.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocache.obj -MD -MP -MF $(DEPDIR)/memchecker-audiocache.Tpo -c -o memchecker-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocache.Tpo $(DEPDIR)/memchecker-audiocache.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocache.cc' object='memchecker-audiocache.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocache.obj `if test -f '$(top_srcdir)/src/audiocache.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocache.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocache.cc'; fi`
+
+memchecker-audiocacheeventhandler.o: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocacheeventhandler.o -MD -MP -MF $(DEPDIR)/memchecker-audiocacheeventhandler.Tpo -c -o memchecker-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocacheeventhandler.Tpo $(DEPDIR)/memchecker-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='memchecker-audiocacheeventhandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocacheeventhandler.o `test -f '$(top_srcdir)/src/audiocacheeventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheeventhandler.cc
+
+memchecker-audiocacheeventhandler.obj: $(top_srcdir)/src/audiocacheeventhandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocacheeventhandler.obj -MD -MP -MF $(DEPDIR)/memchecker-audiocacheeventhandler.Tpo -c -o memchecker-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocacheeventhandler.Tpo $(DEPDIR)/memchecker-audiocacheeventhandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheeventhandler.cc' object='memchecker-audiocacheeventhandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocacheeventhandler.obj `if test -f '$(top_srcdir)/src/audiocacheeventhandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheeventhandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheeventhandler.cc'; fi`
+
+memchecker-audiocacheidmanager.o: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocacheidmanager.o -MD -MP -MF $(DEPDIR)/memchecker-audiocacheidmanager.Tpo -c -o memchecker-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocacheidmanager.Tpo $(DEPDIR)/memchecker-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='memchecker-audiocacheidmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocacheidmanager.o `test -f '$(top_srcdir)/src/audiocacheidmanager.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiocacheidmanager.cc
+
+memchecker-audiocacheidmanager.obj: $(top_srcdir)/src/audiocacheidmanager.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiocacheidmanager.obj -MD -MP -MF $(DEPDIR)/memchecker-audiocacheidmanager.Tpo -c -o memchecker-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiocacheidmanager.Tpo $(DEPDIR)/memchecker-audiocacheidmanager.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiocacheidmanager.cc' object='memchecker-audiocacheidmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiocacheidmanager.obj `if test -f '$(top_srcdir)/src/audiocacheidmanager.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiocacheidmanager.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiocacheidmanager.cc'; fi`
+
+memchecker-audioinputenginemidi.o: $(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audioinputenginemidi.o -MD -MP -MF $(DEPDIR)/memchecker-audioinputenginemidi.Tpo -c -o memchecker-audioinputenginemidi.o `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audioinputenginemidi.Tpo $(DEPDIR)/memchecker-audioinputenginemidi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='memchecker-audioinputenginemidi.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audioinputenginemidi.o `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
+
+memchecker-audioinputenginemidi.obj: $(top_srcdir)/src/audioinputenginemidi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audioinputenginemidi.obj -MD -MP -MF $(DEPDIR)/memchecker-audioinputenginemidi.Tpo -c -o memchecker-audioinputenginemidi.obj `if test -f '$(top_srcdir)/src/audioinputenginemidi.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audioinputenginemidi.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audioinputenginemidi.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audioinputenginemidi.Tpo $(DEPDIR)/memchecker-audioinputenginemidi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='memchecker-audioinputenginemidi.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audioinputenginemidi.obj `if test -f '$(top_srcdir)/src/audioinputenginemidi.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audioinputenginemidi.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audioinputenginemidi.cc'; fi`
+
+memchecker-audiofile.o: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiofile.o -MD -MP -MF $(DEPDIR)/memchecker-audiofile.Tpo -c -o memchecker-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiofile.Tpo $(DEPDIR)/memchecker-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='memchecker-audiofile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiofile.o `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
+
+memchecker-audiofile.obj: $(top_srcdir)/src/audiofile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-audiofile.obj -MD -MP -MF $(DEPDIR)/memchecker-audiofile.Tpo -c -o memchecker-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-audiofile.Tpo $(DEPDIR)/memchecker-audiofile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='memchecker-audiofile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-audiofile.obj `if test -f '$(top_srcdir)/src/audiofile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/audiofile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/audiofile.cc'; fi`
+
+memchecker-channel.o: $(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-channel.o -MD -MP -MF $(DEPDIR)/memchecker-channel.Tpo -c -o memchecker-channel.o `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-channel.Tpo $(DEPDIR)/memchecker-channel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='memchecker-channel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-channel.o `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
+
+memchecker-channel.obj: $(top_srcdir)/src/channel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-channel.obj -MD -MP -MF $(DEPDIR)/memchecker-channel.Tpo -c -o memchecker-channel.obj `if test -f '$(top_srcdir)/src/channel.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/channel.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/channel.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-channel.Tpo $(DEPDIR)/memchecker-channel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='memchecker-channel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-channel.obj `if test -f '$(top_srcdir)/src/channel.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/channel.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/channel.cc'; fi`
+
+memchecker-channelmixer.o: $(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-channelmixer.o -MD -MP -MF $(DEPDIR)/memchecker-channelmixer.Tpo -c -o memchecker-channelmixer.o `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-channelmixer.Tpo $(DEPDIR)/memchecker-channelmixer.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='memchecker-channelmixer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-channelmixer.o `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
+
+memchecker-channelmixer.obj: $(top_srcdir)/src/channelmixer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-channelmixer.obj -MD -MP -MF $(DEPDIR)/memchecker-channelmixer.Tpo -c -o memchecker-channelmixer.obj `if test -f '$(top_srcdir)/src/channelmixer.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/channelmixer.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/channelmixer.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-channelmixer.Tpo $(DEPDIR)/memchecker-channelmixer.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='memchecker-channelmixer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-channelmixer.obj `if test -f '$(top_srcdir)/src/channelmixer.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/channelmixer.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/channelmixer.cc'; fi`
+
+memchecker-chresampler.o: $(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-chresampler.o -MD -MP -MF $(DEPDIR)/memchecker-chresampler.Tpo -c -o memchecker-chresampler.o `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-chresampler.Tpo $(DEPDIR)/memchecker-chresampler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='memchecker-chresampler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-chresampler.o `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
+
+memchecker-chresampler.obj: $(top_srcdir)/src/chresampler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-chresampler.obj -MD -MP -MF $(DEPDIR)/memchecker-chresampler.Tpo -c -o memchecker-chresampler.obj `if test -f '$(top_srcdir)/src/chresampler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/chresampler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/chresampler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-chresampler.Tpo $(DEPDIR)/memchecker-chresampler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='memchecker-chresampler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-chresampler.obj `if test -f '$(top_srcdir)/src/chresampler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/chresampler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/chresampler.cc'; fi`
+
+memchecker-configfile.o: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configfile.o -MD -MP -MF $(DEPDIR)/memchecker-configfile.Tpo -c -o memchecker-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configfile.Tpo $(DEPDIR)/memchecker-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='memchecker-configfile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configfile.o `test -f '$(top_srcdir)/src/configfile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configfile.cc
+
+memchecker-configfile.obj: $(top_srcdir)/src/configfile.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configfile.obj -MD -MP -MF $(DEPDIR)/memchecker-configfile.Tpo -c -o memchecker-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configfile.Tpo $(DEPDIR)/memchecker-configfile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configfile.cc' object='memchecker-configfile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configfile.obj `if test -f '$(top_srcdir)/src/configfile.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configfile.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configfile.cc'; fi`
+
+memchecker-configuration.o: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configuration.o -MD -MP -MF $(DEPDIR)/memchecker-configuration.Tpo -c -o memchecker-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configuration.Tpo $(DEPDIR)/memchecker-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='memchecker-configuration.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configuration.o `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
+
+memchecker-configuration.obj: $(top_srcdir)/src/configuration.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configuration.obj -MD -MP -MF $(DEPDIR)/memchecker-configuration.Tpo -c -o memchecker-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configuration.Tpo $(DEPDIR)/memchecker-configuration.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='memchecker-configuration.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configuration.obj `if test -f '$(top_srcdir)/src/configuration.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configuration.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configuration.cc'; fi`
+
+memchecker-configparser.o: $(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configparser.o -MD -MP -MF $(DEPDIR)/memchecker-configparser.Tpo -c -o memchecker-configparser.o `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configparser.Tpo $(DEPDIR)/memchecker-configparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='memchecker-configparser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configparser.o `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
+
+memchecker-configparser.obj: $(top_srcdir)/src/configparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-configparser.obj -MD -MP -MF $(DEPDIR)/memchecker-configparser.Tpo -c -o memchecker-configparser.obj `if test -f '$(top_srcdir)/src/configparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configparser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-configparser.Tpo $(DEPDIR)/memchecker-configparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='memchecker-configparser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-configparser.obj `if test -f '$(top_srcdir)/src/configparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/configparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/configparser.cc'; fi`
+
+memchecker-drumgizmo.o: $(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumgizmo.o -MD -MP -MF $(DEPDIR)/memchecker-drumgizmo.Tpo -c -o memchecker-drumgizmo.o `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumgizmo.Tpo $(DEPDIR)/memchecker-drumgizmo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='memchecker-drumgizmo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumgizmo.o `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
+
+memchecker-drumgizmo.obj: $(top_srcdir)/src/drumgizmo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumgizmo.obj -MD -MP -MF $(DEPDIR)/memchecker-drumgizmo.Tpo -c -o memchecker-drumgizmo.obj `if test -f '$(top_srcdir)/src/drumgizmo.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumgizmo.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumgizmo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumgizmo.Tpo $(DEPDIR)/memchecker-drumgizmo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='memchecker-drumgizmo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumgizmo.obj `if test -f '$(top_srcdir)/src/drumgizmo.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumgizmo.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumgizmo.cc'; fi`
+
+memchecker-drumkit.o: $(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkit.o -MD -MP -MF $(DEPDIR)/memchecker-drumkit.Tpo -c -o memchecker-drumkit.o `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkit.Tpo $(DEPDIR)/memchecker-drumkit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='memchecker-drumkit.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkit.o `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
+
+memchecker-drumkit.obj: $(top_srcdir)/src/drumkit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkit.obj -MD -MP -MF $(DEPDIR)/memchecker-drumkit.Tpo -c -o memchecker-drumkit.obj `if test -f '$(top_srcdir)/src/drumkit.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkit.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkit.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkit.Tpo $(DEPDIR)/memchecker-drumkit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='memchecker-drumkit.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkit.obj `if test -f '$(top_srcdir)/src/drumkit.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkit.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkit.cc'; fi`
+
+memchecker-drumkitloader.o: $(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkitloader.o -MD -MP -MF $(DEPDIR)/memchecker-drumkitloader.Tpo -c -o memchecker-drumkitloader.o `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkitloader.Tpo $(DEPDIR)/memchecker-drumkitloader.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='memchecker-drumkitloader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkitloader.o `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
+
+memchecker-drumkitloader.obj: $(top_srcdir)/src/drumkitloader.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkitloader.obj -MD -MP -MF $(DEPDIR)/memchecker-drumkitloader.Tpo -c -o memchecker-drumkitloader.obj `if test -f '$(top_srcdir)/src/drumkitloader.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkitloader.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkitloader.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkitloader.Tpo $(DEPDIR)/memchecker-drumkitloader.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='memchecker-drumkitloader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkitloader.obj `if test -f '$(top_srcdir)/src/drumkitloader.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkitloader.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkitloader.cc'; fi`
+
+memchecker-drumkitparser.o: $(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkitparser.o -MD -MP -MF $(DEPDIR)/memchecker-drumkitparser.Tpo -c -o memchecker-drumkitparser.o `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkitparser.Tpo $(DEPDIR)/memchecker-drumkitparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='memchecker-drumkitparser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkitparser.o `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
+
+memchecker-drumkitparser.obj: $(top_srcdir)/src/drumkitparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-drumkitparser.obj -MD -MP -MF $(DEPDIR)/memchecker-drumkitparser.Tpo -c -o memchecker-drumkitparser.obj `if test -f '$(top_srcdir)/src/drumkitparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkitparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkitparser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-drumkitparser.Tpo $(DEPDIR)/memchecker-drumkitparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='memchecker-drumkitparser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-drumkitparser.obj `if test -f '$(top_srcdir)/src/drumkitparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/drumkitparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/drumkitparser.cc'; fi`
+
+memchecker-events.o: $(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-events.o -MD -MP -MF $(DEPDIR)/memchecker-events.Tpo -c -o memchecker-events.o `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-events.Tpo $(DEPDIR)/memchecker-events.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='memchecker-events.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-events.o `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
+
+memchecker-events.obj: $(top_srcdir)/src/events.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-events.obj -MD -MP -MF $(DEPDIR)/memchecker-events.Tpo -c -o memchecker-events.obj `if test -f '$(top_srcdir)/src/events.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/events.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/events.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-events.Tpo $(DEPDIR)/memchecker-events.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='memchecker-events.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-events.obj `if test -f '$(top_srcdir)/src/events.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/events.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/events.cc'; fi`
+
+memchecker-instrument.o: $(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-instrument.o -MD -MP -MF $(DEPDIR)/memchecker-instrument.Tpo -c -o memchecker-instrument.o `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-instrument.Tpo $(DEPDIR)/memchecker-instrument.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='memchecker-instrument.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-instrument.o `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
+
+memchecker-instrument.obj: $(top_srcdir)/src/instrument.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-instrument.obj -MD -MP -MF $(DEPDIR)/memchecker-instrument.Tpo -c -o memchecker-instrument.obj `if test -f '$(top_srcdir)/src/instrument.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrument.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrument.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-instrument.Tpo $(DEPDIR)/memchecker-instrument.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='memchecker-instrument.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-instrument.obj `if test -f '$(top_srcdir)/src/instrument.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrument.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrument.cc'; fi`
+
+memchecker-instrumentparser.o: $(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-instrumentparser.o -MD -MP -MF $(DEPDIR)/memchecker-instrumentparser.Tpo -c -o memchecker-instrumentparser.o `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-instrumentparser.Tpo $(DEPDIR)/memchecker-instrumentparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='memchecker-instrumentparser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-instrumentparser.o `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
+
+memchecker-instrumentparser.obj: $(top_srcdir)/src/instrumentparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-instrumentparser.obj -MD -MP -MF $(DEPDIR)/memchecker-instrumentparser.Tpo -c -o memchecker-instrumentparser.obj `if test -f '$(top_srcdir)/src/instrumentparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrumentparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrumentparser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-instrumentparser.Tpo $(DEPDIR)/memchecker-instrumentparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='memchecker-instrumentparser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-instrumentparser.obj `if test -f '$(top_srcdir)/src/instrumentparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/instrumentparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/instrumentparser.cc'; fi`
+
+memchecker-memchecker.o: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-memchecker.o -MD -MP -MF $(DEPDIR)/memchecker-memchecker.Tpo -c -o memchecker-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-memchecker.Tpo $(DEPDIR)/memchecker-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='memchecker-memchecker.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-memchecker.o `test -f '$(top_srcdir)/src/memchecker.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/memchecker.cc
+
+memchecker-memchecker.obj: $(top_srcdir)/src/memchecker.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-memchecker.obj -MD -MP -MF $(DEPDIR)/memchecker-memchecker.Tpo -c -o memchecker-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-memchecker.Tpo $(DEPDIR)/memchecker-memchecker.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/memchecker.cc' object='memchecker-memchecker.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-memchecker.obj `if test -f '$(top_srcdir)/src/memchecker.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/memchecker.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/memchecker.cc'; fi`
+
+memchecker-messagehandler.o: $(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-messagehandler.o -MD -MP -MF $(DEPDIR)/memchecker-messagehandler.Tpo -c -o memchecker-messagehandler.o `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-messagehandler.Tpo $(DEPDIR)/memchecker-messagehandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='memchecker-messagehandler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-messagehandler.o `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
+
+memchecker-messagehandler.obj: $(top_srcdir)/src/messagehandler.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-messagehandler.obj -MD -MP -MF $(DEPDIR)/memchecker-messagehandler.Tpo -c -o memchecker-messagehandler.obj `if test -f '$(top_srcdir)/src/messagehandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/messagehandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/messagehandler.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-messagehandler.Tpo $(DEPDIR)/memchecker-messagehandler.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='memchecker-messagehandler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-messagehandler.obj `if test -f '$(top_srcdir)/src/messagehandler.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/messagehandler.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/messagehandler.cc'; fi`
+
+memchecker-messagereceiver.o: $(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-messagereceiver.o -MD -MP -MF $(DEPDIR)/memchecker-messagereceiver.Tpo -c -o memchecker-messagereceiver.o `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-messagereceiver.Tpo $(DEPDIR)/memchecker-messagereceiver.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='memchecker-messagereceiver.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-messagereceiver.o `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
+
+memchecker-messagereceiver.obj: $(top_srcdir)/src/messagereceiver.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-messagereceiver.obj -MD -MP -MF $(DEPDIR)/memchecker-messagereceiver.Tpo -c -o memchecker-messagereceiver.obj `if test -f '$(top_srcdir)/src/messagereceiver.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/messagereceiver.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/messagereceiver.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-messagereceiver.Tpo $(DEPDIR)/memchecker-messagereceiver.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='memchecker-messagereceiver.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-messagereceiver.obj `if test -f '$(top_srcdir)/src/messagereceiver.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/messagereceiver.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/messagereceiver.cc'; fi`
+
+memchecker-midimapparser.o: $(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-midimapparser.o -MD -MP -MF $(DEPDIR)/memchecker-midimapparser.Tpo -c -o memchecker-midimapparser.o `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-midimapparser.Tpo $(DEPDIR)/memchecker-midimapparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='memchecker-midimapparser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-midimapparser.o `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
+
+memchecker-midimapparser.obj: $(top_srcdir)/src/midimapparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-midimapparser.obj -MD -MP -MF $(DEPDIR)/memchecker-midimapparser.Tpo -c -o memchecker-midimapparser.obj `if test -f '$(top_srcdir)/src/midimapparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/midimapparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/midimapparser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-midimapparser.Tpo $(DEPDIR)/memchecker-midimapparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='memchecker-midimapparser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-midimapparser.obj `if test -f '$(top_srcdir)/src/midimapparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/midimapparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/midimapparser.cc'; fi`
+
+memchecker-midimapper.o: $(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-midimapper.o -MD -MP -MF $(DEPDIR)/memchecker-midimapper.Tpo -c -o memchecker-midimapper.o `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-midimapper.Tpo $(DEPDIR)/memchecker-midimapper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='memchecker-midimapper.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-midimapper.o `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
+
+memchecker-midimapper.obj: $(top_srcdir)/src/midimapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-midimapper.obj -MD -MP -MF $(DEPDIR)/memchecker-midimapper.Tpo -c -o memchecker-midimapper.obj `if test -f '$(top_srcdir)/src/midimapper.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/midimapper.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/midimapper.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-midimapper.Tpo $(DEPDIR)/memchecker-midimapper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='memchecker-midimapper.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-midimapper.obj `if test -f '$(top_srcdir)/src/midimapper.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/midimapper.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/midimapper.cc'; fi`
+
+memchecker-mutex.o: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-mutex.o -MD -MP -MF $(DEPDIR)/memchecker-mutex.Tpo -c -o memchecker-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-mutex.Tpo $(DEPDIR)/memchecker-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='memchecker-mutex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-mutex.o `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
+
+memchecker-mutex.obj: $(top_srcdir)/src/mutex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-mutex.obj -MD -MP -MF $(DEPDIR)/memchecker-mutex.Tpo -c -o memchecker-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-mutex.Tpo $(DEPDIR)/memchecker-mutex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='memchecker-mutex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-mutex.obj `if test -f '$(top_srcdir)/src/mutex.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/mutex.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mutex.cc'; fi`
+
+memchecker-path.o: $(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-path.o -MD -MP -MF $(DEPDIR)/memchecker-path.Tpo -c -o memchecker-path.o `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-path.Tpo $(DEPDIR)/memchecker-path.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='memchecker-path.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-path.o `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
+
+memchecker-path.obj: $(top_srcdir)/src/path.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-path.obj -MD -MP -MF $(DEPDIR)/memchecker-path.Tpo -c -o memchecker-path.obj `if test -f '$(top_srcdir)/src/path.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/path.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/path.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-path.Tpo $(DEPDIR)/memchecker-path.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='memchecker-path.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-path.obj `if test -f '$(top_srcdir)/src/path.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/path.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/path.cc'; fi`
+
+memchecker-powerlist.o: $(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-powerlist.o -MD -MP -MF $(DEPDIR)/memchecker-powerlist.Tpo -c -o memchecker-powerlist.o `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-powerlist.Tpo $(DEPDIR)/memchecker-powerlist.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='memchecker-powerlist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-powerlist.o `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
+
+memchecker-powerlist.obj: $(top_srcdir)/src/powerlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-powerlist.obj -MD -MP -MF $(DEPDIR)/memchecker-powerlist.Tpo -c -o memchecker-powerlist.obj `if test -f '$(top_srcdir)/src/powerlist.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/powerlist.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/powerlist.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-powerlist.Tpo $(DEPDIR)/memchecker-powerlist.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='memchecker-powerlist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-powerlist.obj `if test -f '$(top_srcdir)/src/powerlist.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/powerlist.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/powerlist.cc'; fi`
+
+memchecker-sample.o: $(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-sample.o -MD -MP -MF $(DEPDIR)/memchecker-sample.Tpo -c -o memchecker-sample.o `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-sample.Tpo $(DEPDIR)/memchecker-sample.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='memchecker-sample.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-sample.o `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
+
+memchecker-sample.obj: $(top_srcdir)/src/sample.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-sample.obj -MD -MP -MF $(DEPDIR)/memchecker-sample.Tpo -c -o memchecker-sample.obj `if test -f '$(top_srcdir)/src/sample.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/sample.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/sample.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-sample.Tpo $(DEPDIR)/memchecker-sample.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='memchecker-sample.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-sample.obj `if test -f '$(top_srcdir)/src/sample.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/sample.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/sample.cc'; fi`
+
+memchecker-semaphore.o: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-semaphore.o -MD -MP -MF $(DEPDIR)/memchecker-semaphore.Tpo -c -o memchecker-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-semaphore.Tpo $(DEPDIR)/memchecker-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='memchecker-semaphore.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-semaphore.o `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
+
+memchecker-semaphore.obj: $(top_srcdir)/src/semaphore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-semaphore.obj -MD -MP -MF $(DEPDIR)/memchecker-semaphore.Tpo -c -o memchecker-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-semaphore.Tpo $(DEPDIR)/memchecker-semaphore.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='memchecker-semaphore.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-semaphore.obj `if test -f '$(top_srcdir)/src/semaphore.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/semaphore.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/semaphore.cc'; fi`
+
+memchecker-saxparser.o: $(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-saxparser.o -MD -MP -MF $(DEPDIR)/memchecker-saxparser.Tpo -c -o memchecker-saxparser.o `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-saxparser.Tpo $(DEPDIR)/memchecker-saxparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='memchecker-saxparser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-saxparser.o `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
+
+memchecker-saxparser.obj: $(top_srcdir)/src/saxparser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-saxparser.obj -MD -MP -MF $(DEPDIR)/memchecker-saxparser.Tpo -c -o memchecker-saxparser.obj `if test -f '$(top_srcdir)/src/saxparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/saxparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/saxparser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-saxparser.Tpo $(DEPDIR)/memchecker-saxparser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='memchecker-saxparser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-saxparser.obj `if test -f '$(top_srcdir)/src/saxparser.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/saxparser.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/saxparser.cc'; fi`
+
+memchecker-thread.o: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-thread.o -MD -MP -MF $(DEPDIR)/memchecker-thread.Tpo -c -o memchecker-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-thread.Tpo $(DEPDIR)/memchecker-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='memchecker-thread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-thread.o `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
+
+memchecker-thread.obj: $(top_srcdir)/src/thread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-thread.obj -MD -MP -MF $(DEPDIR)/memchecker-thread.Tpo -c -o memchecker-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-thread.Tpo $(DEPDIR)/memchecker-thread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='memchecker-thread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-thread.obj `if test -f '$(top_srcdir)/src/thread.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/thread.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/thread.cc'; fi`
+
+memchecker-velocity.o: $(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-velocity.o -MD -MP -MF $(DEPDIR)/memchecker-velocity.Tpo -c -o memchecker-velocity.o `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-velocity.Tpo $(DEPDIR)/memchecker-velocity.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='memchecker-velocity.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-velocity.o `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
+
+memchecker-velocity.obj: $(top_srcdir)/src/velocity.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-velocity.obj -MD -MP -MF $(DEPDIR)/memchecker-velocity.Tpo -c -o memchecker-velocity.obj `if test -f '$(top_srcdir)/src/velocity.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/velocity.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/velocity.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-velocity.Tpo $(DEPDIR)/memchecker-velocity.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='memchecker-velocity.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-velocity.obj `if test -f '$(top_srcdir)/src/velocity.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/velocity.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/velocity.cc'; fi`
+
+memchecker-versionstr.o: $(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-versionstr.o -MD -MP -MF $(DEPDIR)/memchecker-versionstr.Tpo -c -o memchecker-versionstr.o `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-versionstr.Tpo $(DEPDIR)/memchecker-versionstr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='memchecker-versionstr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-versionstr.o `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
+
+memchecker-versionstr.obj: $(top_srcdir)/src/versionstr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-versionstr.obj -MD -MP -MF $(DEPDIR)/memchecker-versionstr.Tpo -c -o memchecker-versionstr.obj `if test -f '$(top_srcdir)/src/versionstr.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/versionstr.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/versionstr.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-versionstr.Tpo $(DEPDIR)/memchecker-versionstr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='memchecker-versionstr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-versionstr.obj `if test -f '$(top_srcdir)/src/versionstr.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/versionstr.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/versionstr.cc'; fi`
+
+memchecker-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-test.o -MD -MP -MF $(DEPDIR)/memchecker-test.Tpo -c -o memchecker-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-test.Tpo $(DEPDIR)/memchecker-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='memchecker-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+memchecker-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-test.obj -MD -MP -MF $(DEPDIR)/memchecker-test.Tpo -c -o memchecker-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-test.Tpo $(DEPDIR)/memchecker-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='memchecker-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+memchecker-memcheckertest.o: memcheckertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-memcheckertest.o -MD -MP -MF $(DEPDIR)/memchecker-memcheckertest.Tpo -c -o memchecker-memcheckertest.o `test -f 'memcheckertest.cc' || echo '$(srcdir)/'`memcheckertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-memcheckertest.Tpo $(DEPDIR)/memchecker-memcheckertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='memcheckertest.cc' object='memchecker-memcheckertest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-memcheckertest.o `test -f 'memcheckertest.cc' || echo '$(srcdir)/'`memcheckertest.cc
+
+memchecker-memcheckertest.obj: memcheckertest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -MT memchecker-memcheckertest.obj -MD -MP -MF $(DEPDIR)/memchecker-memcheckertest.Tpo -c -o memchecker-memcheckertest.obj `if test -f 'memcheckertest.cc'; then $(CYGPATH_W) 'memcheckertest.cc'; else $(CYGPATH_W) '$(srcdir)/memcheckertest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/memchecker-memcheckertest.Tpo $(DEPDIR)/memchecker-memcheckertest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='memcheckertest.cc' object='memchecker-memcheckertest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(memchecker_CXXFLAGS) $(CXXFLAGS) -c -o memchecker-memcheckertest.obj `if test -f 'memcheckertest.cc'; then $(CYGPATH_W) 'memcheckertest.cc'; else $(CYGPATH_W) '$(srcdir)/memcheckertest.cc'; fi`
+
 resampler-chresampler.o: $(top_srcdir)/src/chresampler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resampler_CXXFLAGS) $(CXXFLAGS) -MT resampler-chresampler.o -MD -MP -MF $(DEPDIR)/resampler-chresampler.Tpo -c -o resampler-chresampler.o `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resampler-chresampler.Tpo $(DEPDIR)/resampler-chresampler.Po
@@ -1332,6 +2716,62 @@ resampler-resampler.obj: resampler.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resampler_CXXFLAGS) $(CXXFLAGS) -c -o resampler-resampler.obj `if test -f 'resampler.cc'; then $(CYGPATH_W) 'resampler.cc'; else $(CYGPATH_W) '$(srcdir)/resampler.cc'; fi`
 
+resource-resource.o: $(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource.o -MD -MP -MF $(DEPDIR)/resource-resource.Tpo -c -o resource-resource.o `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource.Tpo $(DEPDIR)/resource-resource.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='resource-resource.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource.o `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
+
+resource-resource.obj: $(top_srcdir)/plugingui/resource.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource.obj -MD -MP -MF $(DEPDIR)/resource-resource.Tpo -c -o resource-resource.obj `if test -f '$(top_srcdir)/plugingui/resource.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/resource.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/resource.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource.Tpo $(DEPDIR)/resource-resource.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='resource-resource.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource.obj `if test -f '$(top_srcdir)/plugingui/resource.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/resource.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/resource.cc'; fi`
+
+resource-resource_data.o: $(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource_data.o -MD -MP -MF $(DEPDIR)/resource-resource_data.Tpo -c -o resource-resource_data.o `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource_data.Tpo $(DEPDIR)/resource-resource_data.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='resource-resource_data.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource_data.o `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
+
+resource-resource_data.obj: $(top_srcdir)/plugingui/resource_data.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource_data.obj -MD -MP -MF $(DEPDIR)/resource-resource_data.Tpo -c -o resource-resource_data.obj `if test -f '$(top_srcdir)/plugingui/resource_data.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/resource_data.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/resource_data.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource_data.Tpo $(DEPDIR)/resource-resource_data.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='resource-resource_data.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource_data.obj `if test -f '$(top_srcdir)/plugingui/resource_data.cc'; then $(CYGPATH_W) '$(top_srcdir)/plugingui/resource_data.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/plugingui/resource_data.cc'; fi`
+
+resource-test.o: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-test.o -MD -MP -MF $(DEPDIR)/resource-test.Tpo -c -o resource-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-test.Tpo $(DEPDIR)/resource-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='resource-test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-test.o `test -f 'test.cc' || echo '$(srcdir)/'`test.cc
+
+resource-test.obj: test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-test.obj -MD -MP -MF $(DEPDIR)/resource-test.Tpo -c -o resource-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-test.Tpo $(DEPDIR)/resource-test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test.cc' object='resource-test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-test.obj `if test -f 'test.cc'; then $(CYGPATH_W) 'test.cc'; else $(CYGPATH_W) '$(srcdir)/test.cc'; fi`
+
+resource-resource_test.o: resource_test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource_test.o -MD -MP -MF $(DEPDIR)/resource-resource_test.Tpo -c -o resource-resource_test.o `test -f 'resource_test.cc' || echo '$(srcdir)/'`resource_test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource_test.Tpo $(DEPDIR)/resource-resource_test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='resource_test.cc' object='resource-resource_test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource_test.o `test -f 'resource_test.cc' || echo '$(srcdir)/'`resource_test.cc
+
+resource-resource_test.obj: resource_test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -MT resource-resource_test.obj -MD -MP -MF $(DEPDIR)/resource-resource_test.Tpo -c -o resource-resource_test.obj `if test -f 'resource_test.cc'; then $(CYGPATH_W) 'resource_test.cc'; else $(CYGPATH_W) '$(srcdir)/resource_test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/resource-resource_test.Tpo $(DEPDIR)/resource-resource_test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='resource_test.cc' object='resource-resource_test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resource_CXXFLAGS) $(CXXFLAGS) -c -o resource-resource_test.obj `if test -f 'resource_test.cc'; then $(CYGPATH_W) 'resource_test.cc'; else $(CYGPATH_W) '$(srcdir)/resource_test.cc'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -1531,6 +2971,13 @@ recheck: all $(check_PROGRAMS)
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
+resource.log: resource$(EXEEXT)
+	@p='resource$(EXEEXT)'; \
+	b='resource'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 engine.log: engine$(EXEEXT)
 	@p='engine$(EXEEXT)'; \
 	b='engine'; \
@@ -1559,6 +3006,48 @@ lv2.log: lv2$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+configfile.log: configfile$(EXEEXT)
+	@p='configfile$(EXEEXT)'; \
+	b='configfile'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+audiocache.log: audiocache$(EXEEXT)
+	@p='audiocache$(EXEEXT)'; \
+	b='audiocache'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+audiocachefile.log: audiocachefile$(EXEEXT)
+	@p='audiocachefile$(EXEEXT)'; \
+	b='audiocachefile'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+audiocacheidmanager.log: audiocacheidmanager$(EXEEXT)
+	@p='audiocacheidmanager$(EXEEXT)'; \
+	b='audiocacheidmanager'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+audiocacheeventhandler.log: audiocacheeventhandler$(EXEEXT)
+	@p='audiocacheeventhandler$(EXEEXT)'; \
+	b='audiocacheeventhandler'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+memchecker.log: memchecker$(EXEEXT)
+	@p='memchecker$(EXEEXT)'; \
+	b='memchecker'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/gui.cc b/test/audiocacheeventhandlertest.cc
similarity index 55%
copy from test/gui.cc
copy to test/audiocacheeventhandlertest.cc
index f227747..0b408e0 100644
--- a/test/gui.cc
+++ b/test/audiocacheeventhandlertest.cc
@@ -1,9 +1,9 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /***************************************************************************
- *            gui.cc
+ *            audiocacheeventhandlertest.cc
  *
- *  Fri Nov 29 18:08:57 CET 2013
- *  Copyright 2013 Bent Bisballe Nyeng
+ *  Thu Jan  7 15:44:14 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
  *  deva at aasimon.org
  ****************************************************************************/
 
@@ -11,35 +11,42 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 #include <cppunit/extensions/HelperMacros.h>
 
-class test_gui : public CppUnit::TestFixture
+#include <audiocacheeventhandler.h>
+
+class AudioCacheEventHandlerTest
+	: public CppUnit::TestFixture
 {
-  CPPUNIT_TEST_SUITE(test_gui);
-	CPPUNIT_TEST(test1);
+	CPPUNIT_TEST_SUITE(AudioCacheEventHandlerTest);
+	CPPUNIT_TEST(threadedTest);
 	CPPUNIT_TEST_SUITE_END();
 
 public:
 	void setUp() {}
 	void tearDown() {}
 
-  void test1() {
+	void threadedTest()
+	{
+		AudioCacheIDManager id_manager;
+		id_manager.init(10);
+
+		AudioCacheEventHandler event_handler(id_manager);
 	}
 };
 
 // Registers the fixture into the 'registry'
-CPPUNIT_TEST_SUITE_REGISTRATION(test_gui);
-
+CPPUNIT_TEST_SUITE_REGISTRATION(AudioCacheEventHandlerTest);
diff --git a/test/audiocachefiletest.cc b/test/audiocachefiletest.cc
new file mode 100644
index 0000000..d5d5437
--- /dev/null
+++ b/test/audiocachefiletest.cc
@@ -0,0 +1,246 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocachefiletest.cc
+ *
+ *  Thu Jan  7 15:43:12 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <cstring>
+
+#include <audiocachefile.h>
+#include <audiofile.h>
+
+class TestableAudioCacheFiles
+	: public AudioCacheFiles
+{
+public:
+	//CacheAudioFile& getAudioFile(const std::string& filename);
+	//void release(const std::string& filename);
+	int getRef(const std::string& filename)
+	{
+		auto it = audiofiles.find(filename);
+
+		if(it == audiofiles.end())
+		{
+			return -1;
+		}
+
+		return (it->second).ref;
+	}
+};
+
+class AudioCacheFileTest
+	: public CppUnit::TestFixture
+{
+	CPPUNIT_TEST_SUITE(AudioCacheFileTest);
+	CPPUNIT_TEST(refTest);
+	CPPUNIT_TEST(readTest);
+	CPPUNIT_TEST(noFileTest);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp() {}
+	void tearDown() {}
+
+	void refTest()
+	{
+		TestableAudioCacheFiles audiofiles;
+		std::string filename = "kit/ride-single-channel.wav";
+		CPPUNIT_ASSERT_EQUAL(-1, audiofiles.getRef(filename));
+
+		audiofiles.getFile(filename);
+		CPPUNIT_ASSERT_EQUAL(1, audiofiles.getRef(filename));
+
+		audiofiles.getFile(filename);
+		CPPUNIT_ASSERT_EQUAL(2, audiofiles.getRef(filename));
+
+		audiofiles.releaseFile(filename);
+		CPPUNIT_ASSERT_EQUAL(1, audiofiles.getRef(filename));
+
+		audiofiles.releaseFile(filename);
+		CPPUNIT_ASSERT_EQUAL(-1, audiofiles.getRef(filename));
+	}
+
+	void readTestHelper(size_t buffer_size)
+	{
+		printf("Test buffer size: %d samples\n", (int)buffer_size);
+
+		std::string filename = "kit/ride-multi-channel.wav";
+		AudioFile* ref_file[13];
+		for(size_t c = 0; c < 13; ++c)
+		{
+			ref_file[c] = new AudioFile(filename, c);
+			ref_file[c]->load();
+		}
+
+		std::vector<sample_t> read_buffer;
+
+		AudioCacheFile file(filename, read_buffer);
+		CPPUNIT_ASSERT_EQUAL(filename, file.getFilename());
+		CPPUNIT_ASSERT_EQUAL(13, (int)file.getChannelCount()); // Sanity check
+
+		CacheChannels channels;
+
+		sample_t samples[13][buffer_size];
+		volatile bool ready[13];
+		for(size_t c = 0; c < 13; ++c)
+		{
+			for(size_t i = 0; i < buffer_size; ++i)
+			{
+				samples[c][i] = 42;
+			}
+
+			channels.push_back(
+				{
+					c, // channel
+					samples[c], // samples
+					buffer_size, // max_num_samples
+					&ready[c] // ready
+				}
+			);
+		}
+
+		for(size_t offset = 0; offset < file.getSize(); offset += buffer_size)
+		{
+			for(size_t c = 0; c < 13; ++c)
+			{
+				ready[c] = false;
+			}
+
+			size_t read_size = file.getSize() - offset;
+			if(read_size > buffer_size)
+			{
+				read_size = buffer_size;
+			}
+			else
+			{
+				printf("Last read: %d samples\n", (int)read_size);
+			}
+
+			file.readChunk(channels, offset, read_size);
+
+			for(size_t c = 0; c < 13; ++c)
+			{
+				CPPUNIT_ASSERT_EQUAL(true, ready[c]?true:false);
+			}
+
+			sample_t diff[13] = {0.0};
+			for(size_t c = 0; c < 13; ++c)
+			{
+				for(size_t i = 0; i < read_size; ++i)
+				{
+					diff[c] += abs(ref_file[c]->data[i + offset] - samples[c][i]);
+				}
+			}
+
+			for(int c = 0; c < 13; ++c)
+			{
+				CPPUNIT_ASSERT_EQUAL((sample_t)0.0, diff[c]);
+			}
+		}
+
+		for(size_t c = 0; c < 13; ++c)
+		{
+			delete ref_file[c];
+		}
+	}
+
+	void readTest()
+	{
+		// Exhaustive test for 1...64
+		for(size_t buffer_size = 1; buffer_size < 64; ++buffer_size)
+		{
+			readTestHelper(buffer_size);
+		}
+
+		// Binary test for 64 .. 4096
+		for(size_t buffer_size = 64; buffer_size < 4096; buffer_size *= 2)
+		{
+			readTestHelper(buffer_size);
+		}
+
+		// And some sporadic tests for some "wierd" sizes.
+		for(size_t buffer_size = 65; buffer_size < 4096; buffer_size *= 1.1)
+		{
+			readTestHelper(buffer_size);
+		}
+	}
+
+	void noFileTest()
+	{
+		size_t buffer_size = 64;
+		std::string filename = "kits/no-such-file.wav";
+
+		std::vector<sample_t> read_buffer;
+
+		AudioCacheFile file(filename, read_buffer);
+		CPPUNIT_ASSERT_EQUAL(filename, file.getFilename());
+		CPPUNIT_ASSERT_EQUAL(0u, (unsigned int)file.getSize());
+		CPPUNIT_ASSERT_EQUAL(0u, (unsigned int)file.getChannelCount());
+
+		CacheChannels channels;
+
+		sample_t samples[13][buffer_size];
+		volatile bool ready[13];
+		for(size_t c = 0; c < 13; ++c)
+		{
+			for(size_t i = 0; i < buffer_size; ++i)
+			{
+				samples[c][i] = 42.0f;
+			}
+
+			channels.push_back(
+				{
+					c, // channel
+					samples[c], // samples
+					buffer_size, // max_num_samples
+					&ready[c] // ready
+				}
+			);
+		}
+
+		for(size_t c = 0; c < 13; ++c)
+		{
+			ready[c] = false;
+		}
+
+		file.readChunk(channels, 0, buffer_size);
+
+		for(size_t c = 0; c < 13; ++c)
+		{
+			CPPUNIT_ASSERT_EQUAL(false, ready[c]?true:false);
+		}
+
+		for(size_t c = 0; c < 13; ++c)
+		{
+			for(size_t i = 0; i < buffer_size; ++i)
+			{
+				CPPUNIT_ASSERT_EQUAL(42.0f, samples[c][i]);
+			}
+		}
+	}
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(AudioCacheFileTest);
diff --git a/test/audiocacheidmanagertest.cc b/test/audiocacheidmanagertest.cc
new file mode 100644
index 0000000..74aaaf6
--- /dev/null
+++ b/test/audiocacheidmanagertest.cc
@@ -0,0 +1,101 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            audiocacheidmanagertest.cc
+ *
+ *  Thu Jan  7 15:42:31 CET 2016
+ *  Copyright 2016 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <audiocacheidmanager.h>
+
+class TestableAudioCacheIDManager
+	: public AudioCacheIDManager
+{
+public:
+	int getAvailableIDs()
+	{
+		return available_ids.size();
+	}
+};
+
+class AudioCacheIDManagerTest
+	: public CppUnit::TestFixture
+{
+	CPPUNIT_TEST_SUITE(AudioCacheIDManagerTest);
+	CPPUNIT_TEST(registerReleaseTest);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp() {}
+	void tearDown() {}
+
+	void registerReleaseTest()
+	{
+		TestableAudioCacheIDManager manager;
+		manager.init(2);
+
+		cache_t c1; c1.afile = (AudioCacheFile*)1;
+		auto id1 = manager.registerID(c1);
+		CPPUNIT_ASSERT(id1 != CACHE_DUMMYID);
+		CPPUNIT_ASSERT(id1 != CACHE_NOID);
+		CPPUNIT_ASSERT_EQUAL(1, manager.getAvailableIDs());
+
+		cache_t c2; c2.afile = (AudioCacheFile*)2;
+		auto id2 = manager.registerID(c2);
+		CPPUNIT_ASSERT(id2 != CACHE_DUMMYID);
+		CPPUNIT_ASSERT(id2 != CACHE_NOID);
+		CPPUNIT_ASSERT_EQUAL(0, manager.getAvailableIDs());
+
+		cache_t c3; c3.afile = (AudioCacheFile*)3;
+		auto id3 = manager.registerID(c3);
+		CPPUNIT_ASSERT(id3 == CACHE_DUMMYID);
+		CPPUNIT_ASSERT_EQUAL(0, manager.getAvailableIDs());
+
+		cache_t& tc1 = manager.getCache(id1);
+		CPPUNIT_ASSERT_EQUAL(c1.afile, tc1.afile);
+
+		cache_t& tc2 = manager.getCache(id2);
+		CPPUNIT_ASSERT_EQUAL(c2.afile, tc2.afile);
+
+		manager.releaseID(id1);
+		CPPUNIT_ASSERT_EQUAL(1, manager.getAvailableIDs());
+
+		cache_t c4; c4.afile = (AudioCacheFile*)4;
+		auto id4 = manager.registerID(c4);
+		CPPUNIT_ASSERT(id4 != CACHE_DUMMYID);
+		CPPUNIT_ASSERT(id4 != CACHE_NOID);
+		CPPUNIT_ASSERT_EQUAL(0, manager.getAvailableIDs());
+
+		cache_t& tc4 = manager.getCache(id4);
+		CPPUNIT_ASSERT_EQUAL(c4.afile, tc4.afile);
+
+		manager.releaseID(id2);
+		CPPUNIT_ASSERT_EQUAL(1, manager.getAvailableIDs());
+
+		manager.releaseID(id4);
+		CPPUNIT_ASSERT_EQUAL(2, manager.getAvailableIDs());
+	}
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(AudioCacheIDManagerTest);
diff --git a/test/audiocachetest.cc b/test/audiocachetest.cc
new file mode 100644
index 0000000..f67909d
--- /dev/null
+++ b/test/audiocachetest.cc
@@ -0,0 +1,180 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            cachemanagertest.cc
+ *
+ *  Sun Apr 19 10:15:59 CEST 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <audiofile.h>
+#include <audiocache.h>
+#include <unistd.h>
+
+#define FRAMESIZE 64
+
+class AudioCacheTest
+	: public CppUnit::TestFixture
+{
+	CPPUNIT_TEST_SUITE(AudioCacheTest);
+	CPPUNIT_TEST(singleChannelNonThreaded);
+	CPPUNIT_TEST(singleChannelThreaded);
+	CPPUNIT_TEST(multiChannelNonThreaded);
+	CPPUNIT_TEST(multiChannelThreaded);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp() {}
+	void tearDown() {}
+
+	//! Test runner.
+	//! \param filename The name of the file to read.
+	//! \param channel The channel number to do comparison on.
+	//! \param thread Control if this test is running in threaded mode or not.
+	//! \param framesize The initial framesize to use.
+	void testHelper(const char* filename, int channel, bool threaded,
+	                int framesize)
+	{
+		// Reference file:
+		AudioFile audio_file_ref(filename, channel);
+		printf("audio_file_ref.load\n");
+		audio_file_ref.load(ALL_SAMPLES);
+
+		// Input file:
+		AudioFile audio_file(filename, channel);
+		printf("audio_file.load\n");
+		audio_file.load(4096);
+
+		AudioCache audio_cache;
+		printf("audio_cache.init\n");
+		audio_cache.init(100);
+		audio_cache.setAsyncMode(threaded);
+
+		// Set initial (upper limit) framesize
+		audio_cache.setFrameSize(framesize);
+
+		cacheid_t id;
+
+		for(size_t initial_samples_needed = 0;
+		    initial_samples_needed < (size_t)(framesize + 1);
+		    ++initial_samples_needed)
+		{
+
+			printf("open: initial_samples_needed: %d\n", (int)initial_samples_needed);
+			sample_t *samples =
+				audio_cache.open(audio_file, initial_samples_needed, channel, id);
+			size_t size = initial_samples_needed;
+			size_t offset = 0;
+
+			// Test pre cache:
+			for(size_t i = 0; i < size; ++i)
+			{
+				CPPUNIT_ASSERT_EQUAL(audio_file_ref.data[offset], samples[i]);
+				++offset;
+			}
+
+			// Test the rest
+			while(offset < audio_file_ref.size)
+			{
+				if(threaded)
+				{
+					// Wait until we are finished reading
+					int timeout = 1000;
+					while(!audio_cache.isReady(id))
+					{
+						usleep(1000);
+						if(--timeout == 0)
+						{
+							CPPUNIT_ASSERT(false); // timeout
+						}
+					}
+				}
+
+				samples = audio_cache.next(id, size);
+
+				CPPUNIT_ASSERT_EQUAL(0, (int)audio_cache.getNumberOfUnderruns());
+
+				for(size_t i = 0; (i < size) && (offset < audio_file_ref.size); ++i)
+				{
+					if(audio_file_ref.data[offset] != samples[i])
+					{
+						printf("-----> offset: %d, size: %d, diff: %d,"
+						       " i: %d, size: %d, block-diff: %d\n",
+						       (int)offset, (int)audio_file_ref.size,
+						       (int)(audio_file_ref.size - offset),
+						       (int)i, (int)size, (int)(size - i));
+					}
+					CPPUNIT_ASSERT_EQUAL(audio_file_ref.data[offset], samples[i]);
+					++offset;
+				}
+			}
+
+			audio_cache.close(id);
+		}
+
+		printf("done\n");
+	}
+
+	void singleChannelNonThreaded()
+	{
+		printf("\nsinglechannel_nonthreaded()\n");
+		const char filename[] = "kit/ride-single-channel.wav";
+		int channel = 0;
+		bool threaded = false;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+	}
+
+	void singleChannelThreaded()
+	{
+		printf("\nsinglechannel_threaded()\n");
+		const char filename[] = "kit/ride-single-channel.wav";
+		int channel = 0;
+		bool threaded = true;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+	}
+
+	void multiChannelNonThreaded()
+	{
+		printf("\nmultichannel_nonthreaded()\n");
+		const char filename[] = "kit/ride-multi-channel.wav";
+		int channel = 0;
+		bool threaded = false;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+		++channel;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+	}
+
+	void multiChannelThreaded()
+	{
+		printf("\nmultichannel_threaded()\n");
+		const char filename[] = "kit/ride-multi-channel.wav";
+		int channel = 0;
+		bool threaded = true;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+		++channel;
+		testHelper(filename, channel, threaded, FRAMESIZE);
+	}
+
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(AudioCacheTest);
diff --git a/test/configtest.cc b/test/configtest.cc
new file mode 100644
index 0000000..1b8b265
--- /dev/null
+++ b/test/configtest.cc
@@ -0,0 +1,219 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            configtest.cc
+ *
+ *  Thu May 14 20:58:29 CEST 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <unistd.h>
+#include <stdio.h>
+
+#include "../src/configfile.h"
+
+class TestConfigFile : public ConfigFile {
+public:
+  TestConfigFile() : ConfigFile("") {}
+
+protected:
+  // Overload the built-in open method to use local file instead of homedir.
+  virtual bool open(std::string mode)
+  {
+    fp = fopen("test.conf", mode.c_str());
+    return fp != NULL;
+  }
+};
+
+class test_configtest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE(test_configtest);
+	CPPUNIT_TEST(loading_no_newline);
+	CPPUNIT_TEST(loading_equal_sign);
+	CPPUNIT_TEST(loading_newline);
+	CPPUNIT_TEST(loading_padding_space);
+	CPPUNIT_TEST(loading_padding_space_newline);
+	CPPUNIT_TEST(loading_padding_tab);
+	CPPUNIT_TEST(loading_padding_tab_newline);
+	CPPUNIT_TEST(loading_comment);
+	CPPUNIT_TEST(loading_inline_comment);
+	CPPUNIT_TEST(loading_single_quoted_string);
+	CPPUNIT_TEST(loading_double_quoted_string);
+	CPPUNIT_TEST(loading_error_no_key);
+	CPPUNIT_TEST(loading_error_no_value);
+	CPPUNIT_TEST(loading_error_string_not_terminated_single);
+	CPPUNIT_TEST(loading_error_string_not_terminated_double);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp()
+  {
+  }
+
+	void tearDown()
+  {
+    unlink("test.conf");
+  }
+
+  void writeFile(const char* str)
+  {
+    FILE* fp = fopen("test.conf", "w");
+    fprintf(fp, "%s", str);
+    fclose(fp);
+  }
+
+  void loading_no_newline()
+  {
+    writeFile("a:b");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_equal_sign()
+  {
+    writeFile(" a =\tb\t\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_newline()
+  {
+    writeFile("a:b\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_padding_space()
+  {
+    writeFile(" a : b ");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_padding_tab()
+  {
+    writeFile("\ta\t:\tb\t");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_padding_space_newline()
+  {
+    writeFile(" a : b \n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_padding_tab_newline()
+  {
+    writeFile("\ta\t:\tb\t\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_comment()
+  {
+    writeFile("# comment\na:b\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_inline_comment()
+  {
+    writeFile("a:b #comment\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("b"), cf.getValue("a"));
+	}
+
+  void loading_single_quoted_string()
+  {
+    writeFile("a: '#\"b\" ' \n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("#\"b\" "), cf.getValue("a"));
+	}
+
+  void loading_double_quoted_string()
+  {
+    writeFile("a: \"#'b' \" \n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(true, cf.load());
+    CPPUNIT_ASSERT_EQUAL(std::string("#'b' "), cf.getValue("a"));
+	}
+
+  void loading_error_no_key()
+  {
+    writeFile(":foo");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(false, cf.load());
+	}
+
+  void loading_error_no_value()
+  {
+    writeFile("key");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(false, cf.load());
+	}
+
+  void loading_error_string_not_terminated_single()
+  {
+    writeFile("a:'b\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(false, cf.load());
+	}
+
+  void loading_error_string_not_terminated_double()
+  {
+    writeFile("a:\"b\n");
+
+    TestConfigFile cf;
+    CPPUNIT_ASSERT_EQUAL(false, cf.load());
+	}
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(test_configtest);
+
+
diff --git a/test/engine.cc b/test/engine.cc
index 69d2a37..86f4f4d 100644
--- a/test/engine.cc
+++ b/test/engine.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -43,6 +43,7 @@ public:
     AudioOutputEngine *oe = NULL;
     AudioInputEngine *ie = NULL;
     DrumGizmo dg(oe, ie);
+    dg.setFrameSize(100);
 
     // Switch kits emmidiately with giving the loader time to work:
     for(int i = 0; i < 100; i++) {
diff --git a/test/gui.cc b/test/gui.cc
index f227747..59e98b0 100644
--- a/test/gui.cc
+++ b/test/gui.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/test/lv2.cc b/test/lv2.cc
index bfd2ce5..45af076 100644
--- a/test/lv2.cc
+++ b/test/lv2.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -35,6 +35,13 @@
 
 #define DG_URI "http://drumgizmo.org/lv2"
 
+enum class Ports {
+	FreeWheel = 0,
+	Latency,
+	MidiPort,
+	AudioPortOffset,
+};
+
 /**
  * Tests that should be performed:
  * -------------------------------
@@ -47,7 +54,7 @@
  */
 class test_lv2 : public CppUnit::TestFixture
 {
-  CPPUNIT_TEST_SUITE(test_lv2);
+	CPPUNIT_TEST_SUITE(test_lv2);
 	CPPUNIT_TEST(open_and_verify);
 	CPPUNIT_TEST(run_no_ports_connected);
 	CPPUNIT_TEST(run_no_output_ports_connected);
@@ -58,274 +65,297 @@ public:
 	void setUp() {}
 	void tearDown() {}
 
-  void open_and_verify()
-  {
-    int res;
-
-    LV2TestHost h(LV2_PATH);
-
-    res = h.open(DG_URI);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.verify();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.close();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-  }
-
-  void run_no_ports_connected()
-  {
-    int res;
-
-    LV2TestHost h(LV2_PATH);
-
-    res = h.open(DG_URI);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.verify();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.createInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    const char config_fmt[] = 
-      "<config>\n"
-      "  <value name=\"drumkitfile\">%s</value>\n"
-      "  <value name=\"midimapfile\">%s</value>\n"
-      "  <value name=\"enable_velocity_modifier\">%s</value>\n"
-      "  <value name=\"velocity_modifier_falloff\">%f</value>\n"
-      "  <value name=\"velocity_modifier_weight\">%f</value>\n"
-      "  <value name=\"enable_velocity_randomiser\">%s</value>\n"
-      "  <value name=\"velocity_randomiser_weight\">%f</value>\n"
-      "  <value name=\"enable_resampling\">%s</value>\n"
-      "</config>";
-
-    const char drumkitfile[] = "kit/kit1.xml";
-    const char midimapfile[] = "kit/midimap.xml";
-    bool enable_velocity_modifier = true;
-    float velocity_modifier_falloff = 0.5;
-    float velocity_modifier_weight = 0.25;
-    bool enable_velocity_randomiser = false;
-    float velocity_randomiser_weight = 0.1;
-    bool enable_resampling = false;
-
-    char config[sizeof(config_fmt) * 2];
-    sprintf(config, config_fmt,
-            drumkitfile,
-            midimapfile,
-            enable_velocity_modifier?"true":"false",
-            velocity_modifier_falloff,
-            velocity_modifier_weight,
-            enable_velocity_randomiser?"true":"false",
-            velocity_randomiser_weight,
-            enable_resampling?"true":"false"
-            );
-
-    res = h.loadConfig(config, strlen(config));
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    // run for 1 samples to trigger kit loading
-    res = h.run(1);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-    sleep(1); // wait for kit to get loaded (async),
-
-    res = h.run(100);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.destroyInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.close();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-  }
-
-  void run_no_output_ports_connected()
-  {
-    int res;
-
-    LV2TestHost h(LV2_PATH);
-
-    res = h.open(DG_URI);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.verify();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.createInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    const char config_fmt[] = 
-      "<config>\n"
-      "  <value name=\"drumkitfile\">%s</value>\n"
-      "  <value name=\"midimapfile\">%s</value>\n"
-      "  <value name=\"enable_velocity_modifier\">%s</value>\n"
-      "  <value name=\"velocity_modifier_falloff\">%f</value>\n"
-      "  <value name=\"velocity_modifier_weight\">%f</value>\n"
-      "  <value name=\"enable_velocity_randomiser\">%s</value>\n"
-      "  <value name=\"velocity_randomiser_weight\">%f</value>\n"
-      "  <value name=\"enable_resampling\">%s</value>\n"
-      "</config>";
-
-    const char drumkitfile[] = "kit/kit1.xml";
-    const char midimapfile[] = "kit/midimap.xml";
-    bool enable_velocity_modifier = true;
-    float velocity_modifier_falloff = 0.5;
-    float velocity_modifier_weight = 0.25;
-    bool enable_velocity_randomiser = false;
-    float velocity_randomiser_weight = 0.1;
-    bool enable_resampling = false;
-
-    char config[sizeof(config_fmt) * 2];
-    sprintf(config, config_fmt,
-            drumkitfile,
-            midimapfile,
-            enable_velocity_modifier?"true":"false",
-            velocity_modifier_falloff,
-            velocity_modifier_weight,
-            enable_velocity_randomiser?"true":"false",
-            velocity_randomiser_weight,
-            enable_resampling?"true":"false"
-            );
-
-    res = h.loadConfig(config, strlen(config));
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    // Port buffers:
-    char sequence_buffer[4096];
-
-    LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
-    res = h.connectPort(0, seq.data());
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    // run for 1 samples to trigger kit loading
-    res = h.run(1);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-    sleep(1); // wait for kit to get loaded (async),
-
-    seq.addMidiNote(5, 1, 127);
-    res = h.run(100);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.destroyInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.close();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-  }
-
-  void test1()
-  {
-    int res;
-
-    LV2TestHost h(LV2_PATH);
-
-    res = h.open(DG_URI);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.verify();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.createInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    const char config_fmt[] = 
-      "<config>\n"
-      "  <value name=\"drumkitfile\">%s</value>\n"
-      "  <value name=\"midimapfile\">%s</value>\n"
-      "  <value name=\"enable_velocity_modifier\">%s</value>\n"
-      "  <value name=\"velocity_modifier_falloff\">%f</value>\n"
-      "  <value name=\"velocity_modifier_weight\">%f</value>\n"
-      "  <value name=\"enable_velocity_randomiser\">%s</value>\n"
-      "  <value name=\"velocity_randomiser_weight\">%f</value>\n"
-      "  <value name=\"enable_resampling\">%s</value>\n"
-      "</config>";
-
-    const char drumkitfile[] = "kit/kit1.xml";
-    const char midimapfile[] = "kit/midimap.xml";
-    bool enable_velocity_modifier = true;
-    float velocity_modifier_falloff = 0.5;
-    float velocity_modifier_weight = 0.25;
-    bool enable_velocity_randomiser = false;
-    float velocity_randomiser_weight = 0.1;
-    bool enable_resampling = false;
-
-    char config[sizeof(config_fmt) * 2];
-    sprintf(config, config_fmt,
-            drumkitfile,
-            midimapfile,
-            enable_velocity_modifier?"true":"false",
-            velocity_modifier_falloff,
-            velocity_modifier_weight,
-            enable_velocity_randomiser?"true":"false",
-            velocity_randomiser_weight,
-            enable_resampling?"true":"false"
-            );
-
-    res = h.loadConfig(config, strlen(config));
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    // Port buffers:
-    char sequence_buffer[4096];
-    float pcm_buffer[16][10];
-
-    LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
-    res = h.connectPort(0, seq.data());
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    for(int i = 1; i <= 16; i++) {
-      memset(pcm_buffer, 1, sizeof(pcm_buffer));
-      res += h.connectPort(i, pcm_buffer[i-1]);
-    }
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    // run for 1 samples to trigger kit loading
-    res = h.run(1);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-    sleep(1); // wait for kit to get loaded (async),
-
-    /*
-    seq.addMidiNote(5, 1, 127);
-    for(int i = 0; i < 10; i++) {
-      res = h.run(10);
-      CPPUNIT_ASSERT_EQUAL(0, res);
-
-      printf("Iteration:\n");
-      for(int k = 0; k < 4; k++) {
-        printf("#%d ", k);
-        for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
-        printf("\n");
-      }
-      printf("\n");
-
-      seq.clear();
-    }
-    */
-
-    seq.addMidiNote(5, 1, 127);
-    res = h.run(10);
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    union {
-      float f;
-      unsigned int u;
-    } comp_val;
-
-    comp_val.u = 1040744448;
-
-    for(int k = 0; k < 4; k++) {
-      for(int j = 0; j < 10; j++) {
-        CPPUNIT_ASSERT(pcm_buffer[k][j] == ((j==4)?comp_val.f:0));
-      }
-    }
-    seq.clear();
-
-    res = h.destroyInstance();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-
-    res = h.close();
-    CPPUNIT_ASSERT_EQUAL(0, res);
-  }
+	void open_and_verify()
+	{
+		int res;
+
+		LV2TestHost h(LV2_PATH);
+
+		res = h.open(DG_URI);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.verify();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.close();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+	}
+
+	void run_no_ports_connected()
+	{
+		int res;
+
+		LV2TestHost h(LV2_PATH);
+
+		res = h.open(DG_URI);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.verify();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.createInstance(44100);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		const char config_fmt[] =
+			"<config>\n"
+			"  <value name=\"drumkitfile\">%s</value>\n"
+			"  <value name=\"midimapfile\">%s</value>\n"
+			"  <value name=\"enable_velocity_modifier\">%s</value>\n"
+			"  <value name=\"velocity_modifier_falloff\">%f</value>\n"
+			"  <value name=\"velocity_modifier_weight\">%f</value>\n"
+			"  <value name=\"enable_velocity_randomiser\">%s</value>\n"
+			"  <value name=\"velocity_randomiser_weight\">%f</value>\n"
+			"  <value name=\"enable_resampling\">%s</value>\n"
+			"</config>";
+
+		const char drumkitfile[] = "kit/kit1.xml";
+		const char midimapfile[] = "kit/midimap.xml";
+		bool enable_velocity_modifier = true;
+		float velocity_modifier_falloff = 0.5;
+		float velocity_modifier_weight = 0.25;
+		bool enable_velocity_randomiser = false;
+		float velocity_randomiser_weight = 0.1;
+		bool enable_resampling = false;
+
+		char config[sizeof(config_fmt) * 2];
+		sprintf(config, config_fmt,
+		        drumkitfile,
+		        midimapfile,
+		        enable_velocity_modifier?"true":"false",
+		        velocity_modifier_falloff,
+		        velocity_modifier_weight,
+		        enable_velocity_randomiser?"true":"false",
+		        velocity_randomiser_weight,
+		        enable_resampling?"true":"false");
+
+		res = h.loadConfig(config, strlen(config));
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		// run for 1 samples to trigger kit loading
+		res = h.run(1);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+		usleep(1000); // wait for kit to get loaded (async),
+
+		res = h.run(100);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.destroyInstance();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.close();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+	}
+
+	void run_no_output_ports_connected()
+	{
+		int res;
+
+		LV2TestHost h(LV2_PATH);
+
+		res = h.open(DG_URI);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.verify();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.createInstance(44100);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		const char config_fmt[] =
+			"<config>\n"
+			"  <value name=\"drumkitfile\">%s</value>\n"
+			"  <value name=\"midimapfile\">%s</value>\n"
+			"  <value name=\"enable_velocity_modifier\">%s</value>\n"
+			"  <value name=\"velocity_modifier_falloff\">%f</value>\n"
+			"  <value name=\"velocity_modifier_weight\">%f</value>\n"
+			"  <value name=\"enable_velocity_randomiser\">%s</value>\n"
+			"  <value name=\"velocity_randomiser_weight\">%f</value>\n"
+			"  <value name=\"enable_resampling\">%s</value>\n"
+			"</config>";
+
+		const char drumkitfile[] = "kit/kit1.xml";
+		const char midimapfile[] = "kit/midimap.xml";
+		bool enable_velocity_modifier = true;
+		float velocity_modifier_falloff = 0.5;
+		float velocity_modifier_weight = 0.25;
+		bool enable_velocity_randomiser = false;
+		float velocity_randomiser_weight = 0.1;
+		bool enable_resampling = false;
+
+		char config[sizeof(config_fmt) * 2];
+		sprintf(config, config_fmt,
+		        drumkitfile,
+		        midimapfile,
+		        enable_velocity_modifier?"true":"false",
+		        velocity_modifier_falloff,
+		        velocity_modifier_weight,
+		        enable_velocity_randomiser?"true":"false",
+		        velocity_randomiser_weight,
+		        enable_resampling?"true":"false");
+
+		res = h.loadConfig(config, strlen(config));
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		// Port buffers:
+		char sequence_buffer[4096];
+		bool freeWheel = false;
+
+		// Free wheel port
+		res = h.connectPort((int)Ports::FreeWheel, (void*)&freeWheel);
+
+		LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
+		res = h.connectPort((int)Ports::MidiPort, seq.data());
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		// run for 1 samples to trigger kit loading
+		res = h.run(1);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+		usleep(1000); // wait for kit to get loaded (async),
+
+		seq.addMidiNote(5, 1, 127);
+		res = h.run(100);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.destroyInstance();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.close();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+	}
+
+	void test1()
+	{
+		int res;
+
+		LV2TestHost h(LV2_PATH);
+
+		res = h.open(DG_URI);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.verify();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.createInstance(44100);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		const char config_fmt[] =
+			"<config>\n"
+			"  <value name=\"drumkitfile\">%s</value>\n"
+			"  <value name=\"midimapfile\">%s</value>\n"
+			"  <value name=\"enable_velocity_modifier\">%s</value>\n"
+			"  <value name=\"velocity_modifier_falloff\">%f</value>\n"
+			"  <value name=\"velocity_modifier_weight\">%f</value>\n"
+			"  <value name=\"enable_velocity_randomiser\">%s</value>\n"
+			"  <value name=\"velocity_randomiser_weight\">%f</value>\n"
+			"  <value name=\"enable_resampling\">%s</value>\n"
+			"</config>";
+
+		const char drumkitfile[] = "kit/kit1.xml";
+		const char midimapfile[] = "kit/midimap.xml";
+		bool enable_velocity_modifier = true;
+		float velocity_modifier_falloff = 0.5;
+		float velocity_modifier_weight = 0.25;
+		bool enable_velocity_randomiser = false;
+		float velocity_randomiser_weight = 0.1;
+		bool enable_resampling = false;
+
+		char config[sizeof(config_fmt) * 2];
+		sprintf(config, config_fmt,
+		        drumkitfile,
+		        midimapfile,
+		        enable_velocity_modifier?"true":"false",
+		        velocity_modifier_falloff,
+		        velocity_modifier_weight,
+		        enable_velocity_randomiser?"true":"false",
+		        velocity_randomiser_weight,
+		        enable_resampling?"true":"false");
+
+		res = h.loadConfig(config, strlen(config));
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		// Port buffers:
+		char sequence_buffer[4096];
+		float pcm_buffer[16][10];
+		bool freeWheel = true;
+
+		// Free wheel port
+		res = h.connectPort((int)Ports::FreeWheel, (void*)&freeWheel);
+
+		LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
+		res = h.connectPort((int)Ports::MidiPort, seq.data());
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		for(int i = 0; i < 16; ++i)
+		{
+			for(int j = 0; j < 10; ++j)
+			{
+				pcm_buffer[i][j] = 0.42;
+			}
+			res += h.connectPort((int)Ports::AudioPortOffset + i, pcm_buffer[i]);
+		}
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		// run for 1 samples to trigger kit loading
+		res = h.run(1);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+		sleep(1); // wait for kit to get loaded (async),
+
+		seq.addMidiNote(5, 1, 127);
+		for(int i = 0; i < 10; i++)
+		{
+			res = h.run(10);
+			usleep(1000);
+			CPPUNIT_ASSERT_EQUAL(0, res);
+
+			//printf("Iteration:\n");
+			//for(int k = 0; k < 16; k++) {
+			//	printf("#%d ", k);
+			//	for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
+			//	printf("\n");
+			//}
+			//printf("\n");
+
+			seq.clear();
+		}
+
+
+		seq.addMidiNote(5, 1, 127);
+		res = h.run(10);
+		usleep(1000);
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		/*
+		printf("Iteration:\n");
+		for(int k = 0; k < 4; k++) {
+			printf("#%d ", k);
+			for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
+			printf("\n");
+		}
+		printf("\n");
+		*/
+
+		union {
+			float f;
+			unsigned int u;
+		} comp_val;
+
+		comp_val.u = 1040744448; // floating point value 0.133301....
+
+		for(int k = 0; k < 4; k++)
+		{
+			for(int j = 0; j < 10; j++)
+			{
+				CPPUNIT_ASSERT_EQUAL(((j==5)?comp_val.f:0), pcm_buffer[k][j]);
+			}
+		}
+		seq.clear();
+
+		res = h.destroyInstance();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+
+		res = h.close();
+		CPPUNIT_ASSERT_EQUAL(0, res);
+	}
 };
 
 // Registers the fixture into the 'registry'
diff --git a/test/lv2_test_host.cc b/test/lv2_test_host.cc
index 07685d0..3418ee5 100644
--- a/test/lv2_test_host.cc
+++ b/test/lv2_test_host.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -42,6 +42,7 @@
 #include <openssl/err.h>
 #include <openssl/evp.h>
 #include <string>
+
 class Base64 {
 public:
 	Base64()
@@ -64,36 +65,44 @@ public:
 	std::string write(const char *in, size_t size)
 	{
 		std::string out;
-		
+
 		BIO_write((BIO*)bio, in, size);
 
 		size_t osize = BIO_ctrl_pending((BIO*)mbio);
 		char *outbuf = (char*)malloc(osize);
 
 		int len = BIO_read((BIO*)mbio, outbuf, osize);
-		if(len < 1) return "";
+		if(len < 1)
+		{
+			return "";
+		}
+
 		out.append(outbuf, len);
 
 		free(outbuf);
-		
+
 		return out;
 	}
-	
+
 	std::string flush()
 	{
 		std::string out;
-		
+
 		(void)BIO_flush((BIO*)bio);
 
 		size_t size = BIO_ctrl_pending((BIO*)mbio);
 		char *outbuf = (char*)malloc(size);
 
 		int len = BIO_read((BIO*)mbio, outbuf, size);
-		if(len < 1) return "";
+		if(len < 1)
+		{
+			return "";
+		}
+
 		out.append(outbuf, len);
 
 		free(outbuf);
-		
+
 		return out;
 	}
 
@@ -107,13 +116,15 @@ private:
 
 
 // TODO: Use map<int, std::string> instead
-static char** uris = NULL;
+static char** uris = nullptr;
 static size_t n_uris = 0;
 
 static LV2_URID map_uri(LV2_URID_Map_Handle handle, const char* uri)
 {
-	for(size_t i = 0; i < n_uris; ++i) {
-		if(!strcmp(uris[i], uri)) {
+	for(size_t i = 0; i < n_uris; ++i)
+	{
+		if(!strcmp(uris[i], uri))
+		{
 			return i + 1;
 		}
 	}
@@ -126,22 +137,23 @@ static LV2_URID map_uri(LV2_URID_Map_Handle handle, const char* uri)
 
 static const char* unmap_uri(LV2_URID_Map_Handle handle, LV2_URID urid)
 {
-	if(urid > 0 && urid <= n_uris) {
+	if((urid > 0) && (urid <= n_uris))
+	{
 		return uris[urid - 1];
 	}
-	return NULL;
+	return nullptr;
 }
 
-LV2_URID_Map       map           = { NULL, map_uri };
+LV2_URID_Map       map           = { nullptr, map_uri };
 LV2_Feature        map_feature   = { LV2_URID_MAP_URI, &map };
-LV2_URID_Unmap     unmap         = { NULL, unmap_uri };
+LV2_URID_Unmap     unmap         = { nullptr, unmap_uri };
 LV2_Feature        unmap_feature = { LV2_URID_UNMAP_URI, &unmap };
-const LV2_Feature* features[]    = { &map_feature, &unmap_feature, NULL };
+const LV2_Feature* features[]    = { &map_feature, &unmap_feature, nullptr };
 
 LV2TestHost::Sequence::Sequence(void *buffer, size_t buffer_size)
 {
-  this->buffer = buffer;
-  this->buffer_size = buffer_size;
+	this->buffer = buffer;
+	this->buffer_size = buffer_size;
 
 	seq = (LV2_Atom_Sequence *)buffer;
 
@@ -152,34 +164,35 @@ LV2TestHost::Sequence::Sequence(void *buffer, size_t buffer_size)
 }
 
 // Keep this to support atom extension from lv2 < 1.10
-static inline void
-_lv2_atom_sequence_clear(LV2_Atom_Sequence* seq)
+static inline void _lv2_atom_sequence_clear(LV2_Atom_Sequence* seq)
 {
-  seq->atom.size = sizeof(LV2_Atom_Sequence_Body);
+	seq->atom.size = sizeof(LV2_Atom_Sequence_Body);
 }
 
 void LV2TestHost::Sequence::clear()
 {
-  _lv2_atom_sequence_clear(seq);
+	_lv2_atom_sequence_clear(seq);
 }
 
 // Keep this to support atom extension from lv2 < 1.10
 static inline LV2_Atom_Event*
 _lv2_atom_sequence_append_event(LV2_Atom_Sequence*    seq,
-                               uint32_t              capacity,
-                               const LV2_Atom_Event* event)
+                                uint32_t              capacity,
+                                const LV2_Atom_Event* event)
 {
-  const uint32_t total_size = (uint32_t)sizeof(*event) + event->body.size;
-  if (capacity - seq->atom.size < total_size) {
-    return NULL;
-  }
-
-  LV2_Atom_Event* e = lv2_atom_sequence_end(&seq->body, seq->atom.size);
-  memcpy(e, event, total_size);
-  
-  seq->atom.size += lv2_atom_pad_size(total_size);
-  
-  return e;
+	const uint32_t total_size = (uint32_t)sizeof(*event) + event->body.size;
+
+	if(capacity - seq->atom.size < total_size)
+	{
+	  return nullptr;
+	}
+
+	LV2_Atom_Event* e = lv2_atom_sequence_end(&seq->body, seq->atom.size);
+	memcpy(e, event, total_size);
+
+	seq->atom.size += lv2_atom_pad_size(total_size);
+
+	return e;
 }
 
 void LV2TestHost::Sequence::addMidiNote(uint64_t pos,
@@ -195,67 +208,89 @@ void LV2TestHost::Sequence::addMidiNote(uint64_t pos,
 	MIDINoteEvent ev;
 	ev.event.time.frames = pos;// sample position
 	ev.event.body.type = map.map(map.handle, LV2_MIDI__MidiEvent);
-	ev.event.body.size = sizeof(MIDINoteEvent);
- 
+	ev.event.body.size = sizeof(ev.msg);
+
 	ev.msg[0] = note_on;
 	ev.msg[1] = key;
 	ev.msg[2] = velocity;
 
 	LV2_Atom_Event *e =
 		_lv2_atom_sequence_append_event(seq, this->buffer_size, &ev.event);
-  (void)e;
+	(void)e;
 }
 
 void *LV2TestHost::Sequence::data()
 {
-  return buffer;
+	return buffer;
 }
 
 LV2TestHost::LV2TestHost(const char *lv2_path)
 {
-	if(lv2_path) {
-    setenv("LV2_PATH", lv2_path, 1);
-  }
+	if(lv2_path)
+	{
+		setenv("LV2_PATH", lv2_path, 1);
+	}
 
 	world = lilv_world_new();
-  if(world == NULL) return;
+	if(world == nullptr)
+	{
+		return;
+	}
 
 	lilv_world_load_all(world);
 }
 
 LV2TestHost::~LV2TestHost()
 {
-	if(world) lilv_world_free(world);
+	if(world)
+	{
+		lilv_world_free(world);
+	}
 }
 
 int LV2TestHost::open(const char *plugin_uri)
 {
-  if(world == NULL) return 1;
+	if(world == nullptr)
+	{
+		return 1;
+	}
 
 	plugins = lilv_world_get_all_plugins(world);
-  if(plugins == NULL) return 2;
+	if(plugins == nullptr)
+	{
+		return 2;
+	}
 
 	uri = lilv_new_uri(world, plugin_uri);
-	if(uri == NULL) return 3;
+	if(uri == nullptr)
+	{
+		return 3;
+	}
 
 	plugin = lilv_plugins_get_by_uri(plugins, uri);
-  if(plugin == NULL) return 4;
-
+	if(plugin == nullptr)
+	{
+		return 4;
+	}
 
-  return 0;
+	return 0;
 }
 
 int LV2TestHost::verify()
 {
 	bool verify = lilv_plugin_verify(plugin);
-  if(!verify) return 1;
-  return 0;
+	if(!verify)
+	{
+		return 1;
+	}
+
+	return 0;
 }
 
 int LV2TestHost::close()
 {
-  // plugin is a const pointer; nothing to close here.
-  return 0;
+	// plugin is a const pointer; nothing to close here.
+	return 0;
 }
 
 /* // Get metadata
@@ -329,29 +364,37 @@ int LV2TestHost::getPorts()
 	}
 }
 */
-int LV2TestHost::createInstance()
+int LV2TestHost::createInstance(size_t samplerate)
 {
-	instance = lilv_plugin_instantiate(plugin, 48000, features);
-  if(instance == NULL) return 1;
-  return 0;
+	instance = lilv_plugin_instantiate(plugin, samplerate, features);
+	if(instance == nullptr)
+	{
+		return 1;
+	}
+
+	return 0;
 }
 
 int LV2TestHost::destroyInstance()
 {
-  if(instance) lilv_instance_free(instance);
-  return 0;
+	if(instance)
+	{
+		lilv_instance_free(instance);
+	}
+
+	return 0;
 }
 
 int LV2TestHost::activate()
 {
 	lilv_instance_activate(instance);
-  return 0;
+	return 0;
 }
 
 int LV2TestHost::deactivate()
 {
 	lilv_instance_deactivate(instance);
-  return 0;
+	return 0;
 }
 
 int LV2TestHost::loadConfig(const char *config, size_t size)
@@ -378,26 +421,26 @@ int LV2TestHost::loadConfig(const char *config, size_t size)
 	{
 		LilvState* restore_state =
 			lilv_state_new_from_string(world, &map, ttl_config);
-		
-		lilv_state_restore(restore_state, instance, NULL, NULL,
-											 LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE,
-											 features);
+
+		lilv_state_restore(restore_state, instance, nullptr, nullptr,
+		                   LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE,
+		                   features);
 	}
 
-  return 0;
+	return 0;
 }
 
 int LV2TestHost::connectPort(int port, void *portdata)
 {
-  //  if(lilv_port_is_a(p, port, lv2_ControlPort)) ...
+	//  if(lilv_port_is_a(p, port, lv2_ControlPort)) ...
 
 	lilv_instance_connect_port(instance, port, portdata);
 
-  return 0;
+	return 0;
 }
 
 int LV2TestHost::run(int num_samples)
 {
-  lilv_instance_run(instance, num_samples);
-  return 0;
+	lilv_instance_run(instance, num_samples);
+	return 0;
 }
diff --git a/test/lv2_test_host.h b/test/lv2_test_host.h
new file mode 100644
index 0000000..3228cab
--- /dev/null
+++ b/test/lv2_test_host.h
@@ -0,0 +1,76 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            lv2_test_host.h
+ *
+ *  Wed Feb 11 23:11:20 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#pragma once
+
+#include <lilv/lilv.h>
+#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
+
+class LV2TestHost {
+public:
+	class Sequence {
+	public:
+		Sequence(void *buffer, size_t buffer_size);
+		void clear();
+		void addMidiNote(uint64_t pos, uint8_t key, int8_t velocity);
+		void *data();
+
+	private:
+		void *buffer;
+		size_t buffer_size;
+		LV2_Atom_Sequence *seq;
+	};
+
+	LV2TestHost(const char *lv2_path);
+	~LV2TestHost();
+
+	int open(const char *plugin_uri);
+	int close();
+
+	int verify();
+
+	//void getMetadata();
+	//int getPorts();
+
+	int createInstance(size_t samplerate);
+	int destroyInstance();
+
+	int connectPort(int port, void *portdata);
+
+	int activate();
+	int deactivate();
+
+	int loadConfig(const char *config, size_t size);
+	int run(int num_samples);
+
+private:
+	LilvWorld* world;
+	const LilvPlugins* plugins;
+	LilvNode* uri;
+	const LilvPlugin* plugin;
+
+	LilvInstance* instance;
+};
diff --git a/test/memcheckertest.cc b/test/memcheckertest.cc
new file mode 100644
index 0000000..3a02372
--- /dev/null
+++ b/test/memcheckertest.cc
@@ -0,0 +1,116 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            memcheckertest.cc
+ *
+ *  Mon Jan 18 15:08:31 CET 2016
+ *  Copyright 2016 André Nusser
+ *  andre.nusser at googlemail.com
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+
+// This test should include:
+// -------------------------
+// * Load a small drumkit and check that the memchecker doesn't warn.
+//	-> this assumes that the system is not already swapping which is sane imo.
+// * Load a huge drumkit and check that the memchecker does warn.
+// * Load a kit where we exactly know the size of the audio files and check if it's correct.
+// * Check if the amount of free ram is in a realistic range.
+//
+// NOTE: This test will fail if your system is currently swapping or has an extremely small amount of RAM.
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "../src/memchecker.h"
+#include "../src/drumkit.h"
+#include "../src/drumkitparser.h"
+
+class MemCheckerTest
+	: public CppUnit::TestFixture
+	, public MemChecker
+{
+	CPPUNIT_TEST_SUITE(MemCheckerTest);
+	CPPUNIT_TEST(small_drumkit);
+	CPPUNIT_TEST(huge_drumkit);
+	CPPUNIT_TEST(correct_size);
+	CPPUNIT_TEST(check_free_ram);
+	CPPUNIT_TEST_SUITE_END();
+private:
+	DrumKit kit;
+
+	const std::string small_kit_path = "kit/small_kit.xml";
+	const std::string huge_kit_path = "kit/huge_kit.xml";
+	const std::string audiofile = "kit/ride-multi-channel.wav";
+public:
+	void setUp()
+	{
+		// just to be sure
+		kit.clear();
+	}
+
+	void tearDown()
+	{}
+
+	void small_drumkit()
+	{
+		// load the small kit
+		DrumKitParser parser(small_kit_path, kit);
+		CPPUNIT_ASSERT(!parser.parse());
+
+		// check if the memchecker thinks it fits into memory
+		CPPUNIT_ASSERT(enoughFreeMemory(kit));
+	}
+
+	void huge_drumkit()
+	{
+		// load the huge kit
+		DrumKitParser parser(huge_kit_path, kit);
+		CPPUNIT_ASSERT(!parser.parse());
+
+		// check if the memchecker thinks it doesn't fit into memory
+		CPPUNIT_ASSERT(!enoughFreeMemory(kit));
+	}
+
+	void correct_size()
+	{
+		// check if the memchecker reports the right audiofile size
+		uint64_t bytes_per_channel = 2199332;
+		CPPUNIT_ASSERT_EQUAL(bytes_per_channel, calcBytesPerChannel(audiofile));
+
+		// load the huge kit
+		DrumKitParser parser(huge_kit_path, kit);
+		CPPUNIT_ASSERT(!parser.parse());
+
+		// check if the protected method of the memchecker reports the correct size
+		uint64_t needed_memory = 71478290000;
+		CPPUNIT_ASSERT_EQUAL(needed_memory, calcNeededMemory(kit));
+	}
+
+	void check_free_ram()
+	{
+		// check if the protected method reports a sane value of free ram
+		uint64_t free_memory = calcFreeMemory();
+		uint64_t min_free_memory = 1000;
+		uint64_t max_free_memory = 50000000000;
+		CPPUNIT_ASSERT(free_memory >= min_free_memory && free_memory <= max_free_memory);
+	}
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(MemCheckerTest);
diff --git a/test/resampler.cc b/test/resampler.cc
index 445a5b3..9f1d6e0 100644
--- a/test/resampler.cc
+++ b/test/resampler.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
diff --git a/test/resource_test.cc b/test/resource_test.cc
new file mode 100644
index 0000000..3ebdd6e
--- /dev/null
+++ b/test/resource_test.cc
@@ -0,0 +1,72 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ *            resource_test.cc
+ *
+ *  Fri Nov 13 18:50:52 CET 2015
+ *  Copyright 2015 Bent Bisballe Nyeng
+ *  deva at aasimon.org
+ ****************************************************************************/
+
+/*
+ *  This file is part of DrumGizmo.
+ *
+ *  DrumGizmo 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "../plugingui/resource.h"
+
+class ResourceTester : public GUI::Resource {
+public:
+	ResourceTester(const std::string& name)
+		: Resource(name)
+	{}
+
+	bool probeIsInternal()
+	{
+		return isInternal;
+	}
+};
+
+class ResourceTest : public CppUnit::TestFixture
+{
+	CPPUNIT_TEST_SUITE(ResourceTest);
+	CPPUNIT_TEST(externalReadTest);
+	CPPUNIT_TEST(internalReadTest);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp() {}
+	void tearDown() {}
+
+	void externalReadTest()
+	{
+		ResourceTester rc("kit/0000.wav");
+		CPPUNIT_ASSERT(!rc.probeIsInternal());
+		CPPUNIT_ASSERT(rc.valid());
+		CPPUNIT_ASSERT_EQUAL((size_t)46, rc.size());
+	}
+
+	void internalReadTest()
+	{
+		ResourceTester rc(":bg.png");
+		CPPUNIT_ASSERT(rc.probeIsInternal());
+		CPPUNIT_ASSERT(rc.valid());
+		CPPUNIT_ASSERT_EQUAL((size_t)1123, rc.size());
+	}
+};
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION(ResourceTest);
diff --git a/test/test.cc b/test/test.cc
index 88c72e6..925a938 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -11,16 +11,16 @@
  *  This file is part of DrumGizmo.
  *
  *  DrumGizmo 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 2 of the License, or
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  DrumGizmo 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.
+ *  GNU Lesser General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
+ *  You should have received a copy of the GNU Lesser General Public License
  *  along with DrumGizmo; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
@@ -40,7 +40,7 @@ int main(int argc, char* argv[])
   runner.addTest( suite );
 
   std::ofstream myfile;
-  myfile.open("result_"OUTPUT".xml");
+  myfile.open("result_" OUTPUT ".xml");
   runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), myfile));
 
   // Run the tests.
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 6c90373..4a9e5fc 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -145,7 +145,7 @@ EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
 FGREP = @FGREP@
 GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
+GUI_CPPFLAGS = @GUI_CPPFLAGS@
 GUI_LIBS = @GUI_LIBS@
 INPUT_PLUGINS = @INPUT_PLUGINS@
 INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
@@ -209,8 +209,6 @@ X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
 ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/tools/add_file b/tools/add_file
index d63b4ab..d1b190f 100755
--- a/tools/add_file
+++ b/tools/add_file
@@ -2,44 +2,50 @@
 PROJECT="DrumGizmo"
 
 function allfile() {
-  echo "/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */" > $1;
-  echo "/***************************************************************************" >> $1;
-  echo " *            $1" >> $1;
-  echo " *" >> $1 ;
-  echo " *  `date`" >> $1;
-  echo -n " *  Copyright " >> $1
-  echo -n `date +%Y | xargs` >> $1
-  if [ "$USER" == "nemo" ];
+  if [ "$USER" == "nemo" ]
   then
-      echo " Jonas Suhr Christensen" >> $1;
-      echo " *  jsc at umbraculum.org" >> $1;
+    NAME="Jonas Suhr Christensen"; EMAIL="jsc at umbraculum.org"
   fi
-  if [ "$USER" == "deva" ];
+  if [ "$USER" == "deva" ]
   then
-      echo " Bent Bisballe Nyeng" >> $1;
-      echo " *  deva at aasimon.org" >> $1;
+    NAME="Bent Bisballe Nyeng"; EMAIL="deva at aasimon.org"
   fi
-  if [ "$USER" == "senator" ];
+  if [ "$USER" == "senator" ]
   then
-      echo " Lars Bisballe Jensen" >> $1;
-      echo " *  elsenator at gmail.com" >> $1;
+    NAME="Lars Bisballe Jensen"; EMAIL="elsenator at gmail.com"
   fi
+  if [ "$USER" == "chaot" ]
+  then
+    NAME="André Nusser"; EMAIL="andre.nusser at googlemail.com"
+  fi
+  if [ "$DGUSER" == "glocke" ]
+  then
+    NAME="Christian Glöckner"; EMAIL="cgloeckner at freenet.de"
+  fi
+
+  echo "/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */" > $1;
+  echo "/***************************************************************************" >> $1;
+  echo " *            $1" >> $1;
+  echo " *" >> $1 ;
+  echo " *  `LANG=C date`" >> $1;
+  echo " *  Copyright "`date +%Y | xargs`" $NAME" >> $1;
+  echo " *  $EMAIL" >> $1;
   echo " ****************************************************************************/" >> $1;
   echo "" >> $1;
   echo "/*" >> $1;
   echo " *  This file is part of $PROJECT." >> $1;
   echo " *" >> $1;
   echo " *  $PROJECT is free software; you can redistribute it and/or modify" >> $1;
-  echo " *  it under the terms of the GNU General Public License as published by" >> $1;
-  echo " *  the Free Software Foundation; either version 2 of the License, or" >> $1;
+  echo " *  it under the terms of the GNU Lesser General Public License as published by" >> $1;
+  echo " *  the Free Software Foundation; either version 3 of the License, or" >> $1;
   echo " *  (at your option) any later version." >> $1;
   echo " *" >> $1;
   echo " *  $PROJECT is distributed in the hope that it will be useful," >> $1;
   echo " *  but WITHOUT ANY WARRANTY; without even the implied warranty of" >> $1;
   echo " *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the" >> $1;
-  echo " *  GNU General Public License for more details." >> $1;
+  echo " *  GNU Lesser General Public License for more details." >> $1;
   echo " *" >> $1;
-  echo " *  You should have received a copy of the GNU General Public License" >> $1;
+  echo " *  You should have received a copy of the GNU Lesser General Public License" >> $1;
   echo " *  along with $PROJECT; if not, write to the Free Software" >> $1;
   echo " *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA." >> $1;
   echo " */" >> $1;
@@ -60,9 +66,7 @@ function hfile() {
   allfile $1;
   local hn=`echo $1 | tr 'a-z.' 'A-Z_'`
   local pr=`echo $PROJECT | tr 'a-z.' 'A-Z_'`
-  echo "#ifndef __${pr}_${hn}__" >> $1;
-  echo "#define __${pr}_${hn}__" >> $1;
-  echo "#endif/*__${pr}_${hn}__*/" >> $1;
+  echo "#pragma once" >> $1;
 }
 
 if [ "$#" = "1" ]; then
diff --git a/version.h b/version.h
index 1090d16..1da5c98 100644
--- a/version.h
+++ b/version.h
@@ -1 +1 @@
-#define VERSION "0.9.8.1"
+#define VERSION "0.9.9"
diff --git a/vst/Makefile.am b/vst/Makefile.am
deleted file mode 100644
index 7bb7214..0000000
--- a/vst/Makefile.am
+++ /dev/null
@@ -1,54 +0,0 @@
-include $(top_srcdir)/plugingui/Makefile.am.plugingui
-include $(top_srcdir)/src/Makefile.am.drumgizmo
-
-VST_BASE = ${VST_SOURCE_PATH}
-VST_SRC_BASE = ${VST_BASE}/public.sdk/source/vst2.x/
-VST_SOURCES = \
-	${VST_SRC_BASE}/audioeffectx.cpp \
-	${VST_SRC_BASE}/audioeffect.cpp \
-	${VST_SRC_BASE}/vstplugmain.cpp
-
-AM_CPPFLAGS = -I$(top_srcdir)/hugin -DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX
-
-EXTRA_DIST = \
-	Makefile.mingw32.in \
-	constants.h \
-	drumgizmo_vst.cc \
-	drumgizmo_vst.h \
-	input_vst.cc \
-	input_vst.h \
-	output_vst.cc \
-	output_vst.h
-
-if ENABLE_VST
-plugin_LTLIBRARIES =
-plugindir = $(prefix)/lib/vst
-plugin_LTLIBRARIES += libdrumgizmo_vst.la
-noinst_LTLIBRARIES = libdg.la
-endif
-
-libdg_la_SOURCES = \
-	$(DRUMGIZMO_SOURCES) \
-	$(PLUGIN_GUI_SOURCES)
-
-libdg_la_LDFLAGS = -all-static -static -static-libgcc
-libdg_la_LIBADD = $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
-libdg_la_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \
-	-I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \
-	$(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(VST_CPPFLAGS) \
-	$(PLUGIN_GUI_CFLAGS) $(SSEFLAGS)\
-	-DUSE_THREAD $(SAMPLERATE_CFLAGS)
-
-nodist_libdrumgizmo_vst_la_SOURCES = \
-  $(VST_SOURCES)
-
-libdrumgizmo_vst_la_SOURCES = \
-	drumgizmo_vst.cc \
-	input_vst.cc \
-	output_vst.cc
-
-libdrumgizmo_vst_la_LDFLAGS = -no-undefined -shared
-libdrumgizmo_vst_la_LIBADD = libdg.la
-libdrumgizmo_vst_la_CXXFLAGS = -w $(VST_CPPFLAGS) \
-	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/plugingui
-
diff --git a/vst/Makefile.in b/vst/Makefile.in
deleted file mode 100644
index 4d63201..0000000
--- a/vst/Makefile.in
+++ /dev/null
@@ -1,1445 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(top_srcdir)/plugingui/Makefile.am.plugingui \
-	$(top_srcdir)/src/Makefile.am.drumgizmo $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.mingw32.in \
-	$(top_srcdir)/depcomp
-subdir = vst
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = Makefile.mingw32
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(noinst_LTLIBRARIES) $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-libdg_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3)
-am__objects_1 = libdg_la-audioinputenginemidi.lo libdg_la-audiofile.lo \
-	libdg_la-channel.lo libdg_la-channelmixer.lo \
-	libdg_la-chresampler.lo libdg_la-configuration.lo \
-	libdg_la-configparser.lo libdg_la-drumgizmo.lo \
-	libdg_la-drumkit.lo libdg_la-drumkitloader.lo \
-	libdg_la-drumkitparser.lo libdg_la-events.lo \
-	libdg_la-instrument.lo libdg_la-instrumentparser.lo \
-	libdg_la-messagehandler.lo libdg_la-messagereceiver.lo \
-	libdg_la-midimapparser.lo libdg_la-midimapper.lo \
-	libdg_la-mutex.lo libdg_la-path.lo libdg_la-powerlist.lo \
-	libdg_la-sample.lo libdg_la-semaphore.lo libdg_la-saxparser.lo \
-	libdg_la-thread.lo libdg_la-velocity.lo libdg_la-versionstr.lo
-am__objects_2 =
-am__objects_3 = hugin.lo hugin_syslog.lo $(am__objects_2) \
-	libdg_la-nativewindow_x11.lo libdg_la-nativewindow_win32.lo \
-	libdg_la-plugingui.lo libdg_la-label.lo \
-	libdg_la-eventhandler.lo libdg_la-font.lo libdg_la-window.lo \
-	libdg_la-widget.lo libdg_la-colour.lo libdg_la-painter.lo \
-	libdg_la-button.lo libdg_la-pixelbuffer.lo \
-	libdg_la-lineedit.lo libdg_la-led.lo libdg_la-checkbox.lo \
-	libdg_la-slider.lo libdg_la-scrollbar.lo libdg_la-listbox.lo \
-	libdg_la-listboxthin.lo libdg_la-listboxbasic.lo \
-	libdg_la-knob.lo libdg_la-filebrowser.lo libdg_la-directory.lo \
-	libdg_la-pluginconfig.lo libdg_la-image.lo \
-	libdg_la-combobox.lo libdg_la-progressbar.lo \
-	libdg_la-verticalline.lo libdg_la-resource.lo \
-	libdg_la-resource_data.lo libdg_la-lodepng.lo
-am_libdg_la_OBJECTS = $(am__objects_1) $(am__objects_3)
-libdg_la_OBJECTS = $(am_libdg_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libdg_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libdg_la_CXXFLAGS) \
-	$(CXXFLAGS) $(libdg_la_LDFLAGS) $(LDFLAGS) -o $@
- at ENABLE_VST_TRUE@am_libdg_la_rpath =
-libdrumgizmo_vst_la_DEPENDENCIES = libdg.la
-am_libdrumgizmo_vst_la_OBJECTS = libdrumgizmo_vst_la-drumgizmo_vst.lo \
-	libdrumgizmo_vst_la-input_vst.lo \
-	libdrumgizmo_vst_la-output_vst.lo
-am__objects_4 = libdrumgizmo_vst_la-audioeffectx.lo \
-	libdrumgizmo_vst_la-audioeffect.lo \
-	libdrumgizmo_vst_la-vstplugmain.lo
-nodist_libdrumgizmo_vst_la_OBJECTS = $(am__objects_4)
-libdrumgizmo_vst_la_OBJECTS = $(am_libdrumgizmo_vst_la_OBJECTS) \
-	$(nodist_libdrumgizmo_vst_la_OBJECTS)
-libdrumgizmo_vst_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) \
-	$(libdrumgizmo_vst_la_LDFLAGS) $(LDFLAGS) -o $@
- at ENABLE_VST_TRUE@am_libdrumgizmo_vst_la_rpath = -rpath $(plugindir)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(libdg_la_SOURCES) $(libdrumgizmo_vst_la_SOURCES) \
-	$(nodist_libdrumgizmo_vst_la_SOURCES)
-DIST_SOURCES = $(libdg_la_SOURCES) $(libdrumgizmo_vst_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALSA_CFLAGS = @ALSA_CFLAGS@
-ALSA_LIBS = @ALSA_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
-CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
-CPPUNIT_LIBS = @CPPUNIT_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXPAT_CFLAGS = @EXPAT_CFLAGS@
-EXPAT_LIBS = @EXPAT_LIBS@
-FGREP = @FGREP@
-GREP = @GREP@
-GUI_CFLAGS = @GUI_CFLAGS@
-GUI_LIBS = @GUI_LIBS@
-INPUT_PLUGINS = @INPUT_PLUGINS@
-INPUT_PLUGIN_DIR = @INPUT_PLUGIN_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LV2_CFLAGS = @LV2_CFLAGS@
-LV2_LIBS = @LV2_LIBS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-OUTPUT_PLUGINS = @OUTPUT_PLUGINS@
-OUTPUT_PLUGIN_DIR = @OUTPUT_PLUGIN_DIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
-SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SMF_CFLAGS = @SMF_CFLAGS@
-SMF_LIBS = @SMF_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SSEFLAGS = @SSEFLAGS@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VST_CPPFLAGS = @VST_CPPFLAGS@
-VST_SOURCE_PATH = @VST_SOURCE_PATH@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-ZITA_CPPFLAGS = @ZITA_CPPFLAGS@
-ZITA_LIBS = @ZITA_LIBS@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-dgplugindir = @dgplugindir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-puglsources = 
-PLUGIN_GUI_SOURCES = \
-	$(top_srcdir)/hugin/hugin.c \
-	$(top_srcdir)/hugin/hugin_syslog.c \
-	$(puglsources) \
-	$(top_srcdir)/plugingui/nativewindow_x11.cc \
-	$(top_srcdir)/plugingui/nativewindow_win32.cc \
-	$(top_srcdir)/plugingui/plugingui.cc \
-	$(top_srcdir)/plugingui/label.cc \
-	$(top_srcdir)/plugingui/eventhandler.cc \
-	$(top_srcdir)/plugingui/font.cc \
-	$(top_srcdir)/plugingui/window.cc \
-	$(top_srcdir)/plugingui/widget.cc \
-	$(top_srcdir)/plugingui/colour.cc \
-	$(top_srcdir)/plugingui/painter.cc \
-	$(top_srcdir)/plugingui/button.cc \
-	$(top_srcdir)/plugingui/pixelbuffer.cc \
-	$(top_srcdir)/plugingui/lineedit.cc \
-	$(top_srcdir)/plugingui/led.cc \
-	$(top_srcdir)/plugingui/checkbox.cc \
-	$(top_srcdir)/plugingui/slider.cc \
-	$(top_srcdir)/plugingui/scrollbar.cc \
-	$(top_srcdir)/plugingui/listbox.cc \
-	$(top_srcdir)/plugingui/listboxthin.cc \
-	$(top_srcdir)/plugingui/listboxbasic.cc \
-	$(top_srcdir)/plugingui/knob.cc \
-	$(top_srcdir)/plugingui/filebrowser.cc \
-	$(top_srcdir)/plugingui/directory.cc \
-	$(top_srcdir)/plugingui/pluginconfig.cc \
-	$(top_srcdir)/plugingui/image.cc \
-	$(top_srcdir)/plugingui/combobox.cc \
-	$(top_srcdir)/plugingui/progressbar.cc \
-	$(top_srcdir)/plugingui/verticalline.cc \
-	$(top_srcdir)/plugingui/resource.cc \
-	$(top_srcdir)/plugingui/resource_data.cc \
-	$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-
-PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS) $(ZLIB_LIBS)
-PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) $(ZLIB_CFLAGS) -I$(top_srcdir)/hugin \
-									-DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
-									-I$(top_srcdir)/pugl/pugl \
-									-DLODEPNG_NO_COMPILE_ENCODER \
-									-DLODEPNG_NO_COMPILE_DISK \
-									-DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \
-									-DLODEPNG_NO_COMPILE_ERROR_TEXT \
-									-DLODEPNG_NO_COMPILE_CPP
-
-DRUMGIZMO_SOURCES = \
-	$(top_srcdir)/src/audioinputenginemidi.cc \
-	$(top_srcdir)/src/audiofile.cc \
-	$(top_srcdir)/src/channel.cc \
-	$(top_srcdir)/src/channelmixer.cc \
-	$(top_srcdir)/src/chresampler.cc \
-	$(top_srcdir)/src/configuration.cc \
-	$(top_srcdir)/src/configparser.cc \
-	$(top_srcdir)/src/drumgizmo.cc \
-	$(top_srcdir)/src/drumkit.cc \
-	$(top_srcdir)/src/drumkitloader.cc \
-	$(top_srcdir)/src/drumkitparser.cc \
-	$(top_srcdir)/src/events.cc \
-	$(top_srcdir)/src/instrument.cc \
-	$(top_srcdir)/src/instrumentparser.cc \
-	$(top_srcdir)/src/messagehandler.cc \
-	$(top_srcdir)/src/messagereceiver.cc \
-	$(top_srcdir)/src/midimapparser.cc \
-	$(top_srcdir)/src/midimapper.cc \
-	$(top_srcdir)/src/mutex.cc \
-	$(top_srcdir)/src/path.cc \
-	$(top_srcdir)/src/powerlist.cc \
-	$(top_srcdir)/src/sample.cc \
-	$(top_srcdir)/src/semaphore.cc \
-	$(top_srcdir)/src/saxparser.cc \
-	$(top_srcdir)/src/thread.cc \
-	$(top_srcdir)/src/velocity.cc \
-	$(top_srcdir)/src/versionstr.cc
-
-DRUMGIZMO_LIBS = $(ZITA_LIBS) $(SNDFILE_LIBS) $(EXPAT_LIBS) $(SAMPLERATE_LIBS)
-VST_BASE = ${VST_SOURCE_PATH}
-VST_SRC_BASE = ${VST_BASE}/public.sdk/source/vst2.x/
-VST_SOURCES = \
-	${VST_SRC_BASE}/audioeffectx.cpp \
-	${VST_SRC_BASE}/audioeffect.cpp \
-	${VST_SRC_BASE}/vstplugmain.cpp
-
-AM_CPPFLAGS = -I$(top_srcdir)/hugin -DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX
-EXTRA_DIST = \
-	Makefile.mingw32.in \
-	constants.h \
-	drumgizmo_vst.cc \
-	drumgizmo_vst.h \
-	input_vst.cc \
-	input_vst.h \
-	output_vst.cc \
-	output_vst.h
-
- at ENABLE_VST_TRUE@plugin_LTLIBRARIES = libdrumgizmo_vst.la
- at ENABLE_VST_TRUE@plugindir = $(prefix)/lib/vst
- at ENABLE_VST_TRUE@noinst_LTLIBRARIES = libdg.la
-libdg_la_SOURCES = \
-	$(DRUMGIZMO_SOURCES) \
-	$(PLUGIN_GUI_SOURCES)
-
-libdg_la_LDFLAGS = -all-static -static -static-libgcc
-libdg_la_LIBADD = $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
-libdg_la_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \
-	-I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \
-	$(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(VST_CPPFLAGS) \
-	$(PLUGIN_GUI_CFLAGS) $(SSEFLAGS)\
-	-DUSE_THREAD $(SAMPLERATE_CFLAGS)
-
-nodist_libdrumgizmo_vst_la_SOURCES = \
-  $(VST_SOURCES)
-
-libdrumgizmo_vst_la_SOURCES = \
-	drumgizmo_vst.cc \
-	input_vst.cc \
-	output_vst.cc
-
-libdrumgizmo_vst_la_LDFLAGS = -no-undefined -shared
-libdrumgizmo_vst_la_LIBADD = libdg.la
-libdrumgizmo_vst_la_CXXFLAGS = -w $(VST_CPPFLAGS) \
-	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/plugingui
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .cpp .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vst/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu vst/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-$(top_srcdir)/plugingui/Makefile.am.plugingui $(top_srcdir)/src/Makefile.am.drumgizmo:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-Makefile.mingw32: $(top_builddir)/config.status $(srcdir)/Makefile.mingw32.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libdg.la: $(libdg_la_OBJECTS) $(libdg_la_DEPENDENCIES) $(EXTRA_libdg_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libdg_la_LINK) $(am_libdg_la_rpath) $(libdg_la_OBJECTS) $(libdg_la_LIBADD) $(LIBS)
-
-libdrumgizmo_vst.la: $(libdrumgizmo_vst_la_OBJECTS) $(libdrumgizmo_vst_la_DEPENDENCIES) $(EXTRA_libdrumgizmo_vst_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libdrumgizmo_vst_la_LINK) $(am_libdrumgizmo_vst_la_rpath) $(libdrumgizmo_vst_la_OBJECTS) $(libdrumgizmo_vst_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hugin_syslog.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-audiofile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-audioinputenginemidi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-button.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-channel.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-channelmixer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-checkbox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-chresampler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-colour.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-combobox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-configparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-configuration.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-directory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-drumgizmo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-drumkit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-drumkitloader.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-drumkitparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-eventhandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-events.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-filebrowser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-font.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-image.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-instrument.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-instrumentparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-knob.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-label.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-led.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-lineedit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-listbox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-listboxbasic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-listboxthin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-lodepng.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-messagehandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-messagereceiver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-midimapparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-midimapper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-mutex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-nativewindow_win32.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-nativewindow_x11.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-painter.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-path.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-pixelbuffer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-pluginconfig.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-plugingui.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-powerlist.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-progressbar.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-resource.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-resource_data.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-sample.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-saxparser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-scrollbar.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-semaphore.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-slider.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-thread.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-velocity.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-versionstr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-verticalline.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-widget.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdg_la-window.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-audioeffect.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-audioeffectx.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-drumgizmo_vst.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-input_vst.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-output_vst.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdrumgizmo_vst_la-vstplugmain.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-hugin.lo: $(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin.lo -MD -MP -MF $(DEPDIR)/hugin.Tpo -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin.Tpo $(DEPDIR)/hugin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin.c' object='hugin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin.lo `test -f '$(top_srcdir)/hugin/hugin.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin.c
-
-hugin_syslog.lo: $(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hugin_syslog.lo -MD -MP -MF $(DEPDIR)/hugin_syslog.Tpo -c -o hugin_syslog.lo `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hugin_syslog.Tpo $(DEPDIR)/hugin_syslog.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/hugin/hugin_syslog.c' object='hugin_syslog.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hugin_syslog.lo `test -f '$(top_srcdir)/hugin/hugin_syslog.c' || echo '$(srcdir)/'`$(top_srcdir)/hugin/hugin_syslog.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-libdg_la-audioinputenginemidi.lo: $(top_srcdir)/src/audioinputenginemidi.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-audioinputenginemidi.lo -MD -MP -MF $(DEPDIR)/libdg_la-audioinputenginemidi.Tpo -c -o libdg_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-audioinputenginemidi.Tpo $(DEPDIR)/libdg_la-audioinputenginemidi.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audioinputenginemidi.cc' object='libdg_la-audioinputenginemidi.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-audioinputenginemidi.lo `test -f '$(top_srcdir)/src/audioinputenginemidi.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audioinputenginemidi.cc
-
-libdg_la-audiofile.lo: $(top_srcdir)/src/audiofile.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-audiofile.lo -MD -MP -MF $(DEPDIR)/libdg_la-audiofile.Tpo -c -o libdg_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-audiofile.Tpo $(DEPDIR)/libdg_la-audiofile.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/audiofile.cc' object='libdg_la-audiofile.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-audiofile.lo `test -f '$(top_srcdir)/src/audiofile.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/audiofile.cc
-
-libdg_la-channel.lo: $(top_srcdir)/src/channel.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-channel.lo -MD -MP -MF $(DEPDIR)/libdg_la-channel.Tpo -c -o libdg_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-channel.Tpo $(DEPDIR)/libdg_la-channel.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channel.cc' object='libdg_la-channel.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-channel.lo `test -f '$(top_srcdir)/src/channel.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channel.cc
-
-libdg_la-channelmixer.lo: $(top_srcdir)/src/channelmixer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-channelmixer.lo -MD -MP -MF $(DEPDIR)/libdg_la-channelmixer.Tpo -c -o libdg_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-channelmixer.Tpo $(DEPDIR)/libdg_la-channelmixer.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/channelmixer.cc' object='libdg_la-channelmixer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-channelmixer.lo `test -f '$(top_srcdir)/src/channelmixer.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/channelmixer.cc
-
-libdg_la-chresampler.lo: $(top_srcdir)/src/chresampler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-chresampler.lo -MD -MP -MF $(DEPDIR)/libdg_la-chresampler.Tpo -c -o libdg_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-chresampler.Tpo $(DEPDIR)/libdg_la-chresampler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/chresampler.cc' object='libdg_la-chresampler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-chresampler.lo `test -f '$(top_srcdir)/src/chresampler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/chresampler.cc
-
-libdg_la-configuration.lo: $(top_srcdir)/src/configuration.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-configuration.lo -MD -MP -MF $(DEPDIR)/libdg_la-configuration.Tpo -c -o libdg_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-configuration.Tpo $(DEPDIR)/libdg_la-configuration.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configuration.cc' object='libdg_la-configuration.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-configuration.lo `test -f '$(top_srcdir)/src/configuration.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configuration.cc
-
-libdg_la-configparser.lo: $(top_srcdir)/src/configparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-configparser.lo -MD -MP -MF $(DEPDIR)/libdg_la-configparser.Tpo -c -o libdg_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-configparser.Tpo $(DEPDIR)/libdg_la-configparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/configparser.cc' object='libdg_la-configparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-configparser.lo `test -f '$(top_srcdir)/src/configparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/configparser.cc
-
-libdg_la-drumgizmo.lo: $(top_srcdir)/src/drumgizmo.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-drumgizmo.lo -MD -MP -MF $(DEPDIR)/libdg_la-drumgizmo.Tpo -c -o libdg_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-drumgizmo.Tpo $(DEPDIR)/libdg_la-drumgizmo.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumgizmo.cc' object='libdg_la-drumgizmo.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-drumgizmo.lo `test -f '$(top_srcdir)/src/drumgizmo.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumgizmo.cc
-
-libdg_la-drumkit.lo: $(top_srcdir)/src/drumkit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-drumkit.lo -MD -MP -MF $(DEPDIR)/libdg_la-drumkit.Tpo -c -o libdg_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-drumkit.Tpo $(DEPDIR)/libdg_la-drumkit.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkit.cc' object='libdg_la-drumkit.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-drumkit.lo `test -f '$(top_srcdir)/src/drumkit.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkit.cc
-
-libdg_la-drumkitloader.lo: $(top_srcdir)/src/drumkitloader.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-drumkitloader.lo -MD -MP -MF $(DEPDIR)/libdg_la-drumkitloader.Tpo -c -o libdg_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-drumkitloader.Tpo $(DEPDIR)/libdg_la-drumkitloader.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitloader.cc' object='libdg_la-drumkitloader.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-drumkitloader.lo `test -f '$(top_srcdir)/src/drumkitloader.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitloader.cc
-
-libdg_la-drumkitparser.lo: $(top_srcdir)/src/drumkitparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-drumkitparser.lo -MD -MP -MF $(DEPDIR)/libdg_la-drumkitparser.Tpo -c -o libdg_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-drumkitparser.Tpo $(DEPDIR)/libdg_la-drumkitparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/drumkitparser.cc' object='libdg_la-drumkitparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-drumkitparser.lo `test -f '$(top_srcdir)/src/drumkitparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/drumkitparser.cc
-
-libdg_la-events.lo: $(top_srcdir)/src/events.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-events.lo -MD -MP -MF $(DEPDIR)/libdg_la-events.Tpo -c -o libdg_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-events.Tpo $(DEPDIR)/libdg_la-events.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/events.cc' object='libdg_la-events.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-events.lo `test -f '$(top_srcdir)/src/events.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/events.cc
-
-libdg_la-instrument.lo: $(top_srcdir)/src/instrument.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-instrument.lo -MD -MP -MF $(DEPDIR)/libdg_la-instrument.Tpo -c -o libdg_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-instrument.Tpo $(DEPDIR)/libdg_la-instrument.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrument.cc' object='libdg_la-instrument.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-instrument.lo `test -f '$(top_srcdir)/src/instrument.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrument.cc
-
-libdg_la-instrumentparser.lo: $(top_srcdir)/src/instrumentparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-instrumentparser.lo -MD -MP -MF $(DEPDIR)/libdg_la-instrumentparser.Tpo -c -o libdg_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-instrumentparser.Tpo $(DEPDIR)/libdg_la-instrumentparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/instrumentparser.cc' object='libdg_la-instrumentparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-instrumentparser.lo `test -f '$(top_srcdir)/src/instrumentparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/instrumentparser.cc
-
-libdg_la-messagehandler.lo: $(top_srcdir)/src/messagehandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-messagehandler.lo -MD -MP -MF $(DEPDIR)/libdg_la-messagehandler.Tpo -c -o libdg_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-messagehandler.Tpo $(DEPDIR)/libdg_la-messagehandler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagehandler.cc' object='libdg_la-messagehandler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-messagehandler.lo `test -f '$(top_srcdir)/src/messagehandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagehandler.cc
-
-libdg_la-messagereceiver.lo: $(top_srcdir)/src/messagereceiver.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-messagereceiver.lo -MD -MP -MF $(DEPDIR)/libdg_la-messagereceiver.Tpo -c -o libdg_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-messagereceiver.Tpo $(DEPDIR)/libdg_la-messagereceiver.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/messagereceiver.cc' object='libdg_la-messagereceiver.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-messagereceiver.lo `test -f '$(top_srcdir)/src/messagereceiver.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/messagereceiver.cc
-
-libdg_la-midimapparser.lo: $(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-midimapparser.lo -MD -MP -MF $(DEPDIR)/libdg_la-midimapparser.Tpo -c -o libdg_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-midimapparser.Tpo $(DEPDIR)/libdg_la-midimapparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapparser.cc' object='libdg_la-midimapparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-midimapparser.lo `test -f '$(top_srcdir)/src/midimapparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapparser.cc
-
-libdg_la-midimapper.lo: $(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-midimapper.lo -MD -MP -MF $(DEPDIR)/libdg_la-midimapper.Tpo -c -o libdg_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-midimapper.Tpo $(DEPDIR)/libdg_la-midimapper.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/midimapper.cc' object='libdg_la-midimapper.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-midimapper.lo `test -f '$(top_srcdir)/src/midimapper.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/midimapper.cc
-
-libdg_la-mutex.lo: $(top_srcdir)/src/mutex.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-mutex.lo -MD -MP -MF $(DEPDIR)/libdg_la-mutex.Tpo -c -o libdg_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-mutex.Tpo $(DEPDIR)/libdg_la-mutex.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/mutex.cc' object='libdg_la-mutex.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-mutex.lo `test -f '$(top_srcdir)/src/mutex.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/mutex.cc
-
-libdg_la-path.lo: $(top_srcdir)/src/path.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-path.lo -MD -MP -MF $(DEPDIR)/libdg_la-path.Tpo -c -o libdg_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-path.Tpo $(DEPDIR)/libdg_la-path.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/path.cc' object='libdg_la-path.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-path.lo `test -f '$(top_srcdir)/src/path.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/path.cc
-
-libdg_la-powerlist.lo: $(top_srcdir)/src/powerlist.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-powerlist.lo -MD -MP -MF $(DEPDIR)/libdg_la-powerlist.Tpo -c -o libdg_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-powerlist.Tpo $(DEPDIR)/libdg_la-powerlist.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/powerlist.cc' object='libdg_la-powerlist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-powerlist.lo `test -f '$(top_srcdir)/src/powerlist.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/powerlist.cc
-
-libdg_la-sample.lo: $(top_srcdir)/src/sample.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-sample.lo -MD -MP -MF $(DEPDIR)/libdg_la-sample.Tpo -c -o libdg_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-sample.Tpo $(DEPDIR)/libdg_la-sample.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/sample.cc' object='libdg_la-sample.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-sample.lo `test -f '$(top_srcdir)/src/sample.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/sample.cc
-
-libdg_la-semaphore.lo: $(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-semaphore.lo -MD -MP -MF $(DEPDIR)/libdg_la-semaphore.Tpo -c -o libdg_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-semaphore.Tpo $(DEPDIR)/libdg_la-semaphore.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/semaphore.cc' object='libdg_la-semaphore.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-semaphore.lo `test -f '$(top_srcdir)/src/semaphore.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/semaphore.cc
-
-libdg_la-saxparser.lo: $(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-saxparser.lo -MD -MP -MF $(DEPDIR)/libdg_la-saxparser.Tpo -c -o libdg_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-saxparser.Tpo $(DEPDIR)/libdg_la-saxparser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/saxparser.cc' object='libdg_la-saxparser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-saxparser.lo `test -f '$(top_srcdir)/src/saxparser.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/saxparser.cc
-
-libdg_la-thread.lo: $(top_srcdir)/src/thread.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-thread.lo -MD -MP -MF $(DEPDIR)/libdg_la-thread.Tpo -c -o libdg_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-thread.Tpo $(DEPDIR)/libdg_la-thread.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/thread.cc' object='libdg_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-thread.lo `test -f '$(top_srcdir)/src/thread.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/thread.cc
-
-libdg_la-velocity.lo: $(top_srcdir)/src/velocity.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-velocity.lo -MD -MP -MF $(DEPDIR)/libdg_la-velocity.Tpo -c -o libdg_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-velocity.Tpo $(DEPDIR)/libdg_la-velocity.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/velocity.cc' object='libdg_la-velocity.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-velocity.lo `test -f '$(top_srcdir)/src/velocity.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/velocity.cc
-
-libdg_la-versionstr.lo: $(top_srcdir)/src/versionstr.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-versionstr.lo -MD -MP -MF $(DEPDIR)/libdg_la-versionstr.Tpo -c -o libdg_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-versionstr.Tpo $(DEPDIR)/libdg_la-versionstr.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/versionstr.cc' object='libdg_la-versionstr.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-versionstr.lo `test -f '$(top_srcdir)/src/versionstr.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/versionstr.cc
-
-libdg_la-nativewindow_x11.lo: $(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-nativewindow_x11.lo -MD -MP -MF $(DEPDIR)/libdg_la-nativewindow_x11.Tpo -c -o libdg_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-nativewindow_x11.Tpo $(DEPDIR)/libdg_la-nativewindow_x11.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_x11.cc' object='libdg_la-nativewindow_x11.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-nativewindow_x11.lo `test -f '$(top_srcdir)/plugingui/nativewindow_x11.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_x11.cc
-
-libdg_la-nativewindow_win32.lo: $(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-nativewindow_win32.lo -MD -MP -MF $(DEPDIR)/libdg_la-nativewindow_win32.Tpo -c -o libdg_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-nativewindow_win32.Tpo $(DEPDIR)/libdg_la-nativewindow_win32.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/nativewindow_win32.cc' object='libdg_la-nativewindow_win32.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-nativewindow_win32.lo `test -f '$(top_srcdir)/plugingui/nativewindow_win32.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/nativewindow_win32.cc
-
-libdg_la-plugingui.lo: $(top_srcdir)/plugingui/plugingui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-plugingui.lo -MD -MP -MF $(DEPDIR)/libdg_la-plugingui.Tpo -c -o libdg_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-plugingui.Tpo $(DEPDIR)/libdg_la-plugingui.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/plugingui.cc' object='libdg_la-plugingui.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-plugingui.lo `test -f '$(top_srcdir)/plugingui/plugingui.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/plugingui.cc
-
-libdg_la-label.lo: $(top_srcdir)/plugingui/label.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-label.lo -MD -MP -MF $(DEPDIR)/libdg_la-label.Tpo -c -o libdg_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-label.Tpo $(DEPDIR)/libdg_la-label.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/label.cc' object='libdg_la-label.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-label.lo `test -f '$(top_srcdir)/plugingui/label.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/label.cc
-
-libdg_la-eventhandler.lo: $(top_srcdir)/plugingui/eventhandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-eventhandler.lo -MD -MP -MF $(DEPDIR)/libdg_la-eventhandler.Tpo -c -o libdg_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-eventhandler.Tpo $(DEPDIR)/libdg_la-eventhandler.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/eventhandler.cc' object='libdg_la-eventhandler.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-eventhandler.lo `test -f '$(top_srcdir)/plugingui/eventhandler.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/eventhandler.cc
-
-libdg_la-font.lo: $(top_srcdir)/plugingui/font.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-font.lo -MD -MP -MF $(DEPDIR)/libdg_la-font.Tpo -c -o libdg_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-font.Tpo $(DEPDIR)/libdg_la-font.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/font.cc' object='libdg_la-font.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-font.lo `test -f '$(top_srcdir)/plugingui/font.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/font.cc
-
-libdg_la-window.lo: $(top_srcdir)/plugingui/window.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-window.lo -MD -MP -MF $(DEPDIR)/libdg_la-window.Tpo -c -o libdg_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-window.Tpo $(DEPDIR)/libdg_la-window.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/window.cc' object='libdg_la-window.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-window.lo `test -f '$(top_srcdir)/plugingui/window.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/window.cc
-
-libdg_la-widget.lo: $(top_srcdir)/plugingui/widget.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-widget.lo -MD -MP -MF $(DEPDIR)/libdg_la-widget.Tpo -c -o libdg_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-widget.Tpo $(DEPDIR)/libdg_la-widget.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/widget.cc' object='libdg_la-widget.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-widget.lo `test -f '$(top_srcdir)/plugingui/widget.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/widget.cc
-
-libdg_la-colour.lo: $(top_srcdir)/plugingui/colour.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-colour.lo -MD -MP -MF $(DEPDIR)/libdg_la-colour.Tpo -c -o libdg_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-colour.Tpo $(DEPDIR)/libdg_la-colour.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/colour.cc' object='libdg_la-colour.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-colour.lo `test -f '$(top_srcdir)/plugingui/colour.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/colour.cc
-
-libdg_la-painter.lo: $(top_srcdir)/plugingui/painter.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-painter.lo -MD -MP -MF $(DEPDIR)/libdg_la-painter.Tpo -c -o libdg_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-painter.Tpo $(DEPDIR)/libdg_la-painter.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/painter.cc' object='libdg_la-painter.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-painter.lo `test -f '$(top_srcdir)/plugingui/painter.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/painter.cc
-
-libdg_la-button.lo: $(top_srcdir)/plugingui/button.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-button.lo -MD -MP -MF $(DEPDIR)/libdg_la-button.Tpo -c -o libdg_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-button.Tpo $(DEPDIR)/libdg_la-button.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/button.cc' object='libdg_la-button.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-button.lo `test -f '$(top_srcdir)/plugingui/button.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/button.cc
-
-libdg_la-pixelbuffer.lo: $(top_srcdir)/plugingui/pixelbuffer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-pixelbuffer.lo -MD -MP -MF $(DEPDIR)/libdg_la-pixelbuffer.Tpo -c -o libdg_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-pixelbuffer.Tpo $(DEPDIR)/libdg_la-pixelbuffer.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pixelbuffer.cc' object='libdg_la-pixelbuffer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-pixelbuffer.lo `test -f '$(top_srcdir)/plugingui/pixelbuffer.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pixelbuffer.cc
-
-libdg_la-lineedit.lo: $(top_srcdir)/plugingui/lineedit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-lineedit.lo -MD -MP -MF $(DEPDIR)/libdg_la-lineedit.Tpo -c -o libdg_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-lineedit.Tpo $(DEPDIR)/libdg_la-lineedit.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lineedit.cc' object='libdg_la-lineedit.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-lineedit.lo `test -f '$(top_srcdir)/plugingui/lineedit.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lineedit.cc
-
-libdg_la-led.lo: $(top_srcdir)/plugingui/led.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-led.lo -MD -MP -MF $(DEPDIR)/libdg_la-led.Tpo -c -o libdg_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-led.Tpo $(DEPDIR)/libdg_la-led.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/led.cc' object='libdg_la-led.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-led.lo `test -f '$(top_srcdir)/plugingui/led.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/led.cc
-
-libdg_la-checkbox.lo: $(top_srcdir)/plugingui/checkbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-checkbox.lo -MD -MP -MF $(DEPDIR)/libdg_la-checkbox.Tpo -c -o libdg_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-checkbox.Tpo $(DEPDIR)/libdg_la-checkbox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/checkbox.cc' object='libdg_la-checkbox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-checkbox.lo `test -f '$(top_srcdir)/plugingui/checkbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/checkbox.cc
-
-libdg_la-slider.lo: $(top_srcdir)/plugingui/slider.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-slider.lo -MD -MP -MF $(DEPDIR)/libdg_la-slider.Tpo -c -o libdg_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-slider.Tpo $(DEPDIR)/libdg_la-slider.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/slider.cc' object='libdg_la-slider.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-slider.lo `test -f '$(top_srcdir)/plugingui/slider.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/slider.cc
-
-libdg_la-scrollbar.lo: $(top_srcdir)/plugingui/scrollbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-scrollbar.lo -MD -MP -MF $(DEPDIR)/libdg_la-scrollbar.Tpo -c -o libdg_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-scrollbar.Tpo $(DEPDIR)/libdg_la-scrollbar.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/scrollbar.cc' object='libdg_la-scrollbar.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-scrollbar.lo `test -f '$(top_srcdir)/plugingui/scrollbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/scrollbar.cc
-
-libdg_la-listbox.lo: $(top_srcdir)/plugingui/listbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-listbox.lo -MD -MP -MF $(DEPDIR)/libdg_la-listbox.Tpo -c -o libdg_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-listbox.Tpo $(DEPDIR)/libdg_la-listbox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listbox.cc' object='libdg_la-listbox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-listbox.lo `test -f '$(top_srcdir)/plugingui/listbox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listbox.cc
-
-libdg_la-listboxthin.lo: $(top_srcdir)/plugingui/listboxthin.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-listboxthin.lo -MD -MP -MF $(DEPDIR)/libdg_la-listboxthin.Tpo -c -o libdg_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-listboxthin.Tpo $(DEPDIR)/libdg_la-listboxthin.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxthin.cc' object='libdg_la-listboxthin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-listboxthin.lo `test -f '$(top_srcdir)/plugingui/listboxthin.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxthin.cc
-
-libdg_la-listboxbasic.lo: $(top_srcdir)/plugingui/listboxbasic.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-listboxbasic.lo -MD -MP -MF $(DEPDIR)/libdg_la-listboxbasic.Tpo -c -o libdg_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-listboxbasic.Tpo $(DEPDIR)/libdg_la-listboxbasic.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/listboxbasic.cc' object='libdg_la-listboxbasic.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-listboxbasic.lo `test -f '$(top_srcdir)/plugingui/listboxbasic.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/listboxbasic.cc
-
-libdg_la-knob.lo: $(top_srcdir)/plugingui/knob.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-knob.lo -MD -MP -MF $(DEPDIR)/libdg_la-knob.Tpo -c -o libdg_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-knob.Tpo $(DEPDIR)/libdg_la-knob.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/knob.cc' object='libdg_la-knob.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-knob.lo `test -f '$(top_srcdir)/plugingui/knob.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/knob.cc
-
-libdg_la-filebrowser.lo: $(top_srcdir)/plugingui/filebrowser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-filebrowser.lo -MD -MP -MF $(DEPDIR)/libdg_la-filebrowser.Tpo -c -o libdg_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-filebrowser.Tpo $(DEPDIR)/libdg_la-filebrowser.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/filebrowser.cc' object='libdg_la-filebrowser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-filebrowser.lo `test -f '$(top_srcdir)/plugingui/filebrowser.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/filebrowser.cc
-
-libdg_la-directory.lo: $(top_srcdir)/plugingui/directory.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-directory.lo -MD -MP -MF $(DEPDIR)/libdg_la-directory.Tpo -c -o libdg_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-directory.Tpo $(DEPDIR)/libdg_la-directory.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/directory.cc' object='libdg_la-directory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-directory.lo `test -f '$(top_srcdir)/plugingui/directory.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/directory.cc
-
-libdg_la-pluginconfig.lo: $(top_srcdir)/plugingui/pluginconfig.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-pluginconfig.lo -MD -MP -MF $(DEPDIR)/libdg_la-pluginconfig.Tpo -c -o libdg_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-pluginconfig.Tpo $(DEPDIR)/libdg_la-pluginconfig.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/pluginconfig.cc' object='libdg_la-pluginconfig.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-pluginconfig.lo `test -f '$(top_srcdir)/plugingui/pluginconfig.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/pluginconfig.cc
-
-libdg_la-image.lo: $(top_srcdir)/plugingui/image.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-image.lo -MD -MP -MF $(DEPDIR)/libdg_la-image.Tpo -c -o libdg_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-image.Tpo $(DEPDIR)/libdg_la-image.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/image.cc' object='libdg_la-image.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-image.lo `test -f '$(top_srcdir)/plugingui/image.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/image.cc
-
-libdg_la-combobox.lo: $(top_srcdir)/plugingui/combobox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-combobox.lo -MD -MP -MF $(DEPDIR)/libdg_la-combobox.Tpo -c -o libdg_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-combobox.Tpo $(DEPDIR)/libdg_la-combobox.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/combobox.cc' object='libdg_la-combobox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-combobox.lo `test -f '$(top_srcdir)/plugingui/combobox.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/combobox.cc
-
-libdg_la-progressbar.lo: $(top_srcdir)/plugingui/progressbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-progressbar.lo -MD -MP -MF $(DEPDIR)/libdg_la-progressbar.Tpo -c -o libdg_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-progressbar.Tpo $(DEPDIR)/libdg_la-progressbar.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/progressbar.cc' object='libdg_la-progressbar.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-progressbar.lo `test -f '$(top_srcdir)/plugingui/progressbar.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/progressbar.cc
-
-libdg_la-verticalline.lo: $(top_srcdir)/plugingui/verticalline.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-verticalline.lo -MD -MP -MF $(DEPDIR)/libdg_la-verticalline.Tpo -c -o libdg_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-verticalline.Tpo $(DEPDIR)/libdg_la-verticalline.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/verticalline.cc' object='libdg_la-verticalline.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-verticalline.lo `test -f '$(top_srcdir)/plugingui/verticalline.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/verticalline.cc
-
-libdg_la-resource.lo: $(top_srcdir)/plugingui/resource.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-resource.lo -MD -MP -MF $(DEPDIR)/libdg_la-resource.Tpo -c -o libdg_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-resource.Tpo $(DEPDIR)/libdg_la-resource.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource.cc' object='libdg_la-resource.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-resource.lo `test -f '$(top_srcdir)/plugingui/resource.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource.cc
-
-libdg_la-resource_data.lo: $(top_srcdir)/plugingui/resource_data.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-resource_data.lo -MD -MP -MF $(DEPDIR)/libdg_la-resource_data.Tpo -c -o libdg_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-resource_data.Tpo $(DEPDIR)/libdg_la-resource_data.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/resource_data.cc' object='libdg_la-resource_data.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-resource_data.lo `test -f '$(top_srcdir)/plugingui/resource_data.cc' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/resource_data.cc
-
-libdg_la-lodepng.lo: $(top_srcdir)/plugingui/lodepng/lodepng.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -MT libdg_la-lodepng.lo -MD -MP -MF $(DEPDIR)/libdg_la-lodepng.Tpo -c -o libdg_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdg_la-lodepng.Tpo $(DEPDIR)/libdg_la-lodepng.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/plugingui/lodepng/lodepng.cpp' object='libdg_la-lodepng.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdg_la_CXXFLAGS) $(CXXFLAGS) -c -o libdg_la-lodepng.lo `test -f '$(top_srcdir)/plugingui/lodepng/lodepng.cpp' || echo '$(srcdir)/'`$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-
-libdrumgizmo_vst_la-drumgizmo_vst.lo: drumgizmo_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-drumgizmo_vst.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-drumgizmo_vst.Tpo -c -o libdrumgizmo_vst_la-drumgizmo_vst.lo `test -f 'drumgizmo_vst.cc' || echo '$(srcdir)/'`drumgizmo_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-drumgizmo_vst.Tpo $(DEPDIR)/libdrumgizmo_vst_la-drumgizmo_vst.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='drumgizmo_vst.cc' object='libdrumgizmo_vst_la-drumgizmo_vst.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-drumgizmo_vst.lo `test -f 'drumgizmo_vst.cc' || echo '$(srcdir)/'`drumgizmo_vst.cc
-
-libdrumgizmo_vst_la-input_vst.lo: input_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-input_vst.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-input_vst.Tpo -c -o libdrumgizmo_vst_la-input_vst.lo `test -f 'input_vst.cc' || echo '$(srcdir)/'`input_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-input_vst.Tpo $(DEPDIR)/libdrumgizmo_vst_la-input_vst.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='input_vst.cc' object='libdrumgizmo_vst_la-input_vst.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-input_vst.lo `test -f 'input_vst.cc' || echo '$(srcdir)/'`input_vst.cc
-
-libdrumgizmo_vst_la-output_vst.lo: output_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-output_vst.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-output_vst.Tpo -c -o libdrumgizmo_vst_la-output_vst.lo `test -f 'output_vst.cc' || echo '$(srcdir)/'`output_vst.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-output_vst.Tpo $(DEPDIR)/libdrumgizmo_vst_la-output_vst.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='output_vst.cc' object='libdrumgizmo_vst_la-output_vst.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-output_vst.lo `test -f 'output_vst.cc' || echo '$(srcdir)/'`output_vst.cc
-
-libdrumgizmo_vst_la-audioeffectx.lo: ${VST_SRC_BASE}/audioeffectx.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-audioeffectx.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-audioeffectx.Tpo -c -o libdrumgizmo_vst_la-audioeffectx.lo `test -f '${VST_SRC_BASE}/audioeffectx.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffectx.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-audioeffectx.Tpo $(DEPDIR)/libdrumgizmo_vst_la-audioeffectx.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/audioeffectx.cpp' object='libdrumgizmo_vst_la-audioeffectx.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-audioeffectx.lo `test -f '${VST_SRC_BASE}/audioeffectx.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffectx.cpp
-
-libdrumgizmo_vst_la-audioeffect.lo: ${VST_SRC_BASE}/audioeffect.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-audioeffect.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-audioeffect.Tpo -c -o libdrumgizmo_vst_la-audioeffect.lo `test -f '${VST_SRC_BASE}/audioeffect.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffect.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-audioeffect.Tpo $(DEPDIR)/libdrumgizmo_vst_la-audioeffect.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/audioeffect.cpp' object='libdrumgizmo_vst_la-audioeffect.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-audioeffect.lo `test -f '${VST_SRC_BASE}/audioeffect.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/audioeffect.cpp
-
-libdrumgizmo_vst_la-vstplugmain.lo: ${VST_SRC_BASE}/vstplugmain.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -MT libdrumgizmo_vst_la-vstplugmain.lo -MD -MP -MF $(DEPDIR)/libdrumgizmo_vst_la-vstplugmain.Tpo -c -o libdrumgizmo_vst_la-vstplugmain.lo `test -f '${VST_SRC_BASE}/vstplugmain.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/vstplugmain.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libdrumgizmo_vst_la-vstplugmain.Tpo $(DEPDIR)/libdrumgizmo_vst_la-vstplugmain.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='${VST_SRC_BASE}/vstplugmain.cpp' object='libdrumgizmo_vst_la-vstplugmain.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrumgizmo_vst_la_CXXFLAGS) $(CXXFLAGS) -c -o libdrumgizmo_vst_la-vstplugmain.lo `test -f '${VST_SRC_BASE}/vstplugmain.cpp' || echo '$(srcdir)/'`${VST_SRC_BASE}/vstplugmain.cpp
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	clean-pluginLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES clean-pluginLTLIBRARIES \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-pluginLTLIBRARIES install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/vst/drumgizmo_vst.cc b/vst/drumgizmo_vst.cc
deleted file mode 100644
index 6aec4f2..0000000
--- a/vst/drumgizmo_vst.cc
+++ /dev/null
@@ -1,464 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            drumgizmo_vst.cc
- *
- *  Tue Sep 20 08:22:48 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "drumgizmo_vst.h"
-
-#include "constants.h"
-
-#include <time.h>
-#include <drumgizmo.h>
-
-#include <hugin.hpp>
-
-#define NUM_PROGRAMS 0
-#define NUM_PARAMS 0
-
-DGEditor::DGEditor(AudioEffect* effect) 
-{
-  DEBUG(dgeditor, "Create DGEditor\n");
-  dgeff = (DrumGizmoVst*)effect;
-  plugingui = NULL;
-  drumgizmo = dgeff->drumgizmo;
-}
-
-bool DGEditor::open(void* ptr)
-{
-  DEBUG(dgeditor, "open GUI (new PluginGUI)\n");
-  if(plugingui) delete plugingui;
-
-  plugingui = new PluginGUI();
-  //  plugingui->setChangeMidimapCallback(midimapHandler, dgeff);
-  
-  //  plugingui->show();
-  return true;
-}
-
-void DGEditor::close()
-{
-  DEBUG(dgeditor, "close GUI (delete PluginGUI)\n");
-  //  plugingui->hide();
-  if(plugingui) delete plugingui;
-  plugingui = NULL;
-}
-
-bool DGEditor::isOpen()
-{
-  DEBUG(vst, "isOpen\n");
-  return plugingui != NULL;
-}
-
-void DGEditor::idle()
-{
-  DEBUG(vst, "idle\n");
-  //  if(plugingui) plugingui->processEvents();
-}
-
-AudioEffect* createEffectInstance(audioMasterCallback audioMaster)
-{
-  DEBUG(vst, "createEffectInstance\n");
-	return new DrumGizmoVst(audioMaster);
-}
-
-DrumGizmoVst::DrumGizmoVst(audioMasterCallback audioMaster)
-  : AudioEffectX(audioMaster, NUM_PROGRAMS, NUM_PARAMS)
-{
-  hug_status_t status = hug_init(HUG_FLAG_OUTPUT_TO_SYSLOG | HUG_FLAG_USE_MUTEX,
-                                 HUG_OPTION_SYSLOG_HOST, "192.168.0.10",
-                                 HUG_OPTION_SYSLOG_PORT, 514,
-                                 HUG_OPTION_END);
-
-  if(status != HUG_STATUS_OK) {
-    printf("Error: %d\n", status);
-  }
-
-  INFO(example, "We are up and running");
-
-  DEBUG(vst, "DrumGizmoVst()\n");
-
-  pos = 0;
-  buffer = NULL;
-  buffer_size = 0;
-
-  output = NULL;
-  input = NULL;
-  drumgizmo = NULL;
-  
-  output = new OutputVST();
-  input = new InputVST();
-  drumgizmo = new DrumGizmo(output, input);
-
-	// initialize programs
-	//programs = new DrumGizmoVstProgram[kNumPrograms];
-	//for(VstInt32 i = 0; i < 16; i++) channelPrograms[i] = i;
-
-  //if(programs) setProgram(0);
-	
-	if(audioMaster)	{
-		setNumInputs(0); // no audio inputs
-		setNumOutputs(NUM_OUTPUTS);
-		canProcessReplacing();
-		isSynth();
-
-    union {
-      char cid[4];
-      unsigned int iid;
-    } id;
-
-    memcpy(id.cid, "DGV5", 4); // Four bytes typecasted into an unsigned integer
-		setUniqueID(id.iid);
-
-    //    setUniqueID((unsigned int)time(NULL));
-    
-	}
-
-	initProcess();
-	suspend();
-
-  editor = new DGEditor(this);
-  setEditor(editor);
-
-  programsAreChunks(true);
-
-  // getChunk
-  // file:///home/deva/docs/c/drumgizmo/vst/vstsdk2.4/doc/html/class_audio_effect.html#42883c327783d7d31ed513b10c9204fc
-
-  // setChunk
-  // file:///home/deva/docs/c/drumgizmo/vst/vstsdk2.4/doc/html/class_audio_effect.html#b6e4c31c1acf8d1fc4046521912787b1
-}
-
-DrumGizmoVst::~DrumGizmoVst()
-{
-  DEBUG(vst, "~DrumGizmoVst(1)\n");
-  if(drumgizmo) delete drumgizmo;
-  DEBUG(vst, "~DrumGizmoVst(2)\n");
-  if(input) delete input;
-  DEBUG(vst, "~DrumGizmoVst(3)\n");
-  if(output) delete output;
-  DEBUG(vst, "~DrumGizmoVst(4)\n");
-
-  hug_close();
-}
-
-VstInt32 DrumGizmoVst::getChunk(void **data, bool isPreset)
-{
-  DEBUG(vst, "getChunk(data: %p isPreset: %d)\n", *data, isPreset?1:0);
-  std::string cfg = drumgizmo->configString();
-  DEBUG(vst, "drumgizmo->config := %s\n", cfg.c_str());
-  char *config = strdup(cfg.c_str());
-  *data = config;
-  return cfg.length();
-}
-
-VstInt32 DrumGizmoVst::setChunk(void *data, VstInt32 byteSize, bool isPreset)
-{
-  std::string config;
-  config.append((const char*)data, (size_t)byteSize);
-  DEBUG(vst, "setChunk(isPreset: %d): [%d] %s\n",
-        isPreset?1:0, byteSize, config.c_str());
-
-  if(!drumgizmo->setConfigString(config)) {
-    ERR(vst, "setConfigString failed...\n");
-    return 1;
-  }
-
-  return 0;
-}
-
-void DrumGizmoVst::setProgram(VstInt32 program) {}
-void DrumGizmoVst::setProgramName(char* name) {}
-void DrumGizmoVst::getProgramName(char* name) { name[0] = '\0'; }
-
-void DrumGizmoVst::getParameterLabel(VstInt32 index, char* label)
-{
-	label[0] = '\0';
-	/*
-	switch(index)
-	{
-		case kWaveform1:
-		case kWaveform2:
-			vst_strncpy(label, "Shape", kVstMaxParamStrLen);
-			break;
-
-		case kFreq1:
-		case kFreq2:
-			vst_strncpy(label, "Hz", kVstMaxParamStrLen);
-			break;
-
-		case kVolume1:
-		case kVolume2:
-		case kVolume:
-			vst_strncpy(label, "dB", kVstMaxParamStrLen);
-			break;
-	}
-	*/
-}
-
-void DrumGizmoVst::getParameterDisplay(VstInt32 index, char* text)
-{
-	text[0] = 0;
-	/*
-	switch(index)
-	{
-		case kWaveform1:
-			if(fWaveform1 < .5)
-				vst_strncpy(text, "Sawtooth", kVstMaxParamStrLen);
-			else
-				vst_strncpy(text, "Pulse", kVstMaxParamStrLen);
-			break;
-
-		case kFreq1:		float2string(fFreq1, text, kVstMaxParamStrLen);	break;
-		case kVolume1:		dB2string(fVolume1, text, kVstMaxParamStrLen);	break;
-		
-		case kWaveform2:
-			if(fWaveform2 < .5)
-				vst_strncpy(text, "Sawtooth", kVstMaxParamStrLen);
-			else
-				vst_strncpy(text, "Pulse", kVstMaxParamStrLen);
-			break;
-
-		case kFreq2:		float2string(fFreq2, text, kVstMaxParamStrLen);	break;
-		case kVolume2:		dB2string(fVolume2, text, kVstMaxParamStrLen);	break;
-		case kVolume:		dB2string(fVolume, text, kVstMaxParamStrLen);	break;
-	}
-	*/
-}
-
-void DrumGizmoVst::getParameterName(VstInt32 index, char* label)
-{
-	/*
-	switch(index)
-	{
-		case kWaveform1:	vst_strncpy(label, "Wave 1", kVstMaxParamStrLen);	break;
-		case kFreq1:		vst_strncpy(label, "Freq 1", kVstMaxParamStrLen);	break;
-		case kVolume1:		vst_strncpy(label, "Levl 1", kVstMaxParamStrLen);	break;
-		case kWaveform2:	vst_strncpy(label, "Wave 2", kVstMaxParamStrLen);	break;
-		case kFreq2:		vst_strncpy(label, "Freq 2", kVstMaxParamStrLen);	break;
-		case kVolume2:		vst_strncpy(label, "Levl 2", kVstMaxParamStrLen);	break;
-		case kVolume:		vst_strncpy(label, "Volume", kVstMaxParamStrLen);	break;
-	}
-	*/
-}
-
-void DrumGizmoVst::setParameter(VstInt32 index, float value)
-{
-	/*
-	DrumGizmoVstProgram *ap = &programs[curProgram];
-	switch(index)
-	{
-		case kWaveform1:	fWaveform1	= ap->fWaveform1	= value;	break;
-		case kFreq1:		fFreq1 		= ap->fFreq1		= value;	break;
-		case kVolume1:		fVolume1	= ap->fVolume1		= value;	break;
-		case kWaveform2:	fWaveform2	= ap->fWaveform2	= value;	break;
-		case kFreq2:		fFreq2		= ap->fFreq2		= value;	break;
-		case kVolume2:		fVolume2	= ap->fVolume2		= value;	break;
-		case kVolume:		fVolume		= ap->fVolume		= value;	break;
-	}
-	*/
-}
-
-float DrumGizmoVst::getParameter(VstInt32 index)
-{
-	float value = 0;
-	/*
-	switch(index)
-	{
-		case kWaveform1:	value = fWaveform1;	break;
-		case kFreq1:		value = fFreq1;		break;
-		case kVolume1:		value = fVolume1;	break;
-		case kWaveform2:	value = fWaveform2;	break;
-		case kFreq2:		value = fFreq2;		break;
-		case kVolume2:		value = fVolume2;	break;
-		case kVolume:		value = fVolume;	break;
-	}
-	*/
-	return value;
-}
-
-bool DrumGizmoVst::getOutputProperties(VstInt32 index,
-                                       VstPinProperties* properties)
-{
-	if(index < NUM_OUTPUTS)
-	{
-		vst_strncpy(properties->label, "Channel ", 63);
-		char temp[11] = {0};
-		int2string(index + 1, temp, 10);
-		vst_strncat(properties->label, temp, 63);
-
-		properties->flags = kVstPinIsActive;
-
-		return true;
-	}
-	return false;
-}
-
-bool DrumGizmoVst::getProgramNameIndexed(VstInt32 category, VstInt32 index,
-                                         char* text)
-{
-	return false;
-}
-
-bool DrumGizmoVst::getEffectName(char* name)
-{
-	vst_strncpy(name, "DrumGizmo4", kVstMaxEffectNameLen);
-	return true;
-}
-
-bool DrumGizmoVst::getVendorString(char* text)
-{
-	vst_strncpy(text, "Aasimon.org", kVstMaxVendorStrLen);
-	return true;
-}
-
-bool DrumGizmoVst::getProductString(char* text)
-{
-	vst_strncpy(text, "Vst Synth", kVstMaxProductStrLen);
-	return true;
-}
-
-VstInt32 DrumGizmoVst::getVendorVersion()
-{ 
-	return 1000; 
-}
-
-VstInt32 DrumGizmoVst::canDo(char* text)
-{
-	if(!strcmp(text, "receiveVstEvents")) return 1;
-	if(!strcmp(text, "receiveVstMidiEvent"))	return 1;
-  //if(!strcmp(text, "midiProgramNames")) return 1;
-	return -1;	// explicitly can't do; 0 => don't know
-}
-
-VstInt32 DrumGizmoVst::getNumMidiInputChannels()
-{
-	return 1; // we are monophonic
-}
-
-VstInt32 DrumGizmoVst::getNumMidiOutputChannels()
-{
-	return 0; // no MIDI output back to Host app
-}
-
-VstInt32 DrumGizmoVst::getMidiProgramName(VstInt32 channel,
-                                          MidiProgramName* mpn)
-{
-	VstInt32 prg = mpn->thisProgramIndex;
-	if(prg < 0 || prg >= 128)
-		return 0;
-	fillProgram(channel, prg, mpn);
-	if(channel == 9)
-		return 1;
-	return 128L;
-}
-
-VstInt32 DrumGizmoVst::getCurrentMidiProgram(VstInt32 channel,
-                                             MidiProgramName* mpn)
-{
-	if(channel < 0 || channel >= 16 || !mpn) return -1;
-	VstInt32 prg = 0;
-	mpn->thisProgramIndex = prg;
-	fillProgram(channel, prg, mpn);
-	return prg;
-}
-
-void DrumGizmoVst::fillProgram(VstInt32 channel, VstInt32 prg,
-                               MidiProgramName* mpn)
-{
-	mpn->midiBankMsb = mpn->midiBankLsb = -1;
-	mpn->reserved = 0;
-	mpn->flags = 0;
-
-	vst_strncpy(mpn->name, "Standard", 63);
-	mpn->midiProgram = 0;
-	mpn->parentCategoryIndex = 0;
-}
-
-VstInt32 DrumGizmoVst::getMidiProgramCategory(VstInt32 channel,
-                                              MidiProgramCategory* cat)
-{
-	cat->parentCategoryIndex = -1;	// -1:no parent category
-	cat->flags = 0;					// reserved, none defined yet, zero.
-  //	VstInt32 category = cat->thisCategoryIndex;
-	vst_strncpy(cat->name, "Drums", 63);
-	return 1;
-}
-
-bool DrumGizmoVst::hasMidiProgramsChanged(VstInt32 channel)
-{
-	return false;	// updateDisplay()
-}
-
-bool DrumGizmoVst::getMidiKeyName(VstInt32 channel, MidiKeyName* key)
-// struct will be filled with information for 'thisProgramIndex' and
-//  'thisKeyNumber'
-// if keyName is "" the standard name of the key will be displayed.
-// if false is returned, no MidiKeyNames defined for 'thisProgramIndex'.
-{
-	// key->thisProgramIndex;		// >= 0. fill struct for this program index.
-	// key->thisKeyNumber;			// 0 - 127. fill struct for this key number.
-	key->keyName[0] = 0;
-	key->reserved = 0;				// zero
-	key->flags = 0;					// reserved, none defined yet, zero.
-	return false;
-}
-
-void DrumGizmoVst::setSampleRate(float sampleRate)
-{
-	AudioEffectX::setSampleRate(sampleRate);
-  drumgizmo->setSamplerate(sampleRate);
-}
-
-void DrumGizmoVst::setBlockSize(VstInt32 blockSize)
-{
-	AudioEffectX::setBlockSize(blockSize);
-}
-
-void DrumGizmoVst::initProcess()
-{
-  //  drumgizmo->loadkit(getenv("DRUMGIZMO_DRUMKIT"));
-  drumgizmo->init();
-}
-
-void DrumGizmoVst::processReplacing(float** inputs, float** outputs,
-                                    VstInt32 sampleFrames)
-{
-  output->setOutputs(outputs);
-
-  if(buffer_size != (size_t)sampleFrames) {
-    if(buffer) free(buffer);
-    buffer_size = sampleFrames;
-    buffer = (sample_t*)malloc(sizeof(sample_t) * buffer_size);
-  }
-
-  drumgizmo->run(pos, buffer, buffer_size);
-
-  pos += sampleFrames;
-}
-
-VstInt32 DrumGizmoVst::processEvents(VstEvents* ev)
-{
-  input->processEvents(ev);
-	return 1;
-}
diff --git a/vst/drumgizmo_vst.h b/vst/drumgizmo_vst.h
deleted file mode 100644
index 4497c48..0000000
--- a/vst/drumgizmo_vst.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            drumgizmo_vst.h
- *
- *  Tue Sep 20 08:22:48 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_DRUMGIZMO_VST_H__
-#define __DRUMGIZMO_DRUMGIZMO_VST_H__
-
-#include <public.sdk/source/vst2.x/audioeffectx.h>
-#include <public.sdk/source/vst2.x/aeffeditor.h>
-
-#include <drumgizmo.h>
-#include <plugingui.h>
-
-#include "input_vst.h"
-#include "output_vst.h"
-
-class DGEditor;
-
-class DrumGizmoVst : public AudioEffectX
-{
-public:
-	DrumGizmoVst(audioMasterCallback audioMaster);
-	~DrumGizmoVst();
-
-	void processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames);
-	VstInt32 processEvents(VstEvents* events);
-
-	void setProgram(VstInt32 program);
-	void setProgramName(char* name);
-	void getProgramName(char* name);
-	bool getProgramNameIndexed(VstInt32 category, VstInt32 index, char* text);
-
-	void setParameter(VstInt32 index, float value);
-	float getParameter(VstInt32 index);
-	void getParameterLabel(VstInt32 index, char* label);
-	void getParameterDisplay(VstInt32 index, char* text);
-	void getParameterName(VstInt32 index, char* text);
-	
-	void setSampleRate(float sampleRate);
-	void setBlockSize(VstInt32 blockSize);
-	
-	bool getOutputProperties(VstInt32 index, VstPinProperties* properties);
-		
-	bool getEffectName(char* name);
-	bool getVendorString(char* text);
-	bool getProductString(char* text);
-	VstInt32 getVendorVersion();
-	VstInt32 canDo(char* text);
-
-	VstInt32 getNumMidiInputChannels();
-	VstInt32 getNumMidiOutputChannels();
-
-	VstInt32 getMidiProgramName(VstInt32 channel,
-                              MidiProgramName* midiProgramName);
-	VstInt32 getCurrentMidiProgram(VstInt32 channel,
-                                 MidiProgramName* currentProgram);
-	VstInt32 getMidiProgramCategory(VstInt32 channel,
-                                  MidiProgramCategory* category);
-	bool hasMidiProgramsChanged(VstInt32 channel);
-	bool getMidiKeyName(VstInt32 channel, MidiKeyName* keyName);
-
-  VstInt32 getChunk(void **data, bool isPreset);
-  VstInt32 setChunk(void *data, VstInt32 byteSize, bool isPreset);
-
-  DrumGizmo *drumgizmo;
-  InputVST *input;
-  OutputVST *output;
-
-private:
-	void initProcess();
-  //	void noteOn(VstInt32 note, VstInt32 velocity, VstInt32 delta);
-  //	void noteOff();
-	void fillProgram(VstInt32 channel, VstInt32 prg, MidiProgramName* mpn);
-
-  size_t pos;
-  sample_t *buffer;
-  size_t buffer_size;
-
-  DGEditor *editor;
-};
-
-class DGEditor : public AEffEditor {
-public:
-  DGEditor(AudioEffect* effect);
-
-  bool open(void* ptr);
-  void close();
-  bool isOpen();
-	void idle();
-
-private:
-  DrumGizmoVst* dgeff;
-  PluginGUI *plugingui;
-  DrumGizmo *drumgizmo;
-};
-
-#endif/*__DRUMGIZMO_DRUMGIZMO_VST_H__*/
diff --git a/vst/input_vst.cc b/vst/input_vst.cc
deleted file mode 100644
index 53de387..0000000
--- a/vst/input_vst.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            input_vst.cc
- *
- *  Tue Sep 20 10:40:10 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "input_vst.h"
-
-#include <midimapparser.h>
-#include <hugin.hpp>
-
-InputVST::InputVST()
-{
-  list = NULL;
-  listsize = 0;
-}
-
-InputVST::~InputVST()
-{
-}
-
-bool InputVST::init(Instruments &i)
-{
-  DEBUG(inputvst, "init\n");
-  instruments = &i;
-  return true;
-}
-
-void InputVST::setParm(std::string parm, std::string value)
-{
-}
-
-bool InputVST::start()
-{
-  return true;
-}
-
-void InputVST::stop()
-{
-}
-
-void InputVST::pre()
-{
-}
-
-event_t *InputVST::run(size_t pos, size_t len, size_t *nevents)
-{
-  *nevents = listsize;
-  return list;
-}
-
-void InputVST::post()
-{
-  list = NULL;
-  listsize = 0;
-}
-
-void InputVST::processEvents(VstEvents* ev)
-{
-  if(list == NULL) {
-    list = (event_t *)malloc(sizeof(event_t) * 1000);
-    //    listsize = 0;
-  }
-
-	for(VstInt32 i = 0; i < ev->numEvents; i++)	{
-		if(ev->events[i]->type != kVstMidiType)	continue;
-
-		VstMidiEvent* event =(VstMidiEvent*)ev->events[i];
-		char* midiData = event->midiData;
-		VstInt32 status = midiData[0] & 0xf0; // ignoring channel
-		if(status == 0x90) { // we only look at notes
-			VstInt32 note = midiData[1] & 0x7f;
-			VstInt32 velocity = midiData[2] & 0x7f;
-
-      int i = mmap.lookup(note);
-      DEBUG(inputvst, "Note: %d -> %d\n", note, i);
-      if(velocity && i != -1) {
-        list[listsize].type = TYPE_ONSET;
-        list[listsize].instrument = i;
-        list[listsize].velocity = velocity / 127.0;
-        list[listsize].offset = event->deltaFrames;
-        listsize++;
-      }
-
-		}
-		event++;
-	}
-}
diff --git a/vst/input_vst.h b/vst/input_vst.h
deleted file mode 100644
index 612add6..0000000
--- a/vst/input_vst.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            input_vst.h
- *
- *  Tue Sep 20 10:40:10 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_INPUT_VST_H__
-#define __DRUMGIZMO_INPUT_VST_H__
-
-#include <audioinputenginemidi.h>
-
-#include <public.sdk/source/vst2.x/audioeffectx.h>
-
-class InputVST : public AudioInputEngineMidi {
-public:
-  InputVST();
-  virtual ~InputVST();
-
-  bool init(Instruments &instruments);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre();
-  event_t *run(size_t pos, size_t len, size_t *nevents);
-  void post();
-
-  void processEvents(VstEvents* ev);
-
-private:
-  event_t *list;
-  size_t listsize;
-
-  Instruments *instruments;
-};
-
-#endif/*__DRUMGIZMO_INPUT_VST_H__*/
diff --git a/vst/output_vst.cc b/vst/output_vst.cc
deleted file mode 100644
index 5202ce7..0000000
--- a/vst/output_vst.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            output_vst.cc
- *
- *  Tue Sep 20 10:40:14 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#include "output_vst.h"
-
-#include <string.h>
-
-#include "constants.h"
-
-OutputVST::OutputVST()
-{
-  outputs = NULL;
-}
-
-OutputVST::~OutputVST()
-{
-}
-
-bool OutputVST::init(Channels channels)
-{
-  return true;
-}
-
-void OutputVST::setParm(std::string parm, std::string value)
-{
-}
-
-bool OutputVST::start()
-{
-  return true;
-}
-
-void OutputVST::stop()
-{
-}
-
-void OutputVST::pre(size_t nsamples)
-{
-  if(!outputs) return;
-
-  for(size_t ch = 0; ch < NUM_OUTPUTS; ch++) {
-    memset(outputs[ch], 0, nsamples * sizeof(sample_t));
-  }
-}
-
-void OutputVST::run(int ch, sample_t *samples, size_t nsamples)
-{
-  if(!outputs) return;
-
-  if(ch < NUM_OUTPUTS) {
-    memcpy(outputs[ch], samples, nsamples * sizeof(sample_t));
-  }
-}
-
-void OutputVST::post(size_t nsamples)
-{
-  outputs = NULL;
-}
-
-void OutputVST::setOutputs(float **outputs)
-{
-  this->outputs = outputs;
-}
diff --git a/vst/output_vst.h b/vst/output_vst.h
deleted file mode 100644
index fb98ad3..0000000
--- a/vst/output_vst.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- *            output_vst.h
- *
- *  Tue Sep 20 10:40:14 CEST 2011
- *  Copyright 2011 Bent Bisballe Nyeng
- *  deva at aasimon.org
- ****************************************************************************/
-
-/*
- *  This file is part of DrumGizmo.
- *
- *  DrumGizmo 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-#ifndef __DRUMGIZMO_OUTPUT_VST_H__
-#define __DRUMGIZMO_OUTPUT_VST_H__
-
-#include <audiooutputengine.h>
-
-class OutputVST : public AudioOutputEngine {
-public:
-  OutputVST();
-  ~OutputVST();
-
-  bool init(Channels channels);
-
-  void setParm(std::string parm, std::string value);
-
-  bool start();
-  void stop();
-
-  void pre(size_t nsamples);
-  void run(int ch, sample_t *samples, size_t nsamples);
-  void post(size_t nsamples);
-
-  void setOutputs(float **outputs);
-
-private:
-  sample_t **outputs;
-};
-
-#endif/*__DRUMGIZMO_OUTPUT_VST_H__*/

-- 
drumgizmo packaging



More information about the pkg-multimedia-commits mailing list