diff options
| author | Robert Jonsson <spamatica@gmail.com> | 2011-04-15 18:52:45 +0000 | 
|---|---|---|
| committer | Robert Jonsson <spamatica@gmail.com> | 2011-04-15 18:52:45 +0000 | 
| commit | 47a10173ea203de2036dd00791fe5c24fb673135 (patch) | |
| tree | 6cb2e59a1e099adb30ec4f394097e33974c54ac4 /attic/muse_qt4_evolution/synti/vam | |
| parent | 8edb9ca0e8e056faa0b488c947e7447a8148f880 (diff) | |
removing unnecessary duplication
Diffstat (limited to 'attic/muse_qt4_evolution/synti/vam')
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/CMakeLists.txt | 50 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/COPYING | 340 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/ChangeLog | 16 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/README | 42 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/TODO | 3 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/vam.cpp | 801 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/vam.h | 37 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/vamgui.cpp | 618 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/vamgui.h | 77 | ||||
| -rw-r--r-- | attic/muse_qt4_evolution/synti/vam/vamgui.ui | 1535 | 
10 files changed, 0 insertions, 3519 deletions
| diff --git a/attic/muse_qt4_evolution/synti/vam/CMakeLists.txt b/attic/muse_qt4_evolution/synti/vam/CMakeLists.txt deleted file mode 100644 index 5311f3bf..00000000 --- a/attic/muse_qt4_evolution/synti/vam/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -#============================================================================= -#  MusE -#  Linux Music Editor -#  $Id:$ -# -#  Copyright (C) 2002-2006 by Werner Schweer and others -# -#  This program is free software; you can redistribute it and/or modify -#  it under the terms of the GNU General Public License version 2. -# -#  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. -#============================================================================= - -QT4_WRAP_CPP ( vam_mocs vamgui.h ) -QT4_WRAP_UI (  vam_uis vamgui.ui ) - -add_library ( vam SHARED  -      vam.cpp  -      vamgui.cpp -      vamgui.h -      ${vam_mocs} -      ${vam_uis} -      ) - -target_link_libraries( vam synti ) - -# - tell cmake to name target vam.so instead of  -#   libvam.so -# - use precompiled header files -# -set_target_properties ( vam  -   PROPERTIES PREFIX "" -   COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" -   ) - -target_link_libraries(vam -      al -      synti -      ${QT_LIBRARIES} -      ) - -install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ vam ) - diff --git a/attic/muse_qt4_evolution/synti/vam/COPYING b/attic/muse_qt4_evolution/synti/vam/COPYING deleted file mode 100644 index dc63aaca..00000000 --- a/attic/muse_qt4_evolution/synti/vam/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - -		    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/attic/muse_qt4_evolution/synti/vam/ChangeLog b/attic/muse_qt4_evolution/synti/vam/ChangeLog deleted file mode 100644 index 1a7e4258..00000000 --- a/attic/muse_qt4_evolution/synti/vam/ChangeLog +++ /dev/null @@ -1,16 +0,0 @@ - -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/attic/muse_qt4_evolution/synti/vam/README b/attic/muse_qt4_evolution/synti/vam/README deleted file mode 100644 index 1b1ee269..00000000 --- a/attic/muse_qt4_evolution/synti/vam/README +++ /dev/null @@ -1,42 +0,0 @@ -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/attic/muse_qt4_evolution/synti/vam/TODO b/attic/muse_qt4_evolution/synti/vam/TODO deleted file mode 100644 index 370bb521..00000000 --- a/attic/muse_qt4_evolution/synti/vam/TODO +++ /dev/null @@ -1,3 +0,0 @@ - -1. Make bandlimited wavetables!! -2. Split VAM into a polyphonic and a monophonic synth
\ No newline at end of file diff --git a/attic/muse_qt4_evolution/synti/vam/vam.cpp b/attic/muse_qt4_evolution/synti/vam/vam.cpp deleted file mode 100644 index bc5c035a..00000000 --- a/attic/muse_qt4_evolution/synti/vam/vam.cpp +++ /dev/null @@ -1,801 +0,0 @@ -//========================================================= -//  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ölund (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 "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 - -	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); - -	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*); -      void getInitData(int* n, const unsigned char**p); - -      void setController(int ctrl, int data); - -	float *wave_tbl(int wave); -	double lowpass_filter(double cutoff, double resonance, double input, LPFilter *f); - -      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); - -      VAMGui* gui; - -    public: -	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() -      { -      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->hide();      // to avoid flicker during MusE startup -      gui->setWindowTitle(QString(name)); - -	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; -      } - -//--------------------------------------------------------- -//   write -//--------------------------------------------------------- - -void VAM::process(float** ports, int offset, int sampleCount) -{ -      // -      //  get and process all pending events from the -      //  synthesizer GUI -      // -      while (gui->fifoSize()) { -            MidiEvent ev = gui->readEvent(); -            if (ev.type() == ME_CONTROLLER) { -                  // process local? -                  setController(ev.dataA() & 0xfff, ev.dataB()); -                  sendEvent(ev); -                  } -            else -                  printf("Organ::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(); -	} -} - -//--------------------------------------------------------- -//   setController -//--------------------------------------------------------- - -bool VAM::setController(int /*channel*/, int ctrl, int data) -{ -      setController(ctrl & 0xfff, data); -      MidiEvent ev(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()); -			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; -} - -//--------------------------------------------------------- -//   parameterRequest -//--------------------------------------------------------- - -#if 0 -void VAM::parameterRequest(int ctrl) -{ -	if(ctrl >= NUM_CONTROLLER) { -		fprintf(stderr, "VAM: illegal controller %d request\n", ctrl); -		return; -	} -	unsigned char data[] = { 0x7c, 0x2, 0x2, 0x0, 0x0, 0x0 }; -	data[3] = ctrl; -	data[4] = controller[ctrl] & 0x7f; -	data[5] = (controller[ctrl] >> 7) & 0x7f; -      sendSysex(data, sizeof(data)); -} -#endif - -//--------------------------------------------------------- -//   getInitData -//--------------------------------------------------------- - -void VAM::getInitData(int* n, const unsigned char**p) -      { -      int* d = idata; -      for (int i = 0; i < NUM_CONTROLLER; ++i) { -            int val = controller[i]; -            *d++ = val; -            } -      *n = NUM_CONTROLLER * sizeof(int); // sizeof(idata); -      *p = (unsigned char*)idata; -      } - -//--------------------------------------------------------- -//   sysex -//--------------------------------------------------------- - -bool VAM::sysex(int n, const unsigned char* data) -      { -      if (n != (NUM_CONTROLLER * sizeof(int))) { -            printf("Organ: unknown sysex\n"); -            return false; -            } -      int* s = (int*) data; -      for (int i = 0; i < NUM_CONTROLLER; ++i) { -            int val = *s++; -            setController(0, i, val); -            } -      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 -//--------------------------------------------------------- - -static Mess* instantiate(int sr, 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/attic/muse_qt4_evolution/synti/vam/vam.h b/attic/muse_qt4_evolution/synti/vam/vam.h deleted file mode 100644 index 44bfc032..00000000 --- a/attic/muse_qt4_evolution/synti/vam/vam.h +++ /dev/null @@ -1,37 +0,0 @@ -// vam.h -// -//  (C) Copyright 2002 Jotsif Lindman Hörnlund (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/attic/muse_qt4_evolution/synti/vam/vamgui.cpp b/attic/muse_qt4_evolution/synti/vam/vamgui.cpp deleted file mode 100644 index c4d93672..00000000 --- a/attic/muse_qt4_evolution/synti/vam/vamgui.cpp +++ /dev/null @@ -1,618 +0,0 @@ -//========================================================= -//  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ölund (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 "vamgui.h" -#include "vam.h" - -#include "al/xml.h" -using AL::Xml; - -#include "muse/midi.h" -#include "muse/midictrl.h" - -//--------------------------------------------------------- -//   Preset -//--------------------------------------------------------- - -struct Preset { -	QString name; -	int ctrl[NUM_CONTROLLER]; -	void readConfiguration(QDomNode); -	void readControl(QDomNode); -	void writeConfiguration(Xml& xml); -      }; - -std::list<Preset> presets; -typedef std::list<Preset>::iterator iPreset; - -QString museProject; -QString museGlobalShare; -QString museUser; - -QString instanceName; -//static const char* presetFileTypes[] = { -//      "Presets (*.pre)", -//      0 -//      }; - -//--------------------------------------------------------- -//   readControl -//--------------------------------------------------------- - -void Preset::readControl(QDomNode) -{ -#if 0 -	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; -		} -	} -#endif -} - -//--------------------------------------------------------- -//   readConfiguration -//--------------------------------------------------------- - -void Preset::readConfiguration(QDomNode /*node*/) -{ -#if 0 -	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; -		} -	} -#endif -} - -//--------------------------------------------------------- -//   writeConfiguration -//--------------------------------------------------------- - -void Preset::writeConfiguration(Xml& xml) -{ -	xml.stag(QString("preset name=\"%1\"").arg(name)); -	for (int i = 0; i < NUM_CONTROLLER; ++i) { -		xml.tagE(QString("control idx=\"%1\" val=\"%2\"").arg(i).arg(ctrl[i])); -	} -	xml.etag("preset"); -} - -//--------------------------------------------------------- -//   VAMGui -//--------------------------------------------------------- - -VAMGui::VAMGui() -//   : QWidget(0, "vamgui", Qt::WType_TopLevel), -   : QWidget(0), -	MessGui() -{ -   setupUi(this); -      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(QListWidgetItem*)), -		this, SLOT(presetClicked(QListWidgetItem*))); -	// 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; -      } - -//--------------------------------------------------------- -//   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->maximum(); -		val = (slider->value() * 16383 + max/2) / max; -	      } -	else if (ctrl->type == SynthGuiCtrl::COMBOBOX) { -		val = ((QComboBox*)(ctrl->editor))->currentIndex(); -	      } -	else if (ctrl->type == SynthGuiCtrl::SWITCH) { -		val = ((QCheckBox*)(ctrl->editor))->isChecked(); -	      } -      sendController(0, idx + CTRL_RPN14_OFFSET, val); -      } - -//--------------------------------------------------------- -//   presetClicked -//--------------------------------------------------------- - -void VAMGui::presetClicked(QListWidgetItem* 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->addItem(name); -} - -//--------------------------------------------------------- -//   deleteNamedPreset -//--------------------------------------------------------- -void VAMGui::deleteNamedPreset(const QString& name) -{ -	QListWidgetItem * item = presetList->findItems(name,Qt::MatchExactly).at(0); -	if (!item) { -		fprintf(stderr, "%s: Could not find preset!\n", __FUNCTION__); -		return; -	} -	presetList->clearSelection(); -      delete item; -//	int index = presetList->row(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->maximum(); -			val = (slider->value() * 16383 + max/2) / max; -		} -		else if (ctrl->type == SynthGuiCtrl::COMBOBOX) { -			val = ((QComboBox*)(ctrl->editor))->currentIndex(); -		} -		else if (ctrl->type == SynthGuiCtrl::SWITCH) { -			val = ((QCheckBox*)(ctrl->editor))->isChecked(); -		} - -		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.toLatin1().data(); -	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->maximum(); -		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))->setCurrentIndex(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 MidiEvent& 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 0   // TODO -	QString iname; -	QString s(getenv("HOME")); -	QString fn = getOpenFileName(s, presetFileTypes, this, -         tr("MusE: Load VAM Presets"), 0); -	if (fn.isEmpty()) -		return; -	bool popenFlag; -	FILE* f = 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().toLatin1().data()); -					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*/) -{ -#if 0 -	bool popenFlag; -	FILE* f = 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 0 // TODO -	QString s(getenv("MUSE")); -	QString fn = getSaveFileName(s, presetFileTypes, this, -         tr("MusE: Save VAM Presets")); -	if (fn.isEmpty()) -		return; -	doSavePresets (fn, true); -#endif -} - - -//--------------------------------------------------------- -//   savePresetsToFilePressed -//--------------------------------------------------------- - -void VAMGui::savePresetsToFilePressed() -{ -	if (!presetFileName) return; -	doSavePresets (*presetFileName, false); -} - -//--------------------------------------------------------- -//   deletePresetPressed -//--------------------------------------------------------- - -void VAMGui::deletePresetPressed() -{ -	deleteNamedPreset (presetList->currentItem()->text()); -} - -//--------------------------------------------------------- -//   readMessage -//--------------------------------------------------------- - -void VAMGui::readMessage(int) -      { -      MessGui::readMessage(); -      } - diff --git a/attic/muse_qt4_evolution/synti/vam/vamgui.h b/attic/muse_qt4_evolution/synti/vam/vamgui.h deleted file mode 100644 index 4ee02681..00000000 --- a/attic/muse_qt4_evolution/synti/vam/vamgui.h +++ /dev/null @@ -1,77 +0,0 @@ -//========================================================= -//  MusE -//  Linux Music Editor -//  vamgui.h -// -//  (C) Copyright 2002 Jotsif Lindman Hörnlund (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 "ui_vamgui.h" -#include "vam.h" -#include "libsynti/gui.h" - -class Preset; - -//--------------------------------------------------------- -//   VAMGui -//--------------------------------------------------------- - -class VAMGui : public QWidget, public Ui::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 MidiEvent&); - -   private slots: -      void ctrlChanged(int idx); - -      void presetClicked(QListWidgetItem*); -      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: -      VAMGui(); -      }; - -#endif /* __VAMGUI_H */ - - diff --git a/attic/muse_qt4_evolution/synti/vam/vamgui.ui b/attic/muse_qt4_evolution/synti/vam/vamgui.ui deleted file mode 100644 index 7b849a58..00000000 --- a/attic/muse_qt4_evolution/synti/vam/vamgui.ui +++ /dev/null @@ -1,1535 +0,0 @@ -<ui version="4.0" > - <author></author> - <comment></comment> - <exportmacro></exportmacro> - <class>VAMGuiBase</class> - <widget class="QWidget" name="VAMGuiBase" > -  <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="windowTitle" > -   <string>Virtual Analogue for MusE</string> -  </property> -  <layout class="QGridLayout" > -   <property name="margin" > -    <number>11</number> -   </property> -   <property name="spacing" > -    <number>6</number> -   </property> -   <item row="1" column="0" colspan="2" > -    <widget class="QGroupBox" name="GroupBox11" > -     <property name="title" > -      <string>LFO</string> -     </property> -     <layout class="QHBoxLayout" > -      <property name="margin" > -       <number>6</number> -      </property> -      <property name="spacing" > -       <number>2</number> -      </property> -      <item> -       <widget class="QLabel" name="TextLabel3_5" > -        <property name="text" > -         <string>Freq</string> -        </property> -       </widget> -      </item> -      <item> -       <widget class="QSlider" name="FreqS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item> -       <widget class="QLCDNumber" name="LCDNumber1_5" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item> -       <widget class="QLabel" name="TextLabel1_2_2" > -        <property name="text" > -         <string>Waveform</string> -        </property> -       </widget> -      </item> -      <item> -       <widget class="QComboBox" name="Waveform2_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> -       </widget> -      </item> -     </layout> -    </widget> -   </item> -   <item row="2" column="0" colspan="2" > -    <widget class="QGroupBox" name="GroupBox12" > -     <property name="title" > -      <string>Filter</string> -     </property> -     <layout class="QGridLayout" > -      <property name="margin" > -       <number>6</number> -      </property> -      <property name="spacing" > -       <number>2</number> -      </property> -      <item row="0" column="0" > -       <widget class="QLabel" name="TextLabel3_5_3" > -        <property name="text" > -         <string>EnvMod</string> -        </property> -       </widget> -      </item> -      <item row="0" column="4" > -       <widget class="QLabel" name="TextLabel3_3_2_5_2" > -        <property name="text" > -         <string>Attack</string> -        </property> -       </widget> -      </item> -      <item row="1" column="4" > -       <widget class="QLabel" name="TextLabel3_3_2_2_2_2" > -        <property name="text" > -         <string>Decay</string> -        </property> -       </widget> -      </item> -      <item row="2" column="4" > -       <widget class="QLabel" name="TextLabel3_3_2_3_2_2" > -        <property name="text" > -         <string>Sustain</string> -        </property> -       </widget> -      </item> -      <item row="3" column="4" > -       <widget class="QLabel" name="TextLabel3_3_2_4_2_2" > -        <property name="text" > -         <string>Release</string> -        </property> -       </widget> -      </item> -      <item row="0" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_5_3" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="0" column="6" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_5_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="6" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_2_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="6" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_3_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="3" column="6" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_4_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_5_5" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="0" > -       <widget class="QLabel" name="TextLabel1_3" > -        <property name="text" > -         <string>Cutoff</string> -        </property> -       </widget> -      </item> -      <item row="1" column="0" > -       <widget class="QLabel" name="TextLabel3_5_5" > -        <property name="text" > -         <string>Resonance</string> -        </property> -       </widget> -      </item> -      <item row="3" column="0" colspan="2" > -       <widget class="QCheckBox" name="FilterInvert" > -        <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> -      </item> -      <item row="3" column="2" colspan="2" > -       <widget class="QCheckBox" name="KeyTrack" > -        <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> -      </item> -      <item row="2" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_5_5_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="0" column="1" colspan="2" > -       <widget class="QSlider" name="EnvModS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="1" colspan="2" > -       <widget class="QSlider" name="ResS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="1" colspan="2" > -       <widget class="QSlider" name="CutoffS" > -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -        <property name="tickInterval" > -         <number>25</number> -        </property> -       </widget> -      </item> -      <item row="0" column="5" > -       <widget class="QSlider" name="AttackS3" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="5" > -       <widget class="QSlider" name="DecayS3" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="5" > -       <widget class="QSlider" name="SustainS3" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="3" column="5" > -       <widget class="QSlider" name="ReleaseS3" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -     </layout> -    </widget> -   </item> -   <item row="0" column="2" > -    <widget class="QGroupBox" name="GroupBox5_3" > -     <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> -     <layout class="QGridLayout" > -      <property name="margin" > -       <number>6</number> -      </property> -      <property name="spacing" > -       <number>2</number> -      </property> -      <item row="0" column="0" > -       <widget class="QListWidget" name="presetList" > -        <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> -       </widget> -      </item> -      <item row="1" column="0" > -       <widget class="QLabel" name="fileName" > -        <property name="text" > -         <string/> -        </property> -       </widget> -      </item> -      <item row="2" column="0" > -       <widget class="QLineEdit" name="presetNameEdit" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>3</hsizetype> -          <vsizetype>0</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -       </widget> -      </item> -      <item row="3" column="0" > -       <layout class="QHBoxLayout" > -        <property name="margin" > -         <number>0</number> -        </property> -        <property name="spacing" > -         <number>0</number> -        </property> -        <item> -         <widget class="QToolButton" name="presetSet" > -          <property name="sizePolicy" > -           <sizepolicy> -            <hsizetype>5</hsizetype> -            <vsizetype>5</vsizetype> -            <horstretch>0</horstretch> -            <verstretch>0</verstretch> -           </sizepolicy> -          </property> -          <property name="toolTip" > -           <string/> -          </property> -          <property name="text" > -           <string>Set</string> -          </property> -         </widget> -        </item> -        <item> -         <widget class="QToolButton" name="loadPresets" > -          <property name="sizePolicy" > -           <sizepolicy> -            <hsizetype>5</hsizetype> -            <vsizetype>5</vsizetype> -            <horstretch>0</horstretch> -            <verstretch>0</verstretch> -           </sizepolicy> -          </property> -          <property name="toolTip" > -           <string>load preset list</string> -          </property> -          <property name="text" > -           <string/> -          </property> -          <property name="icon" > -           <iconset>image0</iconset> -          </property> -         </widget> -        </item> -        <item> -         <widget class="QToolButton" name="savePresetsToFile" > -          <property name="toolTip" > -           <string>save preset list</string> -          </property> -          <property name="text" > -           <string/> -          </property> -          <property name="icon" > -           <iconset>image1</iconset> -          </property> -         </widget> -        </item> -        <item> -         <widget class="QToolButton" name="savePresets" > -          <property name="sizePolicy" > -           <sizepolicy> -            <hsizetype>5</hsizetype> -            <vsizetype>5</vsizetype> -            <horstretch>0</horstretch> -            <verstretch>0</verstretch> -           </sizepolicy> -          </property> -          <property name="toolTip" > -           <string>save preset list to a new file</string> -          </property> -          <property name="text" > -           <string/> -          </property> -          <property name="icon" > -           <iconset>image2</iconset> -          </property> -         </widget> -        </item> -        <item> -         <widget class="QToolButton" name="deletePreset" > -          <property name="toolTip" > -           <string>delete preset</string> -          </property> -          <property name="text" > -           <string/> -          </property> -          <property name="icon" > -           <iconset>image3</iconset> -          </property> -         </widget> -        </item> -        <item> -         <spacer> -          <property name="orientation" > -           <enum>Qt::Horizontal</enum> -          </property> -          <property name="sizeType" > -           <enum>QSizePolicy::Expanding</enum> -          </property> -          <property name="sizeHint" > -           <size> -            <width>20</width> -            <height>20</height> -           </size> -          </property> -         </spacer> -        </item> -       </layout> -      </item> -     </layout> -    </widget> -   </item> -   <item row="0" column="0" > -    <widget class="QGroupBox" name="GroupBox5" > -     <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> -     <layout class="QGridLayout" > -      <property name="margin" > -       <number>6</number> -      </property> -      <property name="spacing" > -       <number>2</number> -      </property> -      <item row="1" column="0" > -       <widget class="QLabel" name="TextLabel3" > -        <property name="text" > -         <string>Pitch</string> -        </property> -       </widget> -      </item> -      <item row="1" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1" > -        <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="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="0" > -       <widget class="QLabel" name="TextLabel1_4" > -        <property name="text" > -         <string>Detune</string> -        </property> -       </widget> -      </item> -      <item row="2" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_6" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="1" > -       <widget class="QSlider" name="DetuneS" > -        <property name="minimum" > -         <number>-50</number> -        </property> -        <property name="maximum" > -         <number>50</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="1" > -       <widget class="QSlider" name="PitchModS" > -        <property name="minimumSize" > -         <size> -          <width>100</width> -          <height>0</height> -         </size> -        </property> -        <property name="minimum" > -         <number>-24</number> -        </property> -        <property name="maximum" > -         <number>24</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="7" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="5" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_3" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="6" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="5" column="0" > -       <widget class="QLabel" name="TextLabel3_3" > -        <property name="text" > -         <string>PWM</string> -        </property> -       </widget> -      </item> -      <item row="7" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_2" > -        <property name="text" > -         <string>Decay</string> -        </property> -       </widget> -      </item> -      <item row="9" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_4" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="8" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_3" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="8" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_3" > -        <property name="text" > -         <string>Sustain</string> -        </property> -       </widget> -      </item> -      <item row="9" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_4" > -        <property name="text" > -         <string>Release</string> -        </property> -       </widget> -      </item> -      <item row="6" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2" > -        <property name="text" > -         <string>Attack</string> -        </property> -       </widget> -      </item> -      <item row="3" column="0" > -       <widget class="QLabel" name="TextLabel3_2" > -        <property name="text" > -         <string>FM</string> -        </property> -       </widget> -      </item> -      <item row="3" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="4" column="0" > -       <widget class="QLabel" name="TextLabel3_2_3" > -        <property name="text" > -         <string>PW</string> -        </property> -       </widget> -      </item> -      <item row="4" column="2" > -       <widget class="QLCDNumber" name="LCDNumber1_2_3" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="3" column="1" > -       <widget class="QSlider" name="FMS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="4" column="1" > -       <widget class="QSlider" name="PWS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="5" column="1" > -       <widget class="QSlider" name="PWMS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="6" column="1" > -       <widget class="QSlider" name="AttackS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="7" column="1" > -       <widget class="QSlider" name="DecayS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="8" column="1" > -       <widget class="QSlider" name="SustainS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="9" column="1" > -       <widget class="QSlider" name="ReleaseS" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="0" column="0" > -       <widget class="QLabel" name="TextLabel1" > -        <property name="text" > -         <string>Waveform</string> -        </property> -       </widget> -      </item> -      <item row="0" column="1" colspan="2" > -       <widget class="QComboBox" name="Waveform" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>3</hsizetype> -          <vsizetype>0</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <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> -       </widget> -      </item> -     </layout> -    </widget> -   </item> -   <item row="0" column="1" > -    <widget class="QGroupBox" name="GroupBox5_2" > -     <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> -     <layout class="QGridLayout" > -      <property name="margin" > -       <number>6</number> -      </property> -      <property name="spacing" > -       <number>2</number> -      </property> -      <item row="1" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_4" > -        <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="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="1" colspan="2" > -       <widget class="QSlider" name="PitchModS2" > -        <property name="minimumSize" > -         <size> -          <width>100</width> -          <height>0</height> -         </size> -        </property> -        <property name="minimum" > -         <number>-24</number> -        </property> -        <property name="maximum" > -         <number>24</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="3" column="0" > -       <widget class="QLabel" name="TextLabel3_2_2" > -        <property name="text" > -         <string>FM</string> -        </property> -       </widget> -      </item> -      <item row="3" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="2" column="0" > -       <widget class="QLabel" name="TextLabel1_4_2" > -        <property name="text" > -         <string>Detune</string> -        </property> -       </widget> -      </item> -      <item row="2" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_6_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="1" column="0" > -       <widget class="QLabel" name="TextLabel3_4" > -        <property name="text" > -         <string>Pitch</string> -        </property> -       </widget> -      </item> -      <item row="2" column="1" colspan="2" > -       <widget class="QSlider" name="DetuneS2" > -        <property name="minimum" > -         <number>-50</number> -        </property> -        <property name="maximum" > -         <number>50</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="0" column="0" > -       <widget class="QLabel" name="TextLabel1_2" > -        <property name="text" > -         <string>Waveform</string> -        </property> -       </widget> -      </item> -      <item row="0" column="1" > -       <widget class="QComboBox" name="Waveform2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>3</hsizetype> -          <vsizetype>0</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <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> -       </widget> -      </item> -      <item row="9" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_4_2" > -        <property name="text" > -         <string>Release</string> -        </property> -       </widget> -      </item> -      <item row="5" column="0" > -       <widget class="QLabel" name="TextLabel3_3_3" > -        <property name="text" > -         <string>PWM</string> -        </property> -       </widget> -      </item> -      <item row="6" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_5" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="6" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_5" > -        <property name="text" > -         <string>Attack</string> -        </property> -       </widget> -      </item> -      <item row="8" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_3_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="7" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_2_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="7" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_2_2" > -        <property name="text" > -         <string>Decay</string> -        </property> -       </widget> -      </item> -      <item row="9" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_3_2_4_2" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="5" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_3_3" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="8" column="0" > -       <widget class="QLabel" name="TextLabel3_3_2_3_2" > -        <property name="text" > -         <string>Sustain</string> -        </property> -       </widget> -      </item> -      <item row="4" column="3" > -       <widget class="QLCDNumber" name="LCDNumber1_2_4" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>1</vsizetype> -          <horstretch>0</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="numDigits" > -         <number>3</number> -        </property> -        <property name="segmentStyle" > -         <enum>QLCDNumber::Flat</enum> -        </property> -       </widget> -      </item> -      <item row="4" column="0" > -       <widget class="QLabel" name="TextLabel3_2_4" > -        <property name="text" > -         <string>PW</string> -        </property> -       </widget> -      </item> -      <item row="0" column="2" colspan="2" > -       <widget class="QCheckBox" name="DCO2On" > -        <property name="text" > -         <string>On</string> -        </property> -       </widget> -      </item> -      <item row="3" column="1" colspan="2" > -       <widget class="QSlider" name="FMS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="4" column="1" colspan="2" > -       <widget class="QSlider" name="PWS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="5" column="1" colspan="2" > -       <widget class="QSlider" name="PWMS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="6" column="1" colspan="2" > -       <widget class="QSlider" name="AttackS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="7" column="1" colspan="2" > -       <widget class="QSlider" name="DecayS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="8" column="1" colspan="2" > -       <widget class="QSlider" name="SustainS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -      <item row="9" column="1" colspan="2" > -       <widget class="QSlider" name="ReleaseS2" > -        <property name="minimum" > -         <number>0</number> -        </property> -        <property name="maximum" > -         <number>255</number> -        </property> -        <property name="pageStep" > -         <number>1</number> -        </property> -        <property name="orientation" > -         <enum>Qt::Horizontal</enum> -        </property> -       </widget> -      </item> -     </layout> -    </widget> -   </item> -   <item rowspan="2" row="1" column="2" > -    <widget class="QLabel" name="TextLabel1_5" > -     <property name="text" > -      <string>VAM 1.0beta2 -Virtual Analog for MusE -Released under GPL. -Copyright(C) 2002 -Jotsif Lindman Hörnlund -( jotsif@linux.nu )</string> -     </property> -     <property name="alignment" > -      <set>Qt::AlignCenter</set> -     </property> -    </widget> -   </item> -  </layout> - </widget> - <layoutdefault spacing="6" margin="11" /> - <pixmapfunction></pixmapfunction> - <resources/> - <connections/> -</ui> | 
