summaryrefslogtreecommitdiff
path: root/muse2
diff options
context:
space:
mode:
Diffstat (limited to 'muse2')
-rw-r--r--muse2/ChangeLog1
-rw-r--r--muse2/muse/icons.cpp12
-rw-r--r--muse2/muse/icons.h3
-rw-r--r--muse2/synti/fluidsynth/CMakeLists.txt9
-rw-r--r--muse2/synti/fluidsynth/fluidsynth.qrc8
-rw-r--r--muse2/synti/fluidsynth/fluidsynth0.pngbin0 -> 1195 bytes
-rw-r--r--muse2/synti/fluidsynth/fluidsynth1.pngbin0 -> 7252 bytes
-rw-r--r--muse2/synti/fluidsynth/fluidsynthgui.cpp141
-rw-r--r--muse2/synti/fluidsynth/fluidsynthgui.h11
-rw-r--r--muse2/synti/fluidsynth/fluidsynthguibase.ui1185
-rw-r--r--muse2/xpm/saw.xpm19
-rw-r--r--muse2/xpm/sine.xpm19
12 files changed, 708 insertions, 700 deletions
diff --git a/muse2/ChangeLog b/muse2/ChangeLog
index 8299cb50..d3b85a57 100644
--- a/muse2/ChangeLog
+++ b/muse2/ChangeLog
@@ -7,6 +7,7 @@
- Fixed delete shortcut key. Set in MusE constructor. (Tim)
- Reinstated special Toplevel::CLIPLIST case in MusE::toplevelDeleted(). Caused problems. (Tim)
TODO: Still not right with the menu checkmark...
+ - Ported fluidsynthgui to Qt4 (Orcan)
23.11.2010
- Added Track::cname(), applied to strip labels' object names, so they may be used in style sheets. (Tim)
- Added struct SysEx and some friends, to minstrument.h, prep. for the instrument editor. (Tim)
diff --git a/muse2/muse/icons.cpp b/muse2/muse/icons.cpp
index 95bfecdd..1879e2b4 100644
--- a/muse2/muse/icons.cpp
+++ b/muse2/muse/icons.cpp
@@ -214,6 +214,9 @@
#include "xpm/project.xpm"
#include "xpm/user.xpm"
+#include "xpm/sine.xpm"
+#include "xpm/saw.xpm"
+
#if QT_VERSION >= 0x040600
#define MPIXMAP(a,b) QPixmap(QIcon::fromTheme(b, QIcon(QPixmap(a))).pixmap(QPixmap(a).width(),QPixmap(a).height()))
#define MICON(a,b) QIcon(QIcon::fromTheme(b, QIcon(QPixmap(a))))
@@ -430,6 +433,10 @@ QIcon* globalIcon;
QIcon* projectIcon;
QIcon* userIcon;
+
+QPixmap* sineIcon;
+QPixmap* sawIcon;
+
//---------------------------------------------------------
// initIcons
//---------------------------------------------------------
@@ -510,7 +517,7 @@ void initIcons()
redoIconS = new MPIXMAP(redoS_xpm, "edit-redo");
speakerIcon = new MPIXMAP(speaker_xpm, NULL);
- buttondownIcon = new MPIXMAP(buttondown_xpm, NULL);
+ buttondownIcon = new MPIXMAP(buttondown_xpm, "arrow-down");
configureIcon = new MPIXMAP(configure_xpm, NULL);
editmuteIcon = new MPIXMAP(editmute_xpm, NULL);
@@ -640,5 +647,8 @@ void initIcons()
globalIcon = new MICON(global_xpm, "folder");
userIcon = new MICON(user_xpm, "user-home");
projectIcon = new MICON(project_xpm, "folder-sound");
+
+ sineIcon = new MPIXMAP(sine_xpm, NULL);
+ sawIcon = new MPIXMAP(saw_xpm, NULL);
}
diff --git a/muse2/muse/icons.h b/muse2/muse/icons.h
index 146a5e3e..17fa7d6f 100644
--- a/muse2/muse/icons.h
+++ b/muse2/muse/icons.h
@@ -221,5 +221,8 @@ extern QIcon* globalIcon;
extern QIcon* projectIcon;
extern QIcon* userIcon;
+extern QPixmap* sineIcon;
+extern QPixmap* sawIcon;
+
#endif
diff --git a/muse2/synti/fluidsynth/CMakeLists.txt b/muse2/synti/fluidsynth/CMakeLists.txt
index 0c3e1b97..e33bf912 100644
--- a/muse2/synti/fluidsynth/CMakeLists.txt
+++ b/muse2/synti/fluidsynth/CMakeLists.txt
@@ -19,8 +19,12 @@
#=============================================================================
QT4_WRAP_CPP ( fluidsynth_mocs fluidsynthgui.h )
-# QT4_WRAP_UI ( fluidsynth_uis fluidsynthgui.ui )
-QT4_WRAP_UI3 ( fluidsynth_uis fluidsynthguibase.ui )
+
+QT4_WRAP_UI ( fluidsynth_uis fluidsynthguibase.ui )
+
+QT4_ADD_RESOURCES (fluidsynth_qrc_files
+ fluidsynth.qrc
+ )
add_library ( fluidsynth SHARED
fluidsynti.cpp
@@ -28,6 +32,7 @@ add_library ( fluidsynth SHARED
fluidsynthgui.h
${fluidsynth_mocs}
${fluidsynth_uis}
+ ${fluidsynth_qrc_files}
)
# target_link_libraries( fluidsynth synti )
diff --git a/muse2/synti/fluidsynth/fluidsynth.qrc b/muse2/synti/fluidsynth/fluidsynth.qrc
new file mode 100644
index 00000000..eda2c6ee
--- /dev/null
+++ b/muse2/synti/fluidsynth/fluidsynth.qrc
@@ -0,0 +1,8 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>fluidsynth0.png</file>
+ <file>fluidsynth1.png</file>
+ </qresource>
+</RCC>
+
diff --git a/muse2/synti/fluidsynth/fluidsynth0.png b/muse2/synti/fluidsynth/fluidsynth0.png
new file mode 100644
index 00000000..2cb25b54
--- /dev/null
+++ b/muse2/synti/fluidsynth/fluidsynth0.png
Binary files differ
diff --git a/muse2/synti/fluidsynth/fluidsynth1.png b/muse2/synti/fluidsynth/fluidsynth1.png
new file mode 100644
index 00000000..58ca0e61
--- /dev/null
+++ b/muse2/synti/fluidsynth/fluidsynth1.png
Binary files differ
diff --git a/muse2/synti/fluidsynth/fluidsynthgui.cpp b/muse2/synti/fluidsynth/fluidsynthgui.cpp
index bdb0719b..bb82fa92 100644
--- a/muse2/synti/fluidsynth/fluidsynthgui.cpp
+++ b/muse2/synti/fluidsynth/fluidsynthgui.cpp
@@ -9,24 +9,17 @@
#include "fluidsynthgui.h"
#include "fluidsynti.h"
-#include <qpushbutton.h>
-
-#include <iostream>
-#include <qlineedit.h>
-#include <q3filedialog.h>
-#include <qsocketnotifier.h>
-#include <qpixmap.h>
-#include <q3listview.h>
-#include <qslider.h>
-#include <qmessagebox.h>
-#include <q3popupmenu.h>
-#include <q3header.h>
-#include <qcheckbox.h>
-#include <qspinbox.h>
-#include <qcombobox.h>
+
+#include <QFileDialog>
+#include <QIcon>
+#include <QLabel>
+#include <QMenu>
+#include <QSocketNotifier>
+#include <QTableWidgetItem>
+#include <QTreeWidgetItem>
#include "muse/midi.h"
-#include "xpm/buttondown.xpm"
+#include "icons.h"
/*
@@ -41,15 +34,24 @@
FluidSynthGui::FluidSynthGui()
: MessGui()
{
+ setWindowIcon(QIcon(":/fluidsynth0.png"));
+ setupUi(this);
+ channelListView->setRowCount(FS_MAX_NR_OF_CHANNELS);
+ channelListView->setSelectionMode(QAbstractItemView::SingleSelection);
+ QLabel *fluidLabel = new QLabel;
+ fluidLabel->setPixmap(QIcon(":/fluidsynth1.png").pixmap(124, 45));
+ FluidGrid->addWidget(fluidLabel, 2, 1, Qt::AlignHCenter);
+
+ ChorusType->setItemIcon(0, QIcon(*sineIcon));
+ ChorusType->setItemIcon(1, QIcon(*sawIcon));
+
//Connect socketnotifier to fifo
QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read);
connect(s, SIGNAL(activated(int)), SLOT(readMessage(int)));
connect (Push, SIGNAL (clicked()), SLOT(loadClicked()));
lastdir = "";
-
- channelListView->setColumnWidthMode(FS_CHANNEL_COL,Q3ListView::Maximum);
- channelListView->setColumnWidthMode(FS_SF_ID_COL,Q3ListView::Maximum);
+
ReverbFrame->setEnabled(true);
ChorusFrame->setEnabled(true);
@@ -63,8 +65,8 @@ FluidSynthGui::FluidSynthGui()
connect(Gain, SIGNAL(valueChanged(int)), SLOT(changeGain(int)));
connect(dumpInfoButton , SIGNAL(clicked()), SLOT(dumpInfo()));
- connect(channelListView, SIGNAL(pressed(Q3ListViewItem*,const QPoint&,int)),
- this, SLOT(channelItemClicked(Q3ListViewItem*,const QPoint&,int)));
+ connect(channelListView, SIGNAL(itemClicked(QTableWidgetItem*)),
+ this, SLOT(channelItemClicked(QTableWidgetItem*)));
connect(Reverb, SIGNAL (toggled(bool)), SLOT(toggleReverb(bool)));
connect(ReverbLevel, SIGNAL (valueChanged (int)), SLOT(changeReverbLevel(int)));
@@ -73,8 +75,8 @@ FluidSynthGui::FluidSynthGui()
connect(ReverbWidth, SIGNAL (valueChanged (int)), SLOT(changeReverbWidth(int)));
connect (Pop, SIGNAL (clicked()), SLOT(popClicked()));
- connect(sfListView, SIGNAL(pressed(Q3ListViewItem*,const QPoint&,int)),
- this, SLOT(sfItemClicked(Q3ListViewItem*,const QPoint&,int)));
+ connect(sfListView, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
+ this, SLOT(sfItemClicked(QTreeWidgetItem*, int)));
connect(Chorus, SIGNAL (toggled (bool)), SLOT(toggleChorus (bool)));
connect(ChorusNumber, SIGNAL (valueChanged (int)), SLOT(changeChorusNumber (int)));
connect(ChorusType, SIGNAL (activated (int)), SLOT(changeChorusType (int)));
@@ -158,7 +160,7 @@ void FluidSynthGui::pushClicked()
void FluidSynthGui::loadClicked()
{
- QString filename = Q3FileDialog::getOpenFileName(lastdir, QString("*.[Ss][Ff]2"),
+ QString filename = QFileDialog::getOpenFileName(lastdir, QString("*.[Ss][Ff]2"),
this,
"Load Soundfont dialog",
"Choose soundfont");
@@ -381,7 +383,7 @@ void FluidSynthGui::updateChannelListView()
{
if (FS_DEBUG)
printf("FluidSynthGui::updateChannelListView\n");
- channelListView->clear();
+ channelListView->clearContents();
for (int i=0; i<FS_MAX_NR_OF_CHANNELS; i++) {
QString chanstr, sfidstr, drumchanstr;
@@ -400,14 +402,15 @@ void FluidSynthGui::updateChannelListView()
drumchanstr = "Yes";
else
drumchanstr = "No";
- Q3ListViewItem* qlvNewItem = new Q3ListViewItem(channelListView);
- qlvNewItem->setText(FS_CHANNEL_COL, chanstr);
- qlvNewItem->setPixmap(FS_SF_ID_COL, buttondown_xpm);
- qlvNewItem->setText(FS_SF_ID_COL, sfidstr);
- qlvNewItem->setPixmap(FS_DRUM_CHANNEL_COL, buttondown_xpm);
- qlvNewItem->setText(FS_DRUM_CHANNEL_COL, drumchanstr);
- channelListView->insertItem(qlvNewItem);
+
+ QTableWidgetItem* chan_ = new QTableWidgetItem(chanstr);
+ channelListView->setItem(i, FS_CHANNEL_COL, chan_);
+ QTableWidgetItem* sfid_ = new QTableWidgetItem(QIcon(*buttondownIcon), sfidstr);
+ channelListView->setItem(i, FS_SF_ID_COL, sfid_);
+ QTableWidgetItem* drum_ = new QTableWidgetItem(QIcon(*buttondownIcon), drumchanstr);
+ channelListView->setItem(i, FS_DRUM_CHANNEL_COL, drum_);
}
+ channelListView->resizeColumnsToContents();
}
//---------------------------------------------------------
@@ -417,13 +420,13 @@ void FluidSynthGui::updateSoundfontListView()
{
sfListView->clear(); //Clear the listview
for (std::list<FluidGuiSoundFont>::iterator it = stack.begin(); it != stack.end(); it++) {
- Q3ListViewItem* qlvNewItem = new Q3ListViewItem(sfListView);
+ QTreeWidgetItem* qlvNewItem = new QTreeWidgetItem(sfListView);
QString qsid = QString("%1").arg(it->id);
qlvNewItem->setText(FS_ID_COL, qsid);
qlvNewItem->setText(FS_SFNAME_COL, QString(it->name));
- sfListView->insertItem(qlvNewItem);
+ sfListView->addTopLevelItem(qlvNewItem);
}
- sfListView->sort();
+ sfListView->sortItems(1, Qt::AscendingOrder);
}
//---------------------------------------------------------
@@ -466,14 +469,16 @@ QString FluidSynthGui::getSoundFontName(int id)
// change channel parameters like soundfont / drumchannel on/off
//---------------------------------------------------------
-void FluidSynthGui::channelItemClicked(Q3ListViewItem* item, const QPoint&, int col)
+void FluidSynthGui::channelItemClicked(QTableWidgetItem* item)
{
+ int col = item->column();
+
if (col == FS_SF_ID_COL) {
- Q3PopupMenu* popup = new Q3PopupMenu(this);
- QPoint ppt = channelListView->itemRect(item).bottomLeft();
- Q3ListView* listView = item->listView();
- ppt += QPoint(listView->header()->sectionPos(col), listView->header()->height());
- ppt = listView->mapToGlobal(ppt);
+ QMenu* popup = new QMenu(this);
+ QPoint ppt = channelListView->visualItemRect(item).bottomLeft();
+ QTableWidget* listView = item->tableWidget();
+ ppt += QPoint(listView->horizontalHeader()->sectionPosition(col), listView->horizontalHeader()->height());
+ ppt = listView->mapToGlobal(ppt);
int i = 0;
for (std::list<FluidGuiSoundFont>::reverse_iterator it = stack.rbegin(); it != stack.rend(); it++) {
@@ -498,12 +503,15 @@ void FluidSynthGui::channelItemClicked(Q3ListViewItem* item, const QPoint&, int
printf("\n");
}
printf("\n\n");*/
- popup->insertItem(it->name,i);
+ QAction* act1 = popup->addAction(it->name);
+ act1->setData(i);
}
int lastindex = i+1;
- popup->insertItem("unspecified",lastindex);
- int index = popup->exec(ppt, 0);
- if (index !=-1) {
+ QAction *lastaction = popup->addAction("unspecified");
+ lastaction->setData(lastindex);
+ QAction * act = popup->exec(ppt, 0);
+ if (act) {
+ int index = act->data().toInt();
byte sfid;
QString fontname;
if (index == lastindex) {
@@ -511,32 +519,37 @@ void FluidSynthGui::channelItemClicked(Q3ListViewItem* item, const QPoint&, int
fontname = "unspecified"; //Actually, it's not possible to reset fluid-channels as for now,
} //so this is just a dummy that makes the synth block any events for the channel
else {
- sfid = getSoundFontId(popup->text(index));
+ sfid = getSoundFontId(act->text());
fontname = getSoundFontName(sfid);
}
- byte channel = atoi(item->text(FS_CHANNEL_COL).latin1()) - 1;
+ byte channel = atoi(item->text().latin1()) - 1;
sendChannelChange(sfid, channel);
- item->setText(FS_SF_ID_COL, fontname);
+ item->setText(fontname);
}
delete popup;
}
// Drumchannel column:
else if (col == FS_DRUM_CHANNEL_COL) {
- Q3PopupMenu* popup = new Q3PopupMenu(this);
- QPoint ppt = channelListView->itemRect(item).bottomLeft();
- Q3ListView* listView = item->listView();
- ppt += QPoint(listView->header()->sectionPos(col), listView->header()->height());
- ppt = listView->mapToGlobal(ppt);
- popup->insertItem("Yes", 1);
- popup->insertItem("No", 0);
- byte channel = atoi(item->text(FS_CHANNEL_COL).latin1()) - 1;
-
- int index = popup->exec(ppt, 0);
- if (index != drumchannels[channel] && index !=-1) {
- sendDrumChannelChange(index, channel);
- drumchannels[channel] = index;
- item->setText(FS_DRUM_CHANNEL_COL, index == 0 ? "No" : "Yes" );
- }
+ QMenu* popup = new QMenu(this);
+ QPoint ppt = channelListView->visualItemRect(item).bottomLeft();
+ QTableWidget* listView = item->tableWidget();
+ ppt += QPoint(listView->horizontalHeader()->sectionPosition(col), listView->horizontalHeader()->height());
+ ppt = listView->mapToGlobal(ppt);
+ QAction * yes = popup->addAction("Yes");
+ yes->setData(1);
+ QAction * no = popup->addAction("No");
+ no->setData(0);
+ byte channel = atoi(item->text().latin1()) - 1;
+
+ QAction * act2 = popup->exec(ppt, 0);
+ if (act2) {
+ int index = act2->data().toInt();
+ if (index != drumchannels[channel]) {
+ sendDrumChannelChange(index, channel);
+ drumchannels[channel] = index;
+ item->setText(index == 0 ? "No" : "Yes" );
+ }
+ }
}
}
@@ -591,7 +604,7 @@ void FluidSynthGui::popClicked()
sendSysex(data,2);
}
-void FluidSynthGui::sfItemClicked(Q3ListViewItem* item, const QPoint&, int /*col*/)
+void FluidSynthGui::sfItemClicked(QTreeWidgetItem* item, int /*col*/)
{
if (item != 0) {
currentlySelectedFont = atoi(item->text(FS_ID_COL));
diff --git a/muse2/synti/fluidsynth/fluidsynthgui.h b/muse2/synti/fluidsynth/fluidsynthgui.h
index d464dee2..5b39723e 100644
--- a/muse2/synti/fluidsynth/fluidsynthgui.h
+++ b/muse2/synti/fluidsynth/fluidsynthgui.h
@@ -10,10 +10,13 @@
#ifndef __MUSE_FLUIDSYNTHGUI_H__
#define __MUSE_FLUIDSYNTHGUI_H__
-#include "fluidsynthguibase.h"
+#include "ui_fluidsynthguibase.h"
#include "libsynti/gui.h"
#include <list>
+class QDialog;
+class QTreeWidgetItem;
+
struct FluidChannel;
#define FS_DEBUG 0 //Turn on/off debug
/*
@@ -147,7 +150,7 @@ struct FluidGuiSoundFont
// FluidSynthGui
//---------------------------------------------------------
-class FluidSynthGui : public FLUIDSynthGuiBase, public MessGui
+class FluidSynthGui : public QDialog, public Ui::FLUIDSynthGuiBase, public MessGui
{
Q_OBJECT
private:
@@ -190,7 +193,7 @@ class FluidSynthGui : public FLUIDSynthGuiBase, public MessGui
void readMessage(int);
void changeGain(int);
void dumpInfo();
- void channelItemClicked(Q3ListViewItem* item, const QPoint&, int col);
+ void channelItemClicked(QTableWidgetItem* item);
void toggleReverb(bool);
void changeReverbLevel (int);
void changeReverbRoomSize(int val);
@@ -204,7 +207,7 @@ class FluidSynthGui : public FLUIDSynthGuiBase, public MessGui
void changeChorusLevel(int);
void popClicked();
- void sfItemClicked(Q3ListViewItem* item, const QPoint&, int col);
+ void sfItemClicked(QTreeWidgetItem* item, int);
/*
void readData(int);
diff --git a/muse2/synti/fluidsynth/fluidsynthguibase.ui b/muse2/synti/fluidsynth/fluidsynthguibase.ui
index 336ee9fa..d6488bab 100644
--- a/muse2/synti/fluidsynth/fluidsynthguibase.ui
+++ b/muse2/synti/fluidsynth/fluidsynthguibase.ui
@@ -1,632 +1,559 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
-<class>FLUIDSynthGuiBase</class>
-<widget class="QDialog">
- <property name="name">
- <cstring>FLUIDSynthGuiBase</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>617</width>
- <height>514</height>
- </rect>
- </property>
- <property name="caption">
- <string>FLUID Synth</string>
- </property>
- <property name="icon">
- <pixmap>image0</pixmap>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FLUIDSynthGuiBase</class>
+ <widget class="QDialog" name="FLUIDSynthGuiBase">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>617</width>
+ <height>514</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>FLUID Synth</string>
+ </property>
+ <layout class="QHBoxLayout" name="_2">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QGridLayout" name="FluidGrid">
+ <item row="2" column="0">
+ <widget class="QFrame" name="DiskButtons">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QPushButton" name="Push">
+ <property name="text">
+ <string>Load</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Pop">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Delete</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="dumpInfoButton">
+ <property name="text">
+ <string>Dump Info</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QTreeWidget" name="sfListView">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <column>
+ <property name="text">
+ <string>ID</string>
</property>
- <property name="spacing">
- <number>1</number>
+ </column>
+ <column>
+ <property name="text">
+ <string>Fontname</string>
</property>
- <property name="resizeMode">
- <enum>Minimum</enum>
+ </column>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QTableWidget" name="channelListView">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <attribute name="horizontalHeaderStretchLastSection">
+ <bool>true</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>Chnl</string>
</property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout3</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QFrame" row="2" column="0">
- <property name="name">
- <cstring>DiskButtons</cstring>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Raised</enum>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QPushButton">
- <property name="name">
- <cstring>Push</cstring>
- </property>
- <property name="text">
- <string>Load</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>Pop</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Delete</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>dumpInfoButton</cstring>
- </property>
- <property name="text">
- <string>Dump Info</string>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QListView" row="1" column="0">
- <column>
- <property name="text">
- <string>ID</string>
- </property>
- <property name="clickable">
- <bool>false</bool>
- </property>
- <property name="resizable">
- <bool>false</bool>
- </property>
- </column>
- <column>
- <property name="text">
- <string>Fontname</string>
- </property>
- <property name="clickable">
- <bool>false</bool>
- </property>
- <property name="resizable">
- <bool>false</bool>
- </property>
- </column>
- <property name="name">
- <cstring>sfListView</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QListView" row="1" column="1">
- <column>
- <property name="text">
- <string>Chnl</string>
- </property>
- <property name="clickable">
- <bool>false</bool>
- </property>
- <property name="resizable">
- <bool>false</bool>
- </property>
- </column>
- <column>
- <property name="text">
- <string>Soundfont</string>
- </property>
- <property name="clickable">
- <bool>false</bool>
- </property>
- <property name="resizable">
- <bool>false</bool>
- </property>
- </column>
- <column>
- <property name="text">
- <string>Drum Chnl</string>
- </property>
- <property name="clickable">
- <bool>false</bool>
- </property>
- <property name="resizable">
- <bool>false</bool>
- </property>
- </column>
- <property name="name">
- <cstring>channelListView</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QFrame" row="3" column="0">
- <property name="name">
- <cstring>ReverbFrame</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Raised</enum>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QSlider" row="4" column="1">
- <property name="name">
- <cstring>ReverbLevel</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QSlider" row="3" column="1">
- <property name="name">
- <cstring>ReverbWidth</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QSlider" row="2" column="1">
- <property name="name">
- <cstring>ReverbDamping</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QSlider" row="1" column="1">
- <property name="name">
- <cstring>ReverbRoomSize</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="0">
- <property name="name">
- <cstring>ReverbLevelLabel</cstring>
- </property>
- <property name="text">
- <string>Level</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" row="3" column="0">
- <property name="name">
- <cstring>ReverbWidthLabel</cstring>
- </property>
- <property name="text">
- <string>Width</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>ReverbDampingLabel</cstring>
- </property>
- <property name="text">
- <string>Damping</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>ReverbRoomSizeLabel</cstring>
- </property>
- <property name="text">
- <string>Room Size</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>Reverb</cstring>
- </property>
- <property name="text">
- <string>Reverb</string>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QLabel" row="0" column="1">
- <property name="name">
- <cstring>fontSetupLabel</cstring>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string>CHANNEL SETUP</string>
- </property>
- <property name="scaledContents">
- <bool>false</bool>
- </property>
- <property name="alignment">
- <set>WordBreak|AlignCenter</set>
- </property>
- </widget>
- <widget class="QFrame" row="3" column="1">
- <property name="name">
- <cstring>ChorusFrame</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Raised</enum>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QComboBox" row="1" column="4">
- <item>
- <property name="text">
- <string>Sine</string>
- </property>
- <property name="pixmap">
- <pixmap>image1</pixmap>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Triangle</string>
- </property>
- <property name="pixmap">
- <pixmap>image2</pixmap>
- </property>
- </item>
- <property name="name">
- <cstring>ChorusType</cstring>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="3">
- <property name="name">
- <cstring>ChorusTypeLabel</cstring>
- </property>
- <property name="text">
- <string>Type</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QSpinBox" row="1" column="1" rowspan="1" colspan="2">
- <property name="name">
- <cstring>ChorusNumber</cstring>
- </property>
- <property name="maxValue">
- <number>127</number>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>ChorusNumberLabel</cstring>
- </property>
- <property name="text">
- <string>Number</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider" row="2" column="2" rowspan="1" colspan="3">
- <property name="name">
- <cstring>ChorusSpeed</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>ChorusSpeedLabel</cstring>
- </property>
- <property name="text">
- <string>Speed</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider" row="3" column="2" rowspan="1" colspan="3">
- <property name="name">
- <cstring>ChorusDepth</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QLabel" row="3" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>ChorusDepthLabel</cstring>
- </property>
- <property name="text">
- <string>Depth</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider" row="4" column="2" rowspan="1" colspan="3">
- <property name="name">
- <cstring>ChorusLevel</cstring>
- </property>
- <property name="maxValue">
- <number>16383</number>
- </property>
- <property name="lineStep">
- <number>16</number>
- </property>
- <property name="pageStep">
- <number>1638</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>1638</number>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>ChorusLevelLabel</cstring>
- </property>
- <property name="text">
- <string>Level</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="5">
- <property name="name">
- <cstring>Chorus</cstring>
- </property>
- <property name="text">
- <string>Chorus</string>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox" row="4" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>GainBox</cstring>
- </property>
- <property name="title">
- <string></string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>GainLabel</cstring>
- </property>
- <property name="text">
- <string>Gain</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QSlider">
- <property name="name">
- <cstring>Gain</cstring>
- </property>
- <property name="minValue">
- <number>0</number>
- </property>
- <property name="maxValue">
- <number>127</number>
- </property>
- <property name="pageStep">
- <number>5</number>
- </property>
- <property name="value">
- <number>13</number>
- </property>
- <property name="tracking">
- <bool>true</bool>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Both</enum>
- </property>
- <property name="tickInterval">
- <number>7</number>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>loadedFontsLabel</cstring>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string>LOADED SOUNDFONTS</string>
- </property>
- <property name="alignment">
- <set>WordBreak|AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="1">
- <property name="name">
- <cstring>pixmapLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>4</hsizetype>
- <vsizetype>4</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="pixmap">
- <pixmap>image3</pixmap>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- </hbox>
-</widget>
-<images>
- <image name="image0">
- <data format="PNG" length="1195">89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000472494441545885c557cb6e1c45143db7a77b7a5ec699b1c71e3fb0239010f80ff807d6d9b065c12f20250a2862c10690901c93c40111136c1ca448880dec67c18e05444158b63103f22376e2b167babaaafb66d1efd780c2c225cda3abcebdf7dc5375abaaa9dbede2229bf67f8c7f3416f8a7f2225f0881efed0e379a33a8373bf8c1997b61127afce1eb3d83c7da1d58fd535c693fa35186f5e60c94f4f8d7c63bc0596f64a08dfd0657c79be81fede3ed793bf49d5060627109f5d61c5af3afe1dba37661561b87930c3621052005c05cc683934e217e7dbfc5ad975f47bd3587c9c5a5c4584860e3609635ad062508aea3a331b150984d656c0aca262801289f84596f17e2c7da97c1ae01250844556c1e2f8464430266bd0d290065fb59b9657cf3cf426e56a55223c42adb23415a2d37f8fdde5ca856e0bb5c9dc82a0054c28c824fb996cd6a6def323bb294c13ab686fbbd573384cdfa5406cbae992470e7b769766c2d03845bc6178fe7134ecbd5c90c2ef81895163eeb9642fceaa319663673c812ee3ef62a470700add480140c04a60410111880d9e8e0f6af1a2b5ba0d2b884ea4b065c051001cc9e01b38707e9189f59c2e7bf3c612a95506f4e43d914f9856f0780b43a4202400d52a4c563dfc040a5311bf64a2b1a4be38908546aa076c973ce0e41298053780201a84604d82d7b9287aed807e505f3dc913f42218672b1488c47fdae6b44041ca5c3f165050249bddf22074414e2029b64e0081f27cbe1782946c0a64cd024816c0bc7f3120fc213122403169e9dd7496fbdb7c56393af8099235fcce122cccf8863dfc162a418249a42cec107937cf66407baeb185e6dc663b8482a3eaa152850d81f4b8a5d03ba23c9dfcf933629d5121aa495cf1da7c8679e1f6640490dbab4140c334636cd209f7c3edb603898f73cd631901c4a50b7dbc5079b6f7242af3438a70a463db3bf8646e19919ef5ff999740050820b252e4a20dd97988ea0a246f8092a4c07006939007975995f7ee9d0c5cf9efdbfe3999d88803db4a1e95580a333205a95f1dd4c8bf5e568c3c1024c2d8e9c8a701d152760c128a7cff3a862953880eb9cc3a8cc82b46a6c9b8ee302c702caee41d3aad0cd6950c1b55379874a406000a0950fb44fb072759b00e09d6b43361b6f80fce94a3466b82c21fa8fb0fae19000e0dd1b25d6cda95cbf5e4cff3e70ebfa1e498b33e7b6b41cac5cfd3d4cf7ce8d3ed9e7cff2ef0336c11e9c86c10160e5da16c9a1cafa15c0adeb7f52a8000048cb0669d14d05001cf934c37cd8efc1ac37915713f6e03083178363948ca40acc32fc1f4e903d3849317560f577330ed73e3923391c66b31a0adcfbf86966fbfaf2a32d525652057b1025161258fb749ba425fd4ba60b717e88f56591bb1f8ac1912f7b74291583e33ca88f3f8012ae7f295510677b59020020ce77600f4f21067f637d79bb7033deb8d92329546c4e1d6cdcdc2dc4af2fef9238ffcbf37db68bcddb51628937a3efee1e1170549849bcd98343687a0700c1758ab30fda83d51e01d9b7a7177e377c786f87e4f014d23ac5c3affef8af8777a6d145bf9e3f076c35aaedab709f8e0000000049454e44ae426082</data>
- </image>
- <image name="image1">
- <data format="XPM.GZ" length="269">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade652323452002220a1a4c3a5a4a790aca06c000620ae32886b649096666801964502e4f1959595c13c6565301fc481626c7c985a65b2ed43e2d75a73010022253132</data>
- </image>
- <image name="image2">
- <data format="XPM.GZ" length="269">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade652323452002220a1a4c3a5a4a790aca06c000620ae32886b649096666801964502e4f29551f9ca500165085f590f86c17ca81c88063b07aa57991cfb6badb90035703153</data>
- </image>
- <image name="image3">
- <data format="PNG" length="7252">89504e470d0a1a0a0000000d494844520000007c0000002d08060000006ccc0fec00001c1b49444154789ced9c779ca55779dfbfe7bcedf6693bb333b35d5af506261059103b9490c40ec514f1010ca60a442008448bb1892146b11cba648a4237b215d1314522d8a0c4a08201f5bada5d6d9d3e73fb7dcb394ffe786f9d99d5162448849fcfe7eedeb9e7bee7fc9ee777cef33ca75df5939ffc847f96df1c717fdd007e9572cd4c227e2e87761c4061ad256935b9705ca95f37b65f95fc4610fe95e5408a1bc6993ab584e3fb28a54001229824e1fbb5aad4171728cfcdf08a9dc5c734f98f69c2af3ea864646a33635b87f1820cda7152b2fb443942decd11e446c80e4f70edec21b9703c7ccc927ec2847ff6be86f8d9028ee7910e17b0d660a290b05ee3b567977ead46bb76be201bb66e22532ca21d1750580322abbfa950ca41bb59b2251fc7cbf1b5f919795e69f1d74efa1776c5e20401da75514a03828913a2469d579d9639217cea7893b62fedf3253fba81205fc4f503b476daee11440463624c1811b51ab4aa2bd4571679cd192706ee44e5cb8ba3529a98c6cf76e2f57a440f4a67e08bb5c451486d719685bdbb78edd9f95f19f6ab6eaf497e740399e21041ae90dad7f5d05aa50005ac589230246ad668ac2cf392e9fa71e13b66c23f738f95e1e9ad644b235df7c87ab94edbb2622d2689899a0d1a2b8b94670f70d1398f3ef1d72e8c4b697c0a2f936d8f8a75c8eea090bef77d4522421285d496e759dcf720179d1d3caab83ffeb3b20c4f6da130328e972be07a3e5aebd4bedd9e2803efc55a9238a4592d539d3bc4cb7744c784f19808fffcae408627b7121487701cb71b07bb76ecbce96bb2f3d68ac5c43161bd4265fe307fb4e3f87ae4b1ca95b754647cdba914366cc40bb2eb635c4d74ffff7da0bba4c7318d950596f63fc845e7ba8f0aeecfddef4b69629a4c6918d70b505a0f405a83b10db0f3913586a859a33a7788976e59392ac6a312feb9fb72323cbd153f57eabac71311b196a8d5a0b134c7e2c10779d3bf2c3c6206bce2e69a8c6d3985c2d8465c3fb326313b5111041b2734ca8b2c1fdccdebce7b64a76f5fdc332cc5f169fc6c01e568d46a7773ac38c512b71a54e60ef1b26d0f9f7b3c2ce157dde1cbc8f44904853eb28f120b8fdc523bc6c711cdf222cb0776f386273abfb401afb8a925a39b77921f19c7f18394ec13c5b85afaa66eadca12cb87f7f2fac7d95f1ef38d0d19d97432f99109dc2083d269e83921dcdddc43885b75ca33fb78e5a9e523623c22e11fbb31920d5bcf203b34f6cb93dd074e009bc484d515ca33fb78fd6f1d5bec594f3efe532d4353dbc81447713cef9125bb236d743649086b652a73fbb9e8bce60963bef2662bc35327911d1ac5f1fc47067307a3b544f50acb071fe4f58f5fdfae4724fc33f74e4871c3e674d4c0609c5b2f06f657bf5e92b42a4e4a3bf6d4976628cf3ec4a54f3fbe058f4fdd5692e2d8347eae8876ddf5db5dafedf56279bfaca74b3fe6b0417d7186f2ec5e2e7ddaf185a54fdd5a94c28669825c09e5ba6b1df8c3e1399acddb1f4912d3589967e1a17b78eb53736b9a5897f02b6f0e64786a277eb688d27dcf1ccda0ab9a17e8a6c8695c550320452c268a08ebcb345616682ccff1b667ae05d92f57dc14487e6423d9c2084e90e966e25d7c5d3c82f4a5e7ddf6d7e05e950dada75fbf5622d838a455afd05899a3be7488b73ff3e13beb1537fa921f9920531cc5f5b33d17be2eee556df7656f47d5a78d2f099b54e6f7f1fac72d1f1be19fbe7b9be48626504ebb178a60ad41ac49696ccf10faa73b2a45d155c6c42149d4c49a04a5348e17e006391cd7efe9d8ae43acc1c41149ab4ed8ac10376b189320d62236c1442d945678d922417e984c6138ed8c8ed7af6b57ac8949c20649d442c4a2b5831be4dac67652e3598b3531d618446c5a8fd668eda0b48352ce1a627a8e42b056b07144dcaa12d62b44ad1ad624088242a19db4cd203744ba4015a0da6bf8eb6146a46b5b543fa1824d12e2a88169eba3b48337a0cf2a8cd6d2aa2db3b8ff6edef6f4c1d9c59a95b68ffe9fbc0c4d0e61add3f6112979adda12617591240e01dbabbd5b9dc2717dfcdc30ae9fa1b13243757e2f51b38ae3fae447a7199a3c954c712c5dace907a81c9493c5cb06b8c110b6942e89890851b342656e0fb5857d98782f6e90a5b0611b43933bc9e486413b03c6b3d610d6565899d9457de900260ef132054ae33b284e6cc70b72247148585f26ac2d11b76a98380495e277fd2c5eb644901fc6cf96d0ae3f10013abaa2143819bcac8f130c93ed5bc64bcda2504ea7f368ac0071f7e9dea016c1241149d448712068c7c70b72385e808810d65628cfeca2b6b81f9384784181d2c693294decc0cb14d64e41d168374fa6b011581ce0770de15e760c510126692713626955ab540fdfc3c9a30fe0fb4d10db06dc171c95423901771ddc82ce4d636a7b79fb85b36c9b8638862bafad31b73286eb0fa15d67c0883dcfa5db2f0f940086248c715afbb9eca2794687157152e77d5735689637e0baa5d4a87df84d92d058596254ddcfe56fa9e33ac262b9c27b3f1be3664688fd88dae27eea73f772c69645769e6a2966856628946b707016f63d54a09a3b8591e933090a831d74d0b0fd98dd81793c805845db791c317d30494ca33c4b65e6011a9539b096a030cad0e429e44736815234569628997bf8c0db5b08c2c25299f77d41087213289debe2ebe25220d6c70b4678ffdfed97773fab17260708bffc3a4f86274b8871b036adc15a216a3491e60caf7eae61f3547e751fe94a1c0baf7bef616a951c342b0c178489319f30b2903488a216712b41bbba0b4f298d529de54f9bbad7f6aa523abf8c499a7546861413631e512424610dd38a4822413b923e6753d76ce290b05e27676a8c8fbab8ae423044f50aad4a99249ea510dfca656f8dd93419acab47a365f8932bf7b2bc3285760a28edb6d30f95bad04ede20360d3b6d8f97cea3536a45a413e77a1ddaf64247c715c7ad16d5b9835cb0f37e5ef4ef52977ae3ad2b7ce9872e8e5bc2f102c27a8320aa313e9601c0241151bd42d868e078611753baccddc1a0d04e9e4c6e2350edea3640b8178c82ca6012d5cdccad85244e932b39da823420cac31a8518191809d6589230a25959c6442d4c12a2b4c6cb14f1b3c328a5895a65e266056b13b4e3e30679e230a6d110bef5bd59724184e053a94e901dd298d812870de26699b0b182895b884d685666c967ebc050bb238189135ab50a61793f7f7649c4a6c934fe4791e5a1032d40b171dca358704120095bb44c0591c35893eaee781982dc305ea684528a246c10369649a27a5aee0638ae8f3131364e47a3d62e4a3b589360e21628851714f073c3388e4fb3b640757e3fcef60a1363230064bd2a95d9dd68278f171468d596c8a910c8b4f5115ab532d5f903b4aa65001c3f4b901bc1cb0ee1b8417bc004b8c1c8fa84ff976b9a32baa984b50e12d3f53962041b0bd6d0f51922f0b1abf6f0bd1b62fcec50374eb941119bd986972d92583de0fbacb1848d3a716b17a3fe1eb4ada21d97e595cdc44367a1b44bb8722fc3de5eb021a2f32c2f6d4779251a0dcbf77fb880c465b49fa7ca387e6c69d56a34cb87682cdecfcea979a6a7131696626eb96799c6581da144c7899ac410d66b8ce69638657b4af6e252c4abdeb28ba5e6047e7608c4303ddee2b71fef530b4789a23a3a3cc0903f8b3531b114595a3a8da18da7a11d8fdae24338cd3b29788b80d04c4acc568b0c656b943265c41a2a7587b945d8b609ce3d196a0dcb7d0fe528eb1d640a638495036cf077335288bab62a64123666f71044153005660e4169acd9edc0885099db83af9b9c775e1e470bbb0ffacc1dde4c69e3196487a671bc0ca051bac0fbbe6ae53dcf4fa75b5dc2dd600454169bf422a202ac01938035423f83f586b052cb104811ed7828ede0eb118aa531d019c40e66b8d60871ab894a56b8f4ad754e3b39edadeffed001ee5b9844bb3e63de7e2ebf542815331c9c0979e787f6530bb752ca593ef6eeb3d838ee1146c26bdf1dd1acd7891a0ddce66dbcff0d4dce3ad5031c20e0e06197abafadf5b99d540fe2844ccef4ab4d2b04ad3378c1286e90672571b9fee71e7e7604ed0839672f1f7807e4b201cbe516af78d75dd4bd619c20c7cae1fb79f7abe679f2bf4843c3e59f9ce7bb372cf1dc671b5ef3e22200d7fffd1cd5bae5f9cf9aecee7d349a09977dfc0e6eb967845266850ffcd721c6467a79c2054f1ae18227a5a37d662ee1b9af3e4852ead95ec4f27bbfa3b8e4e22172b9f4396384af5cb787bffd8105952153dc988622021c6f04483d415773c71902f131f1e08441ba84f74d4b143ced29c36c9a8ed04e0ba52294d21c5e34fce3ddc33899098ce91bded271ab16a2b03b0d0230514812c568a3304e88d0898f4212862436c1edc4f54ee789635ae10a617d8ecbdedce0ac53d3a95e9208fb0eb6182eb9bced4da70faca98b2820c3c1b90c6164097cc5d8a8cf373e773a37fdbcce5d0f1ce4f6fb14bb0f16f00b9bf07301daf1393c5fe4c73f2df36f7e27cb5051f3dbe794f9c77bf6e1664ae4d421ce3ddd6b1313f3d3db144a0588edb9d067fceb71b4562cafc4948a694e91cb6afee3cb3c6ebe643f91d5345b2e71acf03cdd252f8a2c82a2150ae02136eed639b931cb1f5f7a06b57a42a361c8e51c1c47f1dc67f8fcf4f643ec59de82e38de2780e625d1ca7b09670a57318a3519226c89d2cd2da1ee1fd2efafc278e72fe1307fa06b7dc1a72c3cf2b881a41561d36100b36018c0c92d7f95cc076e6a1eda6ac4d43899581a6d378dc5862e7f42ce79d9103d284f15def9fe5a6dbb264fd0a7ffe8e3ce73fa1d07bc83a386e8928dacc67aeb99f37bc3c0b4036ab79ea938b3cf5c9e9d7169612aefefa2ebe7f4b037fe854943bce37fed7019efe14d01a9efd0c8feffe68176e50e499e737c9e75237fb939fc5ac3426707d0768749b8d13e1f22b66f9ce0f2ddba742fee693db715dc5d484c7f438ec9919e105172df2a2df8f78cbeb370370fd3f2cf29e0f54c90d6fc1cb0c931b2ea2ddfddd3a1d47f1f5ef2ef3c1ab1a783ae2caffb691b34ecb11048ad3b7b7b8f7276592a118c820a2416579e7a7eb72f96bf269baf98eff118948808d15261292184cdfcb26d0372801a8d513169622169762169662169712aaf5b472b14eda41fa446cda69ecaa7a8c114c92be06ca24cd1f4c2288194c166d62089b55ce3cc9e279e928bef3de2677ee1e6778fa7c54fe5cbe7e5d3cf88c4de359a674325fbf610797fc59931b6e6cd06c0d02da30eaf29f5e95e339bf3b4b636506ed16d97d688c5fdcd102e0f49d19b66d384879e66e9ef6db1aad53cf72dd8f345e760ae5e491be89e203bb237e70f328c3534f64b632cdfe4361b76c722243909f26377c32aed7eb9cdacd50183b9dd12dff8a914d17901d3a09ed64076cf6e9ff09d9d1276083d3b8e39e9eae13638a386c9144a6cd9d0209503a1d182ea42326890d6956dfb7d9aa52a24ccc008122f0914f1ce49b3fc8121426d318ae5cbccc30d9e16da01cac1ddc14b0168c016554dbbd760a246ddbc4e026dd291ab43b4802abd2018c154c1451c8f51a285784448a04fe184e028b2b1e564077366c8c601270fd8020bf95bb0fe4b8f5ca4554b2c4f6e9324f382be605cf2a32b9314843d6050edff8fb25c46ec1ea4d7ce3fa799e705e3aca9ff36f7d0eeddfcbb9676e07e0b6bb43f6cf8de196c649a218faf4db7fc8e0f81bf1b35324cd455aad956e99a315a8f66e99ea9f3069b453c4f136e0b839945a01e919617129a1190f932d4e610db4c2a5de935a30b12189413b2957496c3071027829e11f7c434efde9d54d711cbb7639b1edd2578f70c72f51d87026850d67b4416994e3a1b547d45a4456ef225ab046a3ad3330923d27a25599076078a24536d3ebc95daf30982f22a210f1a8f69da528e61524355ad525e2d632439331dd6d00019b58c27a99b07a98a8b988e0e37aa3e08fb17ba6cc9df73ec8fe0387b8ec4fb7e3388a5c06f281a1253e5e768a9befd8cb43fbeb6cdbe2f37bcf9c60e6708520486df5fd1b0cb19ac2774a889d1b0865710ce023e221d6c15819d0c31a8d883340a8584bd8acd2aa2de2fa3171d8c2eade737122201e223e222ea6df9bdade4031719ae045cd26fffd75a92becb612356a246142120dbaf38e5b905523532917ed0ee3fa13b8c1465c7f02ed8e02396ca2d3b9f8c00857202ec6665858ea153cfe4ca13a771ba67a3b17fe07bfeba23bcf58a3d6761e71d04e91bbefd7a9f2c0d96766d83935c3d2fe9b88566ee759cf1c5c44b489216a9429b90ff2f9bf98e3594fb99f02bfa0327b27f5e5bd28b3cc19a76670da5bf48da6a2dac800591c778c84cd7ce37ba9ebcc655d2e7eed6928958eb61fffac80174c2264db78fbb182350a93a4bab02aaf11a311f1a8d47a846f99d6d07c8085bd3f66e9c03fd15839848907439458854d54db65f725a7a403d4c469684e2243d4ece5145dab84f565dccc349e17f4ce4eb52b3609a8554617ab11a3b18933e08645da40cc2008442312801ee5f6bb67f9dd0bd2b2173d6f034f3ebf45a9e876173d7adb91e94953cb809d403c1c6f84db1f88b9ebde151e77b64fe06b3e7ad924f73ed060c368894dd39941c2adc2c60613b7d8b625e0d28b87b8f462a8d50cd59a6164781b994ccfe8fffb264b2b1ec757795019dccc26befbc30779d58b0dc5a2d3ed183ffc7144b5b999627114315e5bef7edd535bd884b5798d805817ed061c9c0968b5844c4671f619397ef4cd2d542a09dff9c1437cec330e66381c78b6d789069363042401132b944e77f6a27a2f8c7435fcc8254ac5cd1a496407477892ba6218ec084a7988789844adf508c601fc6ef50a052a40a902ae3fcdd7ae1fe3b6bb7a3d76f3748638163ef2577b58a9743e4f9f11eba35406d5838ad2591c6f0341fe34defbc12c0fec4e00c864348f3ba74026e3f0d18fef218e6db72ea5b22855a4158d72d7bd71d7488582c3d4a4df253b4e84af7e3be26fff6e123fbb0d911c625cb433422d9ce05bd7d50708fbd6f50ac79b060a58e322e2035e0f2b0e48801817a532a46b059dc2005416c71de7ce5dd37ce5db09619402f35cc5d8a8473e9b761445ff3270ca8758172400e5f595b9083e2681244a8f9585b5e55e93fddba3977c785832c51d2827689394c680245c26aadec5d6f107f0741d94cbecf2040d1e4f90df82d67eff8e01495426acdcc3960df7e3bb55048f03f39b31de39385e91a87188b072374f3a77816d9b2d8bcbf0e35b842882534e02d711129b63dfdc0ec49b42e2c36cdfb81b57b740f9ec3eb40d277736dacd10d60e20e1fd3cf19c45b64c19e6162d37fed412468ad34fd1a42be905761f3a0937b71513576955f790f36639fde490cd5342b1a0301666e714b7df9763b9be996c69277e6e12edf898a441d498a5be7c079b477ec157bfb815805bef68f1a6f78c110c3f85203f8dd88456ed214ade1d8c0fcd212294eba3ccd7cec4cb4e10d5f7b175fc5e02b78a522e07e6a7899d73703363c4ad459ae55d649c036c1c6b90cf5a509a956a89430b1b08bc063bb72e203622b17976cf9c4a503889245c6638b88bb1a10510a1dc1865be7636d9e2c928c725acede3c36f5e50eb127ef19fc7921d3a0bd71f193858606d8889ca24d10ad64628348e97c70dc670dc1c7d8ea2cd794c129749c265ac0d51cac1f14a78c1084afb581b92842b9868196b429476d14e065088c488085afb38fe108e93c5240d4c5cc6da18a55c5cbf9462d41ed684986825c5669aa09cb42ea5c126edf56c1fd71fc6f18a88586c52c7c4354c52c79a30f5814aa39d00c72be27843385e01ad5c4c52a7597d90e6cadde4bc3dbcf1d59a0b9fb701803f797f837ff8a7df223f7a2eae57020413d789a3656c5c0304ede670fd51b41360927a1b67ab7d46a0d82ecb209260e31a495cc59a162249ea1f9c0cdacd2136c62475444c5b9f111caf80b51149b48c8d1bedf6b2699d5e1e9bd46994efe5137f2ceb130ef0c6cb27c4cf6d46eba02f14497b17ab2f9a7677b9d63becd1f7fdceaed1c0f73be59dc3072a75d98a813604d5bd71d10b542add0357fa08753150d6794629dddbe5eac327fd3aa1fb0e3e681043d49a87d6cd7cfcb2839c795a2f11bcfdae888bde368c5fba003fbf09adbc74d74c2c22d29bd976f46eeffeb1ba3ddd674369efbc49ffb424c59e6e5cd94ea5e91982ce3e7867e5aa631fe5802444cdc35cf1f6430f7f0022accfa174e750a0ee5582c340fc795839daf757970b562c6223ac6922128124a9224aa170514e80d6d934dcd80ea1ebb775f43d3dc56aaf34f0ace9fd91ae0ea6c9519208e58ae1c65b123ef4c93c78a70379e26635f54c366ad7e0b637943cb49345e9a0ddd9d7b1c94022d7d95b3f5ef106fe4a0f55b408ebf36bbeb9ee11a78bde3b2e7e760b4afb9ce859e9a349efa896c1da26362993448b24e1029ffb8bec9a465ff1aeaab8de28ae3f81e38fa075b6bb58f1e8204c519aa44a58df4358db8549aa28ede378237899711c278fb54d4cbcb23ee677d6c40dc670bd311c6f18ede441ad7378f111450c6223e2d6213ef59ec3c776a6ede56f0f25533813c71b4b5d1cb41338569dcf59759243f515f59f77eb3bffd67b2f88c4987899383ccce72e3bf6a3bfaff8cf8e78c1261c6f14add3d8df7f45e0486dd387b3fbbd3e053a7b085ddd14883558dbc026f534ae8a416c8b245ee2f3971f3b77af7ca71637b309d71f43e980347cb471b07edbeb613c9acd05838d57086bf7f1f9bf5c7b71e288c794ffe81d39f13327a1dd7c1a7fe98563691ba7237dd1a3d731fa1be9fed347b66d9284b384adbd5cfde1e3bf73f69237af48903b19cf9f423939c01934525fdbab5d7c3f4eb5aa40d61854ba8614d3c4c4f3448d3d7ce9230f7fbaf648f2ca778d8aeb4fa576edc3dcc13dc06d3fc147b379bb026b9bc4cd87f8fce5eb5f3b7ad89b272f7fdbb878c1344a67dbb174b0a17e43f6ad62ae6da44f2130585327090ff2c50f1efd2ed4d1e4656fcd8a176c45bb25c01d1835ab71f6635c356806bebba64c6c8a393ac8173fb0f6e8eff163ce89176c413925941ac4bc1eae8e1cc9e690c66d9198249ae10b7f79f088188f7ab7ec656f9914c79b6a271e6beb7938d207ff9674ea91ac904407f89b8fb51eb150f69237f9e206db71dca18118b99ee1068cc49189efe2168bb53592e800577fe4c857788e575efc46c40bb6e3b8a3a0fcee805a0ff7ea46d7e06c936d9305a2c6fd5cf38923df763d2ae12f78cd8af899d3d0de647baeacd718add3f86a0376cbc52212629345a2700f5ffed4237f13f3c28b1df1fc1d6877241d35abf0f5635cfd7eb5f446b6c19a1a49bc9f6bfeaafa88637ee16b1be26576e0781328956d4f1bd5bad83bb8faa53b906c844de6895bbbb9f62aef61711ef3fdf00b5f372cae3785d29d4cb3afde553da003046c3a5d31554c32c7b59faa3c9a092a2f788d1237d8817646dba4abf5738a6eccebbdef026be3173188ad9244fbf8f2558fce15e78ebcf0a28c38de245a0f7513ba7ee28f6cdf348134c91c49b89baf7ef6e83f5e705cbf00f1bc57228e3b85764648d7c6dd145cb74bb6171e302011d6d611b38c4966f9fa17d64e5b1e0df983578ab8de0eb43386521eeb05f5fe9c42b587b3f47d98925d2689f7f1b5cf3e72a1e768f2fc57e745eb11945340a9205d8757edb979ef272a10312021d656b0c90c5ffd6c7ccc188ffb273f009ef38789286718ad5360698fb48844883411db426c9d6f7ee997bf0e7c22f2ec9786e2fa3bd0ce787bc342b32640ae7e0f6db223ac59c224fbf8e65ffff257834f449ef387a1285d48377c74b6cfc6a436b635ac2df3cdbf3efefbea2744f8ff2ff2ec978e887626513a9f7a23516b032190269426edac661e93ece1dbd79cd8b4ebff75794c130ef0fb2f44943385d223e9366b270c011da2a185d832d6ccf19d6b1fbb3fd905bf018477e4dfff8111a537802af4ae3661db216889ebbe661ed34477e43786f07f9654fe2fc2ee9042ad017b950000000049454e44ae426082</data>
- </image>
-</images>
-<layoutdefaults spacing="3" margin="8"/>
-</UI>
+ </column>
+ <column>
+ <property name="text">
+ <string>Soundfont</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Drum Chnl</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QFrame" name="ReverbFrame">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QGridLayout">
+ <item row="4" column="1">
+ <widget class="QSlider" name="ReverbLevel">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSlider" name="ReverbWidth">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSlider" name="ReverbDamping">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSlider" name="ReverbRoomSize">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="ReverbLevelLabel">
+ <property name="text">
+ <string>Level</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="ReverbWidthLabel">
+ <property name="text">
+ <string>Width</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="ReverbDampingLabel">
+ <property name="text">
+ <string>Damping</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="ReverbRoomSizeLabel">
+ <property name="text">
+ <string>Room Size</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="Reverb">
+ <property name="text">
+ <string>Reverb</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="fontSetupLabel">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>CHANNEL SETUP</string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QFrame" name="ChorusFrame">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QGridLayout">
+ <item row="1" column="4">
+ <widget class="QComboBox" name="ChorusType">
+ <item>
+ <property name="text">
+ <string>Sine</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Triangle</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QLabel" name="ChorusTypeLabel">
+ <property name="text">
+ <string>Type</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="2">
+ <widget class="QSpinBox" name="ChorusNumber">
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="ChorusNumberLabel">
+ <property name="text">
+ <string>Number</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2" colspan="3">
+ <widget class="QSlider" name="ChorusSpeed">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="ChorusSpeedLabel">
+ <property name="text">
+ <string>Speed</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" colspan="3">
+ <widget class="QSlider" name="ChorusDepth">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QLabel" name="ChorusDepthLabel">
+ <property name="text">
+ <string>Depth</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2" colspan="3">
+ <widget class="QSlider" name="ChorusLevel">
+ <property name="maximum">
+ <number>16383</number>
+ </property>
+ <property name="singleStep">
+ <number>16</number>
+ </property>
+ <property name="pageStep">
+ <number>1638</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1638</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QLabel" name="ChorusLevelLabel">
+ <property name="text">
+ <string>Level</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="5">
+ <widget class="QCheckBox" name="Chorus">
+ <property name="text">
+ <string>Chorus</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QGroupBox" name="GainBox">
+ <property name="title">
+ <string/>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QLabel" name="GainLabel">
+ <property name="text">
+ <string>Gain</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="Gain">
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <number>127</number>
+ </property>
+ <property name="pageStep">
+ <number>5</number>
+ </property>
+ <property name="value">
+ <number>13</number>
+ </property>
+ <property name="tracking">
+ <bool>true</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBothSides</enum>
+ </property>
+ <property name="tickInterval">
+ <number>7</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="loadedFontsLabel">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>LOADED SOUNDFONTS</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="pixmapLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="pixmap">
+ <pixmap>image3</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="3" margin="8"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/muse2/xpm/saw.xpm b/muse2/xpm/saw.xpm
new file mode 100644
index 00000000..7c614851
--- /dev/null
+++ b/muse2/xpm/saw.xpm
@@ -0,0 +1,19 @@
+/* XPM */
+static const char* const saw_xpm[] = {
+"12 12 2 1",
+". c #000000",
+"# c #20ff18",
+"............",
+"............",
+"............",
+"............",
+"....#.......",
+"...#.#.....#",
+"..#...#...#.",
+".#.....#.#..",
+"#.......#...",
+"............",
+"............",
+"............"};
+
+
diff --git a/muse2/xpm/sine.xpm b/muse2/xpm/sine.xpm
new file mode 100644
index 00000000..ed0ac2d0
--- /dev/null
+++ b/muse2/xpm/sine.xpm
@@ -0,0 +1,19 @@
+/* XPM */
+static const char* const sine_xpm[] = {
+"12 12 2 1",
+". c #000000",
+"# c #20ff18",
+"............",
+"............",
+"............",
+"............",
+"..###.....##",
+".#...#...#..",
+".#...#...#..",
+"#.....###...",
+"............",
+"............",
+"............",
+"............"};
+
+