diff options
author | Nil Geisweiller <a-lin@sourceforge.net> | 2006-10-15 12:36:50 +0000 |
---|---|---|
committer | Nil Geisweiller <a-lin@sourceforge.net> | 2006-10-15 12:36:50 +0000 |
commit | a661bf5562f02d776b335fd9d3d256ee448acc8d (patch) | |
tree | 22280d705cdef5d25178d13ff08ba04f27104a86 | |
parent | 3a3c7cc80ba01dc7d0c32935ccd23325139f1ecf (diff) |
see ChangeLog
-rw-r--r-- | muse/ChangeLog | 5 | ||||
-rw-r--r-- | muse/muse/plugingui.cpp | 2 | ||||
-rw-r--r-- | muse/plugins/CMakeLists.txt | 2 | ||||
-rw-r--r-- | muse/plugins/freeverb/CMakeLists.txt | 3 | ||||
-rw-r--r-- | muse/synti/deicsonze/CMakeLists.txt | 8 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonze.cpp | 318 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonze.h | 60 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.cpp | 270 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.h | 60 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzegui.ui | 2164 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzepreset.cpp | 2 | ||||
-rw-r--r-- | muse/synti/deicsonze/deicsonzepreset.h | 2 |
12 files changed, 2028 insertions, 868 deletions
diff --git a/muse/ChangeLog b/muse/ChangeLog index 282d5768..12f39d09 100644 --- a/muse/ChangeLog +++ b/muse/ChangeLog @@ -1,3 +1,8 @@ +15.10 (ng) + - DeicsOnze 0.5, add FX send + - fix installation path for freeverb + - fix ladspa checkbox parameter + - add LADSPA plugin doublechorus 12.10 (ws) - added post fader plugins for mixer - removed special aux send track type. Aux send is now implemented as diff --git a/muse/muse/plugingui.cpp b/muse/muse/plugingui.cpp index c452eb80..b0441f8c 100644 --- a/muse/muse/plugingui.cpp +++ b/muse/muse/plugingui.cpp @@ -425,7 +425,7 @@ printf("build gui from ui <path><%s>\n", path.toLatin1().data()); CheckBox* cb = new CheckBox(mw); cb->setId(i); cb->setText(QString(plugin->getParameterName(i))); - cb->setChecked(plugin->param(i) > 0.5); + cb->setChecked(plugin->param(i) > 0.0); cb->setFixedHeight(h); cb->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); diff --git a/muse/plugins/CMakeLists.txt b/muse/plugins/CMakeLists.txt index 21630660..e62f25ad 100644 --- a/muse/plugins/CMakeLists.txt +++ b/muse/plugins/CMakeLists.txt @@ -18,5 +18,5 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #============================================================================= -subdirs( freeverb ) +subdirs( freeverb doublechorus ) diff --git a/muse/plugins/freeverb/CMakeLists.txt b/muse/plugins/freeverb/CMakeLists.txt index e5ccc677..5e4aa13c 100644 --- a/muse/plugins/freeverb/CMakeLists.txt +++ b/muse/plugins/freeverb/CMakeLists.txt @@ -27,6 +27,7 @@ add_library ( freeverb SHARED # set_target_properties (freeverb PROPERTIES PREFIX "" + #COMPILE_FLAGS "-O3" ) -install_files( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_PATH}/plugins freeverb) +install_targets ( /lib/${MusE_INSTALL_NAME}/plugins freeverb) diff --git a/muse/synti/deicsonze/CMakeLists.txt b/muse/synti/deicsonze/CMakeLists.txt index 9266f9ce..a738a812 100644 --- a/muse/synti/deicsonze/CMakeLists.txt +++ b/muse/synti/deicsonze/CMakeLists.txt @@ -22,8 +22,9 @@ QT4_WRAP_CPP ( deicsonze_mocs deicsonzegui.h ) QT4_WRAP_UI ( deicsonze_uis deicsonzegui.ui ) add_library ( deicsonze SHARED - deicsonze.cpp + deicsonze.cpp deicsonzepreset.cpp + deicsonzeplugin.cpp deicsonzegui.cpp deicsonzegui.h ${deicsonze_mocs} @@ -37,7 +38,8 @@ target_link_libraries( deicsonze synti ) # set_target_properties ( deicsonze PROPERTIES PREFIX "" - COMPILE_FLAGS "-O3 -include ${PROJECT_BINARY_DIR}/all-pic.h" + #COMPILE_FLAGS "-O3 -include ${PROJECT_BINARY_DIR}/all-pic.h" + COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h" ) target_link_libraries(deicsonze @@ -47,4 +49,4 @@ target_link_libraries(deicsonze install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/synthi/ deicsonze ) -install_files ( /share/${MusE_INSTALL_NAME}/presets/deicsonze SutulaBank.dei )
\ No newline at end of file +install_files ( /share/${MusE_INSTALL_NAME}/presets/deicsonze SutulaBank.dei ) diff --git a/muse/synti/deicsonze/deicsonze.cpp b/muse/synti/deicsonze/deicsonze.cpp index b7d6adca..c7c4d9c5 100644 --- a/muse/synti/deicsonze/deicsonze.cpp +++ b/muse/synti/deicsonze/deicsonze.cpp @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // // @@ -34,6 +34,7 @@ #include "muse/midi.h" #include "libsynti/mess.h" +#include "plugin.h" #include "muse/midictrl.h" #include "deicsonze.h" #include "config.h" @@ -48,42 +49,55 @@ int DeicsOnze::useCount = 0; // DeicsOnze //--------------------------------------------------------- -DeicsOnze::DeicsOnze() : Mess(2) -{ - if (useCount++ == 0) { - // create sinus wave table, W1 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W1][i] = - (float)(sin((i * 2.0 * M_PI) / (double)RESOLUTION)); - // create sinus*abs(sinus) wave table, W2 - for(int i = 0; i < RESOLUTION; i++){ - double t = (i * 2.0 * M_PI) / (double)RESOLUTION; - waveTable[W2][i] = (float)(ABS(sin(t))*sin(t));} - // create halfsinus_ wave table, W3 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W3][i] = (float) - (i<RESOLUTION/2?sin((i*2.0*M_PI)/(double)RESOLUTION):0.0); - // create halfsinus*abs(sinus)_ wave table, W4 - for(int i = 0; i < RESOLUTION; i++){ - double t = (i * 2.0 * M_PI) / (double)RESOLUTION; - waveTable[W4][i] = (float)(i<RESOLUTION/2?ABS(sin(t))*sin(t):0.0);} - // create sinus_ wave table, W5 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W5][i] = (float) - (i<RESOLUTION/2?sin((i*4.0*M_PI) / (double)RESOLUTION):0.0); - // create sinus*abs(sinus)_ wave table, W6 - for(int i = 0; i < RESOLUTION; i++){ - double t = (i*4.0*M_PI) / (double)RESOLUTION; - waveTable[W6][i] = (float)(i<RESOLUTION/2?ABS(sin(t))*sin(t):0.0);} +DeicsOnze::DeicsOnze() : Mess(2) { + if (useCount++ == 0) { + // create sinus wave table, W1 + for(int i = 0; i < RESOLUTION; i++) + waveTable[W1][i] = + (float)(sin((i * 2.0 * M_PI) / (double)RESOLUTION)); + // create sinus*abs(sinus) wave table, W2 + for(int i = 0; i < RESOLUTION; i++){ + double t = (i * 2.0 * M_PI) / (double)RESOLUTION; + waveTable[W2][i] = (float)(ABS(sin(t))*sin(t));} + // create halfsinus_ wave table, W3 + for(int i = 0; i < RESOLUTION; i++) + waveTable[W3][i] = (float) + (i<RESOLUTION/2?sin((i*2.0*M_PI)/(double)RESOLUTION):0.0); + // create halfsinus*abs(sinus)_ wave table, W4 + for(int i = 0; i < RESOLUTION; i++){ + double t = (i * 2.0 * M_PI) / (double)RESOLUTION; + waveTable[W4][i] = (float)(i<RESOLUTION/2?ABS(sin(t))*sin(t):0.0);} + // create sinus_ wave table, W5 + for(int i = 0; i < RESOLUTION; i++) + waveTable[W5][i] = (float) + (i<RESOLUTION/2?sin((i*4.0*M_PI) / (double)RESOLUTION):0.0); + // create sinus*abs(sinus)_ wave table, W6 + for(int i = 0; i < RESOLUTION; i++){ + double t = (i*4.0*M_PI) / (double)RESOLUTION; + waveTable[W6][i] = (float)(i<RESOLUTION/2?ABS(sin(t))*sin(t):0.0);} // create 2halfsinus_ wave table, W7 - for(int i = 0; i < RESOLUTION; i++) - waveTable[W7][i] = (float) - (i<RESOLUTION/2?ABS(sin((i*4.0*M_PI)/(double)RESOLUTION)):0.0); - // create 2halfsinus*abs(sinus)_ wave table, W8 - for(int i = 0; i < RESOLUTION; i++){ - double t = (i * 4.0 * M_PI) / (double)RESOLUTION; - waveTable[W8][i] = (float)(i<RESOLUTION/2?sin(t)*sin(t):0.0);} - } + for(int i = 0; i < RESOLUTION; i++) + waveTable[W7][i] = (float) + (i<RESOLUTION/2?ABS(sin((i*4.0*M_PI)/(double)RESOLUTION)):0.0); + // create 2halfsinus*abs(sinus)_ wave table, W8 + for(int i = 0; i < RESOLUTION; i++){ + double t = (i * 4.0 * M_PI) / (double)RESOLUTION; + waveTable[W8][i] = (float)(i<RESOLUTION/2?sin(t)*sin(t):0.0);} + } + + //alloc temp buffers chorus and reverb + tempInputChorus = (float**) malloc(sizeof(float*)*NBRFXINPUTS); + for(int i = 0; i < NBRFXINPUTS; i++) + tempInputChorus[i] = (float*) malloc(sizeof(float*)*MAXFXBUFFERSIZE); + tempInputReverb = (float**) malloc(sizeof(float*)*NBRFXINPUTS); + for(int i = 0; i < NBRFXINPUTS; i++) + tempInputReverb[i] = (float*) malloc(sizeof(float*)*MAXFXBUFFERSIZE); + tempOutputChorus = (float**) malloc(sizeof(float*)*NBRFXOUTPUTS); + for(int i = 0; i < NBRFXOUTPUTS; i++) + tempOutputChorus[i] = (float*) malloc(sizeof(float*)*MAXFXBUFFERSIZE); + tempOutputReverb = (float**) malloc(sizeof(float*)*NBRFXOUTPUTS); + for(int i = 0; i < NBRFXOUTPUTS; i++) + tempOutputReverb[i] = (float*) malloc(sizeof(float*)*MAXFXBUFFERSIZE); srand(time(0)); // initialize random number generator @@ -100,13 +114,17 @@ DeicsOnze::DeicsOnze() : Mess(2) //INSTPREFIX + "/share/" + PACKAGEVERSION + "/presets/deicsonze/ARCH_ALIN"; _isBackgroundPix = true; //false if an initial bank must be download _backgroundPixPath = INSTPREFIX "/share/muse-" VERSION "/wallpapers/paper2.jpg"; - //"/usr/local/share/muse-1.0pre1/wallpapers/abstractdeicsonze1.jpg"; + //"/usr/local/share/muse-1.0pre1/wallpapers/abstractdeicsonze1.jpg"; //initialization GUI _gui = new DeicsOnzeGui(this); _gui->hide(); // to avoid flicker during MusE startup _gui->setWindowTitle(QString("DeicsOnze")); + //FX + initPluginReverb(plugins.find("freeverb", "freeverb1")); + initPluginChorus(plugins.find("doublechorus", "doublechorus1")); + //Load configuration QString defaultConf = (QString(getenv("HOME")) + QString("/." DEICSONZESTR ".dco")); FILE* f; @@ -146,6 +164,22 @@ DeicsOnze::~DeicsOnze() { //if (--useCount == 0) //delete[] sine_table; + //dealloc temp buffers chorus and reverb + for(int i = 0; i < NBRFXINPUTS; i++) free(tempInputChorus[i]); + free(tempInputChorus); + for(int i = 0; i < NBRFXINPUTS; i++) free(tempInputReverb[i]); + free(tempInputReverb); + for(int i = 0; i < NBRFXOUTPUTS; i++) free(tempOutputChorus[i]); + free(tempOutputChorus); + for(int i = 0; i < NBRFXOUTPUTS; i++) free(tempOutputReverb[i]); + free(tempOutputReverb); +} + +//--------------------------------------------------------- +// getSinusWaveTable +//--------------------------------------------------------- +float* DeicsOnze::getSinusWaveTable() { + return waveTable[W1]; } //--------------------------------------------------------- @@ -444,6 +478,10 @@ void DeicsOnze::initGlobal() { setMasterVol(INITMASTERVOL); _global.quality = high; _global.fontSize = 9; + _global.isChorusActivated = false; + _global.chorusReturn = 128.0/(float)MAXFXRETURN; + _global.isReverbActivated = false; + _global.reverbReturn = 128.0/(float)MAXFXRETURN; initChannels(); } @@ -466,6 +504,8 @@ void DeicsOnze::initChannel(int c) { _global.channel[c].lfoIndex = 0; _global.channel[c].nbrVoices = 8; _global.channel[c].isLastNote = false; + _global.channel[c].chorusAmount = 0.0; + _global.channel[c].reverbAmount = 0.0; applyChannelAmp(c); initVoices(c); } @@ -623,38 +663,65 @@ void DeicsOnze::applyChannelAmp(int c) { // setChannelPan //---------------------------------------------------------------- void DeicsOnze::setChannelPan(int c, int p) { - _global.channel[c].pan = p; + _global.channel[c].pan = p; } //---------------------------------------------------------------- // setChannelDetune //---------------------------------------------------------------- void DeicsOnze::setChannelDetune(int c, int p) { - _global.channel[c].detune = p; + _global.channel[c].detune = p; } //---------------------------------------------------------------- // setChannelBrightness //---------------------------------------------------------------- void DeicsOnze::setChannelBrightness(int c, int b) { - _global.channel[c].brightness = b; + _global.channel[c].brightness = b; } //---------------------------------------------------------------- // setChannelModulation //---------------------------------------------------------------- void DeicsOnze::setChannelModulation(int c, int m) { - _global.channel[c].modulation = m; + _global.channel[c].modulation = m; } //---------------------------------------------------------------- // setChannelAttack //---------------------------------------------------------------- void DeicsOnze::setChannelAttack(int c, int a) { - _global.channel[c].attack = a; + _global.channel[c].attack = a; } //---------------------------------------------------------------- // setChannelRelease //---------------------------------------------------------------- void DeicsOnze::setChannelRelease(int c, int r) { - _global.channel[c].release = r; + _global.channel[c].release = r; +} +//---------------------------------------------------------------- +// setChannelReverb +//---------------------------------------------------------------- +void DeicsOnze::setChannelReverb(int c, int r) { + _global.channel[c].reverbAmount = (float)r/127.0; +} +//---------------------------------------------------------------- +// setChannelChorus +//---------------------------------------------------------------- +void DeicsOnze::setChannelChorus(int c, int val) { + _global.channel[c].chorusAmount = (float)val/127.0; } + +//---------------------------------------------------------------- +// setChorusReturn +//---------------------------------------------------------------- +void DeicsOnze::setChorusReturn(int val) { + _global.chorusReturn = 2.0*(float)val/(float)MAXFXRETURN; +} + +//---------------------------------------------------------------- +// setReverbReturn +//---------------------------------------------------------------- +void DeicsOnze::setReverbReturn(int val) { + _global.reverbReturn = 2.0*(float)val/(float)MAXFXRETURN; +} + //---------------------------------------------------------------- // getNbrVoices //---------------------------------------------------------------- @@ -718,6 +785,30 @@ int DeicsOnze::getChannelAttack(int c) const { int DeicsOnze::getChannelRelease(int c) const { return(_global.channel[c].release); } +//---------------------------------------------------------------- +// getChannelReverb +//---------------------------------------------------------------- +int DeicsOnze::getChannelReverb(int c) const { + return((int)(_global.channel[c].reverbAmount*127.0)); +} +//---------------------------------------------------------------- +// getChannelChorus +//---------------------------------------------------------------- +int DeicsOnze::getChannelChorus(int c) const { + return((int)(_global.channel[c].chorusAmount*127.0)); +} +//---------------------------------------------------------------- +// getChorusReturn +//---------------------------------------------------------------- +int DeicsOnze::getChorusReturn() const { + return((int)(_global.chorusReturn*(float)MAXFXRETURN/2.0)); +} +//---------------------------------------------------------------- +// getReturnReturn +//---------------------------------------------------------------- +int DeicsOnze::getReverbReturn() const { + return((int)(_global.reverbReturn*(float)MAXFXRETURN/2.0)); +} //---------------------------------------------------------------- // setLfo @@ -848,6 +939,10 @@ void DeicsOnze::setQuality(Quality q) { _global.deiSampleRate = (double)sampleRate() / (double)_global.qualityCounterTop; _global.qualityCounter = 0; + /* TODO + _chorus1->setSampleRate(_global.deiSampleRate); + _chorus2->setSampleRate(_global.deiSampleRate); + */ } //----------------------------------------------------------------- @@ -1028,8 +1123,8 @@ void DeicsOnze::loadSutulaPresets() int k; int nhBank, nlBank, nPreset; Preset* presetTemp; - Subcategory* subcategoryTemp; - Category* categoryTemp; + Subcategory* subcategoryTemp = NULL; + Category* categoryTemp = NULL; if(!_set) _set=new Set("Sutula Bank"); @@ -2293,6 +2388,8 @@ bool DeicsOnze::sysex(int length, const unsigned char* data) { } bool DeicsOnze::sysex(int length, const unsigned char* data, bool fromGui) { int cmd=data[0]; + int index; + float f; switch(cmd) { case SYSEX_INIT_DATA: parseInitData(length, data); @@ -2369,6 +2466,66 @@ bool DeicsOnze::sysex(int length, const unsigned char* data, bool fromGui) { break; case SYSEX_PANIC: resetVoices(); + break; + case SYSEX_CHORUSACTIV: + _global.isChorusActivated = (bool)data[1]; + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_CHORUSPARAM: + index = (int)data[1]; + memcpy(&f, &data[2], sizeof(float)); + printf("Chorus, param %d, value %f\n", index, f); + _pluginIChorus->setParam(index, (double)f); + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_REVERBACTIV: + _global.isReverbActivated = (bool)data[1]; + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_REVERBPARAM: + index = (int)data[1]; + memcpy(&f, &data[2], sizeof(float)); + printf("Reverb, param %d, value %f\n", index, f); + _pluginIReverb->setParam(index, (double)f); + printf("param value %f\n", _pluginIReverb->param(index)); + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_CHORUSRETURN: + setChorusReturn((int)data[1]); + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_REVERBRETURN: + setReverbReturn((int)data[1]); + if(!fromGui) { + MidiEvent evSysex(0, ME_SYSEX, data, length); + _gui->writeEvent(evSysex); + } + break; + case SYSEX_SELECTREVERB: + Plugin* pluginReverb; + memcpy(&pluginReverb, &data[1], sizeof(Plugin*)); + initPluginReverb(pluginReverb); + break; + case SYSEX_SELECTCHORUS: + Plugin* pluginChorus; + memcpy(&pluginChorus, &data[1], sizeof(Plugin*)); + initPluginChorus(pluginChorus); + break; default: break; } @@ -2938,6 +3095,20 @@ bool DeicsOnze::setController(int ch, int ctrl, int val, bool fromGui) { _gui->writeEvent(ev); } break; + case CTRL_REVERB_SEND: + setChannelReverb(ch, val); + if(!fromGui) { + MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_REVERB_SEND, val); + _gui->writeEvent(ev); + } + break; + case CTRL_CHORUS_SEND: + setChannelChorus(ch, val); + if(!fromGui) { + MidiEvent ev(0,ch, ME_CONTROLLER, CTRL_CHORUS_SEND, val); + _gui->writeEvent(ev); + } + break; case CTRL_SUSTAIN: setSustain(ch, val); break; @@ -3279,6 +3450,8 @@ void DeicsOnze::process(float** buffer, int offset, int n) { float tempLeftOutput; float tempRightOutput; float tempChannelOutput; + float tempChannelLeftOutput; + float tempChannelRightOutput; float tempIncChannel; //for optimization float sampleOp[NBROP]; float ampOp[NBROP]; @@ -3286,6 +3459,10 @@ void DeicsOnze::process(float** buffer, int offset, int n) { if(_global.qualityCounter == 0) { tempLeftOutput = 0.0; tempRightOutput = 0.0; + tempInputChorus[0][i] = 0.0; + tempInputChorus[1][i] = 0.0; + tempInputReverb[0][i] = 0.0; + tempInputReverb[1][i] = 0.0; //per channel for(int c = 0; c < NBRCHANNELS; c++) { tempChannelOutput = 0.0; @@ -3532,18 +3709,55 @@ void DeicsOnze::process(float** buffer, int offset, int n) { } //printf("left out = %f, temp out = %f, left amp = %f\n", //tempLeftOutput, tempChannelOutput, _global.channel[c].ampLeft); - tempLeftOutput += tempChannelOutput*_global.channel[c].ampLeft; - tempRightOutput += tempChannelOutput*_global.channel[c].ampRight; + + tempChannelLeftOutput = tempChannelOutput*_global.channel[c].ampLeft; + tempChannelRightOutput=tempChannelOutput*_global.channel[c].ampRight; + + if(_global.isChorusActivated) { + tempInputChorus[0][i] += tempChannelLeftOutput * + _global.channel[c].chorusAmount; + tempInputChorus[1][i] += tempChannelRightOutput * + _global.channel[c].chorusAmount; + } + if(_global.isReverbActivated) { + tempInputReverb[0][i] += tempChannelLeftOutput * + _global.channel[c].reverbAmount; + tempInputReverb[0][i] += tempChannelRightOutput * + _global.channel[c].reverbAmount; + } + tempLeftOutput += tempChannelLeftOutput; + tempRightOutput += tempChannelRightOutput; } } - _global.lastLeftSample = tempLeftOutput*_global.masterVolume; - _global.lastRightSample = tempRightOutput*_global.masterVolume; + _global.lastLeftSample = tempLeftOutput; + _global.lastRightSample = tempRightOutput; } - leftOutput[i] += _global.lastLeftSample; - rightOutput[i] += _global.lastRightSample; + leftOutput[i] += _global.lastLeftSample * _global.masterVolume; + rightOutput[i] += _global.lastRightSample * _global.masterVolume; + _global.qualityCounter++; _global.qualityCounter %= _global.qualityCounterTop; } + //Chorus + if(_global.isChorusActivated) { + _pluginIChorus->apply(n, 2, tempInputChorus, tempOutputChorus); + for(int i = 0; i < n; i++) { + leftOutput[i] += + tempOutputChorus[0][i] * _global.chorusReturn * _global.masterVolume; + rightOutput[i] += + tempOutputChorus[1][i] * _global.chorusReturn * _global.masterVolume; + } + } + //Reverb + if(_global.isReverbActivated) { + _pluginIReverb->apply(n, 2, tempInputReverb, tempOutputReverb); + for(int i = 0; i < n; i++) { + leftOutput[i] += + tempOutputReverb[0][i] * _global.reverbReturn * _global.masterVolume; + rightOutput[i] += + tempOutputReverb[1][i] * _global.reverbReturn * _global.masterVolume; + } + } } @@ -3564,7 +3778,7 @@ extern "C" { static MESS descriptor = { "DeicsOnze", "DeicsOnze FM DX11/TX81Z emulator", - "0.4.5", // version string + "0.5", // version string MESS_MAJOR_VERSION, MESS_MINOR_VERSION, instantiate }; diff --git a/muse/synti/deicsonze/deicsonze.h b/muse/synti/deicsonze/deicsonze.h index dd6353b1..8a975e0f 100644 --- a/muse/synti/deicsonze/deicsonze.h +++ b/muse/synti/deicsonze/deicsonze.h @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // // @@ -35,13 +35,19 @@ #include "deicsonzepreset.h" #include "deicsonzegui.h" +#include "deicsonzeplugin.h" #include "libsynti/mess.h" +#include "plugin.h" #define DEICSONZESTR "deicsonze" #define MAXPITCHBENDVALUE 8191 -#define RESOLUTION 96000 +#define RESOLUTION 96000 + +#define MAXFXBUFFERSIZE 48000 +#define NBRFXINPUTS 2 +#define NBRFXOUTPUTS 2 #define NBRCTRLS 127 @@ -126,6 +132,18 @@ #define COLORSYSEXLENGTH 12 #define SYSEX_UPDATESETGUI 25 #define SYSEX_PANIC 30 +#define SYSEX_CHORUSACTIV 40 +#define SYSEX_CHORUSPARAM 41 +#define SYSEX_REVERBACTIV 60 +#define SYSEX_REVERBPARAM 61 +#define SYSEX_CHORUSRETURN 80 +#define SYSEX_REVERBRETURN 81 +#define MAXFXRETURN 255 +#define SYSEX_SELECTREVERB 82 +#define SYSEX_SELECTCHORUS 83 +#define SYSEX_BUILDGUIREVERB 84 +#define SYSEX_BUILDGUICHORUS 85 +//REVERB PARAMETERS enum { NUMMASTERVOL = SAVEINITLENGTH, @@ -165,6 +183,7 @@ enum { }; class DeicsOnzeGui; +class DeicsOnzePlugin; //--------------------------------------------------------- // outLevel2Amp, Amp for amplitude //between 0.0 and 2.0 or more @@ -303,6 +322,9 @@ struct Channel { std::list<int> lastVoiceKeyOn; //stack of the voice number int lastVoiceKeyOff; bool isLastNote; + //FX + float chorusAmount; //between 0.0 and 1.0 + float reverbAmount; //between 0.0 and 1.0 }; //--------------------------------------------------------- @@ -325,6 +347,10 @@ struct Global { float lastLeftSample; float lastRightSample; Channel channel[NBRCHANNELS]; + bool isChorusActivated; + float chorusReturn; + bool isReverbActivated; + float reverbReturn; }; //--------------------------------------------------------- @@ -333,17 +359,24 @@ struct Global { class DeicsOnze : public Mess { DeicsOnzeGui* _gui; - + static int useCount; static float waveTable[NBRWAVES][RESOLUTION]; - + private: void parseInitData(int length, const unsigned char* data); void loadConfiguration(QString fileName); - + public: + float** tempInputChorus; + float** tempInputReverb; + float** tempOutputChorus; + float** tempOutputReverb; + + float* getSinusWaveTable(); + int nbrCtrl; - + QString _initSetPath; bool _isInitSet; QString _backgroundPixPath; @@ -354,6 +387,13 @@ class DeicsOnze : public Mess { Global _global; Preset* _preset[NBRCHANNELS]; Preset* _initialPreset; + + //FX + PluginI* _pluginIReverb; + PluginI* _pluginIChorus; + + void initPluginReverb(Plugin*); + void initPluginChorus(Plugin*); mutable MidiPatch _patch; int _numPatch; //what is this? TODO @@ -402,6 +442,10 @@ class DeicsOnze : public Mess { void setChannelModulation(int c, int m); void setChannelAttack(int c, int a); void setChannelRelease(int c, int r); + void setChannelReverb(int c, int r); + void setChannelChorus(int c, int val); + void setChorusReturn(int val); + void setReverbReturn(int val); bool getChannelEnable(int c) const; int getNbrVoices(int c) const; int getMasterVol(void) const; @@ -412,6 +456,10 @@ class DeicsOnze : public Mess { int getChannelModulation(int c) const; int getChannelAttack(int c) const; int getChannelRelease(int c) const; + int getChannelReverb(int c) const; + int getChannelChorus(int c) const; + int getChorusReturn(void) const; + int getReverbReturn(void) const; void setPitchBendCoef(int c, int val); void setModulation(int c, int val); //TODO check between setChannelModulation void setSustain(int c, int val); diff --git a/muse/synti/deicsonze/deicsonzegui.cpp b/muse/synti/deicsonze/deicsonzegui.cpp index 05855d4b..9d614008 100644 --- a/muse/synti/deicsonze/deicsonzegui.cpp +++ b/muse/synti/deicsonze/deicsonzegui.cpp @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // deicsonzegui.cpp // @@ -30,9 +30,13 @@ #include "muse/midi.h" #include "muse/midictrl.h" #include "config.h" +#include "plugin.h" +#include "plugingui.h" #include "deicsonzegui.h" +class PluginDialog; + DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze) : QDialog(0), MessGui() @@ -43,6 +47,10 @@ DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze) _currentChannel = 0; + //FX + _chorusSuperWidget = NULL; + _reverbSuperWidget = NULL; + tColor = new TCOLOR; bColor = new BCOLOR; etColor = new ETCOLOR; @@ -66,6 +74,35 @@ DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze) this, SLOT(setMasterVolKnob(double))); //Panic connect(panicButton, SIGNAL(pressed()), this, SLOT(setPanic())); + //FX + connect(chorusActivCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setChorusActiv(bool))); + connect(chChorusSlider, SIGNAL(valueChanged(int)), + this, SLOT(setChannelChorus(int))); + connect(returnChorusSlider, SIGNAL(valueChanged(int)), + this, SLOT(setChorusReturn(int))); + connect(selectLadspaChorusPushButton, SIGNAL(pressed()), + this, SLOT(setSelectChorusPlugin())); + /*connect(panChorus1Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setPanChorus1(double))); + connect(LFOFreqChorus1Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setLFOFreqChorus1(double))); + connect(depthChorus1Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setDepthChorus1(double))); + connect(panChorus2Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setPanChorus2(double))); + connect(LFOFreqChorus2Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setLFOFreqChorus2(double))); + connect(depthChorus2Knob, SIGNAL(valueChanged(double, int)), + this, SLOT(setDepthChorus2(double)));*/ + connect(reverbActivCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setReverbActiv(bool))); + connect(chReverbSlider, SIGNAL(valueChanged(int)), + this, SLOT(setChannelReverb(int))); + connect(returnReverbSlider, SIGNAL(valueChanged(int)), + this, SLOT(setReverbReturn(int))); + connect(selectLadspaReverbPushButton, SIGNAL(pressed()), + this, SLOT(setSelectReverbPlugin())); //Quick edit connect(channelVolumeKnob, SIGNAL(valueChanged(double, int)), this, SLOT(setChannelVolKnob(double))); @@ -726,6 +763,14 @@ void DeicsOnzeGui::setTextColor(const QColor & c) { qualityGroupBox->setPalette(p); saveModeButtonGroup->setPalette(p); fileGroupBox->setPalette(p); + onReverbGroupBox->setPalette(p); + selectLadspaReverbGroupBox->setPalette(p); + channelReverbGroupBox->setPalette(p); + parametersReverbGroupBox->setPalette(p); + onChorusGroupBox->setPalette(p); + selectLadspaChorusGroupBox->setPalette(p); + channelChorusGroupBox->setPalette(p); + parametersChorusGroupBox->setPalette(p); } void DeicsOnzeGui::setBackgroundColor(const QColor & c) { if(imageCheckBox->checkState()==Qt::Unchecked) { @@ -789,6 +834,10 @@ void DeicsOnzeGui::setEditTextColor(const QColor & c) { detuneKnob->setScaleValueColor(c); attackKnob->setScaleValueColor(c); releaseKnob->setScaleValueColor(c); + for(int i=0; i < (int)_chorusSliderVector.size(); i++) + if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleValueColor(c); + for(int i=0; i < (int)_reverbSliderVector.size(); i++) + if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleValueColor(c); //p.setColor(QPalette::WindowText, c); //presetNameLabel->setPalette(p); } @@ -862,6 +911,10 @@ void DeicsOnzeGui::setEditBackgroundColor(const QColor & c) { detuneKnob->setScaleColor(c); attackKnob->setScaleColor(c); releaseKnob->setScaleColor(c); + for(int i=0; i < (int)_chorusSliderVector.size(); i++) + if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleColor(c); + for(int i=0; i < (int)_reverbSliderVector.size(); i++) + if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleColor(c); } //----------------------------------------------------------- @@ -1328,6 +1381,8 @@ void DeicsOnzeGui::processEvent(const MidiEvent& ev) { case CTRL_FINEBRIGHTNESS: updateBrightness(val); break; case CTRL_ATTACK_TIME: updateAttack(val); break; case CTRL_RELEASE_TIME: updateRelease(val); break; + case CTRL_CHORUS_SEND: updateChannelChorus(val); break; + case CTRL_REVERB_SEND: updateChannelReverb(val); break; case CTRL_PROGRAM : int hbank = (val & 0xff0000) >> 16; int lbank = (val & 0xff00) >> 8; @@ -1354,6 +1409,36 @@ void DeicsOnzeGui::processEvent(const MidiEvent& ev) { unsigned char* data = ev.data(); int cmd = *data; switch (cmd) { + case SYSEX_CHORUSACTIV : + updateChorusActiv((bool)data[1]); + break; + case SYSEX_CHORUSRETURN : + updateChorusReturn((int)data[1]); + break; + case SYSEX_REVERBACTIV : + updateReverbActiv((bool)data[1]); + break; + case SYSEX_REVERBRETURN : + updateReverbReturn((int)data[1]); + break; + /*case SYSEX_CHORUS1PAN : + updatePanChorus1((int)data[1]); + break; + case SYSEX_CHORUS1LFOFREQ : + updateLFOFreqChorus1((int)data[1]); + break; + case SYSEX_CHORUS1DEPTH : + updateDepthChorus1((int)data[1]); + break; + case SYSEX_CHORUS2PAN : + updatePanChorus2((int)data[1]); + break; + case SYSEX_CHORUS2LFOFREQ : + updateLFOFreqChorus2((int)data[1]); + break; + case SYSEX_CHORUS2DEPTH : + updateDepthChorus2((int)data[1]); + break;*/ case SYSEX_QUALITY : updateQuality((int)data[1]); break; @@ -1406,6 +1491,12 @@ void DeicsOnzeGui::processEvent(const MidiEvent& ev) { progSpinBox->setEnabled(false); updatePresetName("INITVOICE", false); break; + case SYSEX_BUILDGUIREVERB : + buildGuiReverb(); + break; + case SYSEX_BUILDGUICHORUS : + buildGuiChorus(); + break; case SYSEX_LOADSET : //printf("LoadSet\n"); // read the XML file and create DOM tree @@ -2310,6 +2401,94 @@ void DeicsOnzeGui::setBrowseBackgroundPixPath() { } } //----------------------------------------------------------- +// FX +//----------------------------------------------------------- +void DeicsOnzeGui::setChorusActiv(bool a) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUSACTIV; + message[1]=(unsigned char)a; + sendSysex(message, 2); +} +void DeicsOnzeGui::setChannelChorus(int c) { + sendController(_currentChannel, CTRL_CHORUS_SEND, c); +} +void DeicsOnzeGui::setChorusReturn(int val) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUSRETURN; + message[1]=(unsigned char)val; + sendSysex(message, 2); +} +void DeicsOnzeGui::setSelectChorusPlugin() { + Plugin* pluginChorus = PluginDialog::getPlugin(this); + if(pluginChorus) { + unsigned char* message = new unsigned char[1+sizeof(Plugin*)]; + message[0]=SYSEX_SELECTCHORUS; + memcpy(&message[1], &pluginChorus, sizeof(Plugin*)); + sendSysex(message, 1+sizeof(Plugin*)); + } +} +/*void DeicsOnzeGui::setPanChorus1(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS1PAN; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); +} +void DeicsOnzeGui::setLFOFreqChorus1(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS1LFOFREQ; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); +} +void DeicsOnzeGui::setDepthChorus1(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS1DEPTH; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); +} +void DeicsOnzeGui::setPanChorus2(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS2PAN; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); +} +void DeicsOnzeGui::setLFOFreqChorus2(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS2LFOFREQ; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); +} +void DeicsOnzeGui::setDepthChorus2(double i) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_CHORUS2DEPTH; + message[1]=(unsigned char)(i*(double)MAXCHORUSPARAM); + sendSysex(message, 2); + }*/ +void DeicsOnzeGui::setReverbActiv(bool a) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_REVERBACTIV; + message[1]=(unsigned char)a; + sendSysex(message, 2); +} +void DeicsOnzeGui::setChannelReverb(int r) { + sendController(_currentChannel, CTRL_REVERB_SEND, r); +} +void DeicsOnzeGui::setReverbReturn(int val) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_REVERBRETURN; + message[1]=(unsigned char)val; + sendSysex(message, 2); +} +void DeicsOnzeGui::setSelectReverbPlugin() { + Plugin* pluginReverb = PluginDialog::getPlugin(this); + if(pluginReverb) { + unsigned char* message = new unsigned char[1+sizeof(Plugin*)]; + message[0]=SYSEX_SELECTREVERB; + memcpy(&message[1], &pluginReverb, sizeof(Plugin*)); + sendSysex(message, 1+sizeof(Plugin*)); + } +} + +//----------------------------------------------------------- // Quick Edit //----------------------------------------------------------- void DeicsOnzeGui::setChannelVolKnob(double val) { @@ -2862,6 +3041,84 @@ void DeicsOnzeGui::updateFontSize(int val) { fontSizeSpinBox->setValue(val); fontSizeSpinBox->blockSignals(false); } +//FX +void DeicsOnzeGui::updateChorusActiv(bool a) { + chorusActivCheckBox->blockSignals(true); + chorusActivCheckBox->setChecked(a); + chorusActivCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateChannelChorus(int c) { + chChorusSlider->blockSignals(true); + chChorusSlider->setValue(c); + chChorusSlider->blockSignals(false); + chChorusSpinBox->blockSignals(true); + chChorusSpinBox->setValue(c); + chChorusSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateChorusReturn(int r) { + returnChorusSlider->blockSignals(true); + returnChorusSlider->setValue(r); + returnChorusSlider->blockSignals(false); +} +/*void DeicsOnzeGui::updatePanChorus1(int c) { + panChorus1Knob->blockSignals(true); + panChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); + panChorus1Knob->blockSignals(false); +} +void DeicsOnzeGui::updateLFOFreqChorus1(int c) { + LFOFreqChorus1Knob->blockSignals(true); + LFOFreqChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); + LFOFreqChorus1Knob->blockSignals(false); +} +void DeicsOnzeGui::updateDepthChorus1(int c) { + depthChorus1Knob->blockSignals(true); + depthChorus1Knob->setValue((double)c/(double)MAXCHORUSPARAM); + depthChorus1Knob->blockSignals(false); +} +void DeicsOnzeGui::updatePanChorus2(int c) { + panChorus2Knob->blockSignals(true); + panChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); + panChorus2Knob->blockSignals(false); +} +void DeicsOnzeGui::updateLFOFreqChorus2(int c) { + LFOFreqChorus2Knob->blockSignals(true); + LFOFreqChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); + LFOFreqChorus2Knob->blockSignals(false); +} +void DeicsOnzeGui::updateDepthChorus2(int c) { + depthChorus2Knob->blockSignals(true); + depthChorus2Knob->setValue((double)c/(double)MAXCHORUSPARAM); + depthChorus2Knob->blockSignals(false); + }*/ +void DeicsOnzeGui::updateReverbActiv(bool a) { + reverbActivCheckBox->blockSignals(true); + reverbActivCheckBox->setChecked(a); + reverbActivCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateChannelReverb(int r) { + chReverbSlider->blockSignals(true); + chReverbSlider->setValue(r); + chReverbSlider->blockSignals(false); + chReverbSpinBox->blockSignals(true); + chReverbSpinBox->setValue(r); + chReverbSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateReverbReturn(int r) { + returnReverbSlider->blockSignals(true); + returnReverbSlider->setValue(r); + returnReverbSlider->blockSignals(false); +} +void DeicsOnzeGui::updateLadspaReverbLineEdit(QString s) { + selectLadspaReverbLineEdit->blockSignals(true); + selectLadspaReverbLineEdit->setText(s); + selectLadspaReverbLineEdit->blockSignals(false); +} +void DeicsOnzeGui::updateLadspaChorusLineEdit(QString s) { + selectLadspaChorusLineEdit->blockSignals(true); + selectLadspaChorusLineEdit->setText(s); + selectLadspaChorusLineEdit->blockSignals(false); +} + void DeicsOnzeGui::applyFontSize(int fs) { QFont f = font(); f.setPointSize(fs); @@ -3812,6 +4069,8 @@ void DeicsOnzeGui::updateQuickEdit() { updateChannelDetune(_deicsOnze->getChannelDetune(_currentChannel)); updateAttack(_deicsOnze->getChannelAttack(_currentChannel)); updateRelease(_deicsOnze->getChannelRelease(_currentChannel)); + updateChannelReverb(_deicsOnze->getChannelReverb(_currentChannel)); + updateChannelChorus(_deicsOnze->getChannelChorus(_currentChannel)); } //-------------------------------------------------------------- // updatePreset @@ -3890,20 +4149,20 @@ void DeicsOnzeGui::updatePreset(Preset* p) { updateOSW(k, (int)p->oscWave[0]); } } -void DeicsOnzeGui::updateCurrentChannel() { +/*void DeicsOnzeGui::updateCurrentChannel() { updateBrightness(_deicsOnze->_global.channel[_currentChannel].brightness); updateModulation(_deicsOnze->_global.channel[_currentChannel].modulation); updateChannelDetune(_deicsOnze->_global.channel[_currentChannel].detune); updateAttack(_deicsOnze->_global.channel[_currentChannel].attack); updateRelease(_deicsOnze->_global.channel[_currentChannel].release); -} + }*/ void DeicsOnzeGui::updatePreset() { updatePreset(_deicsOnze->_preset[_currentChannel]); } void DeicsOnzeGui::updateSelectPreset(int hbank, int lbank, int prog) { - QTreeWidgetItem* cat = categoryListView->currentItem(); - QTreeWidgetItem* sub = subcategoryListView->currentItem(); + //QTreeWidgetItem* cat = categoryListView->currentItem(); + //QTreeWidgetItem* sub = subcategoryListView->currentItem(); QTreeWidgetItem* pre = presetListView->currentItem(); //select category, subcategory, preset //category @@ -3984,3 +4243,4 @@ void DeicsOnzeGui::updateSelectPreset(int hbank, int lbank, int prog) { // setEnabledPreset(false); //} } + diff --git a/muse/synti/deicsonze/deicsonzegui.h b/muse/synti/deicsonze/deicsonzegui.h index 12accbcf..964c7d96 100644 --- a/muse/synti/deicsonze/deicsonzegui.h +++ b/muse/synti/deicsonze/deicsonzegui.h @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // deicsonzegui.h // @@ -34,6 +34,13 @@ #include "deicsonzepreset.h" #include "ui_deicsonzegui.h" #include "libsynti/gui.h" +#include "awl/floatentry.h" +#include "awl/slider.h" +#include "awl/checkbox.h" + +using Awl::FloatEntry; +using Awl::Slider; +using Awl::CheckBox; //Envelope Gui constants #define XOFFSET 2 @@ -114,9 +121,18 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui QFramePitchEnvelope* pitchEnvelopeGraph; QFrameEnvelope* envelopeGraph[NBROP]; + QWidget* _chorusSuperWidget; + QWidget* _reverbSuperWidget; + std::vector<Slider*> _chorusSliderVector; + std::vector<FloatEntry*> _chorusFloatEntryVector; + std::vector<CheckBox*> _chorusCheckBoxVector; + std::vector<Slider*> _reverbSliderVector; + std::vector<FloatEntry*> _reverbFloatEntryVector; + std::vector<CheckBox*> _reverbCheckBoxVector; + Q_OBJECT QString lastDir; - private slots: + private slots: void readMessage(int); void setEnabledChannel(bool); void setChangeChannel(int); @@ -140,6 +156,21 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui void setIsBackgroundPix(bool); void setBackgroundPixPath(const QString&); void setBrowseBackgroundPixPath(); + //FX + void setChorusActiv(bool a); + void setChannelChorus(int c); + void setChorusReturn(int al); + void setSelectChorusPlugin(); + void setReverbCheckBox(double v, int i); + void setChorusCheckBox(double v, int i); + void setReverbActiv(bool a); + void setChannelReverb(int r); + void setReverbReturn(int val); + void setSelectReverbPlugin(); + void setReverbFloatEntry(double v, int i); + void setReverbSlider(double v, int i); + void setChorusFloatEntry(double v, int i); + void setChorusSlider(double v, int i); //quick edit void setChannelVolKnob(double val); void setChannelPan(double val); @@ -322,6 +353,29 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui void applyFontSize(int fs); void updateSaveOnlyUsed(bool); void updateSaveConfig(bool); + //FX + void updateChorusActiv(bool a); + void updateChannelChorus(int c); + void updateChorusReturn(int r); + void updateReverbActiv(bool a); + void updateChannelReverb(int r); + void updateReverbReturn(int r); + void updateLadspaReverbLineEdit(QString s); + void updateLadspaChorusLineEdit(QString s); + void addPluginCheckBox(int index, QString text, bool toggled, + QWidget* parent, QGridLayout* grid, bool isReverb); + void addPluginIntSlider(int index, QString text, double min, double max, + double val, QWidget* parent, QGridLayout* grid, + bool isReverb); + void addPluginSlider(int index, QString text, bool isLog, double min, + double max, double val, QWidget* parent, + QGridLayout* grid, bool isReverb); + void buildGuiReverb(); + void buildGuiChorus(); + void updateReverbSlider(double v, int i); + void updateReverbFloatEntry(double v, int i); + void updateChorusSlider(double v, int i); + void updateChorusFloatEntry(double v, int i); //update load init set void updateInitSetCheckBox(bool); void updateInitSetPath(QString); @@ -406,7 +460,7 @@ class DeicsOnzeGui : public QDialog, public Ui::DeicsOnzeGuiBase, public MessGui void updateProg(int prog, bool enable); void updatePreset(Preset* p); void updatePreset(void); //update gui following the current preset - void updateCurrentChannel(); //update gui channel attributes + //void updateCurrentChannel(); //update gui channel attributes QString num3Digits(int); DeicsOnzeGui(DeicsOnze*); diff --git a/muse/synti/deicsonze/deicsonzegui.ui b/muse/synti/deicsonze/deicsonzegui.ui index 3e3b5bd6..60d634f2 100644 --- a/muse/synti/deicsonze/deicsonzegui.ui +++ b/muse/synti/deicsonze/deicsonzegui.ui @@ -1,15 +1,13 @@ <ui version="4.0" > <author>Nil Geisweiller</author> - <comment></comment> - <exportmacro></exportmacro> <class>DeicsOnzeGuiBase</class> <widget class="QDialog" name="DeicsOnzeGuiBase" > <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>688</width> - <height>575</height> + <width>741</width> + <height>590</height> </rect> </property> <property name="windowTitle" > @@ -28,619 +26,6 @@ <property name="spacing" > <number>6</number> </property> - <item rowspan="2" 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="minValue" > - <double>0</double> - </property> - <property name="maxValue" > - <double>1</double> - </property> - <property name="lineStep" > - <double>0.1</double> - </property> - <property name="pageStep" > - <double>0.2</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> - </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> - </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> - </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> - </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> - </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="maxValue" > - <double>1</double> - </property> - <property name="lineStep" > - <double>0.1</double> - </property> - <property name="pageStep" > - <double>0.2</double> - </property> - <property name="scaleSize" > - <number>270</number> - </property> - <property name="markSize" > - <number>6</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="0" column="3" > - <widget class="QPushButton" name="panicButton" > - <property name="maximumSize" > - <size> - <width>1000</width> - <height>1000</height> - </size> - </property> - <property name="palette" > - <palette> - <active> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>237</red> - <green>237</green> - <blue>237</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>166</red> - <green>166</green> - <blue>166</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>255</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>255</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - </active> - <inactive> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>237</red> - <green>237</green> - <blue>237</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>166</red> - <green>166</green> - <blue>166</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>255</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>255</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - </inactive> - <disabled> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>237</red> - <green>237</green> - <blue>237</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>166</red> - <green>166</green> - <blue>166</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - </color> - <color> - <red>121</red> - <green>125</green> - <blue>121</blue> - </color> - <color> - <red>207</red> - <green>207</green> - <blue>207</blue> - </color> - <color> - <red>0</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>255</red> - <green>0</green> - <blue>255</blue> - </color> - <color> - <red>231</red> - <green>231</green> - <blue>231</blue> - </color> - </disabled> - </palette> - </property> - <property name="font" > - <font> - <family>Sans Serif</family> - <pointsize>10</pointsize> - <weight>75</weight> - <italic>false</italic> - <bold>true</bold> - <underline>false</underline> - <strikeout>false</strikeout> - </font> - </property> - <property name="text" > - <string>Panic!</string> - </property> - </widget> - </item> - <item 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="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 row="0" column="1" > - <widget class="Awl::VolKnob" name="masterVolKnob" > - <property name="minimumSize" > - <size> - <width>40</width> - <height>40</height> - </size> - </property> - <property name="minValue" > - <double>0</double> - </property> - <property name="maxValue" > - <double>1</double> - </property> - <property name="lineStep" > - <double>0.1</double> - </property> - <property name="pageStep" > - <double>0.2</double> - </property> - <property name="log" > - <bool>false</bool> - </property> - </widget> - </item> <item row="1" column="0" colspan="4" > <widget class="QTabWidget" name="deicsOnzeTabWidget" > <property name="sizePolicy" > @@ -668,7 +53,7 @@ </property> <widget class="QWidget" name="PresetsTab" > <attribute name="title" > - <string>&Presets</string> + <string>&Preset</string> </attribute> <layout class="QGridLayout" > <property name="margin" > @@ -868,7 +253,7 @@ <enum>QFrame::Plain</enum> </property> <property name="text" > - <string>DeicsOnze v0.4.5 Copyright (c) 2004-2006 Nil Geisweiller. Published under GPL licence.</string> + <string>DeicsOnze v0.5 Copyright (c) 2004-2006 Nil Geisweiller. Published under GPL licence.</string> </property> </widget> </item> @@ -4564,7 +3949,7 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin </widget> <widget class="QWidget" name="FunctionsTab" > <attribute name="title" > - <string>&Functions</string> + <string>&Func</string> </attribute> <layout class="QGridLayout" > <property name="margin" > @@ -5567,9 +4952,303 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin </item> </layout> </widget> + <widget class="QWidget" name="chorusTab" > + <attribute name="title" > + <string>C&horus</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" colspan="3" > + <widget class="QGroupBox" name="parametersChorusGroupBox" > + <property name="title" > + <string>Chorus Parameters</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + </layout> + </widget> + </item> + <item row="0" column="2" > + <widget class="QGroupBox" name="channelChorusGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>Channel send level</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QSpinBox" name="chChorusSpinBox" > + <property name="maximum" > + <number>127</number> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QSlider" name="chChorusSlider" > + <property name="cursor" > + <cursor>13</cursor> + </property> + <property name="whatsThis" > + <string>Channel Chorus</string> + </property> + <property name="maximum" > + <number>127</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1" > + <widget class="QGroupBox" name="onChorusGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>On/Off and Return level</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="QCheckBox" name="chorusActivCheckBox" > + <property name="cursor" > + <cursor>13</cursor> + </property> + <property name="text" > + <string>On</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSlider" name="returnChorusSlider" > + <property name="maximum" > + <number>255</number> + </property> + <property name="value" > + <number>128</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <widget class="QGroupBox" name="selectLadspaChorusGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>Select LADSPA plugin</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QPushButton" name="selectLadspaChorusPushButton" > + <property name="text" > + <string>Change plugin</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLineEdit" name="selectLadspaChorusLineEdit" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="reverbTab" > + <attribute name="title" > + <string>&Reverb</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QGroupBox" name="onReverbGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>On/Off and Return level</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="QCheckBox" name="reverbActivCheckBox" > + <property name="cursor" > + <cursor>13</cursor> + </property> + <property name="text" > + <string>On</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSlider" name="returnReverbSlider" > + <property name="maximum" > + <number>255</number> + </property> + <property name="value" > + <number>128</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <widget class="QGroupBox" name="selectLadspaReverbGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>Select LADSPA plugin</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QPushButton" name="selectLadspaReverbPushButton" > + <property name="text" > + <string>Change plugin</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLineEdit" name="selectLadspaReverbLineEdit" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="2" > + <widget class="QGroupBox" name="channelReverbGroupBox" > + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>80</height> + </size> + </property> + <property name="title" > + <string>Channel send level</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QSpinBox" name="chReverbSpinBox" > + <property name="maximum" > + <number>127</number> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QSlider" name="chReverbSlider" > + <property name="cursor" > + <cursor>13</cursor> + </property> + <property name="whatsThis" > + <string>Channel Chorus</string> + </property> + <property name="maximum" > + <number>127</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="3" > + <widget class="QGroupBox" name="parametersReverbGroupBox" > + <property name="title" > + <string>Reverb Parameters</string> + </property> + </widget> + </item> + </layout> + </widget> <widget class="QWidget" name="ConfigureTab" > <attribute name="title" > - <string>&Configure (global)</string> + <string>&Config</string> </attribute> <layout class="QGridLayout" > <property name="margin" > @@ -6000,24 +5679,857 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin </widget> </widget> </item> + <item row="0" column="1" > + <widget class="Awl::VolKnob" name="masterVolKnob" > + <property name="minimumSize" > + <size> + <width>40</width> + <height>40</height> + </size> + </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>true</bool> + </property> + </widget> + </item> + <item 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 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" > + <property name="maximumSize" > + <size> + <width>1000</width> + <height>1000</height> + </size> + </property> + <property name="palette" > + <palette> + <active> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>237</red> + <green>237</green> + <blue>237</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>166</red> + <green>166</green> + <blue>166</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>237</red> + <green>237</green> + <blue>237</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>166</red> + <green>166</green> + <blue>166</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>237</red> + <green>237</green> + <blue>237</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>166</red> + <green>166</green> + <blue>166</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>121</red> + <green>125</green> + <blue>121</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>207</red> + <green>207</green> + <blue>207</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>231</red> + <green>231</green> + <blue>231</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="font" > + <font> + <family>Sans Serif</family> + <pointsize>10</pointsize> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> + <underline>false</underline> + <strikeout>false</strikeout> + </font> + </property> + <property name="text" > + <string>Panic!</string> + </property> + </widget> + </item> + <item rowspan="2" 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> </widget> <layoutdefault spacing="6" margin="11" /> - <pixmapfunction></pixmapfunction> <customwidgets> <customwidget> <class>Awl::Knob</class> <extends>QWidget</extends> <header>awl/knob.h</header> - <container>0</container> - <pixmap></pixmap> </customwidget> <customwidget> <class>Awl::VolKnob</class> <extends>Awl::Knob</extends> <header>awl/volknob.h</header> - <container>0</container> - <pixmap></pixmap> </customwidget> </customwidgets> <tabstops> @@ -7302,12 +7814,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>453</x> - <y>144</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>147</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7318,12 +7830,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>554</x> - <y>147</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>453</x> - <y>144</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7334,12 +7846,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>453</x> - <y>183</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>186</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7350,12 +7862,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>554</x> - <y>186</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>453</x> - <y>183</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7366,12 +7878,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>453</x> - <y>222</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>225</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7382,12 +7894,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>554</x> - <y>225</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>453</x> - <y>222</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7398,12 +7910,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>194</x> - <y>167</y> + <x>229</x> + <y>208</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>170</y> + <x>596</x> + <y>211</y> </hint> </hints> </connection> @@ -7414,12 +7926,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>554</x> - <y>170</y> + <x>596</x> + <y>211</y> </hint> <hint type="destinationlabel" > - <x>194</x> - <y>167</y> + <x>229</x> + <y>208</y> </hint> </hints> </connection> @@ -7430,12 +7942,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>194</x> - <y>223</y> + <x>240</x> + <y>329</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>226</y> + <x>596</x> + <y>332</y> </hint> </hints> </connection> @@ -7446,12 +7958,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>554</x> - <y>226</y> + <x>596</x> + <y>332</y> </hint> <hint type="destinationlabel" > - <x>194</x> - <y>223</y> + <x>240</x> + <y>329</y> </hint> </hints> </connection> @@ -7462,12 +7974,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>554</x> - <y>282</y> + <x>596</x> + <y>439</y> </hint> <hint type="destinationlabel" > - <x>194</x> - <y>279</y> + <x>240</x> + <y>442</y> </hint> </hints> </connection> @@ -7478,12 +7990,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>194</x> - <y>279</y> + <x>240</x> + <y>442</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>282</y> + <x>596</x> + <y>439</y> </hint> </hints> </connection> @@ -7494,12 +8006,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>553</x> - <y>380</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>377</x> - <y>377</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7510,12 +8022,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>377</x> - <y>377</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>553</x> - <y>380</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7526,12 +8038,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>277</x> - <y>457</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>337</x> - <y>460</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7542,12 +8054,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>337</x> - <y>460</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>277</x> - <y>457</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7558,12 +8070,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>493</x> - <y>457</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>553</x> - <y>460</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7574,12 +8086,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>553</x> - <y>460</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>493</x> - <y>457</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7590,12 +8102,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>493</x> - <y>537</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>553</x> - <y>540</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7606,12 +8118,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>553</x> - <y>540</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>493</x> - <y>537</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7622,12 +8134,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7638,12 +8150,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7654,12 +8166,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7670,12 +8182,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7686,12 +8198,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7702,12 +8214,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7718,12 +8230,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7734,12 +8246,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7750,12 +8262,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7766,12 +8278,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7782,12 +8294,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>210</x> - <y>156</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>159</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7798,12 +8310,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>554</x> - <y>204</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>210</x> - <y>201</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7814,12 +8326,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>210</x> - <y>201</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>204</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7830,12 +8342,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>210</x> - <y>246</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>249</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7846,12 +8358,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>554</x> - <y>249</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>210</x> - <y>246</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7862,12 +8374,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>210</x> - <y>291</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>554</x> - <y>294</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7878,12 +8390,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>554</x> - <y>159</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>210</x> - <y>156</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7894,12 +8406,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>554</x> - <y>294</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>210</x> - <y>291</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7910,12 +8422,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7926,12 +8438,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7942,12 +8454,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7958,12 +8470,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>143</y> + <x>110</x> + <y>116</y> </hint> <hint type="destinationlabel" > - <x>121</x> - <y>143</y> + <x>110</x> + <y>116</y> </hint> </hints> </connection> @@ -7983,5 +8495,69 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin </hint> </hints> </connection> + <connection> + <sender>chChorusSlider</sender> + <signal>valueChanged(int)</signal> + <receiver>chChorusSpinBox</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>110</x> + <y>116</y> + </hint> + <hint type="destinationlabel" > + <x>110</x> + <y>116</y> + </hint> + </hints> + </connection> + <connection> + <sender>chChorusSpinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>chChorusSlider</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>110</x> + <y>116</y> + </hint> + <hint type="destinationlabel" > + <x>110</x> + <y>116</y> + </hint> + </hints> + </connection> + <connection> + <sender>chReverbSlider</sender> + <signal>valueChanged(int)</signal> + <receiver>chReverbSpinBox</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>544</x> + <y>142</y> + </hint> + <hint type="destinationlabel" > + <x>581</x> + <y>135</y> + </hint> + </hints> + </connection> + <connection> + <sender>chReverbSpinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>chReverbSlider</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>575</x> + <y>149</y> + </hint> + <hint type="destinationlabel" > + <x>495</x> + <y>148</y> + </hint> + </hints> + </connection> </connections> </ui> diff --git a/muse/synti/deicsonze/deicsonzepreset.cpp b/muse/synti/deicsonze/deicsonzepreset.cpp index afa43e93..d01dd959 100644 --- a/muse/synti/deicsonze/deicsonzepreset.cpp +++ b/muse/synti/deicsonze/deicsonzepreset.cpp @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // deicsonzepreset.cpp // diff --git a/muse/synti/deicsonze/deicsonzepreset.h b/muse/synti/deicsonze/deicsonzepreset.h index 6b05939e..5039ddf7 100644 --- a/muse/synti/deicsonze/deicsonzepreset.h +++ b/muse/synti/deicsonze/deicsonzepreset.h @@ -2,7 +2,7 @@ // // DeicsOnze an emulator of the YAMAHA DX11 synthesizer // -// Version 0.4.5 +// Version 0.5 // // deicsonzepreset.h // |