From 8a2c2824a59d7644e13bc52c9a0ecbd641f21f95 Mon Sep 17 00:00:00 2001
From: Robert Jonsson <spamatica@gmail.com>
Date: Wed, 13 Oct 2010 19:34:22 +0000
Subject: new branch muse2, first checkin

---
 muse2/synti/vam/COPYING       |  340 +++++++
 muse2/synti/vam/ChangeLog     |   16 +
 muse2/synti/vam/Makefile.am   |   18 +
 muse2/synti/vam/Makefile.in   |  659 +++++++++++++
 muse2/synti/vam/README        |   42 +
 muse2/synti/vam/TODO          |    3 +
 muse2/synti/vam/vam.cpp       | 1050 +++++++++++++++++++++
 muse2/synti/vam/vam.h         |   38 +
 muse2/synti/vam/vamgui.cpp    |  720 +++++++++++++++
 muse2/synti/vam/vamgui.h      |   82 ++
 muse2/synti/vam/vamguibase.ui | 2032 +++++++++++++++++++++++++++++++++++++++++
 11 files changed, 5000 insertions(+)
 create mode 100644 muse2/synti/vam/COPYING
 create mode 100644 muse2/synti/vam/ChangeLog
 create mode 100644 muse2/synti/vam/Makefile.am
 create mode 100644 muse2/synti/vam/Makefile.in
 create mode 100644 muse2/synti/vam/README
 create mode 100644 muse2/synti/vam/TODO
 create mode 100644 muse2/synti/vam/vam.cpp
 create mode 100644 muse2/synti/vam/vam.h
 create mode 100644 muse2/synti/vam/vamgui.cpp
 create mode 100644 muse2/synti/vam/vamgui.h
 create mode 100644 muse2/synti/vam/vamguibase.ui

(limited to 'muse2/synti/vam')

