summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--muse/CMakeLists.txt4
-rw-r--r--muse/ChangeLog2
-rw-r--r--muse/plugins/pandelay/ladspapandelay.cpp15
-rw-r--r--muse/plugins/pandelay/ladspapandelay.h2
-rw-r--r--muse/plugins/pandelay/pandelay.cpp7
-rw-r--r--muse/plugins/pandelay/pandelaymodel.cpp12
-rw-r--r--muse/plugins/pandelay/pandelaymodel.h10
-rw-r--r--muse/synti/deicsonze/TODO2
-rw-r--r--muse/synti/deicsonze/deicsonze.cpp95
-rw-r--r--muse/synti/deicsonze/deicsonze.h40
-rw-r--r--muse/synti/deicsonze/deicsonzegui.cpp229
-rw-r--r--muse/synti/deicsonze/deicsonzegui.h20
-rw-r--r--muse/synti/deicsonze/deicsonzegui.ui1699
-rw-r--r--muse/synti/deicsonze/deicsonzeplugin.cpp101
14 files changed, 1284 insertions, 954 deletions
diff --git a/muse/CMakeLists.txt b/muse/CMakeLists.txt
index e414d48b..4d50367e 100644
--- a/muse/CMakeLists.txt
+++ b/muse/CMakeLists.txt
@@ -26,8 +26,8 @@ if (NOT CMAKE_INSTALL_LIBDIR)
SET(CMAKE_INSTALL_LIBDIR "lib")
endif (NOT CMAKE_INSTALL_LIBDIR)
-set(CMAKE_BUILD_TYPE debug)
-# set(CMAKE_BUILD_TYPE release)
+# set(CMAKE_BUILD_TYPE debug)
+set(CMAKE_BUILD_TYPE release)
# for debugging the make system uncomment next line:
# set(CMAKE_VERBOSE_MAKEFILE ON)
diff --git a/muse/ChangeLog b/muse/ChangeLog
index 33ce2ec7..c63ea87d 100644
--- a/muse/ChangeLog
+++ b/muse/ChangeLog
@@ -1,3 +1,5 @@
+01.02 (ng)
+ - changed PanDelay, time delay is calculated with BPM and beat ratio
27.01
(ws)
- changed DSSI initialization making whysynth work
diff --git a/muse/plugins/pandelay/ladspapandelay.cpp b/muse/plugins/pandelay/ladspapandelay.cpp
index 8c1caa20..b5680d3e 100644
--- a/muse/plugins/pandelay/ladspapandelay.cpp
+++ b/muse/plugins/pandelay/ladspapandelay.cpp
@@ -51,28 +51,33 @@ void LADSPAPanDelay::activate() {
*port[6] = param[2];
*port[7] = param[3];
*port[8] = param[4];
+ *port[9] = param[5];
}
void LADSPAPanDelay::updateParameters() {
if (param[0] != *port[4]) {
param[0] = *port[4];
- setDelayTime(param[0]);
+ setBPM(param[0]);
}
if (param[1] != *port[5]) {
param[1] = *port[5];
- setFeedback(param[1]);
+ setBeatRatio(param[1]);
}
if (param[2] != *port[6]) {
param[2] = *port[6];
- setPanLFOFreq(param[2]);
+ setFeedback(param[2]);
}
if (param[3] != *port[7]) {
param[3] = *port[7];
- setPanLFODepth(param[3]);
+ setPanLFOFreq(param[3]);
}
if (param[4] != *port[8]) {
param[4] = *port[8];
- setDryWet(param[4]);
+ setPanLFODepth(param[4]);
+ }
+ if (param[5] != *port[9]) {
+ param[5] = *port[9];
+ setDryWet(param[5]);
}
}
diff --git a/muse/plugins/pandelay/ladspapandelay.h b/muse/plugins/pandelay/ladspapandelay.h
index 1918895c..ab5427a1 100644
--- a/muse/plugins/pandelay/ladspapandelay.h
+++ b/muse/plugins/pandelay/ladspapandelay.h
@@ -33,7 +33,7 @@
#include "pandelaymodel.h"
#include "../../muse/ladspa.h"
-#define NBRPARAM 5
+#define NBRPARAM 6
class LADSPAPanDelay : public PanDelayModel {
private:
diff --git a/muse/plugins/pandelay/pandelay.cpp b/muse/plugins/pandelay/pandelay.cpp
index 401e03af..18ce1a41 100644
--- a/muse/plugins/pandelay/pandelay.cpp
+++ b/muse/plugins/pandelay/pandelay.cpp
@@ -89,7 +89,8 @@ static const char* portNames[] = {
"Input (Right)",
"Output (Left)",
"Output (Right)",
- "Delay Time (ms)",
+ "BMP",
+ "Beat Ratio",
"Feedback",
"Pan LFO Freq",
"Pan LFO Depth",
@@ -105,6 +106,7 @@ LADSPA_PortDescriptor portDescriptors[] = {
LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
+ LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL
};
@@ -113,7 +115,8 @@ LADSPA_PortRangeHint portRangeHints[] = {
{ 0, 0.0, 0.0 },
{ 0, 0.0, 0.0 },
{ 0, 0.0, 0.0 },
- { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, MINDELAYTIME, MAXDELAYTIME },
+ { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_100, MINBPM, MAXBPM },
+ { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_1, MINBEATRATIO, MAXBEATRATIO },
{ LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, -1.0, 1.0 },
{ LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_HIGH, MINFREQ, MAXFREQ },
{ LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, 0.0, 1.0 },
diff --git a/muse/plugins/pandelay/pandelaymodel.cpp b/muse/plugins/pandelay/pandelaymodel.cpp
index b3ce16a7..ab01ba9f 100644
--- a/muse/plugins/pandelay/pandelaymodel.cpp
+++ b/muse/plugins/pandelay/pandelaymodel.cpp
@@ -51,6 +51,18 @@ void PanDelayModel::setSamplerate(int sr) {
setPanDelay();
}
+void PanDelayModel::setBPM(float bpm) {
+ _BPM = bpm;
+ _delayTime = _beatRatio * 60.0 / _BPM;
+ setPanDelay();
+}
+
+void PanDelayModel::setBeatRatio(float br) {
+ _beatRatio = br;
+ _delayTime = _beatRatio * 60.0 / _BPM;
+ setPanDelay();
+}
+
void PanDelayModel::setDelayTime(float dt) {
if(dt < MINDELAYTIME) _delayTime = MINDELAYTIME;
else if(dt > MAXDELAYTIME) _delayTime = MAXDELAYTIME;
diff --git a/muse/plugins/pandelay/pandelaymodel.h b/muse/plugins/pandelay/pandelaymodel.h
index 66d68076..65983187 100644
--- a/muse/plugins/pandelay/pandelaymodel.h
+++ b/muse/plugins/pandelay/pandelaymodel.h
@@ -35,6 +35,10 @@
#define MAXBUFFERLENGTH 192000
#define MINFREQ 0.1 //in Hz
#define MAXFREQ 10.0 //in Hz
+#define MINBPM 60.0
+#define MAXBPM 255.0
+#define MINBEATRATIO 0.125
+#define MAXBEATRATIO 2.0
#define MINDELAYTIME 0.01 //in second
#define MAXDELAYTIME 2.0 //in second
@@ -45,7 +49,9 @@ class PanDelayModel {
int _samplerate;
//bool _beatFraction; //if true then the delay is calculated in beat fraction
- float _delayTime;
+ float _BPM;
+ float _beatRatio;
+ float _delayTime; //delay is calculated according to BMP and ratioBMP
float _feedback;
float _panLFOFreq;
float _panLFODepth;
@@ -67,6 +73,8 @@ class PanDelayModel {
~PanDelayModel();
void setSamplerate(int sr);
+ void setBeatRatio(float br);
+ void setBPM(float bpm);
void setDelayTime(float dt);
void setFeedback(float dt);
void setPanLFOFreq(float pf);
diff --git a/muse/synti/deicsonze/TODO b/muse/synti/deicsonze/TODO
index 29e681c2..f7d486f1 100644
--- a/muse/synti/deicsonze/TODO
+++ b/muse/synti/deicsonze/TODO
@@ -10,4 +10,4 @@
- Load BUMP preset
- calibrate portamento and pitch envelope to fit real DX11
- make deicsonze loadable as standalone by mus
-
+- It seems that there is still a bug on the note on, on some presets
diff --git a/muse/synti/deicsonze/deicsonze.cpp b/muse/synti/deicsonze/deicsonze.cpp
index 0cc2b2ea..195e2d13 100644
--- a/muse/synti/deicsonze/deicsonze.cpp
+++ b/muse/synti/deicsonze/deicsonze.cpp
@@ -2359,10 +2359,17 @@ void DeicsOnze::getInitData(int* length, const unsigned char** data) {
+ sizeof(float)*i], &val, sizeof(float));
}
//delay
- buffer[NUM_DELAY_TIME] = (unsigned char)getDelayTime();
- buffer[NUM_DELAY_FEEDBACK] = (unsigned char)getDelayFeedback();
- buffer[NUM_DELAY_LFO_FREQ] = (unsigned char)getDelayLFOFreq();
- buffer[NUM_DELAY_LFO_DEPTH] = (unsigned char)getDelayLFODepth();
+ float delayfloat;
+ delayfloat = getDelayBPM();
+ memcpy(&buffer[NUM_DELAY_BPM], &delayfloat, 4);
+ delayfloat = getDelayBeatRatio();
+ memcpy(&buffer[NUM_DELAY_BEATRATIO], &delayfloat, sizeof(float));
+ delayfloat = getDelayFeedback();
+ memcpy(&buffer[NUM_DELAY_FEEDBACK], &delayfloat, sizeof(float));
+ delayfloat = getDelayLFOFreq();
+ memcpy(&buffer[NUM_DELAY_LFO_FREQ], &delayfloat, sizeof(float));
+ delayfloat = getDelayLFODepth();
+ memcpy(&buffer[NUM_DELAY_LFO_DEPTH], &delayfloat, sizeof(float));
//save set data
int offset =
@@ -2609,33 +2616,51 @@ void DeicsOnze::parseInitData(int length, const unsigned char* data) {
MidiEvent evDelayRet(0,ME_SYSEX,(const unsigned char*)dataDelayRet, 2);
_gui->writeEvent(evDelayRet);
//initPluginDelay(plugins.find("pandelay", "pandelay"));
- setDelayTime((int)data[NUM_DELAY_TIME]);
- char dataDelayTime[2];
- dataDelayTime[0] = SYSEX_DELAYTIME;
- dataDelayTime[1] = (unsigned char)getDelayTime();
- MidiEvent evSysexDelayTime(0,ME_SYSEX,
- (const unsigned char*)dataDelayTime, 2);
- _gui->writeEvent(evSysexDelayTime);
- setDelayFeedback((int)data[NUM_DELAY_FEEDBACK]);
- char dataDelayFeedback[2];
+ float delayfloat;
+ memcpy(&delayfloat, &data[NUM_DELAY_BPM], sizeof(float));
+ setDelayBPM(delayfloat);
+ char dataDelayBPM[sizeof(float)+1];
+ dataDelayBPM[0] = SYSEX_DELAYBPM;
+ memcpy(&dataDelayBPM[1], &delayfloat, sizeof(float));
+ MidiEvent evSysexDelayBPM(0,ME_SYSEX,
+ (const unsigned char*)dataDelayBPM,
+ sizeof(float)+1);
+ _gui->writeEvent(evSysexDelayBPM);
+ memcpy(&delayfloat, &data[NUM_DELAY_BEATRATIO], sizeof(float));
+ setDelayBeatRatio(delayfloat);
+ char dataDelayBeatRatio[sizeof(float)+1];
+ dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO;
+ memcpy(&dataDelayBeatRatio[1], &delayfloat, sizeof(float));
+ MidiEvent evSysexDelayBeatRatio(0,ME_SYSEX,
+ (const unsigned char*)dataDelayBeatRatio,
+ sizeof(float)+1);
+ _gui->writeEvent(evSysexDelayBeatRatio);
+ memcpy(&delayfloat, &data[NUM_DELAY_FEEDBACK], sizeof(float));
+ setDelayFeedback(delayfloat);
+ char dataDelayFeedback[sizeof(float)+1];
dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK;
- dataDelayFeedback[1] = (unsigned char)getDelayFeedback();
+ memcpy(&dataDelayFeedback[1], &delayfloat, sizeof(float));
MidiEvent evSysexDelayFeedback(0,ME_SYSEX,
- (const unsigned char*)dataDelayFeedback, 2);
+ (const unsigned char*)dataDelayFeedback,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayFeedback);
- setDelayLFOFreq((int)data[NUM_DELAY_LFO_FREQ]);
- char dataDelayLFOFreq[2];
+ memcpy(&delayfloat, &data[NUM_DELAY_LFO_FREQ], sizeof(float));
+ setDelayLFOFreq(delayfloat);
+ char dataDelayLFOFreq[sizeof(float)+1];
dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ;
- dataDelayLFOFreq[1] = (unsigned char)getDelayLFOFreq();
+ memcpy(&dataDelayLFOFreq[1], &delayfloat, sizeof(float));
MidiEvent evSysexDelayLFOFreq(0,ME_SYSEX,
- (const unsigned char*)dataDelayLFOFreq, 2);
+ (const unsigned char*)dataDelayLFOFreq,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayLFOFreq);
- setDelayLFODepth((int)data[NUM_DELAY_LFO_DEPTH]);
- char dataDelayLFODepth[2];
+ memcpy(&delayfloat, &data[NUM_DELAY_LFO_DEPTH], sizeof(float));
+ setDelayLFODepth(delayfloat);
+ char dataDelayLFODepth[sizeof(float)+1];
dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH;
- dataDelayLFODepth[1] = (unsigned char)getDelayLFODepth();
+ memcpy(&dataDelayLFODepth[1], &delayfloat, sizeof(float));
MidiEvent evSysexDelayLFODepth(0,ME_SYSEX,
- (const unsigned char*)dataDelayLFODepth, 2);
+ (const unsigned char*)dataDelayLFODepth,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayLFODepth);
//load the set compressed
@@ -2876,29 +2901,41 @@ bool DeicsOnze::sysex(int length, const unsigned char* data, bool fromGui) {
memcpy(&pluginChorus, &data[1], sizeof(Plugin*));
initPluginChorus(pluginChorus);
break;
- case SYSEX_DELAYTIME:
- setDelayTime((int)data[1]);
+ case SYSEX_DELAYBPM:
+ memcpy(&f, &data[1], sizeof(float));
+ setDelayBPM(f);
+ if(!fromGui) {
+ MidiEvent evSysex(0, ME_SYSEX, data, length);
+ _gui->writeEvent(evSysex);
+ }
+ break;
+ case SYSEX_DELAYBEATRATIO:
+ memcpy(&f, &data[1], sizeof(float));
+ setDelayBeatRatio(f);
if(!fromGui) {
MidiEvent evSysex(0, ME_SYSEX, data, length);
_gui->writeEvent(evSysex);
}
break;
case SYSEX_DELAYFEEDBACK:
- setDelayFeedback((int)data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ setDelayFeedback(f);
if(!fromGui) {
MidiEvent evSysex(0, ME_SYSEX, data, length);
_gui->writeEvent(evSysex);
}
break;
case SYSEX_DELAYLFOFREQ:
- setDelayLFOFreq((int)data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ setDelayLFOFreq(f);
if(!fromGui) {
MidiEvent evSysex(0, ME_SYSEX, data, length);
_gui->writeEvent(evSysex);
}
break;
case SYSEX_DELAYLFODEPTH:
- setDelayLFODepth((int)data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ setDelayLFODepth(f);
if(!fromGui) {
MidiEvent evSysex(0, ME_SYSEX, data, length);
_gui->writeEvent(evSysex);
@@ -3508,6 +3545,8 @@ bool DeicsOnze::setController(int ch, int ctrl, int val, bool fromGui) {
_gui->writeEvent(ev);
}
break;
+ case CTRL_ALL_SOUNDS_OFF:
+ resetVoices();
default:
break;
}
diff --git a/muse/synti/deicsonze/deicsonze.h b/muse/synti/deicsonze/deicsonze.h
index 5e1f74b7..26316690 100644
--- a/muse/synti/deicsonze/deicsonze.h
+++ b/muse/synti/deicsonze/deicsonze.h
@@ -153,10 +153,11 @@
#define FILTERSTR "Filter"
#define SYSEX_DELAYACTIV 91
#define SYSEX_DELAYRETURN 92
-#define SYSEX_DELAYTIME 93
-#define SYSEX_DELAYFEEDBACK 94
-#define SYSEX_DELAYLFOFREQ 95
-#define SYSEX_DELAYLFODEPTH 96
+#define SYSEX_DELAYBPM 93
+#define SYSEX_DELAYBEATRATIO 94
+#define SYSEX_DELAYFEEDBACK 95
+#define SYSEX_DELAYLFOFREQ 96
+#define SYSEX_DELAYLFODEPTH 97
//REVERB PARAMETERS
@@ -212,11 +213,12 @@ enum {
NUM_CHORUS_LABEL = NUM_CHORUS_LIB + MAXSTRLENGTHFXLIB + 1,
NUM_IS_DELAY_ON = NUM_CHORUS_LABEL + MAXSTRLENGTHFXLABEL + 1,
NUM_DELAY_RETURN,
- NUM_DELAY_TIME,
- NUM_DELAY_FEEDBACK,
- NUM_DELAY_LFO_FREQ,
- NUM_DELAY_LFO_DEPTH,
- NUM_CONFIGLENGTH = NUM_DELAY_LFO_DEPTH + 1
+ NUM_DELAY_BPM,
+ NUM_DELAY_BEATRATIO = NUM_DELAY_BPM + sizeof(float),
+ NUM_DELAY_FEEDBACK = NUM_DELAY_BEATRATIO + sizeof(float),
+ NUM_DELAY_LFO_FREQ = NUM_DELAY_FEEDBACK + sizeof(float),
+ NUM_DELAY_LFO_DEPTH = NUM_DELAY_LFO_FREQ + sizeof(float),
+ NUM_CONFIGLENGTH = NUM_DELAY_LFO_DEPTH + sizeof(float)
};
class DeicsOnzeGui;
@@ -474,15 +476,17 @@ class DeicsOnze : public Mess {
double getReverbParam(int i);
void setChorusParam(int i, double val);
double getChorusParam(int i);
- void setDelayTime(int val); //0-255
- void setDelayFeedback(int val); //0-255
- void setDelayLFOFreq(int val); //0-255
- void setDelayLFODepth(int val); //0-255
- void setDelayDryWet(int val); //0-255
- int getDelayTime();
- int getDelayFeedback();
- int getDelayLFOFreq();
- int getDelayLFODepth();
+ void setDelayBPM(float val);
+ void setDelayBeatRatio(float val);
+ void setDelayFeedback(float val);
+ void setDelayLFOFreq(float val);
+ void setDelayLFODepth(float val);
+ void setDelayDryWet(float val);
+ float getDelayBPM();
+ float getDelayBeatRatio();
+ float getDelayFeedback();
+ float getDelayLFOFreq();
+ float getDelayLFODepth();
//Filter
LowFilter* _dryFilter;
diff --git a/muse/synti/deicsonze/deicsonzegui.cpp b/muse/synti/deicsonze/deicsonzegui.cpp
index b7119f43..f765221a 100644
--- a/muse/synti/deicsonze/deicsonzegui.cpp
+++ b/muse/synti/deicsonze/deicsonzegui.cpp
@@ -363,22 +363,28 @@ DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze)
SLOT(setDelayReturn(int)));
connect(chDelaySlider, SIGNAL(valueChanged(int)), this,
SLOT(setChannelDelay(int)));
- connect(delayTimeSlider, SIGNAL(valueChanged(int)), this,
- SLOT(setDelayTime(int)));
- connect(delayTimeFloatentry, SIGNAL(valueChanged(double, int)), this,
- SLOT(setDelayTime(double)));
- connect(delayFeedbackSlider, SIGNAL(valueChanged(int)), this,
- SLOT(setDelayFeedback(int)));
+ connect(delayBPMFloatentry, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayBPM(double)));
+ connect(delayBPMKnob, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayBPM(double)));
+ connect(delayBeatRatioFloatentry, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayBeatRatio(double)));
+ connect(delayBeatRatioKnob, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayBeatRatio(double)));
connect(delayFeedbackFloatentry, SIGNAL(valueChanged(double, int)), this,
SLOT(setDelayFeedback(double)));
- connect(delayPanLFOFreqSlider, SIGNAL(valueChanged(int)), this,
- SLOT(setDelayPanLFOFreq(int)));
+ connect(delayFeedbackKnob, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayFeedback(double)));
connect(delayPanLFOFreqFloatentry, SIGNAL(valueChanged(double, int)), this,
SLOT(setDelayPanLFOFreq(double)));
- connect(delayPanLFODepthSlider, SIGNAL(valueChanged(int)), this,
- SLOT(setDelayPanLFODepth(int)));
+ connect(delayPanLFOFreqKnob, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayPanLFOFreq(double)));
+ delayPanLFOFreqKnob->setMinLogValue(0.1);
+ delayPanLFOFreqKnob->setMaxLogValue(10.0);
connect(delayPanLFODepthFloatentry, SIGNAL(valueChanged(double, int)), this,
SLOT(setDelayPanLFODepth(double)));
+ connect(delayPanLFODepthKnob, SIGNAL(valueChanged(double, int)), this,
+ SLOT(setDelayPanLFODepth(double)));
//category subcategory preset
connect(categoryListView,
SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
@@ -827,7 +833,8 @@ void DeicsOnzeGui::setTextColor(const QColor & c) {
channelChorusGroupBox->setPalette(p);
parametersChorusGroupBox->setPalette(p);
fontSizeGroupBox->setPalette(p);
- delayTimeGroupBox->setPalette(p);
+ delayBPMGroupBox->setPalette(p);
+ delayBeatRatioGroupBox->setPalette(p);
delayFeedbackGroupBox->setPalette(p);
delayPanLFOGroupBox->setPalette(p);
delayPanDepthGroupBox->setPalette(p);
@@ -901,6 +908,12 @@ void DeicsOnzeGui::setEditTextColor(const QColor & c) {
if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleValueColor(c);
for(int i=0; i < (int)_reverbSliderVector.size(); i++)
if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleValueColor(c);
+ delayBPMKnob->setScaleValueColor(c);
+ delayBeatRatioKnob->setScaleValueColor(c);
+ delayFeedbackKnob->setScaleValueColor(c);
+ delayPanLFOFreqKnob->setScaleValueColor(c);
+ delayPanLFODepthKnob->setScaleValueColor(c);
+
//p.setColor(QPalette::WindowText, c);
//presetNameLabel->setPalette(p);
}
@@ -978,6 +991,11 @@ void DeicsOnzeGui::setEditBackgroundColor(const QColor & c) {
if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleColor(c);
for(int i=0; i < (int)_reverbSliderVector.size(); i++)
if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleColor(c);
+ delayBPMKnob->setScaleColor(c);
+ delayBeatRatioKnob->setScaleColor(c);
+ delayFeedbackKnob->setScaleColor(c);
+ delayPanLFOFreqKnob->setScaleColor(c);
+ delayPanLFODepthKnob->setScaleColor(c);
}
//-----------------------------------------------------------
@@ -1473,6 +1491,7 @@ void DeicsOnzeGui::processEvent(const MidiEvent& ev) {
//printf("ME_SYSEX\n");
unsigned char* data = ev.data();
int cmd = *data;
+ float f;
switch (cmd) {
case SYSEX_CHORUSACTIV :
updateChorusActiv((bool)data[1]);
@@ -1510,17 +1529,25 @@ void DeicsOnzeGui::processEvent(const MidiEvent& ev) {
case SYSEX_DELAYRETURN :
updateDelayReturn((int)data[1]);
break;
- case SYSEX_DELAYTIME :
- updateDelayTime((int) data[1]);
+ case SYSEX_DELAYBPM :
+ memcpy(&f, &data[1], sizeof(float));
+ updateDelayBPM(f);
+ break;
+ case SYSEX_DELAYBEATRATIO :
+ memcpy(&f, &data[1], sizeof(float));
+ updateDelayBeatRatio(f);
break;
case SYSEX_DELAYFEEDBACK :
- updateDelayFeedback((int) data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ updateDelayFeedback(f);
break;
case SYSEX_DELAYLFOFREQ :
- updateDelayPanLFOFreq((int) data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ updateDelayPanLFOFreq(f);
break;
case SYSEX_DELAYLFODEPTH :
- updateDelayPanLFODepth((int) data[1]);
+ memcpy(&f, &data[1], sizeof(float));
+ updateDelayPanLFODepth(f);
break;
case SYSEX_QUALITY :
updateQuality((int)data[1]);
@@ -3002,65 +3029,78 @@ void DeicsOnzeGui::setDelayReturn(int r) {
void DeicsOnzeGui::setChannelDelay(int d) {
sendController(_currentChannel, CTRL_VARIATION_SEND, (unsigned char)d);
}
-void DeicsOnzeGui::setDelayTime(int t) {
- unsigned char* message = new unsigned char[2];
- message[0]=SYSEX_DELAYTIME;
- message[1]=(unsigned char)t;
- sendSysex(message, 2);
- updateDelayTime(t);
-}
-void DeicsOnzeGui::setDelayTime(double t) {
- int it = (int)(((t - MINDELAYTIME) / (MAXDELAYTIME - MINDELAYTIME))*255.0);
- unsigned char* message = new unsigned char[2];
- message[0]=SYSEX_DELAYTIME;
- message[1]=(unsigned char)it;
- sendSysex(message, 2);
- updateDelayTime(it);
+//void DeicsOnzeGui::setDelayTime(int t) {
+// unsigned char* message = new unsigned char[2];
+// message[0]=SYSEX_DELAYTIME;
+// message[1]=(unsigned char)t;
+// sendSysex(message, 2);
+// updateDelayTime(t);
+//}
+void DeicsOnzeGui::setDelayBPM(double t) {
+ //int it = (int)(((t - MINDELAYTIME) / (MAXDELAYTIME - MINDELAYTIME))*255.0);
+ unsigned char* message = new unsigned char[sizeof(float)+1];
+ message[0]=SYSEX_DELAYBPM;
+ float f = (float)t;
+ memcpy(&message[1], &f, sizeof(float));
+ message[1]=(unsigned char)f;
+ sendSysex(message, sizeof(float)+1);
+ //updateDelayTime(it);
}
-void DeicsOnzeGui::setDelayFeedback(int f) {
- unsigned char* message = new unsigned char[2];
- message[0]=SYSEX_DELAYFEEDBACK;
+void DeicsOnzeGui::setDelayBeatRatio(double t) {
+ unsigned char* message = new unsigned char[sizeof(float)+1];
+ message[0]=SYSEX_DELAYBEATRATIO;
+ float f = (float)t;
+ memcpy(&message[1], &f, sizeof(float));
message[1]=(unsigned char)f;
- sendSysex(message, 2);
- updateDelayFeedback(f);
-}
-void DeicsOnzeGui::setDelayFeedback(double f) {
- int idf = (int)(f*128.0+128.0);
- unsigned char* message = new unsigned char[2];
+ sendSysex(message, sizeof(float)+1);
+}
+//void DeicsOnzeGui::setDelayFeedback(int f) {
+// unsigned char* message = new unsigned char[2];
+// message[0]=SYSEX_DELAYFEEDBACK;
+// message[1]=(unsigned char)f;
+// sendSysex(message, 2);
+// updateDelayFeedback(f);
+//}
+void DeicsOnzeGui::setDelayFeedback(double t) {
+ //int idf = (int)(f*128.0+128.0);
+ unsigned char* message = new unsigned char[sizeof(float)+1];
message[0]=SYSEX_DELAYFEEDBACK;
- message[1]=(unsigned char)idf;
- sendSysex(message, 2);
- updateDelayFeedback(idf);
-}
-void DeicsOnzeGui::setDelayPanLFOFreq(int pf) {
- unsigned char* message = new unsigned char[2];
- message[0]=SYSEX_DELAYLFOFREQ;
- message[1]=(unsigned char)pf;
- sendSysex(message, 2);
- updateDelayPanLFOFreq(pf);
+ float f = (float)t;
+ memcpy(&message[1], &f, sizeof(float));
+ sendSysex(message, sizeof(float)+1);
+ //updateDelayFeedback(idf);
}
+//void DeicsOnzeGui::setDelayPanLFOFreq(int pf) {
+// unsigned char* message = new unsigned char[2];
+// message[0]=SYSEX_DELAYLFOFREQ;
+// message[1]=(unsigned char)pf;
+// sendSysex(message, 2);
+// updateDelayPanLFOFreq(pf);
+//}
void DeicsOnzeGui::setDelayPanLFOFreq(double pf) {
- int ipf = (int)(((pf - MINFREQ) / (MAXFREQ - MINFREQ))*255.0);
- unsigned char* message = new unsigned char[2];
+ //int ipf = (int)(((pf - MINFREQ) / (MAXFREQ - MINFREQ))*255.0);
+ unsigned char* message = new unsigned char[sizeof(float)+1];
message[0]=SYSEX_DELAYLFOFREQ;
- message[1]=(unsigned char)ipf;
- sendSysex(message, 2);
- updateDelayPanLFOFreq(ipf);
-}
-void DeicsOnzeGui::setDelayPanLFODepth(int pd) {
- unsigned char* message = new unsigned char[2];
- message[0]=SYSEX_DELAYLFODEPTH;
- message[1]=(unsigned char)pd;
- sendSysex(message, 2);
- updateDelayPanLFODepth(pd);
+ float f = (float)pf;
+ memcpy(&message[1], &f, sizeof(float));
+ sendSysex(message, sizeof(float)+1);
+ //updateDelayPanLFOFreq(ipf);
}
+//void DeicsOnzeGui::setDelayPanLFODepth(int pd) {
+// unsigned char* message = new unsigned char[2];
+// message[0]=SYSEX_DELAYLFODEPTH;
+// message[1]=(unsigned char)pd;
+// sendSysex(message, 2);
+// updateDelayPanLFODepth(pd);
+//}
void DeicsOnzeGui::setDelayPanLFODepth(double pd) {
- int ipd = (int)(pd*255.0);
- unsigned char* message = new unsigned char[2];
+ //int ipd = (int)(pd*255.0);
+ unsigned char* message = new unsigned char[sizeof(float)+1];
message[0]=SYSEX_DELAYLFODEPTH;
- message[1]=(unsigned char)ipd;
- sendSysex(message, 2);
- updateDelayPanLFODepth(ipd);
+ float f = (float)pd;
+ memcpy(&message[1], &f, sizeof(float));
+ sendSysex(message, sizeof(float)+1);
+ //updateDelayPanLFODepth(ipd);
}
@@ -3313,39 +3353,44 @@ void DeicsOnzeGui::updateDelayReturn(int r) {
delayReturnSlider->setValue(r);
delayReturnSlider->blockSignals(false);
}
-void DeicsOnzeGui::updateDelayPanLFOFreq(int plf) {
- delayPanLFOFreqSlider->blockSignals(true);
- delayPanLFOFreqSlider->setValue(plf);
- delayPanLFOFreqSlider->blockSignals(false);
+void DeicsOnzeGui::updateDelayPanLFOFreq(float plf) {
+ delayPanLFOFreqKnob->blockSignals(true);
+ delayPanLFOFreqKnob->setValue((double)plf);
+ delayPanLFOFreqKnob->blockSignals(false);
delayPanLFOFreqFloatentry->blockSignals(true);
- delayPanLFOFreqFloatentry->setValue(MINFREQ + (MAXFREQ - MINFREQ)
- *((float)plf/255.0));
+ delayPanLFOFreqFloatentry->setValue((double)plf);
delayPanLFOFreqFloatentry->blockSignals(false);
}
-void DeicsOnzeGui::updateDelayTime(int dt) {
- delayTimeSlider->blockSignals(true);
- delayTimeSlider->setValue(dt);
- delayTimeSlider->blockSignals(false);
- delayTimeFloatentry->blockSignals(true);
- delayTimeFloatentry->setValue(MINDELAYTIME +
- (MAXDELAYTIME - MINDELAYTIME)
- *((float)dt/255.0));
- delayTimeFloatentry->blockSignals(false);
-}
-void DeicsOnzeGui::updateDelayFeedback(int df) {
- delayFeedbackSlider->blockSignals(true);
- delayFeedbackSlider->setValue(df);
- delayFeedbackSlider->blockSignals(false);
+void DeicsOnzeGui::updateDelayBPM(float dt) {
+ delayBPMKnob->blockSignals(true);
+ delayBPMKnob->setValue((double)dt);
+ delayBPMKnob->blockSignals(false);
+ delayBPMFloatentry->blockSignals(true);
+ delayBPMFloatentry->setValue((double)dt);
+ delayBPMFloatentry->blockSignals(false);
+}
+void DeicsOnzeGui::updateDelayBeatRatio(float dt) {
+ delayBeatRatioKnob->blockSignals(true);
+ delayBeatRatioKnob->setValue((double)dt);
+ delayBeatRatioKnob->blockSignals(false);
+ delayBeatRatioFloatentry->blockSignals(true);
+ delayBeatRatioFloatentry->setValue((double)dt);
+ delayBeatRatioFloatentry->blockSignals(false);
+}
+void DeicsOnzeGui::updateDelayFeedback(float df) {
+ delayFeedbackKnob->blockSignals(true);
+ delayFeedbackKnob->setValue((double)df);
+ delayFeedbackKnob->blockSignals(false);
delayFeedbackFloatentry->blockSignals(true);
- delayFeedbackFloatentry->setValue((float)(df - 128)/128.0);
+ delayFeedbackFloatentry->setValue((double)df);
delayFeedbackFloatentry->blockSignals(false);
}
-void DeicsOnzeGui::updateDelayPanLFODepth(int dpd) {
- delayPanLFODepthSlider->blockSignals(true);
- delayPanLFODepthSlider->setValue(dpd);
- delayPanLFODepthSlider->blockSignals(false);
+void DeicsOnzeGui::updateDelayPanLFODepth(float dpd) {
+ delayPanLFODepthKnob->blockSignals(true);
+ delayPanLFODepthKnob->setValue((double)dpd);
+ delayPanLFODepthKnob->blockSignals(false);
delayPanLFODepthFloatentry->blockSignals(true);
- delayPanLFODepthFloatentry->setValue((float)dpd/255.0);
+ delayPanLFODepthFloatentry->setValue((double)dpd);
delayPanLFODepthFloatentry->blockSignals(false);
}
diff --git a/muse/synti/deicsonze/deicsonzegui.h b/muse/synti/deicsonze/deicsonzegui.h
index fbbdaccd..236b4a9f 100644
--- a/muse/synti/deicsonze/deicsonzegui.h
+++ b/muse/synti/deicsonze/deicsonzegui.h
@@ -337,13 +337,14 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui
void setActivDelay(bool);
void setDelayReturn(int);
void setChannelDelay(int);
- void setDelayTime(int);
- void setDelayTime(double);
- void setDelayFeedback(int);
+ //void setDelayTime(int);
+ void setDelayBPM(double);
+ void setDelayBeatRatio(double);
+ //void setDelayFeedback(int);
void setDelayFeedback(double);
- void setDelayPanLFOFreq(int);
+ //void setDelayPanLFOFreq(int);
void setDelayPanLFOFreq(double);
- void setDelayPanLFODepth(int);
+ //void setDelayPanLFODepth(int);
void setDelayPanLFODepth(double);
//category subcategory preset
void setSet(void); //display the set, that is the category list
@@ -381,10 +382,11 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui
void updateDelayActiv(bool a);
void updateChannelDelay(int r);
void updateDelayReturn(int r);
- void updateDelayPanLFOFreq(int plf);
- void updateDelayTime(int dt);
- void updateDelayFeedback(int df);
- void updateDelayPanLFODepth(int dpd);
+ void updateDelayPanLFOFreq(float plf);
+ void updateDelayBPM(float dt);
+ void updateDelayBeatRatio(float dt);
+ void updateDelayFeedback(float df);
+ void updateDelayPanLFODepth(float dpd);
void addPluginCheckBox(int index, QString text, bool toggled,
QWidget* parent, QGridLayout* grid, bool isReverb);
void addPluginIntSlider(int index, QString text, double min, double max,
diff --git a/muse/synti/deicsonze/deicsonzegui.ui b/muse/synti/deicsonze/deicsonzegui.ui
index d649195c..9d75c967 100644
--- a/muse/synti/deicsonze/deicsonzegui.ui
+++ b/muse/synti/deicsonze/deicsonzegui.ui
@@ -3958,8 +3958,8 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<property name="spacing" >
<number>6</number>
</property>
- <item row="2" column="0" colspan="2" >
- <widget class="QGroupBox" name="delayTimeGroupBox" >
+ <item row="2" column="6" >
+ <widget class="QGroupBox" name="delayPanDepthGroupBox" >
<property name="maximumSize" >
<size>
<width>16777215</width>
@@ -3967,7 +3967,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="title" >
- <string>Delay Time (ms) </string>
+ <string>Delay Pan Depth</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
@@ -3977,42 +3977,23 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<number>6</number>
</property>
<item row="0" column="1" >
- <widget class="Awl::FloatEntry" name="delayTimeFloatentry" >
+ <widget class="Awl::FloatEntry" name="delayPanLFODepthFloatentry" >
<property name="maximumSize" >
<size>
<width>48</width>
<height>16777215</height>
</size>
</property>
- <property name="minValue" >
- <double>0.010000000000000</double>
- </property>
- <property name="maxValue" >
- <double>2.000000000000000</double>
- </property>
</widget>
</item>
<item row="0" column="0" >
- <widget class="QSlider" name="delayTimeSlider" >
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="whatsThis" >
- <string>Channel Chorus</string>
- </property>
- <property name="maximum" >
- <number>255</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
+ <widget class="Awl::Knob" name="delayPanLFODepthKnob" />
</item>
</layout>
</widget>
</item>
- <item row="2" column="3" colspan="2" >
- <widget class="QGroupBox" name="delayPanDepthGroupBox" >
+ <item row="1" column="6" >
+ <widget class="QGroupBox" name="delayPanLFOGroupBox" >
<property name="maximumSize" >
<size>
<width>16777215</width>
@@ -4020,7 +4001,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="title" >
- <string>Delay Pan Depth</string>
+ <string>Delay Pan LFO Freq</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
@@ -4029,37 +4010,43 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<property name="spacing" >
<number>6</number>
</property>
+ <item row="0" column="0" >
+ <widget class="Awl::Knob" name="delayPanLFOFreqKnob" >
+ <property name="value" >
+ <double>1.122018456226853</double>
+ </property>
+ <property name="minValue" >
+ <double>0.100000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>10.000000000000000</double>
+ </property>
+ <property name="log" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
<item row="0" column="1" >
- <widget class="Awl::FloatEntry" name="delayPanLFODepthFloatentry" >
+ <widget class="Awl::FloatEntry" name="delayPanLFOFreqFloatentry" >
<property name="maximumSize" >
<size>
<width>48</width>
<height>16777215</height>
</size>
</property>
- </widget>
- </item>
- <item row="0" column="0" >
- <widget class="QSlider" name="delayPanLFODepthSlider" >
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="whatsThis" >
- <string>Channel Chorus</string>
- </property>
- <property name="maximum" >
- <number>255</number>
+ <property name="minValue" >
+ <double>0.100000000000000</double>
</property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <property name="maxValue" >
+ <double>10.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
- <item row="2" column="2" >
- <widget class="QGroupBox" name="delayFeedbackGroupBox" >
+ <item row="1" column="3" colspan="3" >
+ <widget class="QGroupBox" name="channelDelayGroupBox" >
<property name="maximumSize" >
<size>
<width>16777215</width>
@@ -4067,7 +4054,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="title" >
- <string>Delay Feedback</string>
+ <string>Delay Ch Send Level </string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
@@ -4077,20 +4064,14 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<number>6</number>
</property>
<item row="0" column="1" >
- <widget class="Awl::FloatEntry" name="delayFeedbackFloatentry" >
- <property name="maximumSize" >
- <size>
- <width>48</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="minValue" >
- <double>-1.000000000000000</double>
+ <widget class="QSpinBox" name="chDelaySpinBox" >
+ <property name="maximum" >
+ <number>127</number>
</property>
</widget>
</item>
<item row="0" column="0" >
- <widget class="QSlider" name="delayFeedbackSlider" >
+ <widget class="QSlider" name="chDelaySlider" >
<property name="cursor" >
<cursor>13</cursor>
</property>
@@ -4098,7 +4079,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<string>Channel Chorus</string>
</property>
<property name="maximum" >
- <number>255</number>
+ <number>127</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
@@ -4108,8 +4089,8 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</layout>
</widget>
</item>
- <item row="1" column="3" colspan="2" >
- <widget class="QGroupBox" name="delayPanLFOGroupBox" >
+ <item row="2" column="4" colspan="2" >
+ <widget class="QGroupBox" name="delayFeedbackGroupBox" >
<property name="maximumSize" >
<size>
<width>16777215</width>
@@ -4117,7 +4098,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="title" >
- <string>Delay Pan LFO Freq</string>
+ <string>Delay Feedback</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
@@ -4127,23 +4108,17 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QSlider" name="delayPanLFOFreqSlider" >
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="whatsThis" >
- <string>Channel Chorus</string>
- </property>
- <property name="maximum" >
- <number>255</number>
+ <widget class="Awl::Knob" name="delayFeedbackKnob" >
+ <property name="value" >
+ <double>0.000000000000000</double>
</property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <property name="minValue" >
+ <double>-1.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="1" >
- <widget class="Awl::FloatEntry" name="delayPanLFOFreqFloatentry" >
+ <widget class="Awl::FloatEntry" name="delayFeedbackFloatentry" >
<property name="maximumSize" >
<size>
<width>48</width>
@@ -4151,17 +4126,14 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="minValue" >
- <double>0.100000000000000</double>
- </property>
- <property name="maxValue" >
- <double>10.000000000000000</double>
+ <double>-1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
- <item row="1" column="0" colspan="2" >
+ <item row="1" column="0" colspan="3" >
<widget class="QGroupBox" name="delayReturnGroupBox" >
<property name="maximumSize" >
<size>
@@ -4205,8 +4177,8 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</layout>
</widget>
</item>
- <item row="1" column="2" >
- <widget class="QGroupBox" name="channelDelayGroupBox" >
+ <item row="2" column="2" colspan="2" >
+ <widget class="QGroupBox" name="delayBeatRatioGroupBox" >
<property name="maximumSize" >
<size>
<width>16777215</width>
@@ -4214,7 +4186,7 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</size>
</property>
<property name="title" >
- <string>Delay Ch Send Level </string>
+ <string>Delay Beat Ratio</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
@@ -4223,33 +4195,92 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<property name="spacing" >
<number>6</number>
</property>
+ <item row="0" column="0" >
+ <widget class="Awl::Knob" name="delayBeatRatioKnob" >
+ <property name="value" >
+ <double>1.000000000000000</double>
+ </property>
+ <property name="minValue" >
+ <double>0.125000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>2.000000000000000</double>
+ </property>
+ </widget>
+ </item>
<item row="0" column="1" >
- <widget class="QSpinBox" name="chDelaySpinBox" >
- <property name="maximum" >
- <number>127</number>
+ <widget class="Awl::FloatEntry" name="delayBeatRatioFloatentry" >
+ <property name="maximumSize" >
+ <size>
+ <width>48</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="minValue" >
+ <double>0.010000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>2.000000000000000</double>
</property>
</widget>
</item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QGroupBox" name="delayBPMGroupBox" >
+ <property name="maximumSize" >
+ <size>
+ <width>16777215</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="title" >
+ <string>Delay BPM</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item row="0" column="0" >
- <widget class="QSlider" name="chDelaySlider" >
- <property name="cursor" >
- <cursor>13</cursor>
+ <widget class="Awl::Knob" name="delayBPMKnob" >
+ <property name="value" >
+ <double>100.000000000000000</double>
</property>
- <property name="whatsThis" >
- <string>Channel Chorus</string>
+ <property name="minValue" >
+ <double>60.000000000000000</double>
</property>
- <property name="maximum" >
- <number>127</number>
+ <property name="maxValue" >
+ <double>255.000000000000000</double>
</property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="Awl::FloatEntry" name="delayBPMFloatentry" >
+ <property name="maximumSize" >
+ <size>
+ <width>48</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maxLength" >
+ <number>6</number>
+ </property>
+ <property name="minValue" >
+ <double>60.000000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>255.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
- <item row="0" column="0" colspan="5" >
+ <item row="0" column="0" colspan="7" >
<widget class="QTabWidget" name="controlTabWidget" >
<property name="currentIndex" >
<number>0</number>
@@ -4932,10 +4963,10 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</widget>
</widget>
</item>
- <item row="3" column="1" colspan="3" >
- <widget class="QGroupBox" name="portamentoGroupBox" >
+ <item row="3" column="0" >
+ <widget class="QGroupBox" name="modeGroupBox" >
<property name="title" >
- <string>Potamento</string>
+ <string>Phony Mode</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
@@ -4945,86 +4976,29 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<number>6</number>
</property>
<item>
- <widget class="QComboBox" name="PortFingerFullComboBox" >
+ <widget class="QComboBox" name="polyMonoComboBox" >
<property name="enabled" >
<bool>true</bool>
</property>
<property name="cursor" >
<cursor>13</cursor>
</property>
- <property name="toolTip" >
- <string>Portamento Mode</string>
- </property>
<item>
<property name="text" >
- <string>FINGER</string>
+ <string>POLY</string>
</property>
</item>
<item>
<property name="text" >
- <string>FULL</string>
+ <string>MONO</string>
</property>
</item>
</widget>
</item>
- <item>
- <widget class="QLabel" name="PotamentoTimeLabel" >
- <property name="frameShape" >
- <enum>QFrame::Box</enum>
- </property>
- <property name="frameShadow" >
- <enum>QFrame::Sunken</enum>
- </property>
- <property name="text" >
- <string>PT</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSlider" name="PortamentoTimeSlider" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="toolTip" >
- <string>Portamento Time</string>
- </property>
- <property name="minimum" >
- <number>0</number>
- </property>
- <property name="maximum" >
- <number>99</number>
- </property>
- <property name="pageStep" >
- <number>1</number>
- </property>
- <property name="value" >
- <number>0</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSpinBox" name="PortamentoTimeSpinBox" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="toolTip" >
- <string>Portamento Time</string>
- </property>
- <property name="maximum" >
- <number>99</number>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
- <item row="3" column="4" >
+ <item row="3" column="5" colspan="2" >
<widget class="QGroupBox" name="pitchBendRangeGroupBox" >
<property name="title" >
<string>Pitch Bend Range</string>
@@ -5074,10 +5048,10 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</layout>
</widget>
</item>
- <item row="3" column="0" >
- <widget class="QGroupBox" name="modeGroupBox" >
+ <item row="3" column="1" colspan="4" >
+ <widget class="QGroupBox" name="portamentoGroupBox" >
<property name="title" >
- <string>Phony Mode</string>
+ <string>Potamento</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
@@ -5087,25 +5061,82 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<number>6</number>
</property>
<item>
- <widget class="QComboBox" name="polyMonoComboBox" >
+ <widget class="QComboBox" name="PortFingerFullComboBox" >
<property name="enabled" >
<bool>true</bool>
</property>
<property name="cursor" >
<cursor>13</cursor>
</property>
+ <property name="toolTip" >
+ <string>Portamento Mode</string>
+ </property>
<item>
<property name="text" >
- <string>POLY</string>
+ <string>FINGER</string>
</property>
</item>
<item>
<property name="text" >
- <string>MONO</string>
+ <string>FULL</string>
</property>
</item>
</widget>
</item>
+ <item>
+ <widget class="QLabel" name="PotamentoTimeLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="text" >
+ <string>PT</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="PortamentoTimeSlider" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ <property name="toolTip" >
+ <string>Portamento Time</string>
+ </property>
+ <property name="minimum" >
+ <number>0</number>
+ </property>
+ <property name="maximum" >
+ <number>99</number>
+ </property>
+ <property name="pageStep" >
+ <number>1</number>
+ </property>
+ <property name="value" >
+ <number>0</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="PortamentoTimeSpinBox" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" >
+ <string>Portamento Time</string>
+ </property>
+ <property name="maximum" >
+ <number>99</number>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -5848,356 +5879,8 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</widget>
</widget>
</item>
- <item rowspan="3" row="0" column="4" >
- <widget class="QGroupBox" name="channelCtrlGroupBox" >
- <property name="minimumSize" >
- <size>
- <width>96</width>
- <height>16</height>
- </size>
- </property>
- <property name="title" >
- <string>Channel Ctrl</string>
- </property>
- <layout class="QGridLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item row="2" column="0" >
- <widget class="Awl::VolKnob" name="channelPanKnob" >
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="minValue" >
- <double>0.000000000000000</double>
- </property>
- <property name="maxValue" >
- <double>1.000000000000000</double>
- </property>
- <property name="lineStep" >
- <double>0.100000000000000</double>
- </property>
- <property name="pageStep" >
- <double>0.200000000000000</double>
- </property>
- <property name="log" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="13" column="0" >
- <widget class="QLabel" name="releaseLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Release</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="12" column="0" >
- <widget class="Awl::Knob" name="releaseKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- </widget>
- </item>
- <item row="11" column="0" >
- <widget class="QLabel" name="attackTimeLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Attack</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="10" column="0" >
- <widget class="Awl::Knob" name="attackKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- </widget>
- </item>
- <item row="9" column="0" >
- <widget class="QLabel" name="detuneLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Detune</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="8" column="0" >
- <widget class="Awl::Knob" name="detuneKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- </widget>
- </item>
- <item row="7" column="0" >
- <widget class="QLabel" name="brightnessLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Brightness</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="6" column="0" >
- <widget class="Awl::Knob" name="brightnessKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- </widget>
- </item>
- <item row="5" column="0" >
- <widget class="QLabel" name="modulationLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Modulation</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="4" column="0" >
- <widget class="Awl::Knob" name="modulationKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="channelPanLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Pan</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="channelVolumeLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Volume</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="0" >
- <widget class="Awl::Knob" name="channelVolumeKnob" >
- <property name="minimumSize" >
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="cursor" >
- <cursor>13</cursor>
- </property>
- <property name="maxValue" >
- <double>1.000000000000000</double>
- </property>
- <property name="lineStep" >
- <double>0.100000000000000</double>
- </property>
- <property name="pageStep" >
- <double>0.200000000000000</double>
- </property>
- <property name="scaleSize" >
- <number>270</number>
- </property>
- <property name="markSize" >
- <number>6</number>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="2" row="0" column="1" >
- <widget class="Awl::VolKnob" name="masterVolKnob" >
- <property name="minimumSize" >
- <size>
- <width>40</width>
- <height>40</height>
- </size>
- </property>
- <property name="value" >
- <double>-31.287818861687722</double>
- </property>
- <property name="minValue" >
- <double>0.000000000000000</double>
- </property>
- <property name="maxValue" >
- <double>1.000000000000000</double>
- </property>
- <property name="lineStep" >
- <double>0.100000000000000</double>
- </property>
- <property name="pageStep" >
- <double>0.200000000000000</double>
- </property>
- <property name="log" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item rowspan="2" row="0" column="0" >
- <widget class="QLabel" name="masterVolumeLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Vol</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item rowspan="2" row="0" column="2" >
- <widget class="QGroupBox" name="generalBox" >
- <property name="title" >
- <string/>
- </property>
- <layout class="QGridLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item row="0" column="4" >
- <widget class="QSpinBox" name="nbrVoicesSpinBox" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="toolTip" >
- <string>Number of Voices</string>
- </property>
- <property name="maximum" >
- <number>64</number>
- </property>
- <property name="minimum" >
- <number>1</number>
- </property>
- <property name="value" >
- <number>8</number>
- </property>
- </widget>
- </item>
- <item row="0" column="3" >
- <widget class="QLabel" name="numberVoicesLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Number of voices</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="2" >
- <widget class="QCheckBox" name="ChannelCheckBox" >
- <property name="text" >
- <string>Enable</string>
- </property>
- <property name="checked" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QSpinBox" name="ChannelNumSpinBox" >
- <property name="maximum" >
- <number>16</number>
- </property>
- <property name="minimum" >
- <number>1</number>
- </property>
- </widget>
- </item>
- <item row="0" column="0" >
- <widget class="QLabel" name="channelNumLabel" >
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="text" >
- <string>Channel</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="panicButton" >
+ <item row="1" column="3" >
+ <widget class="QPushButton" name="resCtrlButton" >
<property name="maximumSize" >
<size>
<width>1000</width>
@@ -6685,15 +6368,15 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</font>
</property>
<property name="toolTip" >
- <string>Cut all notes off</string>
+ <string>Set Brightness, Detune, Attack and Release of the current channel to default</string>
</property>
<property name="text" >
- <string>Panic!</string>
+ <string>Res. Ctrl</string>
</property>
</widget>
</item>
- <item row="1" column="3" >
- <widget class="QPushButton" name="resCtrlButton" >
+ <item row="0" column="3" >
+ <widget class="QPushButton" name="panicButton" >
<property name="maximumSize" >
<size>
<width>1000</width>
@@ -7181,11 +6864,359 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
</font>
</property>
<property name="toolTip" >
- <string>Set Brightness, Detune, Attack and Release of the current channel to default</string>
+ <string>Cut all notes off</string>
</property>
<property name="text" >
- <string>Res. Ctrl</string>
+ <string>Panic!</string>
+ </property>
+ </widget>
+ </item>
+ <item rowspan="2" row="0" column="2" >
+ <widget class="QGroupBox" name="generalBox" >
+ <property name="title" >
+ <string/>
</property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="4" >
+ <widget class="QSpinBox" name="nbrVoicesSpinBox" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" >
+ <string>Number of Voices</string>
+ </property>
+ <property name="maximum" >
+ <number>64</number>
+ </property>
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ <property name="value" >
+ <number>8</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" >
+ <widget class="QLabel" name="numberVoicesLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Number of voices</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QCheckBox" name="ChannelCheckBox" >
+ <property name="text" >
+ <string>Enable</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QSpinBox" name="ChannelNumSpinBox" >
+ <property name="maximum" >
+ <number>16</number>
+ </property>
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QLabel" name="channelNumLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Channel</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item rowspan="2" row="0" column="0" >
+ <widget class="QLabel" name="masterVolumeLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Vol</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item rowspan="2" row="0" column="1" >
+ <widget class="Awl::VolKnob" name="masterVolKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>40</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="value" >
+ <double>-1.240780029054432</double>
+ </property>
+ <property name="minValue" >
+ <double>0.000000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>1.000000000000000</double>
+ </property>
+ <property name="lineStep" >
+ <double>0.100000000000000</double>
+ </property>
+ <property name="pageStep" >
+ <double>0.200000000000000</double>
+ </property>
+ <property name="log" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item rowspan="3" row="0" column="4" >
+ <widget class="QGroupBox" name="channelCtrlGroupBox" >
+ <property name="minimumSize" >
+ <size>
+ <width>96</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="title" >
+ <string>Channel Ctrl</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="2" column="0" >
+ <widget class="Awl::VolKnob" name="channelPanKnob" >
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ <property name="minValue" >
+ <double>0.000000000000000</double>
+ </property>
+ <property name="maxValue" >
+ <double>1.000000000000000</double>
+ </property>
+ <property name="lineStep" >
+ <double>0.100000000000000</double>
+ </property>
+ <property name="pageStep" >
+ <double>0.200000000000000</double>
+ </property>
+ <property name="log" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="13" column="0" >
+ <widget class="QLabel" name="releaseLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Release</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="12" column="0" >
+ <widget class="Awl::Knob" name="releaseKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ </widget>
+ </item>
+ <item row="11" column="0" >
+ <widget class="QLabel" name="attackTimeLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Attack</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="10" column="0" >
+ <widget class="Awl::Knob" name="attackKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="0" >
+ <widget class="QLabel" name="detuneLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Detune</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0" >
+ <widget class="Awl::Knob" name="detuneKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0" >
+ <widget class="QLabel" name="brightnessLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Brightness</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" >
+ <widget class="Awl::Knob" name="brightnessKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" >
+ <widget class="QLabel" name="modulationLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Modulation</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" >
+ <widget class="Awl::Knob" name="modulationKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QLabel" name="channelPanLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Pan</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="channelVolumeLabel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="text" >
+ <string>Volume</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="Awl::Knob" name="channelVolumeKnob" >
+ <property name="minimumSize" >
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="cursor" >
+ <cursor>13</cursor>
+ </property>
+ <property name="maxValue" >
+ <double>1.000000000000000</double>
+ </property>
+ <property name="lineStep" >
+ <double>0.100000000000000</double>
+ </property>
+ <property name="pageStep" >
+ <double>0.200000000000000</double>
+ </property>
+ <property name="scaleSize" >
+ <number>270</number>
+ </property>
+ <property name="markSize" >
+ <number>6</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
</layout>
@@ -7338,12 +7369,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7354,12 +7385,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7370,12 +7401,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7386,12 +7417,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7402,12 +7433,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7418,12 +7449,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7434,12 +7465,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7450,12 +7481,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7466,12 +7497,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7482,12 +7513,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7498,12 +7529,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7514,12 +7545,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -7530,12 +7561,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8490,12 +8521,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8506,12 +8537,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8522,12 +8553,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8538,12 +8569,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8554,12 +8585,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8570,12 +8601,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -8586,12 +8617,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>262</x>
- <y>163</y>
+ <x>285</x>
+ <y>155</y>
</hint>
<hint type="destinationlabel" >
- <x>515</x>
- <y>166</y>
+ <x>494</x>
+ <y>158</y>
</hint>
</hints>
</connection>
@@ -8602,12 +8633,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>515</x>
- <y>166</y>
+ <x>494</x>
+ <y>158</y>
</hint>
<hint type="destinationlabel" >
- <x>262</x>
- <y>163</y>
+ <x>285</x>
+ <y>155</y>
</hint>
</hints>
</connection>
@@ -8618,12 +8649,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>262</x>
- <y>209</y>
+ <x>285</x>
+ <y>180</y>
</hint>
<hint type="destinationlabel" >
- <x>504</x>
- <y>212</y>
+ <x>494</x>
+ <y>177</y>
</hint>
</hints>
</connection>
@@ -8634,12 +8665,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>504</x>
- <y>212</y>
+ <x>494</x>
+ <y>177</y>
</hint>
<hint type="destinationlabel" >
- <x>262</x>
- <y>209</y>
+ <x>285</x>
+ <y>180</y>
</hint>
</hints>
</connection>
@@ -8650,12 +8681,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>504</x>
- <y>258</y>
+ <x>494</x>
+ <y>216</y>
</hint>
<hint type="destinationlabel" >
- <x>262</x>
- <y>255</y>
+ <x>285</x>
+ <y>219</y>
</hint>
</hints>
</connection>
@@ -8666,12 +8697,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>262</x>
- <y>255</y>
+ <x>285</x>
+ <y>219</y>
</hint>
<hint type="destinationlabel" >
- <x>504</x>
- <y>258</y>
+ <x>494</x>
+ <y>216</y>
</hint>
</hints>
</connection>
@@ -8682,12 +8713,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>485</x>
- <y>484</y>
+ <x>486</x>
+ <y>483</y>
</hint>
<hint type="destinationlabel" >
- <x>537</x>
- <y>487</y>
+ <x>538</x>
+ <y>486</y>
</hint>
</hints>
</connection>
@@ -8698,12 +8729,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>537</x>
- <y>487</y>
+ <x>538</x>
+ <y>486</y>
</hint>
<hint type="destinationlabel" >
- <x>485</x>
- <y>484</y>
+ <x>486</x>
+ <y>483</y>
</hint>
</hints>
</connection>
@@ -8714,12 +8745,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>329</x>
- <y>484</y>
+ <x>293</x>
+ <y>483</y>
</hint>
<hint type="destinationlabel" >
- <x>381</x>
- <y>487</y>
+ <x>345</x>
+ <y>486</y>
</hint>
</hints>
</connection>
@@ -8730,12 +8761,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>381</x>
- <y>487</y>
+ <x>345</x>
+ <y>486</y>
</hint>
<hint type="destinationlabel" >
- <x>329</x>
- <y>484</y>
+ <x>293</x>
+ <y>483</y>
</hint>
</hints>
</connection>
@@ -8746,12 +8777,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>224</x>
+ <y>168</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>171</y>
</hint>
</hints>
</connection>
@@ -8762,12 +8793,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>223</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>224</x>
+ <y>220</y>
</hint>
</hints>
</connection>
@@ -8778,12 +8809,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>224</x>
+ <y>220</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>223</y>
</hint>
</hints>
</connection>
@@ -8794,12 +8825,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>171</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>224</x>
+ <y>168</y>
</hint>
</hints>
</connection>
@@ -8810,12 +8841,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>147</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>150</y>
</hint>
</hints>
</connection>
@@ -8826,12 +8857,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>178</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>181</y>
</hint>
</hints>
</connection>
@@ -8842,12 +8873,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>209</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>212</y>
</hint>
</hints>
</connection>
@@ -8858,12 +8889,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>240</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>243</y>
</hint>
</hints>
</connection>
@@ -8874,12 +8905,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>150</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -8890,12 +8921,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>243</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>240</y>
</hint>
</hints>
</connection>
@@ -8906,12 +8937,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>147</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>150</y>
</hint>
</hints>
</connection>
@@ -8922,12 +8953,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>181</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>178</y>
</hint>
</hints>
</connection>
@@ -8938,12 +8969,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>178</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>181</y>
</hint>
</hints>
</connection>
@@ -8954,12 +8985,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>209</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>212</y>
</hint>
</hints>
</connection>
@@ -8970,12 +9001,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>212</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>209</y>
</hint>
</hints>
</connection>
@@ -8986,12 +9017,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>240</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>243</y>
</hint>
</hints>
</connection>
@@ -9002,12 +9033,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>150</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -9018,12 +9049,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>243</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>240</y>
</hint>
</hints>
</connection>
@@ -9034,12 +9065,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>150</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -9050,12 +9081,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>181</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>178</y>
</hint>
</hints>
</connection>
@@ -9066,12 +9097,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>212</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>209</y>
</hint>
</hints>
</connection>
@@ -9082,12 +9113,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>121</x>
- <y>149</y>
+ <x>539</x>
+ <y>243</y>
</hint>
<hint type="destinationlabel" >
- <x>121</x>
- <y>149</y>
+ <x>248</x>
+ <y>240</y>
</hint>
</hints>
</connection>
@@ -9114,12 +9145,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>486</x>
- <y>150</y>
+ <x>487</x>
+ <y>149</y>
</hint>
<hint type="destinationlabel" >
- <x>538</x>
- <y>153</y>
+ <x>539</x>
+ <y>152</y>
</hint>
</hints>
</connection>
@@ -9130,12 +9161,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>538</x>
- <y>153</y>
+ <x>539</x>
+ <y>152</y>
</hint>
<hint type="destinationlabel" >
- <x>486</x>
- <y>150</y>
+ <x>487</x>
+ <y>149</y>
</hint>
</hints>
</connection>
@@ -9146,12 +9177,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>487</x>
+ <y>149</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>539</x>
+ <y>152</y>
</hint>
</hints>
</connection>
@@ -9162,12 +9193,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>539</x>
+ <y>152</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>487</x>
+ <y>149</y>
</hint>
</hints>
</connection>
@@ -9178,12 +9209,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -9194,12 +9225,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
<hint type="destinationlabel" >
- <x>110</x>
- <y>115</y>
+ <x>111</x>
+ <y>114</y>
</hint>
</hints>
</connection>
@@ -9210,12 +9241,12 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>302</x>
- <y>339</y>
+ <x>351</x>
+ <y>319</y>
</hint>
<hint type="destinationlabel" >
- <x>344</x>
- <y>343</y>
+ <x>403</x>
+ <y>322</y>
</hint>
</hints>
</connection>
@@ -9226,12 +9257,172 @@ Wave form 8 = &lt;i>if &lt;b>t&lt;/b>&amp;#060 pi then sin(2*&lt;b>t&lt;/b>)*sin
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
- <x>346</x>
- <y>329</y>
+ <x>403</x>
+ <y>322</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>351</x>
+ <y>319</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayPanLFOFreqKnob</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayPanLFOFreqFloatentry</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>477</x>
+ <y>308</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>498</x>
+ <y>308</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayPanLFOFreqFloatentry</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayPanLFOFreqKnob</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>497</x>
+ <y>319</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>477</x>
+ <y>326</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayBPMKnob</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayBPMFloatentry</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>84</x>
+ <y>389</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>104</x>
+ <y>393</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayBPMFloatentry</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayBPMKnob</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>121</x>
+ <y>404</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>78</x>
+ <y>409</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayBeatRatioKnob</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayBeatRatioFloatentry</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>212</x>
+ <y>386</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>252</x>
+ <y>392</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayBeatRatioFloatentry</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayBeatRatioKnob</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>271</x>
+ <y>398</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>228</x>
+ <y>411</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayFeedbackKnob</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayFeedbackFloatentry</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>347</x>
+ <y>388</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>368</x>
+ <y>393</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayFeedbackFloatentry</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayFeedbackKnob</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>379</x>
+ <y>405</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>352</x>
+ <y>409</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayPanLFODepthKnob</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayPanLFODepthFloatentry</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>464</x>
+ <y>387</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>507</x>
+ <y>396</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>delayPanLFODepthFloatentry</sender>
+ <signal>valueChanged(double,int)</signal>
+ <receiver>delayPanLFODepthKnob</receiver>
+ <slot>setValue(double)</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>518</x>
+ <y>407</y>
</hint>
<hint type="destinationlabel" >
- <x>278</x>
- <y>329</y>
+ <x>471</x>
+ <y>409</y>
</hint>
</hints>
</connection>
diff --git a/muse/synti/deicsonze/deicsonzeplugin.cpp b/muse/synti/deicsonze/deicsonzeplugin.cpp
index 5d882ff5..e66a4278 100644
--- a/muse/synti/deicsonze/deicsonzeplugin.cpp
+++ b/muse/synti/deicsonze/deicsonzeplugin.cpp
@@ -96,31 +96,48 @@ void DeicsOnze::initPluginDelay(Plugin* pluginDelay) {
_pluginIDelay->setControllerList(c);
//setChorusParam(i, pluginDelay->defaultValue(i));
}
- setDelayDryWet(255);
+ setDelayDryWet(1);
- char dataDelayTime[2];
- dataDelayTime[0] = SYSEX_DELAYTIME;
- dataDelayTime[1] = (unsigned char)getDelayTime();
- MidiEvent evSysexDelayTime(0,ME_SYSEX,
- (const unsigned char*)dataDelayTime, 2);
- _gui->writeEvent(evSysexDelayTime);
- char dataDelayFeedback[2];
+ float f;
+ char dataDelayBPM[sizeof(float)+1];
+ dataDelayBPM[0] = SYSEX_DELAYBPM;
+ f = getDelayBPM();
+ memcpy(&dataDelayBPM[1], &f, sizeof(float));
+ MidiEvent evSysexDelayBPM(0,ME_SYSEX,
+ (const unsigned char*)dataDelayBPM,
+ sizeof(float)+1);
+ _gui->writeEvent(evSysexDelayBPM);
+ char dataDelayBeatRatio[sizeof(float)+1];
+ dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO;
+ f = getDelayBeatRatio();
+ memcpy(&dataDelayBeatRatio[1], &f, sizeof(float));
+ MidiEvent evSysexDelayBeatRatio(0,ME_SYSEX,
+ (const unsigned char*)dataDelayBeatRatio,
+ sizeof(float)+1);
+ _gui->writeEvent(evSysexDelayBeatRatio);
+ char dataDelayFeedback[sizeof(float)+1];
dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK;
- dataDelayFeedback[1] = (unsigned char)getDelayFeedback();
+ f = getDelayFeedback();
+ memcpy(&dataDelayFeedback[1], &f, sizeof(float));
MidiEvent evSysexDelayFeedback(0,ME_SYSEX,
- (const unsigned char*)dataDelayFeedback, 2);
+ (const unsigned char*)dataDelayFeedback,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayFeedback);
- char dataDelayLFOFreq[2];
+ char dataDelayLFOFreq[sizeof(float)+1];
dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ;
- dataDelayLFOFreq[1] = (unsigned char)getDelayLFOFreq();
+ f = getDelayLFOFreq();
+ memcpy(&dataDelayLFOFreq[1], &f, sizeof(float));
MidiEvent evSysexDelayLFOFreq(0,ME_SYSEX,
- (const unsigned char*)dataDelayLFOFreq, 2);
+ (const unsigned char*)dataDelayLFOFreq,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayLFOFreq);
- char dataDelayLFODepth[2];
+ char dataDelayLFODepth[sizeof(float)+1];
dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH;
- dataDelayLFODepth[1] = (unsigned char)getDelayLFODepth();
+ f = getDelayLFODepth();
+ memcpy(&dataDelayLFODepth, &f, sizeof(float)+1);
MidiEvent evSysexDelayLFODepth(0,ME_SYSEX,
- (const unsigned char*)dataDelayLFODepth, 2);
+ (const unsigned char*)dataDelayLFODepth,
+ sizeof(float)+1);
_gui->writeEvent(evSysexDelayLFODepth);
}
@@ -399,39 +416,41 @@ void DeicsOnzeGui::updateChorusFloatEntry(double v, int i) {
//-------------------------------------------------------------
// set Delay
//-------------------------------------------------------------
-void DeicsOnze::setDelayTime(int val) {
- float res = MINDELAYTIME + (MAXDELAYTIME - MINDELAYTIME)*((float)val/255.0);
- _pluginIDelay->controller(0)->setCurVal(res);
+void DeicsOnze::setDelayBPM(float val) {
+ _pluginIDelay->controller(0)->setCurVal(val);
}
-int DeicsOnze::getDelayTime() {
- float dtf = _pluginIDelay->controller(0)->curVal().f;
- return (int)(((dtf - MINDELAYTIME) / (MAXDELAYTIME - MINDELAYTIME))*255.0);
+void DeicsOnze::setDelayBeatRatio(float val) {
+ _pluginIDelay->controller(1)->setCurVal(val);
}
-void DeicsOnze::setDelayFeedback(int val) {
- float res = (float)(val - 128)/128.0;
- _pluginIDelay->controller(1)->setCurVal(res);
+float DeicsOnze::getDelayBPM() {
+ float dtf = _pluginIDelay->controller(0)->curVal().f;
+ return dtf;
}
-int DeicsOnze::getDelayFeedback() {
+float DeicsOnze::getDelayBeatRatio() {
float dtf = _pluginIDelay->controller(1)->curVal().f;
- return (int)(dtf*128.0+128.0);
+ return dtf;
}
-void DeicsOnze::setDelayLFOFreq(int val) {
- float res = MINFREQ + (MAXFREQ - MINFREQ)*((float)val/255.0);
- _pluginIDelay->controller(2)->setCurVal(res);
+void DeicsOnze::setDelayFeedback(float val) {
+ _pluginIDelay->controller(2)->setCurVal(val);
}
-int DeicsOnze::getDelayLFOFreq() {
+float DeicsOnze::getDelayFeedback() {
float dtf = _pluginIDelay->controller(2)->curVal().f;
- return (int)(((dtf - MINFREQ) / (MAXFREQ - MINFREQ))*255.0);
+ return dtf;
+}
+void DeicsOnze::setDelayLFOFreq(float val) {
+ _pluginIDelay->controller(3)->setCurVal(val);
+}
+float DeicsOnze::getDelayLFOFreq() {
+ float dtf = _pluginIDelay->controller(3)->curVal().f;
+ return dtf;
}
-void DeicsOnze::setDelayLFODepth(int val) {
- float res = (float)val/255.0;
- _pluginIDelay->controller(3)->setCurVal(res);
+void DeicsOnze::setDelayLFODepth(float val) {
+ _pluginIDelay->controller(4)->setCurVal(val);
}
-int DeicsOnze::getDelayLFODepth() {
- float dtd = _pluginIDelay->controller(3)->curVal().f;
- return (int)(dtd*255.0);
+float DeicsOnze::getDelayLFODepth() {
+ float dtd = _pluginIDelay->controller(4)->curVal().f;
+ return dtd;
}
-void DeicsOnze::setDelayDryWet(int val) {
- float res = (float)val/255.0;
- _pluginIDelay->controller(4)->setCurVal(res);
+void DeicsOnze::setDelayDryWet(float val) {
+ _pluginIDelay->controller(5)->setCurVal(val);
}