diff options
author | Nil Geisweiller <a-lin@sourceforge.net> | 2007-02-01 13:46:13 +0000 |
---|---|---|
committer | Nil Geisweiller <a-lin@sourceforge.net> | 2007-02-01 13:46:13 +0000 |
commit | 62a4b58e7800629b3b1b59d5817771e9d2d7eac2 (patch) | |
tree | c190eeb9356115132c9ca981729cafb3e1756730 | |
parent | 15cfcf7771fcc9fb8b30cab3f91249c25db1b219 (diff) |
see ChangeLog
-rw-r--r-- | muse/CMakeLists.txt | 4 | ||||
-rw-r--r-- | muse/ChangeLog | 2 | ||||
-rw-r--r-- | muse/plugins/pandelay/ladspapandelay.cpp | 15 | ||||
-rw-r--r-- | muse/plugins/pandelay/ladspapandelay.h | 2 | ||||
-rw-r--r-- | muse/plugins/pandelay/pandelay.cpp | 7 | ||||
-rw-r--r-- | muse/plugins/pandelay/pandelaymodel.cpp | 12 | ||||
-rw-r--r-- | muse/plugins/pandelay/pandelaymodel.h | 10 | ||||
-rw-r--r-- | muse/synti/deicsonze/TODO | 2 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonze.cpp | 95 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonze.h | 40 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.cpp | 229 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.h | 20 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.ui | 1699 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzeplugin.cpp | 101 |
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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</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); } |