diff --git a/muse2/synti/vam/COPYING b/muse2/synti/vam/COPYING
new file mode 100644
index 00000000..dc63aaca
--- /dev/null
+++ b/muse2/synti/vam/COPYING
@@ -0,0 +1,340 @@
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  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.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+		     END OF TERMS AND CONDITIONS
+
+	Appendix: 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
+convey 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) 19yy  <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 2 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, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This 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 Library General
+Public License instead of this License.
diff --git a/muse2/synti/vam/ChangeLog b/muse2/synti/vam/ChangeLog
new file mode 100644
index 00000000..1a7e4258
--- /dev/null
+++ b/muse2/synti/vam/ChangeLog
@@ -0,0 +1,16 @@
+
+VAM-1.0beta2b (4/02 - 2002)
+    * Fix to prevent clicks on new notes
+    * Gui improvements (Thanks Werner and Bob)
+
+VAM-1.0beta2 (24/01 - 2002)
+    * Fix to make presets save and load correctly
+    * DSP improvements
+    * PW & PWM
+    * Some basic presets
+    * Small fixes
+    * Filter keytracking
+    * Load only preset meant for vam
+
+VAM-1.0beta1 (21/01 - 2002):
+    First release.
\ No newline at end of file
diff --git a/muse2/synti/vam/Makefile.am b/muse2/synti/vam/Makefile.am
new file mode 100644
index 00000000..1059c67e
--- /dev/null
+++ b/muse2/synti/vam/Makefile.am
@@ -0,0 +1,18 @@
+include $(top_srcdir)/common.am
+include $(top_srcdir)/synti/synti-install.am
+
+AM_CXXFLAGS += -O3 -ffast-math -fno-exceptions
+
+synthi_LTLIBRARIES = vam.la
+
+vam_la_SOURCES     = vam.cpp vam.h vamgui.cpp vamgui.h \
+	               vamguibase.ui \
+	               $(top_srcdir)/muse/xml.cpp
+
+nodist_vam_la_SOURCES = moc_vamgui.cpp
+
+vam_la_LIBADD  = ../libsynti/libsynti.la
+vam_la_LDFLAGS = -module -avoid-version
+
+EXTRA_DIST = README TODO ChangeLog
+
diff --git a/muse2/synti/vam/Makefile.in b/muse2/synti/vam/Makefile.in
new file mode 100644
index 00000000..ba0d610a
--- /dev/null
+++ b/muse2/synti/vam/Makefile.in
@@ -0,0 +1,659 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+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 = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/common.am $(top_srcdir)/synti/synti-install.am \
+	COPYING ChangeLog TODO
+subdir = synti/vam
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
+	$(top_srcdir)/m4/alsa.m4 $(top_srcdir)/m4/docbook.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(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__installdirs = "$(DESTDIR)$(synthidir)"
+LTLIBRARIES = $(synthi_LTLIBRARIES)
+vam_la_DEPENDENCIES = ../libsynti/libsynti.la
+am_vam_la_OBJECTS = vam.lo vamgui.lo vamguibase.lo xml.lo
+nodist_vam_la_OBJECTS = moc_vamgui.lo
+vam_la_OBJECTS = $(am_vam_la_OBJECTS) $(nodist_vam_la_OBJECTS)
+vam_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+	$(vam_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@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) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+SOURCES = $(vam_la_SOURCES) $(nodist_vam_la_SOURCES)
+DIST_SOURCES = $(vam_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCBOOKSTYLE = @DOCBOOKSTYLE@
+DOCBOOKTARGETS = @DOCBOOKTARGETS@
+DOT = @DOT@
+DOTPATH = @DOTPATH@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_TREEVIEW = @DOXYGEN_TREEVIEW@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLUIDSYNTHDIRS = @FLUIDSYNTHDIRS@
+FST_CFLAGS = @FST_CFLAGS@
+FST_LIBS = @FST_LIBS@
+Fluidsynth_CFLAGS = @Fluidsynth_CFLAGS@
+Fluidsynth_LIBS = @Fluidsynth_LIBS@
+GIVERTCAP = @GIVERTCAP@
+GREP = @GREP@
+HAVEDOT = @HAVEDOT@
+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@
+JADE = @JADE@
+LASH_CFLAGS = @LASH_CFLAGS@
+LASH_LIBS = @LASH_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LO_CFLAGS = @LO_CFLAGS@
+LO_LIBS = @LO_LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MUSECXXFLAGS = @MUSECXXFLAGS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NSGMLS = @NSGMLS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+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@
+PCH = @PCH@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIB = @PYTHON_LIB@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+QTDIR_BIN = @QTDIR_BIN@
+QTDIR_INC = @QTDIR_INC@
+QT_LIBS = @QT_LIBS@
+RANLIB = @RANLIB@
+SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
+SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+SUIDBUILD = @SUIDBUILD@
+SUIDINSTALL = @SUIDINSTALL@
+USE_SSE = @USE_SSE@
+UUID_CFLAGS = @UUID_CFLAGS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+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@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+have_docbook = @have_docbook@
+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@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+synth_fluid = @synth_fluid@
+synth_fluidsynth = @synth_fluidsynth@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CXXFLAGS = $(MUSECXXFLAGS) -I.. -I$(top_srcdir)/synti \
+	-I$(top_srcdir)/muse/widgets -DQT_SHARED -DQT_THREAD_SUPPORT \
+	-DQT_PLUGIN $(QTDIR_INC) -DQT3_SUPPORT -O3 -ffast-math \
+	-fno-exceptions
+AM_CPPFLAGS = 
+MOC = $(QTDIR_BIN)/moc
+#UIC = $(QTDIR_BIN)/uic3
+UIC = /usr/bin/uic3
+UIFILES = $(wildcard *.ui)
+MOCFILES = $(shell for h in $(filter %.h,$(SOURCES)); do \
+		     if grep -q Q_OBJECT $$h; then \
+		       echo $$h | sed "s/\(.*\)\.h/moc_\1.cpp/"; \
+		     fi; \
+		   done)
+
+BUILT_SOURCES = $(MOCFILES) $(UIFILES:%.ui=%.h)
+MOSTLYCLEANFILES = $(MOCFILES) $(UIFILES:%.ui=%.h)
+SUFFIXES = .ui .h.gch
+synthidir = $(pkglibdir)/synthi
+synthi_LTLIBRARIES = vam.la
+vam_la_SOURCES = vam.cpp vam.h vamgui.cpp vamgui.h \
+	               vamguibase.ui \
+	               $(top_srcdir)/muse/xml.cpp
+
+nodist_vam_la_SOURCES = moc_vamgui.cpp
+vam_la_LIBADD = ../libsynti/libsynti.la
+vam_la_LDFLAGS = -module -avoid-version
+EXTRA_DIST = README TODO ChangeLog
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .ui .h.gch .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/common.am $(top_srcdir)/synti/synti-install.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 synti/vam/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu synti/vam/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-synthiLTLIBRARIES: $(synthi_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(synthidir)" || $(MKDIR_P) "$(DESTDIR)$(synthidir)"
+	@list='$(synthi_LTLIBRARIES)'; test -n "$(synthidir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(synthidir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(synthidir)"; \
+	}
+
+uninstall-synthiLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(synthi_LTLIBRARIES)'; test -n "$(synthidir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(synthidir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(synthidir)/$$f"; \
+	done
+
+clean-synthiLTLIBRARIES:
+	-test -z "$(synthi_LTLIBRARIES)" || rm -f $(synthi_LTLIBRARIES)
+	@list='$(synthi_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+vam.la: $(vam_la_OBJECTS) $(vam_la_DEPENDENCIES) 
+	$(vam_la_LINK) -rpath $(synthidir) $(vam_la_OBJECTS) $(vam_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moc_vamgui.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vam.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vamgui.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml.Plo@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+xml.lo: $(top_srcdir)/muse/xml.cpp
+@am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xml.lo -MD -MP -MF $(DEPDIR)/xml.Tpo -c -o xml.lo `test -f '$(top_srcdir)/muse/xml.cpp' || echo '$(srcdir)/'`$(top_srcdir)/muse/xml.cpp
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/xml.Tpo $(DEPDIR)/xml.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(top_srcdir)/muse/xml.cpp' object='xml.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xml.lo `test -f '$(top_srcdir)/muse/xml.cpp' || echo '$(srcdir)/'`$(top_srcdir)/muse/xml.cpp
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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"
+
+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: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(synthidir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+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."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-synthiLTLIBRARIES \
+	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-synthiLTLIBRARIES
+
+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-synthiLTLIBRARIES
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-synthiLTLIBRARIES ctags 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-ps install-ps-am \
+	install-strip install-synthiLTLIBRARIES installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-synthiLTLIBRARIES
+
+
+de:
+	@for base in $(MOCFILES); do echo -e "\t$${base}.cpp $${base}.h \\"; done
+
+nde:
+	@for base in $(MOCFILES); do echo -e "\tmoc_$${base}.cpp \\"; done
+
+.ui.o: %.h
+	$(UIC) -L $(top_srcdir)/muse/widgets -o $*.cpp -impl $*.h $*.ui
+	$(MOC) $*.h >> $*.cpp
+	$(CXXCOMPILE) -c $*.cpp -o $*.o
+	$(RM) $*.cpp moc_$*.cpp moc_$*.o
+
+.ui.lo: %.h
+	$(UIC) -L $(top_srcdir)/muse/widgets -o $*.cpp -impl $*.h $*.ui
+	$(MOC) $*.h >> $*.cpp
+	$(LTCXXCOMPILE) -c $*.cpp -o $*.lo
+	$(RM) $*.cpp moc_$*.cpp moc_$*.lo moc_$*.o
+
+moc_%.cpp: %.h
+	$(MOC) $< -o $@
+
+%.h: %.ui
+	$(UIC)  -o $@ $<
+#	$(UIC) -L $(top_srcdir)/muse/widgets -o $@ $<
+
+# 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/muse2/synti/vam/README b/muse2/synti/vam/README
new file mode 100644
index 00000000..1b1ee269
--- /dev/null
+++ b/muse2/synti/vam/README
@@ -0,0 +1,42 @@
+VAM: Virtual Analog for MusE
+
+    by Josef Lindman H�rnlund
+
+
+*** WARNING! VAM has at the time some significant problems
+*** (esp. with the filter). Some parameters should not have
+*** high values ( like the filter resonance, the filter
+*** env mod or dco sustain )
+
+* What's VAM??
+
+    VAM is a soft synth for MusE (http://muse.seh.de) emulating
+    an old monophonic two oscillator analog synthesizer. It has
+    a simple interface and a quite fast synthesis engine.
+
+* Installation
+    MusE version >= 0.5.0 required (I think)
+    ( and everything that MusE requires, like Qt3 )
+
+    Unpack VAM in $MUSESOURCEDIR/synthi and run from vam/ make;
+    make install. VAM won't compile automaticly if you run make 
+    from $MUSESOURCEDIR.
+    $MUSESOURCEDIR is the directory you have the MusE source.
+    For optimizing add -march=(your arch) to the compiler arguments
+    in Makefile.
+
+* Using VAM:
+
+    To have fun with VAM MusE really should be started with -R.
+    Otherwise VAM will produce mostly noise, like clicks.
+    If you're familiar with analog or virtual analog synthesizers
+    using VAM souldn't be a problem.
+
+    If you add some cool LADSPA plugins like delay or chorus to VAM's
+    output, you'll get _much_ better sounds, playing without effects
+    is like eating beef without sauce.
+
+* Contact:
+
+    Please mail me at jotsif@linux.nu if you're having any
+    problems, suggestions, bugs, ideas or other comments.
diff --git a/muse2/synti/vam/TODO b/muse2/synti/vam/TODO
new file mode 100644
index 00000000..370bb521
--- /dev/null
+++ b/muse2/synti/vam/TODO
@@ -0,0 +1,3 @@
+
+1. Make bandlimited wavetables!!
+2. Split VAM into a polyphonic and a monophonic synth
\ No newline at end of file
diff --git a/muse2/synti/vam/vam.cpp b/muse2/synti/vam/vam.cpp
new file mode 100644
index 00000000..95b80c13
--- /dev/null
+++ b/muse2/synti/vam/vam.cpp
@@ -0,0 +1,1050 @@
+//=========================================================
+//  MusE
+//  Linux Music Editor
+//
+//  Parts of this file taken from:
+//      The analogue oscillator from Steve Harris plugin collection.
+//      Werner Schweer's organ softsynth for MusE.
+//	The music-dsp source archive.
+//
+//  (C) Copyright 2002 Jotsif Lindman H�nlund (jotsif@linux.nu)
+//  (C) Copyright 2005 Robert Jonsson (rj@spamatica.se)
+//
+// 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 2
+// 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, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA or point your web browser to http://www.gnu.org.
+//=========================================================
+
+#include <assert.h>
+#include <cmath>
+#include <stdio.h>
+#include <list>
+
+#include "libsynti/mess.h"
+#include "muse/midi.h"
+#include "muse/midictrl.h"
+
+#include "vam.h"
+#include "vamgui.h"
+#include "libsynti/mono.h"
+
+// Denormalise floats, only actually needed for PIII and very recent PowerPC
+#define DENORMALISE(fv) (((*(unsigned int*)&(fv))&0x7f800000)==0)?0.0f:(fv)
+
+// A fast, truncating towards 0 modulo function. ANSI C doesn't define
+// which % will do, most truncate towards -inf
+#define MOD(v,m) (v<0?v+m:(v>m?v-m:v))
+
+// Limit values
+#define LIMIT(v,l,u) (v<l?l:(v>u?u:v))
+
+#define PI M_PI
+
+//---------------------------------------------------------
+//   Oscillator
+//---------------------------------------------------------
+
+struct Oscillator {
+float phase;
+float pitchmod;
+float detune;
+float freq;
+float pwm;
+float pw;
+float fm;
+int waveform;
+bool on;
+};
+
+struct LPFilter {
+float out[4];
+float in[4];
+};
+
+//---------------------------------------------------------
+//   Envelope
+//---------------------------------------------------------
+
+struct EnvelopeGenerator {
+static const int onStates = 2;
+static const int offStates = 1;
+
+struct Segment {
+		int ticks;
+		double incr;
+};
+Segment segment[onStates + offStates];
+
+int state;
+double env;
+int tick;
+
+int attack;
+int decay;
+float sustain;
+int release;
+
+EnvelopeGenerator() {
+		segment[0].ticks = 441;
+		segment[0].incr = 1.0/441.0;
+		segment[1].ticks = 0;
+		segment[1].incr = 0.0;
+		segment[2].ticks = 441;
+		segment[2].incr = -(1.0/441.0);
+}
+
+void setSegment(int seg, int ticks, double incr) {
+		segment[seg].ticks = ticks;
+		segment[seg].incr = incr;
+}
+  
+void keyOn() {
+//		env = 0.0;
+		state = 0;
+		if(env) segment[state].incr = (1.0 - env) / segment[state].ticks;
+		else env = 0.0;
+		tick = segment[state].ticks;
+}
+void keyOff() {
+		state = onStates;
+		tick = segment[state].ticks;
+}
+bool isOff() {
+		return state == (onStates+offStates);
+}
+bool step() {
+		if(state >= onStates+offStates)
+		return false;
+		if (tick == 0)
+		return true;
+		env +=segment[state].incr;
+		if(env < 0.0)
+		    env = 0.0;
+		--tick;
+		while(tick == 0) {
+		++state;
+		if(state >= onStates+offStates)
+				return false;
+		if(state == onStates)
+				return true;
+		tick = segment[state].ticks;
+		}
+		return true;
+}
+};
+
+//---------------------------------------------------------
+//   VAM
+//---------------------------------------------------------
+
+class VAM : public MessMono {
+      static int useCount;
+      static const int CB_AMP_SIZE = 961;
+      static const int LIN2EXP_SIZE = 256;
+
+      static double cb2amp_tab[CB_AMP_SIZE];
+      static double cb2amp(double cb);
+
+      static float lin2exp[LIN2EXP_SIZE];
+
+            /*	Synthvariables */
+      static float *sin_tbl, *tri_tbl, *saw_tbl, *squ_tbl;
+      bool isOn;
+      int pitch, channel;
+      float velocity;
+
+      //int idata[NUM_CONTROLLER];  // buffer for init data
+      int *idata;
+
+      EnvelopeGenerator dco1_env;
+      EnvelopeGenerator dco2_env;
+      EnvelopeGenerator filt_env;
+
+      LPFilter dco1_filter;
+      LPFilter dco2_filter;
+
+      Oscillator dco1;
+      Oscillator dco2;
+      Oscillator lfo;
+
+      bool filt_invert, filt_keytrack;
+      double filt_env_mod, filt_res, filt_cutoff, keytrack_cutoff;
+
+      int controller[NUM_CONTROLLER];
+      void noteoff(int channel, int pitch);
+      void setController(int ctrl, int data);
+      float *wave_tbl(int wave);
+      double lowpass_filter(double cutoff, double resonance, double input, LPFilter *f);
+
+
+      VAMGui* gui;
+
+    public:
+      virtual int getControllerInfo(int, const char**, int*, int*, int*, int*) const;
+      virtual void getInitData(int* n, const unsigned char**p) const;
+      virtual bool guiVisible() const;
+      virtual void showGui(bool);
+      virtual bool hasGui() const { return true; }
+      virtual void getGeometry(int* x, int* y, int* w, int* h) const;
+      virtual void setGeometry(int x, int y, int w, int h);
+      virtual void processMessages();
+      virtual void process(float**, int, int);
+      virtual void note(int channel, int pitch, int velo);
+      virtual bool setController(int channel, int ctrl, int val);
+      virtual bool sysex(int, const unsigned char*);
+      VAM(int sr);
+      ~VAM();
+      bool init(const char* name);
+};
+
+float* VAM::sin_tbl;
+float* VAM::tri_tbl;
+float* VAM::saw_tbl;
+float* VAM::squ_tbl;
+int VAM::useCount = 0;
+double VAM::cb2amp_tab[VAM::CB_AMP_SIZE];
+float VAM::lin2exp[VAM::LIN2EXP_SIZE];
+
+
+//---------------------------------------------------------
+//   VAM
+//---------------------------------------------------------
+
+VAM::VAM(int sr)
+  : MessMono()
+      {
+      idata = new int[NUM_CONTROLLER];
+      setSampleRate(sr);
+      gui = 0;
+      }
+
+//---------------------------------------------------------
+//   ~VAM
+//---------------------------------------------------------
+
+VAM::~VAM()
+      {
+      --useCount;
+      if (useCount == 0) {
+          delete[] sin_tbl;
+          delete[] tri_tbl;
+          delete[] saw_tbl;
+          delete[] squ_tbl;
+          }
+      }
+
+//---------------------------------------------------------
+//   curTime
+//---------------------------------------------------------
+
+double VAM::cb2amp(double cb)
+      {
+      if(cb < 0.0)
+          return 1.0;
+      if(cb > 960.0)
+          return 0.0;
+      return cb2amp_tab[int(cb)];
+      }
+
+double VAM::lowpass_filter(double cutoff, double resonance, double input, LPFilter *f)
+      {
+      double output;
+      cutoff *= 1.16;
+
+      input -= f->out[3] * (resonance * 4.0) * (1.0 - 0.15 * cutoff * cutoff);
+      input *= 0.35013 * cutoff * cutoff * cutoff * cutoff;
+
+      f->out[0] = input + 0.3 * f->in[0] + (1.0 - cutoff) * f->out[0]; // Pole 1
+      f->in[0]  = input;
+      f->out[1] = f->out[0] + 0.3 * f->in[1] + (1.0 - cutoff) * f->out[1];  // Pole 2
+      f->in[1]  = f->out[0];
+      f->out[2] = f->out[1] + 0.3 * f->in[2] + (1.0 - cutoff) * f->out[2];  // Pole 3
+      f->in[2]  = f->out[1];
+      f->out[3] = f->out[2] + 0.3 * f->in[3] + (1.0 - cutoff) * f->out[3];  // Pole 4
+      f->in[3]  = f->out[2];
+
+      //	if(f.out[3] > 1.0) f.out[3] = 1.0;
+
+      output = f->out[3];
+
+
+      return output;
+      }
+
+float *VAM::wave_tbl(int wave)
+      {
+              if (wave == 0) {
+                      return sin_tbl;
+              }
+      else if (wave == 1) {
+                      return squ_tbl;
+      }
+      else if (wave == 2) {
+          return saw_tbl;
+      }
+      else if (wave == 3) {
+          return tri_tbl;
+      }
+      return sin_tbl;
+      }
+
+//---------------------------------------------------------
+//   init
+//---------------------------------------------------------
+
+bool VAM::init(const char* name)
+      {
+      gui = new VAMGui;
+      gui->setCaption(QString(name));
+      gui->show();
+
+      if (useCount == 0) {
+          int i;
+          float tmp;
+          for(i = 0; i < CB_AMP_SIZE; i++) {
+              cb2amp_tab[i] = pow(10.0, double(i) / -300.0);
+              //cb2amp_tab[i] = 1.0 - i/(float)CB_AMP_SIZE;
+              }
+          for(i = 0; i < LIN2EXP_SIZE; i++) {
+              tmp = i/255.0;
+              lin2exp[i] = 1.5 * tmp * tmp * tmp - 0.69 * tmp * tmp + 0.16 * tmp;
+              }
+          int sr = sampleRate();
+          /* Build up denormalised oscilator wavetables, these are sample_rate
+             long, costs more RAM to create them but makes freqency calcs much
+             cheaper, and means that interpolation isn't that neccesary, esp if
+             you use integer frequncies */
+          
+          float *tmp_tbl = new float[sr];
+          const int lag = sr/50;
+          sin_tbl = new float[sr];
+          for (i = 0; i < sr; i++) {
+                tmp = sin(i * 2.0 * PI / sr);
+                sin_tbl[i] = DENORMALISE(tmp);
+                }
+          tri_tbl = new float[sr];
+          for (i = 0; i < sr; i++) {
+                tmp = acos(cos(i * 2.0 * PI / sr)) / PI * 2.0 - 1.0;
+                tri_tbl[i] = DENORMALISE(tmp);
+                }
+          squ_tbl = new float[sr];
+          for (i = 0; i < sr/2; i++) {
+                tmp_tbl[i] = -1.0f;
+                }
+          for (i = sr/2; i < sr; i++) {
+                tmp_tbl[i] = +1.0f;
+                }
+          tmp = -1.0f;
+          for (i = (sr/2)-lag; i < (sr/2)+lag; i++) {
+                tmp_tbl[i] = tmp;
+                tmp += 1.0/(lag * 2.0);
+                }
+          for (i = 0; i < sr; i++) {
+                squ_tbl[i] = (tmp_tbl[MOD(i-lag, sr)] +
+                tmp_tbl[MOD(i+lag, sr)]) * 0.5;
+                }
+          saw_tbl = new float[sr];
+          for (i = 0; i < sr; i++) {
+                tmp = ((2.0 * i) - (float)sr) / (float)sr;
+                tmp_tbl[i] = DENORMALISE(tmp);
+                }
+          for (i = 0; i < sr; i++) {
+                saw_tbl[i] = (tmp_tbl[MOD(i-lag, sr)] +
+                tmp_tbl[MOD(i+lag, sr)]) * 0.5;
+                }
+          delete[] tmp_tbl;
+          }
+      
+      dco1_filter.out[0] = dco1_filter.out[1] = dco1_filter.out[2] = dco1_filter.out[3] = 0.0;
+      dco1_filter.in[0]  = dco1_filter.in[1] = dco1_filter.in[2] = dco1_filter.in[3] = 0.0;
+      dco2_filter.out[0] = dco2_filter.out[1] = dco2_filter.out[2] = dco2_filter.out[3] = 0.0;
+      dco2_filter.in[0]  = dco2_filter.in[1] = dco2_filter.in[2] = dco2_filter.in[3] = 0.0;
+      
+      ++useCount;
+      dco1.phase = 0.0;
+      dco2.phase = 0.0;
+      lfo.phase = 0.0;
+      
+      memset(controller, 0, sizeof(controller));
+      
+      int maxval = 128*128-1;
+      
+      setController(0, DCO1_PITCHMOD, 8191);
+      setController(0, DCO2_PITCHMOD, 8191);
+      setController(0, DCO1_WAVEFORM, 1);
+      setController(0, DCO2_WAVEFORM, 1);
+      setController(0, DCO1_FM, 0);
+      setController(0, DCO2_FM, 0);
+      setController(0, DCO1_PWM, 0);
+      setController(0, DCO2_PWM, 0);
+      setController(0, DCO1_ATTACK, 0);
+      setController(0, DCO2_ATTACK, 0);
+      setController(0, DCO1_DECAY, 0);
+      setController(0, DCO2_DECAY, 0);
+      setController(0, DCO1_SUSTAIN, maxval - 255);
+      setController(0, DCO2_SUSTAIN, maxval - 255);
+      setController(0, DCO1_RELEASE, 0);
+      setController(0, DCO2_RELEASE, 0);
+      setController(0, LFO_FREQ, 0);
+      setController(0, LFO_WAVEFORM, 0);
+      setController(0, FILT_ENV_MOD, 0);
+      setController(0, FILT_KEYTRACK, 0);
+      setController(0, FILT_RES, 0);
+      setController(0, FILT_ATTACK, 0);
+      setController(0, FILT_DECAY, 0);
+      setController(0, FILT_SUSTAIN, maxval);
+      setController(0, FILT_RELEASE, 3);
+      setController(0, DCO2ON, 0);
+      setController(0, FILT_INVERT, 0);
+      setController(0, FILT_CUTOFF, 15000);
+      setController(0, DCO1_DETUNE, 8191);
+      setController(0, DCO2_DETUNE, 8191);
+      setController(0, DCO1_PW, 0);
+      setController(0, DCO2_PW, 0);
+      
+      isOn = false;
+      return false;
+      }
+
+//---------------------------------------------------------
+//   processMessages
+//   Called from host always, even if output path is unconnected.
+//---------------------------------------------------------
+
+void VAM::processMessages()
+{
+  //Process messages from the gui
+  //
+  //  get and process all pending events from the
+  //  synthesizer GUI
+  //
+  while (gui->fifoSize()) 
+  {
+    MidiPlayEvent ev = gui->readEvent();
+    if (ev.type() == ME_CONTROLLER) 
+    {
+      // process local?
+      setController(ev.dataA() & 0xfff, ev.dataB());
+      sendEvent(ev);
+    }
+    else
+      printf("VAM::process(): unknown event\n");
+  }
+}
+  
+//---------------------------------------------------------
+//   process
+//   Called from host, ONLY if output path is connected.
+//---------------------------------------------------------
+
+void VAM::process(float** ports, int offset, int sampleCount)
+      {
+      /*
+      //
+      //  get and process all pending events from the
+      //  synthesizer GUI
+      //
+      while (gui->fifoSize()) {
+            MidiPlayEvent ev = gui->readEvent();
+            if (ev.type() == ME_CONTROLLER) {
+                  // process local?
+                  setController(ev.dataA() & 0xfff, ev.dataB());
+                  sendEvent(ev);
+                  }
+            else
+                  printf("VAM::process(): unknown event\n");
+            }
+      */
+            
+      float* buffer = *ports + offset;
+      if (!isOn)
+            return;
+
+      float sample, osc, lfol, *dco1_tbl, *dco2_tbl, *lfo_tbl, pw;
+      float cutoff;
+      int sr = sampleRate();
+      
+      dco1_tbl = wave_tbl(dco1.waveform);
+      dco2_tbl = wave_tbl(dco2.waveform);
+      lfo_tbl = wave_tbl(lfo.waveform);
+      
+      cutoff = filt_keytrack ? (dco1.freq /500.0 + filt_cutoff)/2 : filt_cutoff;
+      cutoff = LIMIT(cutoff, 0.0, 1.0);
+      
+      for (int i = 0; i < sampleCount; i++) {
+            if(!(dco1_env.step() + dco2_env.step())) {
+                  isOn = false;
+                  break;
+                  }
+            filt_env.step();
+
+            /* DCO 1 */
+            lfol = lfo_tbl[(int)lfo.phase];
+            pw = dco1.pw + dco1.pwm * lfol * 0.5;
+            pw = LIMIT(pw, 0.0, 1.0);
+            if(dco1.phase < sr/2 * ( 1.0 - pw))
+                  osc = dco1_tbl[int(dco1.phase / (1.0 - pw))];
+            else
+                  osc = dco1_tbl[int(dco1.phase / (1.0 + pw))];
+            lfol = lfo_tbl[(int)lfo.phase];
+            dco1.phase += dco1.freq + dco1.fm * lfol * 1500.0;
+            lfo.phase += lfo.freq * 50.0;
+            if(!filt_invert)
+                  sample = lowpass_filter((cb2amp(960.0 * (1.0 - filt_env_mod * filt_env.env))
+                        + 1.0 - filt_env_mod) * cutoff,
+                        filt_res, osc, &dco1_filter) * cb2amp(960.0 * (1.0 - dco1_env.env));
+            else 
+                  sample = lowpass_filter((cb2amp(960.0 * (1.0 - filt_env_mod * (1.0 - filt_env.env)))
+                        + 1.0 - filt_env_mod) * cutoff,
+                        filt_res, osc, &dco1_filter) * cb2amp(960.0 * (1.0 - dco1_env.env));
+            while(dco1.phase > sr) 
+                  dco1.phase -= sr;
+            while(dco1.phase < 0.0) 
+                  dco1.phase += sr;
+      
+            /* DCO 2 */
+            if(dco2.on) {
+                  pw = dco2.pw + dco2.pwm * lfol * 0.5;
+                  pw = LIMIT(pw, 0.0, 1.0);
+                  if(dco2.phase < sr/2 * (1 - pw))
+                      osc = dco2_tbl[int(dco2.phase / (1.0 - pw))];
+                  else
+                      osc = dco2_tbl[int(dco2.phase / (1.0 + pw))];
+                  dco2.phase += dco2.freq + dco2.fm * lfol * 1500.0;
+                  if(!filt_invert)
+                  sample += lowpass_filter((cb2amp(960.0 * (1.0 - filt_env_mod * filt_env.env)) + 1.0 - filt_env_mod) * cutoff,
+                      filt_res, osc, &dco2_filter) * cb2amp(960.0 * (1.0 - dco2_env.env));
+                  else sample += lowpass_filter((cb2amp(960.0 * (1.0 - filt_env_mod * (1.0 - filt_env.env))) + 1.0 - filt_env_mod) 
+                      * cutoff, filt_res, osc, &dco2_filter) * cb2amp(960.0 * (1.0 - dco2_env.env));
+      
+                  while (dco2.phase > sr)  dco2.phase -= sr;
+                  while (dco2.phase < 0.0) dco2.phase += sr;
+                  }
+            while(lfo.phase > sr)
+                  lfo.phase -= sr;
+            while(lfo.phase < 0.0)
+                  lfo.phase += sr;
+            sample *= velocity * 0.5;
+            sample = LIMIT(sample, -1.0, 1.0);
+      
+            //if(sample > 1.0) fprintf(stderr, "oooops %f\n", sample);
+            buffer[i] = sample;
+            }
+      }
+
+//---------------------------------------------------------
+//   note
+//---------------------------------------------------------
+
+void VAM::note(int chan, int newpitch, int velo)
+      {
+      if (velo == 0) {
+          noteoff(chan, newpitch);
+          return;
+          }
+      isOn = true;
+      channel = chan;
+      pitch = newpitch;
+      velocity = velo / 127.0;
+      dco1.freq = 8.176 * exp(float(pitch + dco1.pitchmod + dco1.detune)*log(2.0)/12.0);
+      dco2.freq = 8.176 * exp(float(pitch + dco2.pitchmod + dco2.detune)*log(2.0)/12.0);
+      keytrack_cutoff = 16.0 * dco1.freq / sampleRate();
+      if(keytrack_cutoff > 1.0) keytrack_cutoff = 1.0;
+              dco1_env.setSegment(0, dco1_env.attack,    1.0/dco1_env.attack);
+              dco1_env.setSegment(1, dco1_env.decay, -((1.0-dco1_env.sustain)/dco1_env.decay));
+              dco2_env.setSegment(0, dco2_env.attack,    1.0/dco2_env.attack);
+              dco2_env.setSegment(1, dco2_env.decay, -((1.0-dco2_env.sustain)/dco2_env.decay));
+              filt_env.setSegment(0, filt_env.attack,    1.0/filt_env.attack);
+              filt_env.setSegment(1, filt_env.decay, -((1.0-filt_env.sustain)/filt_env.decay));
+      dco1_env.keyOn();
+      dco2_env.keyOn();
+      filt_env.env = 0.0;
+      filt_env.keyOn();
+      //	dco1.phase = 0.0;
+      //	dco2.phase = 0.0;
+      //	lfo.phase = 0.0;
+      }
+
+//---------------------------------------------------------
+//   noteoff
+//---------------------------------------------------------
+
+void VAM::noteoff(int chan, int offpitch)
+      {
+      if(isOn && (pitch == offpitch) && (channel == chan)) {
+            dco1_env.keyOff();
+            dco2_env.keyOff();
+            filt_env.keyOff();
+            }
+      }
+
+int VAM::getControllerInfo(int id, const char** name, int* controller,
+   int* min, int* max, int* initval) const
+      {
+      return gui->getControllerInfo(id, name, controller, min, max, initval);
+      }
+
+//---------------------------------------------------------
+//   setController
+//---------------------------------------------------------
+
+bool VAM::setController(int /*channel*/, int ctrl, int data)
+      {
+      setController(ctrl & 0xfff, data);
+      MidiPlayEvent ev(0, 0, channel, ME_CONTROLLER, ctrl, data);
+      gui->writeEvent(ev);
+      return false;
+      }
+
+void VAM::setController(int ctrl, int data)
+      {
+      //	fprintf(stderr, "ctrl: %d data: %d\n", ctrl, data);
+      int maxval = 128*128-1;
+      double normval = double(data) / double(maxval);
+      switch (ctrl) {
+          case DCO1_PITCHMOD:
+              dco1.pitchmod = (data  - 8191) / 341.333;
+              break;
+          case DCO1_WAVEFORM:
+              dco1.waveform = data;
+              break;
+          case DCO1_FM:
+              dco1.fm = lin2exp[int(normval * 255.0)];
+              break;
+          case DCO1_PWM:
+              dco1.pwm = normval;
+              break;
+          case DCO1_ATTACK:
+              dco1_env.attack = int(lin2exp[int(normval * 255.0)] * 5.0 * sampleRate()) + 1;
+              break;
+          case DCO1_DECAY:
+              dco1_env.decay = (data * sampleRate() * 5) / maxval + 1;
+              break;
+          case DCO1_SUSTAIN:
+              dco1_env.sustain = normval;
+              break;
+          case DCO1_RELEASE:
+              dco1_env.release = int(lin2exp[int(normval * 255.0)] * 10.0 * sampleRate()) + 1;
+              dco1_env.setSegment(2, dco1_env.release, -(1.0/dco1_env.release));
+              break;
+
+          case DCO2_PITCHMOD:
+              dco2.pitchmod = (data - 8191) / 341.333;
+              break;
+          case DCO2_WAVEFORM:
+              dco2.waveform = data;
+              break;
+          case DCO2_FM:
+              dco2.fm = normval;
+              break;
+          case DCO2_PWM:
+              dco2.pwm = normval;
+              break;
+          case DCO2_ATTACK:
+              dco2_env.attack = int(lin2exp[int(normval * 255.0)] * 5.0 * sampleRate()) + 1;
+              break;
+          case DCO2_DECAY:
+              dco2_env.decay = (data * sampleRate() * 5) / maxval + 1;
+              break;
+          case DCO2_SUSTAIN:
+              dco2_env.sustain = normval;
+              break;
+          case DCO2_RELEASE:
+              dco2_env.release = int(lin2exp[int(normval * 255.0)] * 10.0 * sampleRate()) + 1;
+              dco2_env.setSegment(2, dco2_env.release, -(1.0/dco2_env.release));
+              break;
+          case LFO_FREQ:
+              lfo.freq = lin2exp[int(normval * 255.0)];
+              //fprintf(stderr, "%f\n", lfo.freq);
+              break;
+          case LFO_WAVEFORM:
+              lfo.waveform = data;
+              break;
+          case FILT_ENV_MOD:
+              filt_env_mod = 1.0 - lin2exp[int(255.0 - normval * 255.0)];
+              break;
+          case FILT_KEYTRACK:
+              filt_keytrack = data;
+              break;
+          case FILT_RES:
+              filt_res = normval;
+              break;
+          case FILT_ATTACK:
+              //filt_env.attack = int(lin2exp[int(normval * 255.0)] * 5.0 * sampleRate());
+              filt_env.attack = int(lin2exp[int(normval * 255.0)] * 5.0 * sampleRate()) + 1;
+              break;
+          case FILT_DECAY:
+              filt_env.decay = (data * sampleRate() * 5) / maxval + 1;
+              break;
+          case FILT_SUSTAIN:
+              filt_env.sustain = normval;
+              break;
+          case FILT_RELEASE:
+              filt_env.release = int(lin2exp[int(normval * 255.0)] * 10.0 * sampleRate()) + 1;
+              filt_env.setSegment(2, filt_env.release, -(1.0/filt_env.release));
+              break;
+          case DCO2ON:
+              dco2.on = data;
+              break;
+          case FILT_INVERT:
+              filt_invert = data;
+              break;
+          case FILT_CUTOFF:
+              filt_cutoff = normval;
+              //fprintf(stderr, "%f\n", filt_cutoff);
+              break;
+          case DCO1_DETUNE:
+              dco1.detune = (data - 8191) / 16384.0;
+              break;
+          case DCO2_DETUNE:
+              dco2.detune = (data - 8191) / 16384.0;
+              break;
+          case DCO1_PW:
+              dco1.pw = normval;
+              if(dco1.pw == 1.0) 
+                  dco1.pw = 0.99;
+              break;
+          case DCO2_PW:
+              dco2.pw = normval;
+              if(dco2.pw == 1.0) dco2.pw = 0.99;
+              break;
+          default:
+              printf("VAM: set unknown Ctrl 0x%x to 0x%x\n", ctrl, data);
+              break;
+          }
+      controller[ctrl] = data;
+      }
+
+//---------------------------------------------------------
+//   getInitData
+//---------------------------------------------------------
+
+void VAM::getInitData(int* n, const unsigned char**p) const
+      {
+      //int i;//prevent of compiler warning: unused variable
+      int* d = idata;
+      //int maxval = 128*128-1;	//prevent of compiler warning: unused variable
+      *n = NUM_CONTROLLER * sizeof(int);
+
+// //       setController(0, DCO1_PITCHMOD, p++);
+//       *d++ = int(dco1.pitchmod+8191*341.333);
+      *d++ = gui->getController(DCO1_PITCHMOD);
+
+// //       setController(0, DCO2_PITCHMOD, p++);
+//       *d++ = int(dco2.pitchmod+8191*341.333);
+      *d++ = gui->getController(DCO2_PITCHMOD);
+
+// //       setController(0, DCO1_WAVEFORM, p++);
+//       *d++ = dco1.waveform;
+      *d++ = gui->getController(DCO1_WAVEFORM);
+
+// //       setController(0, DCO2_WAVEFORM, p++);
+//       *d++ = dco2.waveform;
+      *d++ = gui->getController(DCO2_WAVEFORM);
+
+// //       setController(0, DCO1_FM, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs((lin2exp[i] == dco1.fm)) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO1_FM);
+
+// 
+// 
+// //       setController(0, DCO2_FM, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs((lin2exp[i] - dco2.fm)) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO2_FM);
+
+// 
+// //       setController(0, DCO1_PWM, p++);
+//       *d++ = int(dco1.pwm*double(maxval));
+      *d++ = gui->getController(DCO1_PWM);
+
+// 
+// //       setController(0, DCO2_PWM, p++);
+//       *d++ = int(dco2.pwm*double(maxval));
+      *d++ = gui->getController(DCO2_PWM);
+
+// 
+// //       setController(0, DCO1_ATTACK, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (dco1_env.attack-1)/5.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO1_ATTACK);
+// 
+// //       setController(0, DCO2_ATTACK, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (dco2_env.attack-1)/5.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO2_ATTACK);
+
+// 
+// //       setController(0, DCO1_DECAY, p++);
+//       *d++ = int((dco1_env.decay-1)/sampleRate()/5 * maxval);
+      *d++ = gui->getController(DCO1_DECAY);
+
+// 
+// //       setController(0, DCO2_DECAY, p++);
+//       *d++ = int((dco2_env.decay-1)/sampleRate()/5 * maxval);
+      *d++ = gui->getController(DCO2_DECAY);
+
+// 
+// //       setController(0, DCO1_SUSTAIN, p++ );
+//       *d++ = int(dco1_env.sustain*double(maxval));
+      *d++ = gui->getController(DCO1_SUSTAIN);
+
+// 
+// //       setController(0, DCO2_SUSTAIN, p++ );
+//       *d++ = int(dco2_env.sustain*double(maxval));
+      *d++ = gui->getController(DCO2_SUSTAIN);
+// 
+// //       setController(0, DCO1_RELEASE, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (dco1_env.release-1)/10.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO1_RELEASE);
+
+// 
+// //       setController(0, DCO2_RELEASE, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (dco2_env.release-1)/10.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(DCO2_RELEASE);
+
+// 
+// //       setController(0, LFO_FREQ, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs((lin2exp[i] - lfo.freq)) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(LFO_FREQ);
+
+// 
+// //       setController(0, LFO_WAVEFORM, p++);
+//       *d++ = lfo.waveform;
+      *d++ = gui->getController(LFO_WAVEFORM);
+
+// 
+// //       setController(0, FILT_ENV_MOD, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs((lin2exp[i] - (1 - filt_env_mod))) < 0.1)
+//             break;
+//           }
+//       *d++ = int((255-i)/255.0*double(maxval));
+      *d++ = gui->getController(FILT_ENV_MOD);
+
+// 
+// //       setController(0, FILT_KEYTRACK, p++);
+//       *d++ = filt_keytrack;
+      *d++ = gui->getController(FILT_KEYTRACK);
+
+// 
+// //       setController(0, FILT_RES, p++);
+//       *d++ = int(filt_res*double(maxval));
+      *d++ = gui->getController(FILT_RES);
+
+// 
+// //       setController(0, FILT_ATTACK, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (filt_env.attack-1)/5.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(FILT_ATTACK);
+
+// 
+// //       setController(0, FILT_DECAY, p++);
+//       *d++ = int((filt_env.decay-1)/sampleRate()*double(maxval)/5);
+      *d++ = gui->getController(FILT_DECAY);
+
+// 
+// //       setController(0, FILT_SUSTAIN, p++);
+//       *d++ = int(filt_env.sustain*double(maxval));
+      *d++ = gui->getController(FILT_SUSTAIN);
+
+// 
+// //       setController(0, FILT_RELEASE, p++);
+//       for (i = 0;i<LIN2EXP_SIZE;i++) {
+//           if (fabs(lin2exp[i] -( (filt_env.release-1)/10.0/sampleRate())) < 0.1)
+//             break;
+//           }
+//       *d++ = int(i/255.0*double(maxval));
+      *d++ = gui->getController(FILT_RELEASE);
+
+// 
+// //       setController(0, DCO2ON, p++);
+//       *d++ = dco2.on;
+      *d++ = gui->getController(DCO2ON);
+
+// 
+// //       setController(0, FILT_INVERT, p++);
+//       *d++ = filt_invert;
+      *d++ = gui->getController(FILT_INVERT);
+
+// 
+// //       setController(0, FILT_CUTOFF, p++);
+//       *d++ = int(filt_cutoff*double(maxval));
+      *d++ = gui->getController(FILT_CUTOFF);
+
+// 
+// //       setController(0, DCO1_DETUNE, p++);
+//       *d++ = int(dco1.detune *16834 + 8191);
+      *d++ = gui->getController(DCO1_DETUNE);
+
+// 
+// //       setController(0, DCO2_DETUNE, p++);
+//       *d++ = int(dco2.detune *16834 + 8191);
+      *d++ = gui->getController(DCO2_DETUNE);
+
+// 
+// //       setController(0, DCO1_PW, p++);
+//       *d++ = int(dco1.pw*double(maxval));
+      *d++ = gui->getController(DCO1_PW);
+
+// 
+// //       setController(0, DCO2_PW, p++);
+//       *d++ = int(dco2.pw*double(maxval));
+      *d++ = gui->getController(DCO2_PW);
+
+      *p = (unsigned char*)idata;
+      }
+
+//---------------------------------------------------------
+//   sysex
+//---------------------------------------------------------
+
+bool VAM::sysex(int n, const unsigned char* data)
+      {
+      n=n;    // remove warning of unused variable
+      int *p= (int*)data;
+      setController(0, DCO1_PITCHMOD, *p++);
+      setController(0, DCO2_PITCHMOD, *p++);
+      setController(0, DCO1_WAVEFORM, *p++);
+      setController(0, DCO2_WAVEFORM, *p++);
+      setController(0, DCO1_FM, *p++);
+      setController(0, DCO2_FM, *p++);
+      setController(0, DCO1_PWM, *p++);
+      setController(0, DCO2_PWM, *p++);
+      setController(0, DCO1_ATTACK, *p++);
+      setController(0, DCO2_ATTACK, *p++);
+      setController(0, DCO1_DECAY, *p++);
+      setController(0, DCO2_DECAY, *p++);
+      setController(0, DCO1_SUSTAIN, *p++ );
+      setController(0, DCO2_SUSTAIN, *p++ );
+      setController(0, DCO1_RELEASE, *p++);
+      setController(0, DCO2_RELEASE, *p++);
+      setController(0, LFO_FREQ, *p++);
+      setController(0, LFO_WAVEFORM, *p++);
+      setController(0, FILT_ENV_MOD, *p++);
+      setController(0, FILT_KEYTRACK, *p++);
+      setController(0, FILT_RES, *p++);
+      setController(0, FILT_ATTACK, *p++);
+      setController(0, FILT_DECAY, *p++);
+      setController(0, FILT_SUSTAIN, *p++);
+      setController(0, FILT_RELEASE, *p++);
+      setController(0, DCO2ON, *p++);
+      setController(0, FILT_INVERT, *p++);
+      setController(0, FILT_CUTOFF, *p++);
+      setController(0, DCO1_DETUNE, *p++);
+      setController(0, DCO2_DETUNE, *p++);
+      setController(0, DCO1_PW, *p++);
+      setController(0, DCO2_PW, *p++);
+
+      return false;
+      }
+
+//---------------------------------------------------------
+//   guiVisible
+//---------------------------------------------------------
+
+bool VAM::guiVisible() const
+      {
+      return gui->isVisible();
+      }
+
+//---------------------------------------------------------
+//   showGui
+//---------------------------------------------------------
+
+void VAM::showGui(bool val)
+      {
+      gui->setShown(val);
+      }
+
+//---------------------------------------------------------
+//   getGeometry
+//---------------------------------------------------------
+
+void VAM::getGeometry(int* x, int* y, int* w, int* h) const
+      {
+      QPoint pos(gui->pos());
+      QSize size(gui->size());
+      *x = pos.x();
+      *y = pos.y();
+      *w = size.width();
+      *h = size.height();
+      }
+
+//---------------------------------------------------------
+//   setGeometry
+//---------------------------------------------------------
+
+void VAM::setGeometry(int x, int y, int w, int h)
+      {
+      gui->resize(QSize(w, h));
+      gui->move(QPoint(x, y));
+      }
+
+//---------------------------------------------------------
+//   inst
+//---------------------------------------------------------
+
+class QWidget;
+
+static Mess* instantiate(int sr, QWidget*, QString*, const char* name)
+      {
+      VAM* vam = new VAM(sr);
+      if (vam->init(name)) {
+            delete vam;
+            return 0;
+            }
+      return vam;
+      }
+
+extern "C" {
+      static MESS descriptor = {
+            "vam",
+            "vam soft synth",
+            "0.1",      // version string
+            MESS_MAJOR_VERSION, MESS_MINOR_VERSION,
+            instantiate,
+            };
+
+      const MESS* mess_descriptor() { return &descriptor; }
+      }
+
diff --git a/muse2/synti/vam/vam.h b/muse2/synti/vam/vam.h
new file mode 100644
index 00000000..3da27e79
--- /dev/null
+++ b/muse2/synti/vam/vam.h
@@ -0,0 +1,38 @@
+// vam.h
+//
+//  (C) Copyright 2002 Jotsif Lindman H�nlund (jotsif@linux.nu)
+//
+// 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 2
+// 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, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA or point your web browser to http://www.gnu.org.
+
+
+#ifndef __VAM_H
+#define __VAM_H
+
+enum {
+	DCO1_PITCHMOD, DCO1_WAVEFORM, DCO1_FM, DCO1_PWM,
+	DCO1_ATTACK, DCO1_DECAY, DCO1_SUSTAIN, DCO1_RELEASE,
+	DCO2_PITCHMOD, DCO2_WAVEFORM, DCO2_FM, DCO2_PWM,
+	DCO2_ATTACK, DCO2_DECAY, DCO2_SUSTAIN, DCO2_RELEASE,
+	LFO_FREQ, LFO_WAVEFORM, FILT_ENV_MOD, FILT_KEYTRACK,
+	FILT_RES, FILT_ATTACK, FILT_DECAY, FILT_SUSTAIN,
+	FILT_RELEASE, DCO2ON, FILT_INVERT, FILT_CUTOFF,
+	DCO1_DETUNE, DCO2_DETUNE, DCO1_PW, DCO2_PW
+};
+
+
+#define NUM_CONTROLLER 32
+
+#endif /* __VAM_H */
diff --git a/muse2/synti/vam/vamgui.cpp b/muse2/synti/vam/vamgui.cpp
new file mode 100644
index 00000000..2a3a5e72
--- /dev/null
+++ b/muse2/synti/vam/vamgui.cpp
@@ -0,0 +1,720 @@
+//=========================================================
+//  MusE
+//  Linux Music Editor
+//
+//  vamgui.c
+//	This is a simple GUI implemented with QT for
+//	vam software synthesizer.
+//	(Many) parts of this file was taken from Werner Schweer's GUI
+//	for his organ soft synth.
+//
+//  (C) Copyright 2002 Jotsif Lindman H�nlund (jotsif@linux.nu)
+//
+// 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 2
+// 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, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA or point your web browser to http://www.gnu.org.
+//=========================================================
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <signal.h>
+
+#include <list>
+
+#include "vamgui.h"
+#include "vam.h"
+
+#include <qslider.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qsocketnotifier.h>
+#include <q3listbox.h>
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+#include <q3filedialog.h>
+#include <qlcdnumber.h>
+#include <qsignalmapper.h>
+#include <qlabel.h>
+
+#include "muse/xml.h"
+#include "muse/midi.h"
+#include "muse/midictrl.h"
+
+const char *vam_ctrl_names[] = {
+  "DCO1_PITCHMOD", "DCO1_WAVEFORM", "DCO1_FM", "DCO1_PWM",
+  "DCO1_ATTACK", "DCO1_DECAY", "DCO1_SUSTAIN", "DCO1_RELEASE",
+  "DCO2_PITCHMOD", "DCO2_WAVEFORM", "DCO2_FM", "DCO2_PWM",
+  "DCO2_ATTACK", "DCO2_DECAY", "DCO2_SUSTAIN", "DCO2_RELEASE",
+  "LFO_FREQ", "LFO_WAVEFORM", "FILT_ENV_MOD", "FILT_KEYTRACK",
+  "FILT_RES", "FILT_ATTACK", "FILT_DECAY", "FILT_SUSTAIN",
+  "FILT_RELEASE", "DCO2ON", "FILT_INVERT", "FILT_CUTOFF",
+  "DCO1_DETUNE", "DCO2_DETUNE", "DCO1_PW", "DCO2_PW"
+};
+
+//---------------------------------------------------------
+//   Preset
+//---------------------------------------------------------
+
+struct Preset {
+	QString name;
+	int ctrl[NUM_CONTROLLER];
+	void readConfiguration(Xml& xml);
+	void readControl(Xml& xml);
+	void writeConfiguration(Xml& xml, int level);
+      };
+
+std::list<Preset> presets;
+typedef std::list<Preset>::iterator iPreset;
+
+// Removed by T356
+//QString museProject;
+//QString museGlobalShare;
+//QString museUser;
+//QString instanceName;
+
+// char* presetFileTypes[] = {
+//      "Presets (*.pre)",
+//      0
+//      };
+
+//---------------------------------------------------------
+//   readControl
+//---------------------------------------------------------
+
+void Preset::readControl(Xml& xml)
+{
+	int idx = 0;
+	int val = 0;
+	for (;;) {
+		Xml::Token token(xml.parse());
+		const QString& tag(xml.s1());
+		switch (token) {
+			case Xml::Error:
+			case Xml::End:
+				return;
+			case Xml::TagStart:
+				xml.unknown("control");
+				break;
+			case Xml::Attribut:
+				if (tag == "idx") {
+					idx = xml.s2().toInt();
+						if (idx >= NUM_CONTROLLER)
+							idx = 0;
+				}
+				else if (tag == "val")
+					val = xml.s2().toInt();
+				break;
+			case Xml::TagEnd:
+				if (tag == "control") {
+					ctrl[idx] = val;
+					return;
+				}
+			default:
+                    		break;
+		}
+	}
+}
+
+//---------------------------------------------------------
+//   readConfiguration
+//---------------------------------------------------------
+
+void Preset::readConfiguration(Xml& xml)
+{
+	for (;;) {
+		Xml::Token token(xml.parse());
+		const QString& tag(xml.s1());
+		switch (token) {
+			case Xml::Error:
+			case Xml::End:
+				return;
+			case Xml::TagStart:
+				if (tag == "control")
+					readControl(xml);
+				else
+					xml.unknown("preset");
+				break;
+			case Xml::Attribut:
+				if (tag == "name")
+					name = xml.s2();
+				break;
+			case Xml::TagEnd:
+				if (tag == "preset")
+					return;
+			default:
+				break;
+		}
+	}
+}
+
+//---------------------------------------------------------
+//   writeConfiguration
+//---------------------------------------------------------
+
+void Preset::writeConfiguration(Xml& xml, int level)
+{
+	//xml.tag(level++, "preset name=\"%s\"", name.ascii());
+        xml.tag(level++, "preset name=\"%s\"", Xml::xmlString(name).ascii());
+	for (int i = 0; i < NUM_CONTROLLER; ++i) {
+		xml.tag(level, "control idx=\"%d\" val=\"%d\" /", i, ctrl[i]);
+	}
+	xml.tag(level--, "/preset");
+}
+
+//---------------------------------------------------------
+//   VAMGui
+//---------------------------------------------------------
+
+VAMGui::VAMGui()
+   : VAMGuiBase(0, "vamgui", Qt::WType_TopLevel),
+	MessGui()
+{
+      QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read);
+      connect(s, SIGNAL(activated(int)), SLOT(readMessage(int)));
+
+	dctrl[DCO1_PITCHMOD] = SynthGuiCtrl(PitchModS, LCDNumber1,  SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_WAVEFORM] = SynthGuiCtrl(Waveform, 0, SynthGuiCtrl::COMBOBOX);
+	dctrl[DCO1_FM] = SynthGuiCtrl(FMS, LCDNumber1_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_PWM] = SynthGuiCtrl(PWMS, LCDNumber1_3, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_ATTACK] = SynthGuiCtrl(AttackS, LCDNumber1_3_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_DECAY] = SynthGuiCtrl(DecayS, LCDNumber1_3_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_SUSTAIN] = SynthGuiCtrl(SustainS, LCDNumber1_3_2_3, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_RELEASE] = SynthGuiCtrl(ReleaseS, LCDNumber1_3_2_4, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_PITCHMOD] = SynthGuiCtrl(PitchModS2, LCDNumber1_4, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_WAVEFORM] = SynthGuiCtrl(Waveform2, 0, SynthGuiCtrl::COMBOBOX);
+	dctrl[DCO2_FM] = SynthGuiCtrl(FMS2, LCDNumber1_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_PWM] = SynthGuiCtrl(PWMS2, LCDNumber1_3_3, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_ATTACK] = SynthGuiCtrl(AttackS2, LCDNumber1_3_2_5, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_DECAY] = SynthGuiCtrl(DecayS2, LCDNumber1_3_2_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_SUSTAIN] = SynthGuiCtrl(SustainS2, LCDNumber1_3_2_3_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_RELEASE] = SynthGuiCtrl(ReleaseS2, LCDNumber1_3_2_4_2, SynthGuiCtrl::SLIDER);
+	dctrl[LFO_FREQ] = SynthGuiCtrl(FreqS, LCDNumber1_5, SynthGuiCtrl::SLIDER);
+	dctrl[LFO_WAVEFORM] = SynthGuiCtrl(Waveform2_2, 0, SynthGuiCtrl::COMBOBOX);
+	dctrl[FILT_ENV_MOD] = SynthGuiCtrl(EnvModS, LCDNumber1_5_3, SynthGuiCtrl::SLIDER);
+	dctrl[FILT_KEYTRACK] = SynthGuiCtrl(KeyTrack, 0, SynthGuiCtrl::SWITCH);
+	dctrl[FILT_RES] = SynthGuiCtrl(ResS, LCDNumber1_5_5,  SynthGuiCtrl::SLIDER);
+	dctrl[FILT_ATTACK] = SynthGuiCtrl(AttackS3, LCDNumber1_3_2_5_2, SynthGuiCtrl::SLIDER);
+	dctrl[FILT_DECAY] = SynthGuiCtrl(DecayS3, LCDNumber1_3_2_2_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[FILT_SUSTAIN] = SynthGuiCtrl(SustainS3, LCDNumber1_3_2_3_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[FILT_RELEASE] = SynthGuiCtrl(ReleaseS3, LCDNumber1_3_2_4_2_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2ON] = SynthGuiCtrl(DCO2On, 0, SynthGuiCtrl::SWITCH);
+	dctrl[FILT_INVERT] = SynthGuiCtrl(FilterInvert, 0, SynthGuiCtrl::SWITCH);
+	dctrl[FILT_CUTOFF] = SynthGuiCtrl(CutoffS, LCDNumber1_5_5_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_DETUNE] = SynthGuiCtrl(DetuneS, LCDNumber1_6, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_DETUNE] = SynthGuiCtrl(DetuneS2, LCDNumber1_6_2, SynthGuiCtrl::SLIDER);
+	dctrl[DCO1_PW] = SynthGuiCtrl(PWS, LCDNumber1_2_3, SynthGuiCtrl::SLIDER);
+	dctrl[DCO2_PW] = SynthGuiCtrl(PWS2, LCDNumber1_2_4, SynthGuiCtrl::SLIDER);
+
+
+	map = new QSignalMapper(this);
+	for (int i = 0; i < NUM_CONTROLLER; ++i) {
+		map->setMapping(dctrl[i].editor, i);
+		if (dctrl[i].type == SynthGuiCtrl::SLIDER)
+			connect((QSlider*)(dctrl[i].editor), SIGNAL(valueChanged(int)), map, SLOT(map()));
+		else if (dctrl[i].type == SynthGuiCtrl::COMBOBOX)
+			connect((QComboBox*)(dctrl[i].editor), SIGNAL(activated(int)), map, SLOT(map()));
+		else if (dctrl[i].type == SynthGuiCtrl::SWITCH)
+			connect((QCheckBox*)(dctrl[i].editor), SIGNAL(toggled(bool)), map, SLOT(map()));
+	}
+	connect(map, SIGNAL(mapped(int)), this, SLOT(ctrlChanged(int)));
+
+	connect(presetList, SIGNAL(clicked(Q3ListBoxItem*)),
+		this, SLOT(presetClicked(Q3ListBoxItem*)));
+	// presetNameEdit
+	connect(presetSet,   SIGNAL(clicked()), this, SLOT(setPreset()));
+	connect(savePresets, SIGNAL(clicked()), this, SLOT(savePresetsPressed()));
+	connect(loadPresets, SIGNAL(clicked()), this, SLOT(loadPresetsPressed()));
+	connect(deletePreset, SIGNAL(clicked()), this, SLOT(deletePresetPressed()));
+	connect(savePresetsToFile, SIGNAL(clicked()), this, SLOT(savePresetsToFilePressed()));
+
+	ctrlHi = 0;
+	ctrlLo = 0;
+	dataHi = 0;
+	dataLo = 0;
+  presetFileName = NULL; 
+
+      // work around for probable QT/WM interaction bug.
+      // for certain window managers, e.g xfce, this window is
+      // is displayed although not specifically set to show();
+      // bug: 2811156  	 Softsynth GUI unclosable with XFCE4 (and a few others)
+      show();
+      hide();
+      }
+
+//---------------------------------------------------------
+//   ctrlChanged
+//---------------------------------------------------------
+
+void VAMGui::ctrlChanged(int idx)
+      {
+	SynthGuiCtrl* ctrl = &dctrl[idx];
+	int val = 0;
+	if (ctrl->type == SynthGuiCtrl::SLIDER) {
+    		QSlider* slider = (QSlider*)(ctrl->editor);
+		int max = slider->maxValue();
+		val = (slider->value() * 16383 + max/2) / max;
+	      }
+	else if (ctrl->type == SynthGuiCtrl::COMBOBOX) {
+		val = ((QComboBox*)(ctrl->editor))->currentItem();
+	      }
+	else if (ctrl->type == SynthGuiCtrl::SWITCH) {
+		val = ((QCheckBox*)(ctrl->editor))->isOn();
+	      }
+      sendController(0, idx + CTRL_RPN14_OFFSET, val);
+      }
+
+int VAMGui::getController(int idx)
+      {
+      SynthGuiCtrl* ctrl = &dctrl[idx];
+      int val = 0;
+      if (ctrl->type == SynthGuiCtrl::SLIDER) {
+            QSlider* slider = (QSlider*)(ctrl->editor);
+        int max = slider->maxValue();
+        val = (slider->value() * 16383 + max/2) / max;
+            }
+      else if (ctrl->type == SynthGuiCtrl::COMBOBOX) {
+        val = ((QComboBox*)(ctrl->editor))->currentItem();
+            }
+      else if (ctrl->type == SynthGuiCtrl::SWITCH) {
+        val = ((QCheckBox*)(ctrl->editor))->isOn();
+            }
+      return val;
+      }
+
+int VAMGui::getControllerInfo(int id, const char** name, int* controller,
+   int* min, int* max, int* /*initval*/) const
+      {
+      if (id >= NUM_CONTROLLER)
+            return 0;
+
+
+      *controller = id;
+      *name = vam_ctrl_names[id];
+      const SynthGuiCtrl* ctrl = (const SynthGuiCtrl*)&dctrl[id];
+      //int val = 0;
+      if (ctrl->type == SynthGuiCtrl::SLIDER) {
+            QSlider* slider = (QSlider*)(ctrl->editor);
+            *max = 16383; //slider->maxValue();
+            *min = slider->minValue();
+            //val = (slider->value() * 16383 + max/2) / max;
+            
+            //val = 16383 + 1/2 
+            }
+      else if (ctrl->type == SynthGuiCtrl::COMBOBOX) {
+            //val = ((QComboBox*)(ctrl->editor))->currentItem();
+            *min = 0;
+            *max = ((QComboBox*)(ctrl->editor))->count();
+            }
+      else if (ctrl->type == SynthGuiCtrl::SWITCH) {
+            //val = ((QCheckBox*)(ctrl->editor))->isOn();
+            *min=0;
+            *max=1;
+            }
+      return ++id;
+      }
+
+//---------------------------------------------------------
+//   presetClicked
+//---------------------------------------------------------
+
+void VAMGui::presetClicked(Q3ListBoxItem* item)
+{
+	if (item == 0)
+		return;
+	presetNameEdit->setText(item->text());
+	Preset* preset = 0;
+	for (iPreset i = presets.begin(); i != presets.end(); ++i) {
+		if (i->name == item->text()) {
+			preset = &*i;
+			break;
+		}
+	}
+	activatePreset(preset);
+}
+
+//---------------------------------------------------------
+//   setPreset
+//---------------------------------------------------------
+
+void VAMGui::activatePreset(Preset* preset)
+{
+	if (preset == 0) {
+		fprintf(stderr, "internal error 1\n");
+		exit(-1);
+	}
+	for (unsigned int i = 0; i < sizeof(dctrl)/sizeof(*dctrl); ++i) {
+		setParam(i, preset->ctrl[i]);
+		ctrlChanged(i);
+	}
+}
+
+//---------------------------------------------------------
+//   setPreset
+//---------------------------------------------------------
+
+void VAMGui::setPreset()
+{
+	if (presetNameEdit->text().isEmpty())
+		return;
+	for (iPreset i = presets.begin(); i != presets.end(); ++i) {
+		if (i->name == presetNameEdit->text()) {
+			setPreset(&*i);
+			return;
+		}
+	}
+	addNewPreset(presetNameEdit->text());
+}
+
+//---------------------------------------------------------
+//   addNewPreset
+//---------------------------------------------------------
+
+void VAMGui::addNewPreset(const QString& name)
+{
+	Preset p;
+	p.name = name;
+	setPreset(&p);
+	presets.push_back(p);
+	presetList->insertItem(name);
+}
+
+//---------------------------------------------------------
+//   deleteNamedPreset
+//---------------------------------------------------------
+void VAMGui::deleteNamedPreset(const QString& name)
+{
+	Q3ListBoxItem * item = presetList->findItem(name);
+	if (!item) {
+		fprintf(stderr, "%s: Could not find preset!\n", __FUNCTION__);
+		return;
+	}
+	presetList->clearSelection();
+	int index = presetList->index(item);
+	presetList->removeItem(index);
+	for (iPreset i = presets.begin(); i != presets.end(); ++i) {
+		if (i->name == name) {
+			presets.erase(i);
+			break;
+		}
+	}
+}
+
+
+//---------------------------------------------------------
+//   setPreset
+//---------------------------------------------------------
+
+void VAMGui::setPreset(Preset* preset)
+{
+	for (unsigned int i = 0; i < NUM_CONTROLLER; ++i) {
+		int val = 0;
+		SynthGuiCtrl* ctrl = &dctrl[i];
+		if (ctrl->type == SynthGuiCtrl::SLIDER) {
+			QSlider* slider = (QSlider*)(ctrl->editor);
+			int max = slider->maxValue();
+			val = (slider->value() * 16383 + max/2) / max;
+		}
+		else if (ctrl->type == SynthGuiCtrl::COMBOBOX) {
+			val = ((QComboBox*)(ctrl->editor))->currentItem();
+		}
+		else if (ctrl->type == SynthGuiCtrl::SWITCH) {
+			val = ((QCheckBox*)(ctrl->editor))->isOn();
+		}
+
+		preset->ctrl[i] = val;
+	}
+	//
+	// send sysex to synti
+	//
+#if 0
+	putchar(0xf0);
+	putchar(0x7c);    // mess
+	putchar(0x2);     // vam
+	putchar(0x3);     // setPreset
+	const char* name = preset->name.latin1();
+	while (*name)
+		putchar(*name++ & 0x7f);
+	putchar(0);
+	for (int i = 0; i < NUM_CONTROLLER; ++i) {
+		putchar(i);
+		putchar(preset->ctrl[i]);
+	}
+	putchar(0xf7);
+#endif
+}
+
+//---------------------------------------------------------
+//   setParam
+//    set param in gui
+//    val -- midi value 0 - 16383
+//---------------------------------------------------------
+
+void VAMGui::setParam(int param, int val)
+      {
+	if (param >= int(sizeof(dctrl)/sizeof(*dctrl))) {
+		fprintf(stderr, "vam: set unknown parameter 0x%x to 0x%x\n", param, val);
+		return;
+	      }
+	SynthGuiCtrl* ctrl = &dctrl[param];
+	ctrl->editor->blockSignals(true);
+	if (ctrl->type == SynthGuiCtrl::SLIDER) {
+		QSlider* slider = (QSlider*)(ctrl->editor);
+		int max = slider->maxValue();
+		if(val < 0) val = (val * max + 8191) / 16383 - 1;
+		else val = (val * max + 8191) / 16383;
+		
+		slider->setValue(val);
+		if (ctrl->label)
+			((QLCDNumber*)(ctrl->label))->display(val);
+	      }
+	else if (ctrl->type == SynthGuiCtrl::COMBOBOX) {
+		((QComboBox*)(ctrl->editor))->setCurrentItem(val);
+	      }
+	else if (ctrl->type == SynthGuiCtrl::SWITCH) {
+		((QCheckBox*)(ctrl->editor))->setChecked(val);
+	      }
+	ctrl->editor->blockSignals(false);
+      }
+
+//---------------------------------------------------------
+//   sysexReceived
+//---------------------------------------------------------
+
+void VAMGui::sysexReceived(const unsigned char* data, int len)
+{
+	if (len >= 4) {
+		//---------------------------------------------
+		//  MusE Soft Synth
+		//---------------------------------------------
+
+		if (data[0] == 0x7c) {
+			if (data[1] == 2) {     // vam
+				if (data[2] == 2) {        // parameter response
+					if (len != 6) {
+						fprintf(stderr, "vam gui: bad sysEx len\n");
+						return;
+					}
+					int val = data[4] + (data[5]<<7);
+					switch(data[3])
+					{
+						case DCO1_PITCHMOD:
+						case DCO2_PITCHMOD:
+						case DCO1_DETUNE:
+						case DCO2_DETUNE:
+							setParam(data[3], ((val + 1) * 2) - 16383);
+							break;
+						default:
+							setParam(data[3], val);
+							break;
+					}
+					return;
+				}
+				else if (data[2] == 1) {  // param request
+					return;
+				}
+			}
+		}
+	}
+	fprintf(stderr, "vam gui: unknown sysex received, len %d:\n", len);
+	for (int i = 0; i < len; ++i)
+		fprintf(stderr, "%02x ", data[i]);
+	fprintf(stderr, "\n");
+}
+
+//---------------------------------------------------------
+//   processEvent
+//---------------------------------------------------------
+
+void VAMGui::processEvent(const MidiPlayEvent& ev)
+      {
+      if (ev.type() == ME_CONTROLLER)
+            setParam(ev.dataA() & 0xfff, ev.dataB());
+      else if (ev.type() == ME_SYSEX)
+            sysexReceived(ev.data(), ev.len())
+            ;
+      else
+            printf("VAMGui::illegal event type received\n");
+      }
+
+//---------------------------------------------------------
+//   loadPresetsPressed
+//---------------------------------------------------------
+
+void VAMGui::loadPresetsPressed()
+{
+#if 1   // TODO
+	QString iname;
+	QString s(getenv("HOME"));
+	
+/*      QString filename = QFileDialog::getOpenFileName(lastdir, QString("*.[Ss][Ff]2"),
+                                                      this,
+                                                      "Load Soundfont dialog",
+                                                      "Choose soundfont");*/
+  QString fn = Q3FileDialog::getOpenFileName(s, "Presets (*.vam)", 
+                                            this,
+                                            "MusE: Load VAM Presets",
+                                            "Select a preset");
+	if (fn.isEmpty())
+		return;
+	bool popenFlag=false;
+	FILE* f = fopen(fn.ascii(),"r");//fileOpen(this, fn, QString(".pre"), "r", popenFlag, true);
+	if (f == 0)
+		return;
+	presets.clear();
+	presetList->clear();
+
+	Xml xml(f);
+	int mode = 0;
+	for (;;) {
+		Xml::Token token = xml.parse();
+		QString tag = xml.s1();
+		switch (token) {
+			case Xml::Error:
+			case Xml::End:
+				return;
+			case Xml::TagStart:
+				if (mode == 0 && tag == "muse")
+					mode = 1;
+//				else if (mode == 1 && tag == "instrument")
+//					mode = 2;
+
+				else if (mode == 2  && tag == "preset") {
+					Preset preset;
+					preset.readConfiguration(xml);
+					presets.push_back(preset);
+					presetList->insertItem(preset.name);
+				}
+				else if(mode != 1)
+					xml.unknown("SynthPreset");
+				break;
+			case Xml::Attribut:
+				if(mode == 1 && tag == "iname") {
+//					fprintf(stderr, "%s\n", xml.s2().latin1());
+					if(xml.s2() != "vam-1.0")
+						return;
+					else mode = 2;
+				}
+                    		break;
+			case Xml::TagEnd:
+				if (tag == "muse")
+				goto ende;
+			default:
+				break;
+		}
+	}
+ende:
+	if (popenFlag)
+		pclose(f);
+	else
+		fclose(f);
+
+	if (presetFileName) delete presetFileName;
+	presetFileName = new QString(fn);
+	QString dots ("...");
+	fileName->setText(fn.right(32).insert(0, dots));
+
+	if (presets.empty())
+		return;
+	Preset preset = presets.front();
+	activatePreset(&preset);
+#endif
+}
+
+//---------------------------------------------------------
+//   doSavePresets
+//---------------------------------------------------------
+void VAMGui::doSavePresets(const QString& fn, bool showWarning)
+{
+    showWarning=showWarning; // prevent of unsused variable warning
+#if 1
+	bool popenFlag=false;
+  if (fn=="") {
+    printf("empty name\n");
+    return;
+    } 
+  printf("fn=%s\n",fn.ascii());
+	FILE* f = fopen(fn.ascii(),"w");//fileOpen(this, fn, QString(".pre"), "w", popenFlag, false, showWarning);
+	if (f == 0)
+		return;
+	Xml xml(f);
+	xml.header();
+	xml.tag(0, "muse version=\"1.0\"");
+	xml.tag(0, "instrument iname=\"vam-1.0\" /");
+
+	for (iPreset i = presets.begin(); i != presets.end(); ++i)
+		i->writeConfiguration(xml, 1);
+
+	xml.tag(1, "/muse");
+
+	if (popenFlag)
+		pclose(f);
+	else
+		fclose(f);
+#endif
+}
+
+//---------------------------------------------------------
+//   savePresetsPressed
+//---------------------------------------------------------
+
+void VAMGui::savePresetsPressed()
+{
+#if 1 // TODO
+	QString s(getenv("MUSE"));
+	QString fn = Q3FileDialog::getSaveFileName(s, "Presets (*.vam)", this,
+         tr("MusE: Save VAM Presets"));
+	if (fn.isEmpty())
+		return;
+	doSavePresets (fn, true);
+#endif
+}
+
+
+//---------------------------------------------------------
+//   savePresetsToFilePressed
+//---------------------------------------------------------
+
+void VAMGui::savePresetsToFilePressed()
+{
+	if (!presetFileName ) {
+ 
+      QString s(getenv("MUSE"));
+      QString fn = Q3FileDialog::getSaveFileName(s, "Presets (*.vam)", this,
+            tr("MusE: Save VAM Presets"));
+      presetFileName = new QString(fn);
+      }
+  if (*presetFileName == QString(""))
+    return;
+  //if presetFileName->
+	doSavePresets (*presetFileName, false);
+}
+
+//---------------------------------------------------------
+//   deletePresetPressed
+//---------------------------------------------------------
+
+void VAMGui::deletePresetPressed()
+{
+	deleteNamedPreset (presetList->currentText());
+}
+
+//---------------------------------------------------------
+//   readMessage
+//---------------------------------------------------------
+
+void VAMGui::readMessage(int)
+      {
+      MessGui::readMessage();
+      }
+
diff --git a/muse2/synti/vam/vamgui.h b/muse2/synti/vam/vamgui.h
new file mode 100644
index 00000000..0ca5e506
--- /dev/null
+++ b/muse2/synti/vam/vamgui.h
@@ -0,0 +1,82 @@
+//=========================================================
+//  MusE
+//  Linux Music Editor
+//  vamgui.h
+//
+//  (C) Copyright 2002 Jotsif Lindman H�nlund (jotsif@linux.nu)
+//
+// 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 2
+// 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, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA or point your web browser to http://www.gnu.org.
+//=========================================================
+
+#ifndef __VAMGUI_H
+#define __VAMGUI_H
+
+#include "vamguibase.h"
+#include "vam.h"
+#include "libsynti/gui.h"
+
+class Q3ListBoxItem;
+class Preset;
+class QString;
+class QSignalMapper;
+
+//---------------------------------------------------------
+//   VAMGui
+//---------------------------------------------------------
+
+class VAMGui : public VAMGuiBase, public MessGui {
+      QSignalMapper* map;
+      int ctrlHi;
+      int ctrlLo;
+      int dataHi;
+      int dataLo;
+      SynthGuiCtrl dctrl[NUM_CONTROLLER];
+      QString * presetFileName;
+
+      Q_OBJECT
+      void sendControllerChange(int ctrl, int val);
+      void initParameter();
+      void setParam(int, int);
+      void setPreset(Preset* preset);
+      void addNewPreset(const QString&);
+      void deleteNamedPreset(const QString&);
+      void activatePreset(Preset* preset);
+      virtual void processEvent(const MidiPlayEvent&);
+
+   private slots:
+      void ctrlChanged(int idx);
+
+      void presetClicked(Q3ListBoxItem*);
+      void setPreset();
+      void loadPresetsPressed();
+      void savePresetsPressed();
+      void deletePresetPressed();
+      void doSavePresets(const QString&, bool);
+      void savePresetsToFilePressed();
+      void readMessage(int);
+
+   protected:
+      virtual void sysexReceived(const unsigned char*, int);
+
+   public:
+      int getController(int idx);
+      int getControllerInfo(int id, const char** name, int* controller, int* min, int* max, int* initval) const;
+      VAMGui();
+      };
+
+#endif /* __VAMGUI_H */
+
+
diff --git a/muse2/synti/vam/vamguibase.ui b/muse2/synti/vam/vamguibase.ui
new file mode 100644
index 00000000..39c8ff90
--- /dev/null
+++ b/muse2/synti/vam/vamguibase.ui
@@ -0,0 +1,2032 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>VAMGuiBase</class>
+<widget class="QWidget">
+    <property name="name">
+        <cstring>VAMGuiBase</cstring>
+    </property>
+    <property name="enabled">
+        <bool>true</bool>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>744</width>
+            <height>523</height>
+        </rect>
+    </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>5</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
+    <property name="caption">
+        <string>Virtual Analogue for MusE</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QGroupBox" row="1" column="0" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>GroupBox11</cstring>
+            </property>
+            <property name="title">
+                <string>LFO</string>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>6</number>
+                </property>
+                <property name="spacing">
+                    <number>2</number>
+                </property>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>TextLabel3_5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Freq</string>
+                    </property>
+                </widget>
+                <widget class="QSlider">
+                    <property name="name">
+                        <cstring>FreqS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber">
+                    <property name="name">
+                        <cstring>LCDNumber1_5</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>TextLabel1_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Waveform</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox">
+                    <item>
+                        <property name="text">
+                            <string>Sine</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Pulse</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Saw</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Triangle</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>Waveform2_2</cstring>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QGroupBox" row="2" column="0" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>GroupBox12</cstring>
+            </property>
+            <property name="title">
+                <string>Filter</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>6</number>
+                </property>
+                <property name="spacing">
+                    <number>2</number>
+                </property>
+                <widget class="QLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_5_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>EnvMod</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="0" column="4">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_5_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Attack</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="4">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_2_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Decay</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="4">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_3_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Sustain</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="4">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_4_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Release</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="0" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_5_3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="0" column="6">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_5_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="1" column="6">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_2_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="2" column="6">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_3_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="3" column="6">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_4_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="1" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_5_5</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Cutoff</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_5_5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Resonance</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>FilterInvert</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>Invert</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="2" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>KeyTrack</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>KeyTrack</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="2" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_5_5_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="0" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>EnvModS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="1" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>ResS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>CutoffS</cstring>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="tickmarks">
+                        <enum>NoMarks</enum>
+                    </property>
+                    <property name="tickInterval">
+                        <number>25</number>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="0" column="5">
+                    <property name="name">
+                        <cstring>AttackS3</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="1" column="5">
+                    <property name="name">
+                        <cstring>DecayS3</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="2" column="5">
+                    <property name="name">
+                        <cstring>SustainS3</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="3" column="5">
+                    <property name="name">
+                        <cstring>ReleaseS3</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QGroupBox" row="0" column="2">
+            <property name="name">
+                <cstring>GroupBox5_3</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="maximumSize">
+                <size>
+                    <width>200</width>
+                    <height>32767</height>
+                </size>
+            </property>
+            <property name="title">
+                <string>Presets</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>6</number>
+                </property>
+                <property name="spacing">
+                    <number>2</number>
+                </property>
+                <widget class="QListBox" row="0" column="0">
+                    <property name="name">
+                        <cstring>presetList</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>7</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="maximumSize">
+                        <size>
+                            <width>32767</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>189</red>
+                            <green>202</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>fileName</cstring>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="2" column="0">
+                    <property name="name">
+                        <cstring>presetNameEdit</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>189</red>
+                            <green>202</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                </widget>
+                <widget class="QLayoutWidget" row="3" column="0">
+                    <property name="name">
+                        <cstring>Layout3</cstring>
+                    </property>
+                    <hbox>
+                        <property name="name">
+                            <cstring>unnamed</cstring>
+                        </property>
+                        <property name="margin">
+                            <number>0</number>
+                        </property>
+                        <property name="spacing">
+                            <number>0</number>
+                        </property>
+                        <widget class="QToolButton">
+                            <property name="name">
+                                <cstring>presetSet</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>5</hsizetype>
+                                    <vsizetype>5</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="text">
+                                <string>Set</string>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string></string>
+                            </property>
+                        </widget>
+                        <widget class="QToolButton">
+                            <property name="name">
+                                <cstring>loadPresets</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>5</hsizetype>
+                                    <vsizetype>5</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="text">
+                                <string></string>
+                            </property>
+                            <property name="iconSet">
+                                <iconset>image0</iconset>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>load preset list</string>
+                            </property>
+                        </widget>
+                        <widget class="QToolButton">
+                            <property name="name">
+                                <cstring>savePresetsToFile</cstring>
+                            </property>
+                            <property name="text">
+                                <string></string>
+                            </property>
+                            <property name="iconSet">
+                                <iconset>image1</iconset>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>save preset list</string>
+                            </property>
+                        </widget>
+                        <widget class="QToolButton">
+                            <property name="name">
+                                <cstring>savePresets</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>5</hsizetype>
+                                    <vsizetype>5</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="text">
+                                <string></string>
+                            </property>
+                            <property name="iconSet">
+                                <iconset>image2</iconset>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>save preset list to a new file</string>
+                            </property>
+                        </widget>
+                        <widget class="QToolButton">
+                            <property name="name">
+                                <cstring>deletePreset</cstring>
+                            </property>
+                            <property name="text">
+                                <string></string>
+                            </property>
+                            <property name="iconSet">
+                                <iconset>image3</iconset>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>delete preset</string>
+                            </property>
+                        </widget>
+                        <spacer>
+                            <property name="name">
+                                <cstring>Spacer2</cstring>
+                            </property>
+                            <property name="orientation">
+                                <enum>Horizontal</enum>
+                            </property>
+                            <property name="sizeType">
+                                <enum>Expanding</enum>
+                            </property>
+                            <property name="sizeHint">
+                                <size>
+                                    <width>20</width>
+                                    <height>20</height>
+                                </size>
+                            </property>
+                        </spacer>
+                    </hbox>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QGroupBox" row="0" column="0">
+            <property name="name">
+                <cstring>GroupBox5</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="title">
+                <string>DCO 1</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>6</number>
+                </property>
+                <property name="spacing">
+                    <number>2</number>
+                </property>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Pitch</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="1" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>50</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1_4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Detune</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="2" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_6</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="2" column="1">
+                    <property name="name">
+                        <cstring>DetuneS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>-50</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>50</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="1" column="1">
+                    <property name="name">
+                        <cstring>PitchModS</cstring>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>100</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="minValue">
+                        <number>-24</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>24</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="7" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="5" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="6" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="5" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>PWM</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="7" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Decay</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="9" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_4</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="8" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="8" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Sustain</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="9" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Release</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="6" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Attack</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>FM</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="3" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="4" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_2_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>PW</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="4" column="2">
+                    <property name="name">
+                        <cstring>LCDNumber1_2_3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="3" column="1">
+                    <property name="name">
+                        <cstring>FMS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="4" column="1">
+                    <property name="name">
+                        <cstring>PWS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="5" column="1">
+                    <property name="name">
+                        <cstring>PWMS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="6" column="1">
+                    <property name="name">
+                        <cstring>AttackS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="7" column="1">
+                    <property name="name">
+                        <cstring>DecayS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="8" column="1">
+                    <property name="name">
+                        <cstring>SustainS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="9" column="1">
+                    <property name="name">
+                        <cstring>ReleaseS</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Waveform</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="0" column="1" rowspan="1" colspan="2">
+                    <item>
+                        <property name="text">
+                            <string>Sine</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Pulse</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Saw</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Triangle</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>Waveform</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QGroupBox" row="0" column="1">
+            <property name="name">
+                <cstring>GroupBox5_2</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="title">
+                <string>DCO 2</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>6</number>
+                </property>
+                <property name="spacing">
+                    <number>2</number>
+                </property>
+                <widget class="QLCDNumber" row="1" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_4</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>50</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="1" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>PitchModS2</cstring>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>100</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="minValue">
+                        <number>-24</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>24</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>FM</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="3" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1_4_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Detune</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="2" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_6_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Pitch</string>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DetuneS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>-50</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>50</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Waveform</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="0" column="1">
+                    <item>
+                        <property name="text">
+                            <string>Sine</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Pulse</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Saw</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Triangle</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>Waveform2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="9" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_4_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Release</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="5" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>PWM</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="6" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_5</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="6" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Attack</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="8" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_3_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="7" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_2_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="7" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Decay</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="9" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_2_4_2</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="5" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_3_3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="8" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_3_2_3_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Sustain</string>
+                    </property>
+                </widget>
+                <widget class="QLCDNumber" row="4" column="3">
+                    <property name="name">
+                        <cstring>LCDNumber1_2_4</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="paletteBackgroundColor">
+                        <color>
+                            <red>255</red>
+                            <green>255</green>
+                            <blue>255</blue>
+                        </color>
+                    </property>
+                    <property name="numDigits">
+                        <number>3</number>
+                    </property>
+                    <property name="segmentStyle">
+                        <enum>Flat</enum>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="4" column="0">
+                    <property name="name">
+                        <cstring>TextLabel3_2_4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>PW</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="0" column="2" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DCO2On</cstring>
+                    </property>
+                    <property name="text">
+                        <string>On</string>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="3" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>FMS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="4" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>PWS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="5" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>PWMS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="6" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>AttackS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="7" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DecayS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="8" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>SustainS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+                <widget class="QSlider" row="9" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>ReleaseS2</cstring>
+                    </property>
+                    <property name="minValue">
+                        <number>0</number>
+                    </property>
+                    <property name="maxValue">
+                        <number>255</number>
+                    </property>
+                    <property name="pageStep">
+                        <number>1</number>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QLabel" row="1" column="2" rowspan="2" colspan="1">
+            <property name="name">
+                <cstring>TextLabel1_5</cstring>
+            </property>
+            <property name="text">
+                <string>VAM 1.0beta3
+Virtual Analog for MusE
+Released under GPL.
+Copyright(C) 2002
+Jotsif Lindman Hörnlund 
+( jotsif@linux.nu )
+Copyright(C) 2005
+Robert Jonsson 
+(rj@spamatica.se)</string>
+            </property>
+            <property name="alignment">
+                <set>AlignCenter</set>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<images>
+    <image name="image0">
+        <data format="PNG" length="258">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000000c949444154388d9592c10d83300c45bf5117c133f4e431aa8a4385d4ed38a08a317c620673a9c418e981a64dd204d27f41b1fcfffb404855919388b8f0acaa94db6bf6cca149449c9f87e19436101197a3951afd342855fdeb15724a1b7891aa567fb06c0000e7c61b70be6c9379027543d190866f01f688b7e6a94cec8628240a20bed636ffe89452cdacdaccccdf00ea069819d6e71a2d2dcb82b66da32700f4f71eaa4a4d484f5532872200ce570fe97b664f070a17a986ecd5a4f423734807de7f81998b8423bd000829889c944241c00000000049454e44ae426082</data>
+    </image>
+    <image name="image1">
+        <data format="PNG" length="255">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000000c649444154388dc593410e82301045df102e41e2a69c807214ddc971f004862bc9b6dc6036261c635c28a488c4aa0b7fd2ccb493fffb679a0a60fc800cc0571e809616b8bc8d31470033334404b3343322b27450fbfa63eb9383ecb970921322fd667c05f395b7472b498839ff7790c74389a79b3240807cab908afcf9200c21f9f6954018026686aae29c4355e7da781d29760565592e4456afa0aa1cf6079a63c3781d17e4691f6325e09c9bf389b4459e5b0843986da92addb94b2203d0f73ddcbff457eb067156c5960afbfdac0000000049454e44ae426082</data>
+    </image>
+    <image name="image2">
+        <data format="PNG" length="266">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000000d149444154388da593516ec2301044dfa01c28e62f42ea41ca0dca31e06a753ed707429a7e90440e1070db95562b6b3da3d9595b80f947ec00529f00387306bedfd61a23c0b69184dd2646d25ac13eed7f2d7d56b0bb6f5c7441ca9bf55938f5c9d3284d51639a15485a12204ab42b987bf51d6eeb77579b52bbbb9af1c576bafa303b5b4794d8247e20b89fad45c1cac428816d72ce9aeb26f21901c0388e3a7d9d7cfc3ce2ebfba7f930c2300c0b489d04f8950762fa8da94f44899bfcabad4eab3a030e1f87c5ec2801396726923fe50f2ec7c98c0b0f5e850000000049454e44ae426082</data>
+    </image>
+    <image name="image3">
+        <data format="PNG" length="208">89504e470d0a1a0a0000000d494844520000001200000012080600000056ce8e570000009749444154388dcdd44d0ec2400805e047e34948bc04b735e959b8840957c14d694471d07616be64361df295f96949553123cb14e52fa14b5720223e9a57556a3b1211777754236277f321144815228299a56725f42b5242df22cc8cf5b6d6d01184af9c37fb0c026cc71f474c44ef0ad0223bf45cfc1a666e91b4b4513a2475146faed2210040f11b891bfab1ab01923b6a0abb4cfbfa1f54fd62bebe79e6830000000049454e44ae426082</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PitchModS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>FMS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>PWMS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>AttackS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>DecayS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>SustainS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_3</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>ReleaseS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_4</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>FreqS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_5</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>FMS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>PWMS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_3</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>AttackS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_5</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>SustainS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_3_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>ReleaseS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_4_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>ResS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_5_5</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>EnvModS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_5_3</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>AttackS3</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_5_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>DecayS3</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_2_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>SustainS3</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_3_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>ReleaseS3</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_4_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>PitchModS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_4</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>DecayS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_3_2_2_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>CutoffS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_5_5_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>DetuneS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_6</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>DetuneS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_6_2</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>PWS</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_2_3</receiver>
+        <slot>display(int)</slot>
+    </connection>
+    <connection>
+        <sender>PWS2</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>LCDNumber1_2_4</receiver>
+        <slot>display(int)</slot>
+    </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
-- 
cgit v1.2.3