From a661bf5562f02d776b335fd9d3d256ee448acc8d Mon Sep 17 00:00:00 2001 From: Nil Geisweiller Date: Sun, 15 Oct 2006 12:36:50 +0000 Subject: see ChangeLog --- muse/ChangeLog | 5 + muse/muse/plugingui.cpp | 2 +- muse/plugins/CMakeLists.txt | 2 +- muse/plugins/freeverb/CMakeLists.txt | 3 +- muse/synti/deicsonze/CMakeLists.txt | 8 +- muse/synti/deicsonze/deicsonze.cpp | 318 ++++- muse/synti/deicsonze/deicsonze.h | 60 +- muse/synti/deicsonze/deicsonzegui.cpp | 270 +++- muse/synti/deicsonze/deicsonzegui.h | 60 +- muse/synti/deicsonze/deicsonzegui.ui | 2202 +++++++++++++++++++----------- muse/synti/deicsonze/deicsonzepreset.cpp | 2 +- muse/synti/deicsonze/deicsonzepreset.h | 2 +- 12 files changed, 2047 insertions(+), 887 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 <%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) - (ihide(); // 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 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 @@ -2309,6 +2400,94 @@ void DeicsOnzeGui::setBrowseBackgroundPixPath() { setBackgroundPixPath(fileName); } } +//----------------------------------------------------------- +// 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 //----------------------------------------------------------- @@ -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 _chorusSliderVector; + std::vector _chorusFloatEntryVector; + std::vector _chorusCheckBoxVector; + std::vector _reverbSliderVector; + std::vector _reverbFloatEntryVector; + std::vector _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 @@ Nil Geisweiller - - DeicsOnzeGuiBase 0 0 - 688 - 575 + 741 + 590 @@ -28,619 +26,6 @@ 6 - - - - - 96 - 16 - - - - Channel Ctrl - - - - 9 - - - 6 - - - - - 0 - - - 1 - - - 0.1 - - - 0.2 - - - false - - - - - - - QFrame::StyledPanel - - - Release - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - - - - - QFrame::StyledPanel - - - Attack - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - - - - - QFrame::StyledPanel - - - Detune - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - - - - - QFrame::StyledPanel - - - Brightness - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - - - - - QFrame::StyledPanel - - - Modulation - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - - - - - QFrame::StyledPanel - - - Pan - - - Qt::AlignCenter - - - - - - - QFrame::StyledPanel - - - Volume - - - Qt::AlignCenter - - - - - - - - 32 - 32 - - - - 1 - - - 0.1 - - - 0.2 - - - 270 - - - 6 - - - - - - - - - - - 1000 - 1000 - - - - - - - 0 - 0 - 0 - - - 207 - 207 - 207 - - - 237 - 237 - 237 - - - 231 - 231 - 231 - - - 121 - 125 - 121 - - - 166 - 166 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 0 - 0 - - - 255 - 255 - 255 - - - 207 - 207 - 207 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 231 - 231 - 231 - - - - - 0 - 0 - 0 - - - 207 - 207 - 207 - - - 237 - 237 - 237 - - - 231 - 231 - 231 - - - 121 - 125 - 121 - - - 166 - 166 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 0 - 0 - - - 255 - 255 - 255 - - - 207 - 207 - 207 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 231 - 231 - 231 - - - - - 121 - 125 - 121 - - - 207 - 207 - 207 - - - 237 - 237 - 237 - - - 231 - 231 - 231 - - - 121 - 125 - 121 - - - 166 - 166 - 166 - - - 121 - 125 - 121 - - - 255 - 255 - 255 - - - 121 - 125 - 121 - - - 207 - 207 - 207 - - - 207 - 207 - 207 - - - 0 - 0 - 0 - - - 121 - 125 - 121 - - - 207 - 207 - 207 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 231 - 231 - 231 - - - - - - - Sans Serif - 10 - 75 - false - true - false - false - - - - Panic! - - - - - - - - - - - 9 - - - 6 - - - - - true - - - Number of Voices - - - 64 - - - 1 - - - 8 - - - - - - - QFrame::StyledPanel - - - Number of voices - - - Qt::AlignCenter - - - - - - - Enable - - - true - - - - - - - 16 - - - 1 - - - - - - - QFrame::StyledPanel - - - Channel - - - Qt::AlignCenter - - - - - - - - - - QFrame::StyledPanel - - - Vol - - - Qt::AlignCenter - - - - - - - - 40 - 40 - - - - 0 - - - 1 - - - 0.1 - - - 0.2 - - - false - - - @@ -668,7 +53,7 @@ - &Presets + &Preset @@ -868,7 +253,7 @@ QFrame::Plain - DeicsOnze v0.4.5 Copyright (c) 2004-2006 Nil Geisweiller. Published under GPL licence. + DeicsOnze v0.5 Copyright (c) 2004-2006 Nil Geisweiller. Published under GPL licence. @@ -4564,7 +3949,7 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin - &Functions + &Func @@ -5530,46 +4915,340 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin - - + + + + Phony Mode + + + + 10 + + + 6 + + + + + true + + + 13 + + + + POLY + + + + + MONO + + + + + + + + + + + + C&horus + + + + 9 + + + 6 + + + + + Chorus Parameters + + + + 9 + + + 6 + + + + + + + + + 16777215 + 80 + + + + Channel send level + + + + 9 + + + 6 + + + + + 127 + + + + + + + 13 + + + Channel Chorus + + + 127 + + + Qt::Horizontal + + + + + + + + + + + 16777215 + 80 + + + + On/Off and Return level + + + + 9 + + + 6 + + + + + 13 + + + On + + + + + + + 255 + + + 128 + + + Qt::Horizontal + + + + + + + + + + + 16777215 + 80 + + + + Select LADSPA plugin + + + + 9 + + + 6 + + + + + Change plugin + + + + + + + true + + + + + + + + + + + &Reverb + + + + 9 + + + 6 + + + + + + 16777215 + 80 + + + + On/Off and Return level + + + + 9 + + + 6 + + + + + 13 + + + On + + + + + + + 255 + + + 128 + + + Qt::Horizontal + + + + + + + + + + + 16777215 + 80 + + + + Select LADSPA plugin + + + + 9 + + + 6 + + + + + Change plugin + + + + + + + true + + + + + + + + + + + 16777215 + 80 + + - Phony Mode + Channel send level - + - 10 + 9 6 - - - - true + + + + 127 + + + + 13 - - - POLY - - - - - MONO - - + + Channel Chorus + + + 127 + + + Qt::Horizontal + + + + + Reverb Parameters + + + - &Configure (global) + &Config @@ -6000,24 +5679,857 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin + + + + + 40 + 40 + + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.100000000000000 + + + 0.200000000000000 + + + true + + + + + + + QFrame::StyledPanel + + + Vol + + + Qt::AlignCenter + + + + + + + + + + + 9 + + + 6 + + + + + true + + + Number of Voices + + + 64 + + + 1 + + + 8 + + + + + + + QFrame::StyledPanel + + + Number of voices + + + Qt::AlignCenter + + + + + + + Enable + + + true + + + + + + + 16 + + + 1 + + + + + + + QFrame::StyledPanel + + + Channel + + + Qt::AlignCenter + + + + + + + + + + + 1000 + 1000 + + + + + + + + + 0 + 0 + 0 + + + + + + + 207 + 207 + 207 + + + + + + + 237 + 237 + 237 + + + + + + + 231 + 231 + 231 + + + + + + + 121 + 125 + 121 + + + + + + + 166 + 166 + 166 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 207 + 207 + 207 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 231 + 231 + 231 + + + + + + + + + 0 + 0 + 0 + + + + + + + 207 + 207 + 207 + + + + + + + 237 + 237 + 237 + + + + + + + 231 + 231 + 231 + + + + + + + 121 + 125 + 121 + + + + + + + 166 + 166 + 166 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 207 + 207 + 207 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 231 + 231 + 231 + + + + + + + + + 121 + 125 + 121 + + + + + + + 207 + 207 + 207 + + + + + + + 237 + 237 + 237 + + + + + + + 231 + 231 + 231 + + + + + + + 121 + 125 + 121 + + + + + + + 166 + 166 + 166 + + + + + + + 121 + 125 + 121 + + + + + + + 255 + 255 + 255 + + + + + + + 121 + 125 + 121 + + + + + + + 207 + 207 + 207 + + + + + + + 207 + 207 + 207 + + + + + + + 0 + 0 + 0 + + + + + + + 121 + 125 + 121 + + + + + + + 207 + 207 + 207 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 231 + 231 + 231 + + + + + + + + + Sans Serif + 10 + 75 + false + true + false + false + + + + Panic! + + + + + + + + 96 + 16 + + + + Channel Ctrl + + + + 9 + + + 6 + + + + + 13 + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.100000000000000 + + + 0.200000000000000 + + + false + + + + + + + QFrame::StyledPanel + + + Release + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + + + + + QFrame::StyledPanel + + + Attack + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + + + + + QFrame::StyledPanel + + + Detune + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + + + + + QFrame::StyledPanel + + + Brightness + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + + + + + QFrame::StyledPanel + + + Modulation + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + + + + + QFrame::StyledPanel + + + Pan + + + Qt::AlignCenter + + + + + + + QFrame::StyledPanel + + + Volume + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + 13 + + + 1.000000000000000 + + + 0.100000000000000 + + + 0.200000000000000 + + + 270 + + + 6 + + + + + + - Awl::Knob QWidget
awl/knob.h
- 0 -
Awl::VolKnob Awl::Knob
awl/volknob.h
- 0 -
@@ -7302,12 +7814,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 453 - 144 + 110 + 116 - 554 - 147 + 110 + 116 @@ -7318,12 +7830,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 147 + 110 + 116 - 453 - 144 + 110 + 116 @@ -7334,12 +7846,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 453 - 183 + 110 + 116 - 554 - 186 + 110 + 116 @@ -7350,12 +7862,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 186 + 110 + 116 - 453 - 183 + 110 + 116 @@ -7366,12 +7878,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 453 - 222 + 110 + 116 - 554 - 225 + 110 + 116 @@ -7382,12 +7894,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 225 + 110 + 116 - 453 - 222 + 110 + 116 @@ -7398,12 +7910,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 194 - 167 + 229 + 208 - 554 - 170 + 596 + 211 @@ -7414,12 +7926,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 170 + 596 + 211 - 194 - 167 + 229 + 208 @@ -7430,12 +7942,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 194 - 223 + 240 + 329 - 554 - 226 + 596 + 332 @@ -7446,12 +7958,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 226 + 596 + 332 - 194 - 223 + 240 + 329 @@ -7462,12 +7974,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 282 + 596 + 439 - 194 - 279 + 240 + 442 @@ -7478,12 +7990,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 194 - 279 + 240 + 442 - 554 - 282 + 596 + 439 @@ -7494,12 +8006,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 553 - 380 + 110 + 116 - 377 - 377 + 110 + 116 @@ -7510,12 +8022,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 377 - 377 + 110 + 116 - 553 - 380 + 110 + 116 @@ -7526,12 +8038,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 277 - 457 + 110 + 116 - 337 - 460 + 110 + 116 @@ -7542,12 +8054,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 337 - 460 + 110 + 116 - 277 - 457 + 110 + 116 @@ -7558,12 +8070,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 493 - 457 + 110 + 116 - 553 - 460 + 110 + 116 @@ -7574,12 +8086,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 553 - 460 + 110 + 116 - 493 - 457 + 110 + 116 @@ -7590,12 +8102,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 493 - 537 + 110 + 116 - 553 - 540 + 110 + 116 @@ -7606,12 +8118,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 553 - 540 + 110 + 116 - 493 - 537 + 110 + 116 @@ -7622,12 +8134,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7638,12 +8150,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7654,12 +8166,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7670,12 +8182,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7686,12 +8198,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7702,12 +8214,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7718,12 +8230,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7734,12 +8246,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7750,12 +8262,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7766,12 +8278,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7782,12 +8294,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 210 - 156 + 110 + 116 - 554 - 159 + 110 + 116 @@ -7798,12 +8310,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 204 + 110 + 116 - 210 - 201 + 110 + 116 @@ -7814,12 +8326,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 210 - 201 + 110 + 116 - 554 - 204 + 110 + 116 @@ -7830,12 +8342,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 210 - 246 + 110 + 116 - 554 - 249 + 110 + 116 @@ -7846,12 +8358,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 249 + 110 + 116 - 210 - 246 + 110 + 116 @@ -7862,12 +8374,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 210 - 291 + 110 + 116 - 554 - 294 + 110 + 116 @@ -7878,12 +8390,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 159 + 110 + 116 - 210 - 156 + 110 + 116 @@ -7894,12 +8406,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 554 - 294 + 110 + 116 - 210 - 291 + 110 + 116 @@ -7910,12 +8422,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7926,12 +8438,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7942,12 +8454,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7958,12 +8470,12 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin setValue(int) - 121 - 143 + 110 + 116 - 121 - 143 + 110 + 116 @@ -7983,5 +8495,69 @@ Wave form 8 = <i>if <b>t</b>&#060 pi then sin(2*<b>t</b>)*sin + + chChorusSlider + valueChanged(int) + chChorusSpinBox + setValue(int) + + + 110 + 116 + + + 110 + 116 + + + + + chChorusSpinBox + valueChanged(int) + chChorusSlider + setValue(int) + + + 110 + 116 + + + 110 + 116 + + + + + chReverbSlider + valueChanged(int) + chReverbSpinBox + setValue(int) + + + 544 + 142 + + + 581 + 135 + + + + + chReverbSpinBox + valueChanged(int) + chReverbSlider + setValue(int) + + + 575 + 149 + + + 495 + 148 + + +
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 // -- cgit v1.2.3