diff options
Diffstat (limited to 'muse2/synti/deicsonze/deicsonzegui.cpp')
-rw-r--r-- | muse2/synti/deicsonze/deicsonzegui.cpp | 4548 |
1 files changed, 4548 insertions, 0 deletions
diff --git a/muse2/synti/deicsonze/deicsonzegui.cpp b/muse2/synti/deicsonze/deicsonzegui.cpp new file mode 100644 index 00000000..26ff64c0 --- /dev/null +++ b/muse2/synti/deicsonze/deicsonzegui.cpp @@ -0,0 +1,4548 @@ +//=========================================================================== +// +// DeicsOnze an emulator of the YAMAHA DX11 synthesizer +// +// Version 0.5.5 +// +// deicsonzegui.cpp +// +// +// Copyright (c) 2004-2006 Nil Geisweiller +// +// +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA or point your web browser to http://www.gnu.org. +//=========================================================================== + +#include "muse/midi.h" +#include "muse/midictrl.h" +#include "config.h" + +#include "deicsonzegui.h" + +#include "plugin.h" +///#include "plugingui.h" +#include "plugins/pandelay/pandelaymodel.h" + +//#include "deicsonzegui.h" + +class PluginDialog; + +DeicsOnzeGui::DeicsOnzeGui(DeicsOnze* deicsOnze) + : QDialog(0), + MessGui() +{ + setupUi(this); + _deicsOnze = deicsOnze; + lastDir = QDir::currentPath(); + + _currentChannel = 0; + + //FX + _chorusSuperWidget = NULL; + _reverbSuperWidget = NULL; + + tColor = new TCOLOR; + bColor = new BCOLOR; + etColor = new ETCOLOR; + ebColor = new EBCOLOR; + curColor = new QColor(0, 0, 0); + + pitchEnvelopeGraph = new QFramePitchEnvelope(pitchEnvFrame, this); + + envelopeGraph[0] = new QFrameEnvelope(envelope1Frame, this, 0); + envelopeGraph[1] = new QFrameEnvelope(envelope2Frame, this, 1); + envelopeGraph[2] = new QFrameEnvelope(envelope3Frame, this, 2); + envelopeGraph[3] = new QFrameEnvelope(envelope4Frame, this, 3); + + //change/enable channel + connect(ChannelCheckBox, SIGNAL(toggled(bool)), this, + SLOT(setEnabledChannel(bool))); + connect(ChannelNumSpinBox, SIGNAL(valueChanged(int)), this, + SLOT(setChangeChannel(int))); + //MasterVolume + connect(masterVolKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setMasterVolKnob(double))); + //Panic + connect(panicButton, SIGNAL(pressed()), this, SLOT(setPanic())); + //reset Ctrls + connect(resCtrlButton, SIGNAL(pressed()), this, SLOT(setResCtrl())); + //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))); + connect(channelPanKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setChannelPan(double))); + connect(brightnessKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setBrightnessKnob(double))); + connect(modulationKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setModulationKnob(double))); + connect(detuneKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setDetuneKnob(double))); + connect(attackKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setAttackKnob(double))); + connect(releaseKnob, SIGNAL(valueChanged(double, int)), + this, SLOT(setReleaseKnob(double))); + //nbr of voices + connect(nbrVoicesSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setNbrVoices(int))); + //quality + connect(qualityComboBox, SIGNAL(activated(const QString&)), + this, SLOT(setQuality(const QString&))); + connect(filterCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setFilter(bool))); + //change font size + connect(fontSizeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFontSize(int))); + //load save configuration + connect(saveConfPushButton, SIGNAL(pressed()), + this, SLOT(saveConfiguration())); + connect(loadConfPushButton, SIGNAL(pressed()), + this, SLOT(loadConfiguration())); + connect(saveDefaultPushButton, SIGNAL(pressed()), + this, SLOT(saveDefaultConfiguration())); + //load init set + connect(initSetCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setIsInitSet(bool))); + connect(initSetPathLineEdit, SIGNAL(textChanged(const QString&)), + this, SLOT(setInitSetPath(const QString&))); + connect(initSetBrowsePushButton, SIGNAL(pressed()), + this, SLOT(setBrowseInitSetPath())); + //load background pix + connect(imageCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setIsBackgroundPix(bool))); + connect(imagePathLineEdit, SIGNAL(textChanged(const QString&)), + this, SLOT(setBackgroundPixPath(const QString&))); + connect(imageBrowsePushButton, SIGNAL(pressed()), + this, SLOT(setBrowseBackgroundPixPath())); + + //Midi in channel + //connect(MidiInChComboBox, SIGNAL(activated(int)), + // this, SLOT(setMidiInCh(int))); + //Save mode ratio button + connect(minSaveRadioButton, SIGNAL(toggled(bool)), + this, SLOT(setSaveOnlyUsed(bool))); + connect(hugeSaveRadioButton, SIGNAL(toggled(bool)), + this, SLOT(setSaveOnlyUsedComp(bool))); + connect(saveConfigCheckBox, SIGNAL(toggled(bool)), + this, SLOT(setSaveConfig(bool))); + //Colors + connect(redSlider, SIGNAL(valueChanged(int)), + this, SLOT(setRedColor(int))); + connect(greenSlider, SIGNAL(valueChanged(int)), + this, SLOT(setGreenColor(int))); + connect(blueSlider, SIGNAL(valueChanged(int)), + this, SLOT(setBlueColor(int))); + connect(colorListBox, + SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + this, SLOT(setRGBSliders(QListWidgetItem*))); + //PopupMenu Category Subcategory Preset + connect(categoryListView, + SIGNAL(customContextMenuRequested(const QPoint&)), + this, SLOT(categoryPopupMenu(const QPoint&))); + connect(subcategoryListView, + SIGNAL(customContextMenuRequested(const QPoint&)), + this, SLOT(subcategoryPopupMenu(const QPoint&))); + connect(presetListView, + SIGNAL(customContextMenuRequested(const QPoint &)), + this, SLOT(presetPopupMenu(const QPoint &))); + //Preset and bank + connect(presetLineEdit, SIGNAL(textChanged(const QString&)), + this, SLOT(setPresetName(const QString&))); + connect(subcategoryLineEdit, SIGNAL(textChanged(const QString&)), + this, SLOT(setSubcategoryName(const QString&))); + connect(categoryLineEdit, SIGNAL(textChanged(const QString&)), + this, SLOT(setCategoryName(const QString&))); + connect(hbankSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setHBank(int))); + connect(lbankSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setLBank(int))); + connect(progSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setProg(int))); + //Global + //connect(channelPanSlider, SIGNAL(valueChanged(int)), + //this, SLOT(setChannelPan(int))); + connect(feedbackSlider, SIGNAL(valueChanged(int)), + this, SLOT(setFeedback(int))); + connect(LFOWaveComboBox, SIGNAL(activated(int)), + this, SLOT(setLfoWave(int))); + connect(LFOSpeedSlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoSpeed(int))); + connect(LFODelaySlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoDelay(int))); + connect(PModDepthSlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoPModDepth(int))); + connect(PModSensSlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoPitchSens(int))); + connect(AModDepthSlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoAModDepth(int))); + connect(AModSensSlider, SIGNAL(valueChanged(int)), + this, SLOT(setLfoAmpSens(int))); + connect(transposeSlider, SIGNAL(valueChanged(int)), + this, SLOT(setTranspose(int))); + //connect(channelDetuneSlider, SIGNAL(valueChanged(int)), + // this, SLOT(setChannelDetune(int))); + connect(algorithmComboBox, SIGNAL(activated(int)), + this, SLOT(setAlgorithm(int))); + connect(pitchBendRangeSlider, SIGNAL(valueChanged(int)), + this, SLOT(setPitchBendRange(int))); + //Pitch Envelope + connect(PL1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL1(int))); + connect(PL2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL2(int))); + connect(PL3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPL3(int))); + connect(PR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR1(int))); + connect(PR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR2(int))); + connect(PR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPR3(int))); + //Function + connect(fcVolumeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFcVolume(int))); + connect(fcPitchSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFcPitch(int))); + connect(fcAmplitudeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFcAmplitude(int))); + connect(mwPitchSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setMwPitch(int))); + connect(mwAmplitudeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setMwAmplitude(int))); + connect(bcPitchSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setBcPitch(int))); + connect(bcAmplitudeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setBcAmplitude(int))); + connect(bcPitchBiasSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setBcPitchBias(int))); + connect(bcEgBiasSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setBcEgBias(int))); + connect(atPitchSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setAtPitch(int))); + connect(atAmplitudeSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setAtAmplitude(int))); + connect(atPitchBiasSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setAtPitchBias(int))); + connect(atEgBiasSpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setAtEgBias(int))); + //connect(reverbSpinBox, SIGNAL(valueChanged(int)), + // this, SLOT(setReverbRate(int))); + connect(polyMonoComboBox, SIGNAL(activated(int)), + this, SLOT(setPolyMode(int))); + connect(PortFingerFullComboBox, SIGNAL(activated(int)), + this, SLOT(setPortFingerFull(int))); + connect(PortamentoTimeSlider, SIGNAL(valueChanged(int)), + this, SLOT(setPortaTime(int))); + //envelope + connect(AR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR1(int))); + connect(D1R1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R1(int))); + connect(D1L1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L1(int))); + connect(D2R1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R1(int))); + connect(RR1SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR1(int))); + connect(AR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR2(int))); + connect(D1R2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R2(int))); + connect(D1L2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L2(int))); + connect(D2R2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R2(int))); + connect(RR2SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR2(int))); + connect(AR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR3(int))); + connect(D1R3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R3(int))); + connect(D1L3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L3(int))); + connect(D2R3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R3(int))); + connect(RR3SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR3(int))); + connect(AR4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setAR4(int))); + connect(D1R4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1R4(int))); + connect(D1L4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD1L4(int))); + connect(D2R4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setD2R4(int))); + connect(RR4SpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRR4(int))); + //Scaling + connect(LS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS1(int))); + connect(RS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS1(int))); + connect(LS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS2(int))); + connect(RS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS2(int))); + connect(LS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS3(int))); + connect(RS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS3(int))); + connect(LS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setLS4(int))); + connect(RS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setRS4(int))); + //Volume + connect(OUT1Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol1(int))); + connect(OUT2Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol2(int))); + connect(OUT3Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol3(int))); + connect(OUT4Slider, SIGNAL(valueChanged(int)), this, SLOT(setVol4(int))); + //Ratio and Frequency + connect(CoarseRatio1SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setCoarseRatio1(int))); + connect(FineRatio1SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFineRatio1(int))); + connect(Freq1SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFreq1(int))); + connect(Fix1CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix1(bool))); + connect(CoarseRatio2SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setCoarseRatio2(int))); + connect(FineRatio2SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFineRatio2(int))); + connect(Freq2SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFreq2(int))); + connect(Fix2CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix2(bool))); + connect(CoarseRatio3SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setCoarseRatio3(int))); + connect(FineRatio3SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFineRatio3(int))); + connect(Freq3SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFreq3(int))); + connect(Fix3CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix3(bool))); + connect(CoarseRatio4SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setCoarseRatio4(int))); + connect(FineRatio4SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFineRatio4(int))); + connect(Freq4SpinBox, SIGNAL(valueChanged(int)), + this, SLOT(setFreq4(int))); + connect(Fix4CheckBox, SIGNAL(toggled(bool)), this, SLOT(setFix4(bool))); + //Sensitivity + connect(AME1CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME1(bool))); + connect(EBS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS1(int))); + connect(KVS1Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS1(int))); + connect(AME2CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME2(bool))); + connect(EBS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS2(int))); + connect(KVS2Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS2(int))); + connect(AME3CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME3(bool))); + connect(EBS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS3(int))); + connect(KVS3Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS3(int))); + connect(AME4CheckBox, SIGNAL(toggled(bool)), this, SLOT(setAME4(bool))); + connect(EBS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setEBS4(int))); + connect(KVS4Slider, SIGNAL(valueChanged(int)), this, SLOT(setKVS4(int))); + //detune + connect(DET1Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET1(int))); + connect(DET2Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET2(int))); + connect(DET3Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET3(int))); + connect(DET4Slider, SIGNAL(valueChanged(int)), this, SLOT(setDET4(int))); + //WaveForm + connect(WaveForm1ComboBox, SIGNAL(activated(int)), + this, SLOT(setWaveForm1(int))); + connect(WaveForm2ComboBox, SIGNAL(activated(int)), + this, SLOT(setWaveForm2(int))); + connect(WaveForm3ComboBox, SIGNAL(activated(int)), + this, SLOT(setWaveForm3(int))); + connect(WaveForm4ComboBox, SIGNAL(activated(int)), + this, SLOT(setWaveForm4(int))); + //PanDelay + connect(delayActivCheckBox, SIGNAL(toggled(bool)), this, + SLOT(setActivDelay(bool))); + connect(delayReturnSlider, SIGNAL(valueChanged(int)), this, + SLOT(setDelayReturn(int))); + connect(chDelaySlider, SIGNAL(valueChanged(int)), this, + SLOT(setChannelDelay(int))); + connect(delayBPMFloatentry, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayBPM(double))); + connect(delayBPMKnob, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayBPM(double))); + connect(delayBeatRatioFloatentry, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayBeatRatio(double))); + connect(delayBeatRatioKnob, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayBeatRatio(double))); + connect(delayFeedbackFloatentry, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayFeedback(double))); + connect(delayFeedbackKnob, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayFeedback(double))); + connect(delayPanLFOFreqFloatentry, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayPanLFOFreq(double))); + connect(delayPanLFOFreqKnob, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayPanLFOFreq(double))); + delayPanLFOFreqKnob->setMinLogValue(0.1); + delayPanLFOFreqKnob->setMaxLogValue(10.0); + connect(delayPanLFODepthFloatentry, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayPanLFODepth(double))); + connect(delayPanLFODepthKnob, SIGNAL(valueChanged(double, int)), this, + SLOT(setDelayPanLFODepth(double))); + //category subcategory preset + connect(categoryListView, + SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + this, SLOT(setCategory(QTreeWidgetItem*))); + connect(categoryListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), + this, SLOT(setCategory(QTreeWidgetItem*))); + connect(subcategoryListView, + SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + this, SLOT(setSubcategory(QTreeWidgetItem*))); + connect(subcategoryListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), + this, SLOT(setSubcategory(QTreeWidgetItem*))); + connect(presetListView, + SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + this, SLOT(setPreset(QTreeWidgetItem*))); + connect(presetListView, SIGNAL(itemClicked(QTreeWidgetItem*,int)), + this, SLOT(setPreset(QTreeWidgetItem*))); + //Connect socketnotifier to fifo + QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read); + connect(s, SIGNAL(activated(int)), SLOT(readMessage(int))); + + setTextColor(reinterpret_cast<const QColor &>(*tColor)); + setBackgroundColor(reinterpret_cast<const QColor &>(*bColor)); + setEditTextColor(reinterpret_cast<const QColor &>(*etColor)); + setEditBackgroundColor(reinterpret_cast<const QColor &>(*ebColor)); + + //select the first item in the color list + colorListBox->setCurrentItem(colorListBox->item(0)); + + //color the colorFrame with the color of the text + QPalette p = colorFrame->palette(); + p.setColor(QPalette::Window, (reinterpret_cast<const QColor &>(*tColor))); + colorFrame->setPalette(p); + + //update maaster volume + //updateMasterVolume(INITMASTERVOL); + //update Quick edit + updateQuickEdit(); + + //updatePreset(); + _enabledPreset = true; + setEnabledPreset(false); + + updateInitSetPath + (INSTPREFIX "/share/muse-" VERSION "/presets/deicsonze/SutulaBank.dei"); + //"/usr/local/share/muse-1.0pre1/presets/deicsonze/SutulaBank.dei") + //); + updateBackgroundPixPath + (INSTPREFIX "/share/muse-" VERSION "/wallpapers/paper2.jpg"); + updateBackgroundPixCheckBox(true); + applyBackgroundPix(); +} + +//----------------------------------------------------------- +// setEnabledChannel +//----------------------------------------------------------- +void DeicsOnzeGui::setEnabledChannel(bool e) { + sendController(_currentChannel, CTRL_CHANNELENABLE, (int)e); + updateEnabledChannel(e); +} +//----------------------------------------------------------- +// setUpdateEnabledChannelCheckBox +//----------------------------------------------------------- +void DeicsOnzeGui::updateChannelCheckBox(bool b) { + ChannelCheckBox->blockSignals(true); + ChannelCheckBox->setChecked(b); + ChannelCheckBox->blockSignals(false); +} + +//----------------------------------------------------------- +// setChangeChannel +//----------------------------------------------------------- +void DeicsOnzeGui::setChangeChannel(int c) { + _currentChannel = c-1; + updateChannelEnable(_deicsOnze->getChannelEnable(_currentChannel)); + updateNbrVoices(_deicsOnze->getNbrVoices(_currentChannel)); + //update quick edit + updateQuickEdit(); + //update preset + int p, l, h; + _deicsOnze->_preset[_currentChannel]->getHBankLBankProg(&h, &l, &p); + updateSelectPreset(h, l, p); + updatePreset(); +} +//----------------------------------------------------------- +// setPanic +//----------------------------------------------------------- +void DeicsOnzeGui::setPanic() { + unsigned char* message = new unsigned char[1]; + message[0]=SYSEX_PANIC; + sendSysex(message, 1); +} + +//----------------------------------------------------------- +// setResCtrl +//----------------------------------------------------------- +void DeicsOnzeGui::setResCtrl() { + //Detune + updateChannelDetune(0); + sendController(_currentChannel, CTRL_CHANNELDETUNE, 0); + //Brightness + updateBrightness(MIDFINEBRIGHTNESS); + sendController(_currentChannel, CTRL_FINEBRIGHTNESS, MIDFINEBRIGHTNESS); + //Attack + updateAttack(MIDATTACK); + sendController(_currentChannel, CTRL_ATTACK_TIME, MIDATTACK); + //Release + updateRelease(MIDRELEASE); + sendController(_currentChannel, CTRL_RELEASE_TIME, MIDRELEASE); +} + +//----------------------------------------------------------- +// setNbrVoices +//----------------------------------------------------------- +void DeicsOnzeGui::setNbrVoices(int nv) { + sendController(_currentChannel, CTRL_NBRVOICES, nv); +} + +//---------------------------------------------------------- +// setMidiInCh +//---------------------------------------------------------- +//void DeicsOnzeGui::setMidiInCh(int m) { +// unsigned char* message = new unsigned char[2]; +// message[0]=SYSEX_CHANNELNUM; +// message[1]=(unsigned char)(m-1); +// sendSysex(message, 2); +//} + +//----------------------------------------------------------- +// saveConfiguration +//----------------------------------------------------------- +void DeicsOnzeGui::saveConfiguration() { + QString filename = + QFileDialog::getSaveFileName( + this, + tr("Save configuration"), + lastDir, + QString("*.dco")); + if(!filename.isEmpty()) { + QFileInfo fi(filename); + lastDir = fi.path(); + if(!filename.endsWith(".dco")) filename+=".dco"; + QFile f(filename); + f.open(QIODevice::WriteOnly); + AL::Xml* xml = new AL::Xml(&f); + xml->header(); + _deicsOnze->writeConfiguration(xml); + f.close(); + } +} + +//----------------------------------------------------------- +// saveDefaultConfiguration +//----------------------------------------------------------- +void DeicsOnzeGui::saveDefaultConfiguration() { + QString filename = QString(getenv("HOME")) + QString("/." DEICSONZESTR ".dco"); + if(!filename.isEmpty()) { + QFile f(filename); + f.open(QIODevice::WriteOnly); + + AL::Xml* xml = new AL::Xml(&f); + xml->header(); + _deicsOnze->writeConfiguration(xml); + f.close(); + } +} + +//----------------------------------------------------------- +// loadConfiguration +//----------------------------------------------------------- +void DeicsOnzeGui::loadConfiguration(QString fileName) { + // read the XML file and create DOM tree + if(!fileName.isEmpty()) { + QFile confFile(fileName); + if(!confFile.open(QIODevice::ReadOnly)) { + QMessageBox::critical(0, + tr("Critical Error"), + tr("Cannot open file %1").arg(fileName)); + return; + } + QDomDocument domTree; + if (!domTree.setContent(&confFile )) { + QMessageBox::critical + (0, tr("Critical Error"), + tr("Parsing error for file %1").arg(fileName)); + confFile.close(); + return; + } + + confFile.close(); + + QDomNode node = domTree.documentElement(); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == DEICSONZECONFIGURATIONSTR) { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + _deicsOnze->readConfiguration(node.firstChild()); + } + else printf("unsupported *.dco file version %s\n", + version.toLatin1().data()); + } + else printf("DeicsOnze: %s not supported\n", + e.tagName().toLatin1().data()); + node = node.nextSibling(); + } + } +} + +//----------------------------------------------------------- +// loadConfiguration +//----------------------------------------------------------- +void DeicsOnzeGui::loadConfiguration() { + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Load category dialog"), + lastDir, + QString("*.dco")); + QFileInfo fi(fileName); + lastDir = fi.path(); + loadConfiguration(fileName); +} + +//----------------------------------------------------------- +// setQuality +//----------------------------------------------------------- +void DeicsOnzeGui::setQuality(const QString& q) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_QUALITY; + message[1]=(unsigned char)(q=="High"? + high:(q=="Middle"? + middle:(q=="Low"?low:ultralow))); + sendSysex(message, 2); +} +//----------------------------------------------------------- +// setFilter +//----------------------------------------------------------- +void DeicsOnzeGui::setFilter(bool f) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_FILTER; + message[1]=(unsigned char)f; + sendSysex(message, 2); +} +//----------------------------------------------------------- +// setFontSize +//----------------------------------------------------------- +void DeicsOnzeGui::setFontSize(int fs) { + applyFontSize(fs); + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_FONTSIZE; + message[1]=(unsigned char)fs; + sendSysex(message, 2); +} +//----------------------------------------------------------- +// setSaveOnlyUsed +//----------------------------------------------------------- +void DeicsOnzeGui::setSaveOnlyUsed(bool sou) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_SAVEONLYUSED; + message[1]=(unsigned char)sou; + sendSysex(message, 2); + updateSaveOnlyUsed(sou); +} +void DeicsOnzeGui::setSaveOnlyUsedComp(bool souc) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_SAVEONLYUSED; + message[1]=(unsigned char)!souc; + sendSysex(message, 2); + updateSaveOnlyUsed(!souc); +} +//----------------------------------------------------------- +// setSaveConfig +//----------------------------------------------------------- +void DeicsOnzeGui::setSaveConfig(bool ssc) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_SAVECONFIG; + message[1]=(unsigned char)ssc; + sendSysex(message, 2); +} +//----------------------------------------------------------- +// setColor +//----------------------------------------------------------- +void DeicsOnzeGui::setRedColor(int r) { + QListWidgetItem* i=colorListBox->selectedItems().at(0); + if(i){ + curColor->setRgb(r, curColor->green(), curColor->blue()); + if(i->text()==QString("Text")) { + tColor->setRgb(curColor->rgb()); + setTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Background")) { + bColor->setRgb(curColor->rgb()); + setBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Text")) { + etColor->setRgb(curColor->rgb()); + setEditTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Background")) { + ebColor->setRgb(curColor->rgb()); + setEditBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + QPalette p = colorFrame->palette(); + p.setColor(QPalette::Window, + (reinterpret_cast<const QColor &>(*curColor))); + colorFrame->setPalette(p); + } +} +void DeicsOnzeGui::setGreenColor(int g) { + QListWidgetItem* i=colorListBox->selectedItems().at(0); + if(i) { + curColor->setRgb(curColor->red(), g, curColor->blue()); + if(i->text()==QString("Text")) { + tColor->setRgb(curColor->rgb()); + setTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Background")) { + bColor->setRgb(curColor->rgb()); + setBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Text")) { + etColor->setRgb(curColor->rgb()); + setEditTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Background")) { + ebColor->setRgb(curColor->rgb()); + setEditBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + QPalette p = colorFrame->palette(); + p.setColor(QPalette::Window, (reinterpret_cast<const QColor &>(*curColor))); + colorFrame->setPalette(p); + } +} +void DeicsOnzeGui::setBlueColor(int b) { + QListWidgetItem* i=colorListBox->selectedItems().at(0); + if(i) { + curColor->setRgb(curColor->red(), curColor->green(), b); + if(i->text()==QString("Text")) { + tColor->setRgb(curColor->rgb()); + setTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Background")) { + bColor->setRgb(curColor->rgb()); + setBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Text")) { + etColor->setRgb(curColor->rgb()); + setEditTextColor(reinterpret_cast<const QColor &>(*curColor)); + } + else if(i->text()==QString("Edit Background")) { + ebColor->setRgb(curColor->rgb()); + setEditBackgroundColor(reinterpret_cast<const QColor &>(*curColor)); + } + QPalette p = colorFrame->palette(); + p.setColor(QPalette::Window, (reinterpret_cast<const QColor &>(*curColor))); + colorFrame->setPalette(p); + } +} +void DeicsOnzeGui::setRGBSliders(QListWidgetItem* i) { + if(i->text()==QString("Text")) + curColor->setRgb(tColor->red(), tColor->green(), tColor->blue()); + else if(i->text()==QString("Background")) + curColor->setRgb(bColor->red(), bColor->green(), bColor->blue()); + else if(i->text()==QString("Edit Text")) + curColor->setRgb(etColor->red(), etColor->green(), etColor->blue()); + else if(i->text()==QString("Edit Background")) + curColor->setRgb(ebColor->red(), ebColor->green(), ebColor->blue()); + + redSlider->blockSignals(true); + redSlider->setValue(curColor->red()); + redSlider->blockSignals(false); + redSpinBox->blockSignals(true); + redSpinBox->setValue(curColor->red()); + redSpinBox->blockSignals(false); + greenSlider->blockSignals(true); + greenSlider->setValue(curColor->green()); + greenSlider->blockSignals(false); + greenSpinBox->blockSignals(true); + greenSpinBox->setValue(curColor->green()); + greenSpinBox->blockSignals(false); + blueSlider->blockSignals(true); + blueSlider->setValue(curColor->blue()); + blueSlider->blockSignals(false); + blueSpinBox->blockSignals(true); + blueSpinBox->setValue(curColor->blue()); + blueSpinBox->blockSignals(false); + QPalette p = colorFrame->palette(); + p.setColor(QPalette::Window, (reinterpret_cast<const QColor &>(*curColor))); + colorFrame->setPalette(p); +} +void DeicsOnzeGui::setTextColor(const QColor & c) { + QPalette p = this->palette(); + p.setColor(QPalette::WindowText, c); + this->setPalette(p); + channelCtrlGroupBox->setPalette(p); + //channelPanGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + LFOGroupBox->setPalette(p); + ModulationMatrixGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + pitchEnvGroupBox->setPalette(p); + Frequency1groupBox->setPalette(p); + OUT1groupBox->setPalette(p); + Env1GroupBox->setPalette(p); + Scaling1GroupBox->setPalette(p); + DetWaveEGS1GroupBox->setPalette(p); + sensitivity1groupBox->setPalette(p); + Frequency2groupBox->setPalette(p); + OUT2groupBox->setPalette(p); + Env2GroupBox->setPalette(p); + Scaling2GroupBox->setPalette(p); + DetWaveEGS2GroupBox->setPalette(p); + sensitivity2groupBox->setPalette(p); + Frequency3groupBox->setPalette(p); + OUT3groupBox->setPalette(p); + Env3GroupBox->setPalette(p); + Scaling3GroupBox->setPalette(p); + DetWaveEGS3GroupBox->setPalette(p); + sensitivity3groupBox->setPalette(p); + Frequency4groupBox->setPalette(p); + OUT4groupBox->setPalette(p); + Env4GroupBox->setPalette(p); + Scaling4GroupBox->setPalette(p); + DetWaveEGS4GroupBox->setPalette(p); + sensitivity4groupBox->setPalette(p); + transposeGroupBox->setPalette(p); + //detuneGroupBox->setPalette(p); + //footSWGroupBox->setPalette(p); + pitchBendRangeGroupBox->setPalette(p); + //reverbGroupBox->setPalette(p); + modeGroupBox->setPalette(p); + portamentoGroupBox->setPalette(p); + colorGroupBox->setPalette(p); + pathGroupBox->setPalette(p); + 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); + fontSizeGroupBox->setPalette(p); + delayBPMGroupBox->setPalette(p); + delayBeatRatioGroupBox->setPalette(p); + delayFeedbackGroupBox->setPalette(p); + delayPanLFOGroupBox->setPalette(p); + delayPanDepthGroupBox->setPalette(p); + delayReturnGroupBox->setPalette(p); + channelDelayGroupBox->setPalette(p); +} + +void DeicsOnzeGui::setBackgroundColor(const QColor & c) { + if(imageCheckBox->checkState()==Qt::Unchecked) { + QPalette p = this->palette(); + p.setColor(QPalette::Window, c); + this->setPalette(p); + } +} +void DeicsOnzeGui::setEditTextColor(const QColor & c) { + QPalette p = this->palette(); + p.setColor(QPalette::Text, c); + this->setPalette(p); + channelCtrlGroupBox->setPalette(p); + //channelPanGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + LFOGroupBox->setPalette(p); + ModulationMatrixGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + pitchEnvGroupBox->setPalette(p); + Frequency1groupBox->setPalette(p); + OUT1groupBox->setPalette(p); + Env1GroupBox->setPalette(p); + Scaling1GroupBox->setPalette(p); + DetWaveEGS1GroupBox->setPalette(p); + sensitivity1groupBox->setPalette(p); + Frequency2groupBox->setPalette(p); + OUT2groupBox->setPalette(p); + Env2GroupBox->setPalette(p); + Scaling2GroupBox->setPalette(p); + DetWaveEGS2GroupBox->setPalette(p); + sensitivity2groupBox->setPalette(p); + Frequency3groupBox->setPalette(p); + OUT3groupBox->setPalette(p); + Env3GroupBox->setPalette(p); + Scaling3GroupBox->setPalette(p); + DetWaveEGS3GroupBox->setPalette(p); + sensitivity3groupBox->setPalette(p); + Frequency4groupBox->setPalette(p); + OUT4groupBox->setPalette(p); + Env4GroupBox->setPalette(p); + Scaling4GroupBox->setPalette(p); + DetWaveEGS4GroupBox->setPalette(p); + sensitivity4groupBox->setPalette(p); + transposeGroupBox->setPalette(p); + //detuneGroupBox->setPalette(p); + //footSWGroupBox->setPalette(p); + pitchBendRangeGroupBox->setPalette(p); + //reverbGroupBox->setPalette(p); + modeGroupBox->setPalette(p); + portamentoGroupBox->setPalette(p); + colorGroupBox->setPalette(p); + pathGroupBox->setPalette(p); + qualityGroupBox->setPalette(p); + saveModeButtonGroup->setPalette(p); + fileGroupBox->setPalette(p); + masterVolKnob->setScaleValueColor(c); + channelVolumeKnob->setScaleValueColor(c); + channelPanKnob->setScaleValueColor(c); + brightnessKnob->setScaleValueColor(c); + modulationKnob->setScaleValueColor(c); + detuneKnob->setScaleValueColor(c); + attackKnob->setScaleValueColor(c); + releaseKnob->setScaleValueColor(c); + channelChorusGroupBox->setPalette(p); + selectLadspaChorusGroupBox->setPalette(p); + parametersChorusGroupBox->setPalette(p); + for(int i=0; i < (int)_chorusSliderVector.size(); i++) + if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleValueColor(c); + channelReverbGroupBox->setPalette(p); + selectLadspaReverbGroupBox->setPalette(p); + parametersReverbGroupBox->setPalette(p); + for(int i=0; i < (int)_reverbSliderVector.size(); i++) + if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleValueColor(c); + channelDelayGroupBox->setPalette(p); + delayBPMKnob->setScaleValueColor(c); + delayBPMGroupBox->setPalette(p); + delayBeatRatioKnob->setScaleValueColor(c); + delayBeatRatioGroupBox->setPalette(p); + delayFeedbackKnob->setScaleValueColor(c); + delayFeedbackGroupBox->setPalette(p); + delayPanLFOFreqKnob->setScaleValueColor(c); + delayPanLFOGroupBox->setPalette(p); + delayPanLFODepthKnob->setScaleValueColor(c); + delayPanDepthGroupBox->setPalette(p); + fontSizeGroupBox->setPalette(p); +} +void DeicsOnzeGui::setEditBackgroundColor(const QColor & c) { + QPalette p = this->palette(); + p.setColor(QPalette::Base, c); + this->setPalette(p); + channelCtrlGroupBox->setPalette(p); + //channelPanGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + LFOGroupBox->setPalette(p); + ModulationMatrixGroupBox->setPalette(p); + FeedbackGroupBox->setPalette(p); + pitchEnvGroupBox->setPalette(p); + Frequency1groupBox->setPalette(p); + OUT1groupBox->setPalette(p); + Env1GroupBox->setPalette(p); + Scaling1GroupBox->setPalette(p); + DetWaveEGS1GroupBox->setPalette(p); + sensitivity1groupBox->setPalette(p); + Frequency2groupBox->setPalette(p); + OUT2groupBox->setPalette(p); + Env2GroupBox->setPalette(p); + Scaling2GroupBox->setPalette(p); + DetWaveEGS2GroupBox->setPalette(p); + sensitivity2groupBox->setPalette(p); + Frequency3groupBox->setPalette(p); + OUT3groupBox->setPalette(p); + Env3GroupBox->setPalette(p); + Scaling3GroupBox->setPalette(p); + DetWaveEGS3GroupBox->setPalette(p); + sensitivity3groupBox->setPalette(p); + Frequency4groupBox->setPalette(p); + OUT4groupBox->setPalette(p); + Env4GroupBox->setPalette(p); + Scaling4GroupBox->setPalette(p); + DetWaveEGS4GroupBox->setPalette(p); + sensitivity4groupBox->setPalette(p); + transposeGroupBox->setPalette(p); + //detuneGroupBox->setPalette(p); + //footSWGroupBox->setPalette(p); + pitchBendRangeGroupBox->setPalette(p); + //reverbGroupBox->setPalette(p); + modeGroupBox->setPalette(p); + portamentoGroupBox->setPalette(p); + colorGroupBox->setPalette(p); + pathGroupBox->setPalette(p); + qualityGroupBox->setPalette(p); + saveModeButtonGroup->setPalette(p); + fileGroupBox->setPalette(p); + p = pitchEnvFrame->palette(); + p.setColor(QPalette::Window, c); + pitchEnvFrame->setPalette(p); + p = envelope1Frame->palette(); + p.setColor(QPalette::Window, c); + envelope1Frame->setPalette(p); + p = envelope2Frame->palette(); + p.setColor(QPalette::Window, c); + envelope2Frame->setPalette(p); + p = envelope3Frame->palette(); + p.setColor(QPalette::Window, c); + envelope3Frame->setPalette(p); + p = envelope4Frame->palette(); + p.setColor(QPalette::Window, c); + envelope4Frame->setPalette(p); + masterVolKnob->setScaleColor(c); + channelVolumeKnob->setScaleColor(c); + channelPanKnob->setScaleColor(c); + brightnessKnob->setScaleColor(c); + modulationKnob->setScaleColor(c); + detuneKnob->setScaleColor(c); + attackKnob->setScaleColor(c); + releaseKnob->setScaleColor(c); + channelChorusGroupBox->setPalette(p); + selectLadspaChorusGroupBox->setPalette(p); + parametersChorusGroupBox->setPalette(p); + for(int i=0; i < (int)_chorusSliderVector.size(); i++) + if(_chorusSliderVector[i]) _chorusSliderVector[i]->setScaleColor(c); + channelReverbGroupBox->setPalette(p); + selectLadspaReverbGroupBox->setPalette(p); + parametersReverbGroupBox->setPalette(p); + for(int i=0; i < (int)_reverbSliderVector.size(); i++) + if(_reverbSliderVector[i]) _reverbSliderVector[i]->setScaleColor(c); + channelDelayGroupBox->setPalette(p); + delayBPMKnob->setScaleColor(c); + delayBPMGroupBox->setPalette(p); + delayBeatRatioKnob->setScaleColor(c); + delayBeatRatioGroupBox->setPalette(p); + delayFeedbackKnob->setScaleColor(c); + delayFeedbackGroupBox->setPalette(p); + delayPanLFOFreqKnob->setScaleColor(c); + delayPanLFOGroupBox->setPalette(p); + delayPanLFODepthKnob->setScaleColor(c); + delayPanDepthGroupBox->setPalette(p); + fontSizeGroupBox->setPalette(p); +} + +//----------------------------------------------------------- +// QFramePitchEnvelope +//----------------------------------------------------------- +void QFramePitchEnvelope::paintEvent(QPaintEvent* /*e*/) { + QPainter paint(this); + QPen pen; + pen.setColor(*(_deicsOnzeGui->etColor)); + //if the size of pitchEnvFrame is different than QFramePitchEnvelope resize + //and update the envelope + if(_deicsOnzeGui->pitchEnvFrame->width()!=width() || + _deicsOnzeGui->pitchEnvFrame->height()!=height()) { + resize(_deicsOnzeGui->pitchEnvFrame->width(), + _deicsOnzeGui->pitchEnvFrame->height()); + //update the positions of the envelope + PitchEg* pe = &_deicsOnzeGui->_deicsOnze + ->_preset[_deicsOnzeGui->_currentChannel]->pitchEg; + env2Points(pe->pl1, pe->pl2, pe->pl3, pe->pr1, pe->pr2, pe->pr3); + } + //Draw the verticale line on the release time + pen.setWidth(1); + pen.setStyle(Qt::DotLine); + paint.setPen(pen); + paint.drawLine(P2linkP3.x(), height(), P2linkP3.x(), 0); + //Draw the horisontal line for the center of the pitch + pen.setStyle(Qt::DashDotLine); + paint.setPen(pen); + paint.drawLine(0, height()/2-DOTWIDTH/2, width(), height()/2-DOTWIDTH/2); + //Draw the pitch envelope + pen.setWidth(PENWIDTH); + pen.setStyle(Qt::SolidLine); + paint.setPen(pen); + paint.drawRect(startlinkP1.x()-DOTWIDTH/2, startlinkP1.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(P1linkP2.x()-DOTWIDTH/2, P1linkP2.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(P2linkP3.x()-DOTWIDTH/2, P2linkP3.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(P3linkEnd.x()-DOTWIDTH/2, P3linkEnd.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawLine(startlinkP1,P1linkP2); + paint.drawLine(P1linkP2, P2linkP3); + paint.drawLine(P2linkP3, P3linkEnd); +} +void QFramePitchEnvelope::mousePressEvent(QMouseEvent * e) { + //startlinkP1 + if(e->x()<startlinkP1.x()+DRAGWIDTH && e->x()>startlinkP1.x()-DRAGWIDTH + && e->y()<startlinkP1.y()+DRAGWIDTH && e->y()>startlinkP1.y()-DRAGWIDTH) + isStartlinkP1Edit=true; + //P1linkP2 + if(e->x()<P1linkP2.x()+DRAGWIDTH && e->x()>P1linkP2.x()-DRAGWIDTH + && e->y()<P1linkP2.y()+DRAGWIDTH && e->y()>P1linkP2.y()-DRAGWIDTH) + isP1linkP2Edit=true; + //P2linkP3 + if(e->x()<P2linkP3.x()+DRAGWIDTH && e->x()>P2linkP3.x()-DRAGWIDTH + && e->y()<P2linkP3.y()+DRAGWIDTH && e->y()>P2linkP3.y()-DRAGWIDTH) + isP2linkP3Edit=true; + //P3linkEnd + if(e->x()<P3linkEnd.x()+DRAGWIDTH && e->x()>P3linkEnd.x()-DRAGWIDTH + && e->y()<P3linkEnd.y()+DRAGWIDTH && e->y()>P3linkEnd.y()-DRAGWIDTH) + isP3linkEndEdit=true; +} +void QFramePitchEnvelope::mouseReleaseEvent(QMouseEvent* /*e*/) { + isStartlinkP1Edit=false; + isP1linkP2Edit=false; + isP2linkP3Edit=false; + isP3linkEndEdit=false; +} +void QFramePitchEnvelope::mouseMoveEvent(QMouseEvent* e) { + if(isStartlinkP1Edit) { + if(e->y()>startlinkP1.y()) _deicsOnzeGui->PL1SpinBox->stepDown(); + if(e->y()<startlinkP1.y()) _deicsOnzeGui->PL1SpinBox->stepUp(); + } + if(isP1linkP2Edit) { + if(e->x()>P1linkP2.x()) _deicsOnzeGui->PR1SpinBox->stepDown(); + if(e->x()<P1linkP2.x()) _deicsOnzeGui->PR1SpinBox->stepUp(); + if(e->y()>P1linkP2.y()) _deicsOnzeGui->PL2SpinBox->stepDown(); + if(e->y()<P1linkP2.y()) _deicsOnzeGui->PL2SpinBox->stepUp(); + } + if(isP2linkP3Edit) { + if(e->x()>P2linkP3.x()) _deicsOnzeGui->PR2SpinBox->stepDown(); + if(e->x()<P2linkP3.x()) _deicsOnzeGui->PR2SpinBox->stepUp(); + if(e->y()>P2linkP3.y()) _deicsOnzeGui->PL3SpinBox->stepDown(); + if(e->y()<P2linkP3.y()) _deicsOnzeGui->PL3SpinBox->stepUp(); + } + if(isP3linkEndEdit) { + if(e->x()>P3linkEnd.x()) _deicsOnzeGui->PR3SpinBox->stepDown(); + if(e->x()<P3linkEnd.x()) _deicsOnzeGui->PR3SpinBox->stepUp(); + if(e->y()>P3linkEnd.y()) _deicsOnzeGui->PL1SpinBox->stepDown(); + if(e->y()<P3linkEnd.y()) _deicsOnzeGui->PL1SpinBox->stepUp(); + } +} +//----------------------------------------------------------- +// env2Points +// assigns the right coordinates to the points +// to draw the pitch envelope +//----------------------------------------------------------- +void QFramePitchEnvelope::env2Points(int pl1, int pl2, int pl3, + int pr1, int pr2, int pr3) { + startlinkP1.setY(YOFFSET+MAXPHEIGHT + -PENWIDTH-((PL1HEIGHT-PENWIDTH)*pl1)/MAXPL); + startlinkP1.setX(XOFFSET); + P1linkP2.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL2HEIGHT-PENWIDTH)*pl2)/MAXPL); + P1linkP2.setX(XOFFSET+WALLWIDTH+PR1WIDTH-(PR1WIDTH*pr1)/MAXPR); + P2linkP3.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL3HEIGHT-PENWIDTH)*pl3)/MAXPL); + P2linkP3.setX(P1linkP2.x()+WALLWIDTH+PR2WIDTH-(PR2WIDTH*pr2)/MAXPR); + P3linkEnd.setY(YOFFSET+MAXPHEIGHT-PENWIDTH-((PL1HEIGHT-PENWIDTH)*pl1)/MAXPL); + P3linkEnd.setX(P2linkP3.x()+WALLWIDTH+PR3WIDTH-(PR3WIDTH*pr3)/MAXPR); +} +//----------------------------------------------------------- +// QFrameEnvelope +//----------------------------------------------------------- +void QFrameEnvelope::paintEvent(QPaintEvent* /*e*/) { + QPainter paint(this); + QPen pen; + pen.setColor(*(_deicsOnzeGui->etColor)); + //if the size of pitchEnvFrame is different than QFramePitchEnvelope resize + //and update the envelope + int op = _deicsOnzeGui->deicsOnzeTabWidget->currentIndex()-2; + //-2 because of the presetsTab and globalTab + Eg* eg=&(_deicsOnzeGui->_deicsOnze-> + _preset[_deicsOnzeGui->_currentChannel]->eg[op]); + switch(op) { + case 0 : + if(_deicsOnzeGui->envelope1Frame->width()!=width() || + _deicsOnzeGui->envelope1Frame->height()!=height()) { + resize(_deicsOnzeGui->envelope1Frame->width(), + _deicsOnzeGui->envelope1Frame->height()); + //update the positions of the envelope + env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); + } + break; + case 1 : + if(_deicsOnzeGui->envelope2Frame->width()!=width() || + _deicsOnzeGui->envelope2Frame->height()!=height()) { + resize(_deicsOnzeGui->envelope2Frame->width(), + _deicsOnzeGui->envelope2Frame->height()); + //update the positions of the envelope + env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); + } + break; + case 2 : + if(_deicsOnzeGui->envelope3Frame->width()!=width() || + _deicsOnzeGui->envelope3Frame->height()!=height()) { + resize(_deicsOnzeGui->envelope3Frame->width(), + _deicsOnzeGui->envelope3Frame->height()); + //update the positions of the envelope + env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); + } + break; + case 3 : + if(_deicsOnzeGui->envelope4Frame->width()!=width() || + _deicsOnzeGui->envelope4Frame->height()!=height()) { + resize(_deicsOnzeGui->envelope4Frame->width(), + _deicsOnzeGui->envelope4Frame->height()); + //update the positions of the envelope + env2Points(eg->ar, eg->d1r, eg->d1l, eg->d2r, eg->rr); + } + break; + default : + printf("QFrameEnvelope::paintEvent switch case error\n"); + break; + } + //Draw the vertical line of the release note + pen.setWidth(1); + pen.setStyle(Qt::DotLine); + paint.setPen(pen); + paint.drawLine(D2linkRR.x(), MAXHEIGHT, D2linkRR.x(), YOFFSET); + //Draw the volume envelope + pen.setWidth(PENWIDTH); + pen.setStyle(Qt::SolidLine); + paint.setPen(pen); + paint.drawRect(startlinkAR.x()-DOTWIDTH/2, startlinkAR.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(ARlinkD1.x()-DOTWIDTH/2, ARlinkD1.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(D1linkD2.x()-DOTWIDTH/2, D1linkD2.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(D2linkRR.x()-DOTWIDTH/2, D2linkRR.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawRect(RRlinkEnd.x()-DOTWIDTH/2, RRlinkEnd.y()-DOTWIDTH/2, + DOTWIDTH, DOTWIDTH); + paint.drawLine(startlinkAR,ARlinkD1); + paint.drawLine(ARlinkD1, D1linkD2); + paint.drawLine(D1linkD2, D2linkRR); + paint.drawLine(D2linkRR, RRlinkEnd); +} +void QFrameEnvelope::mousePressEvent(QMouseEvent * e) { + //ARlinkD1 + if(e->x()<ARlinkD1.x()+DRAGWIDTH && e->x()>ARlinkD1.x()-DRAGWIDTH + && e->y()<ARlinkD1.y()+DRAGWIDTH && e->y()>ARlinkD1.y()-DRAGWIDTH) + isARlinkD1Edit=true; + //D1linkD2 + if(e->x()<D1linkD2.x()+DRAGWIDTH && e->x()>D1linkD2.x()-DRAGWIDTH + && e->y()<D1linkD2.y()+DRAGWIDTH && e->y()>D1linkD2.y()-DRAGWIDTH) + isD1linkD2Edit=true; + //D2linkRR + if(e->x()<D2linkRR.x()+DRAGWIDTH && e->x()>D2linkRR.x()-DRAGWIDTH + && e->y()<D2linkRR.y()+DRAGWIDTH && e->y()>D2linkRR.y()-DRAGWIDTH) + isD2linkRREdit=true; + //RRlinkEnd + if(e->x()<RRlinkEnd.x()+DRAGWIDTH && e->x()>RRlinkEnd.x()-DRAGWIDTH + && e->y()<RRlinkEnd.y()+DRAGWIDTH && e->y()>RRlinkEnd.y()-DRAGWIDTH) + isRRlinkEndEdit=true; +} +void QFrameEnvelope::mouseReleaseEvent(QMouseEvent* /*e*/) { + isARlinkD1Edit=false; + isD1linkD2Edit=false; + isD2linkRREdit=false; + isRRlinkEndEdit=false; +} +void QFrameEnvelope::mouseMoveEvent(QMouseEvent* e) { + if(isARlinkD1Edit) + { + switch(op) { + case 0 : + if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR1SpinBox->stepDown(); + if(e->x()<ARlinkD1.x()) _deicsOnzeGui->AR1SpinBox->stepUp(); + break; + case 1 : + if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR2SpinBox->stepDown(); + if(e->x()<ARlinkD1.x()) _deicsOnzeGui->AR2SpinBox->stepUp(); + break; + case 2 : + if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR3SpinBox->stepDown(); + if(e->x()<ARlinkD1.x()) _deicsOnzeGui->AR3SpinBox->stepUp(); + break; + case 3 : + if(e->x()>ARlinkD1.x()) _deicsOnzeGui->AR4SpinBox->stepDown(); + if(e->x()<ARlinkD1.x()) _deicsOnzeGui->AR4SpinBox->stepUp(); + break; + default : + break; + } + } + if(isD1linkD2Edit) + { + switch(op) { + case 0 : + if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R1SpinBox->stepDown(); + if(e->x()<D1linkD2.x()) _deicsOnzeGui->D1R1SpinBox->stepUp(); + if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L1SpinBox->stepDown(); + if(e->y()<D1linkD2.y()) _deicsOnzeGui->D1L1SpinBox->stepUp(); + break; + case 1 : + if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R2SpinBox->stepDown(); + if(e->x()<D1linkD2.x()) _deicsOnzeGui->D1R2SpinBox->stepUp(); + if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L2SpinBox->stepDown(); + if(e->y()<D1linkD2.y()) _deicsOnzeGui->D1L2SpinBox->stepUp(); + break; + case 2 : + if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R3SpinBox->stepDown(); + if(e->x()<D1linkD2.x()) _deicsOnzeGui->D1R3SpinBox->stepUp(); + if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L3SpinBox->stepDown(); + if(e->y()<D1linkD2.y()) _deicsOnzeGui->D1L3SpinBox->stepUp(); + break; + case 3 : + if(e->x()>D1linkD2.x()) _deicsOnzeGui->D1R4SpinBox->stepDown(); + if(e->x()<D1linkD2.x()) _deicsOnzeGui->D1R4SpinBox->stepUp(); + if(e->y()>D1linkD2.y()) _deicsOnzeGui->D1L4SpinBox->stepDown(); + if(e->y()<D1linkD2.y()) _deicsOnzeGui->D1L4SpinBox->stepUp(); + break; + default : + break; + } + } + if(isD2linkRREdit) + { + switch(op) { + case 0 : + if(e->x()>D2linkRR.x() /*&& e->y()<D2linkRR.y()*/) + _deicsOnzeGui->D2R1SpinBox->stepDown(); + if(e->x()<D2linkRR.x() /*&& e->y()>D2linkRR.y()*/) + _deicsOnzeGui->D2R1SpinBox->stepUp(); + break; + case 1 : + if(e->x()>D2linkRR.x() /*&& e->y()<D2linkRR.y()*/) + _deicsOnzeGui->D2R2SpinBox->stepDown(); + if(e->x()<D2linkRR.x() /*&& e->y()>D2linkRR.y()*/) + _deicsOnzeGui->D2R2SpinBox->stepUp(); + break; + case 2 : + if(e->x()>D2linkRR.x() /*&& e->y()<D2linkRR.y()*/) + _deicsOnzeGui->D2R3SpinBox->stepDown(); + if(e->x()<D2linkRR.x() /*&& e->y()>D2linkRR.y()*/) + _deicsOnzeGui->D2R3SpinBox->stepUp(); + break; + case 3 : + if(e->x()>D2linkRR.x() /*&& e->y()<D2linkRR.y()*/) + _deicsOnzeGui->D2R4SpinBox->stepDown(); + if(e->x()<D2linkRR.x() /*&& e->y()>D2linkRR.y()*/) + _deicsOnzeGui->D2R4SpinBox->stepUp(); + break; + default : + break; + } + } + if(isRRlinkEndEdit) + { + switch(op) { + case 0 : + if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR1SpinBox->stepDown(); + if(e->x()<RRlinkEnd.x()) _deicsOnzeGui->RR1SpinBox->stepUp(); + break; + case 1 : + if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR2SpinBox->stepDown(); + if(e->x()<RRlinkEnd.x()) _deicsOnzeGui->RR2SpinBox->stepUp(); + break; + case 2 : + if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR3SpinBox->stepDown(); + if(e->x()<RRlinkEnd.x()) _deicsOnzeGui->RR3SpinBox->stepUp(); + break; + case 3 : + if(e->x()>RRlinkEnd.x()) _deicsOnzeGui->RR4SpinBox->stepDown(); + if(e->x()<RRlinkEnd.x()) _deicsOnzeGui->RR4SpinBox->stepUp(); + break; + default : + break; + } + } +} +//----------------------------------------------------------- +// env2Points +// assigns the right coordinates to the points +// to draw the envelope +//----------------------------------------------------------- +void QFrameEnvelope::env2Points(int ar, int d1r, int d1l, int d2r, int rr) { + startlinkAR.setY(MAXHEIGHT-PENWIDTH); + startlinkAR.setX(PENWIDTH); + ARlinkD1.setY(PENWIDTH); + ARlinkD1.setX(PENWIDTH+ARWIDTH-(ARWIDTH*ar)/MAXAR); + D1linkD2.setY(PENWIDTH+ + (D1LHEIGHT-2*PENWIDTH-((D1LHEIGHT-2*PENWIDTH)*d1l)/MAXD1L)); + D1linkD2.setX(ARlinkD1.x()+D1RWIDTH-(D1RWIDTH*d1r)/MAXD1R); + D2linkRR.setY(D1linkD2.y() + +((D1LHEIGHT-2*PENWIDTH-D1linkD2.y())*d2r)/MAXD2R); + D2linkRR.setX(D1linkD2.x()+D2RWIDTH-(D2RWIDTH*d2r)/MAXD2R); + RRlinkEnd.setY(MAXHEIGHT-PENWIDTH); + RRlinkEnd.setX(D2linkRR.x() + +(RRWIDTH-PENWIDTH-((RRWIDTH-PENWIDTH)*rr)/MAXRR)); +} + +//----------------------------------------------------------- +// processEvent(const MidiEvent&); +//----------------------------------------------------------- +void DeicsOnzeGui::processEvent(const MidiPlayEvent& ev) { + //Controler + if (ev.type() == ME_CONTROLLER) { + //printf("ME_CONTROLLER\n"); + int id=ev.dataA(); + int ch=ev.channel(); + int val=ev.dataB(); + if(ch == _currentChannel || id == CTRL_CHANNELENABLE) { + switch(id) { + case CTRL_AR: updateAR(0, val); break; + case CTRL_D1R: updateD1R(0, val); break; + case CTRL_D2R: updateD2R(0, val); break; + case CTRL_RR: updateRR(0, val); break; + case CTRL_D1L: updateD1L(0, val); break; + case CTRL_LS: updateLS(0, val); break; + case CTRL_RS: updateRS(0, val); break; + case CTRL_EBS: updateEBS(0, val); break; + case CTRL_AME: updateAME(0, val==1); break; + case CTRL_KVS: updateKVS(0, val); break; + case CTRL_OUT: updateOUT(0, val); break; + case CTRL_RATIO: updateRATIO(0, val); break; + case CTRL_DET: updateDET(0, val); break; + case CTRL_AR+DECAPAR1: updateAR(1, val); break; + case CTRL_D1R+DECAPAR1: updateD1R(1, val); break; + case CTRL_D2R+DECAPAR1: updateD2R(1, val); break; + case CTRL_RR+DECAPAR1: updateRR(1, val); break; + case CTRL_D1L+DECAPAR1: updateD1L(1, val); break; + case CTRL_LS+DECAPAR1: updateLS(1, val); break; + case CTRL_RS+DECAPAR1: updateRS(1, val); break; + case CTRL_EBS+DECAPAR1: updateEBS(1, val); break; + case CTRL_AME+DECAPAR1: updateAME(1, val==1); break; + case CTRL_KVS+DECAPAR1: updateKVS(1, val); break; + case CTRL_OUT+DECAPAR1: updateOUT(1, val); break; + case CTRL_RATIO+DECAPAR1: updateRATIO(1, val); break; + case CTRL_DET+DECAPAR1: updateDET(1, val); break; + case CTRL_AR+2*DECAPAR1: updateAR(2, val); break; + case CTRL_D1R+2*DECAPAR1: updateD1R(2, val); break; + case CTRL_D2R+2*DECAPAR1: updateD2R(2, val); break; + case CTRL_RR+2*DECAPAR1: updateRR(2, val); break; + case CTRL_D1L+2*DECAPAR1: updateD1L(2, val); break; + case CTRL_LS+2*DECAPAR1: updateLS(2, val); break; + case CTRL_RS+2*DECAPAR1: updateRS(2, val); break; + case CTRL_EBS+2*DECAPAR1: updateEBS(2, val); break; + case CTRL_AME+2*DECAPAR1: updateAME(2, val==1); break; + case CTRL_KVS+2*DECAPAR1: updateKVS(2, val); break; + case CTRL_OUT+2*DECAPAR1: updateOUT(2, val); break; + case CTRL_RATIO+2*DECAPAR1: updateRATIO(2, val); break; + case CTRL_DET+2*DECAPAR1: updateDET(2, val); break; + case CTRL_AR+3*DECAPAR1: updateAR(3, val); break; + case CTRL_D1R+3*DECAPAR1: updateD1R(3, val); break; + case CTRL_D2R+3*DECAPAR1: updateD2R(3, val); break; + case CTRL_RR+3*DECAPAR1: updateRR(3, val); break; + case CTRL_D1L+3*DECAPAR1: updateD1L(3, val); break; + case CTRL_LS+3*DECAPAR1: updateLS(3, val); break; + case CTRL_RS+3*DECAPAR1: updateRS(3, val); break; + case CTRL_EBS+3*DECAPAR1: updateEBS(3, val); break; + case CTRL_AME+3*DECAPAR1: updateAME(3, val==1); break; + case CTRL_KVS+3*DECAPAR1: updateKVS(3, val); break; + case CTRL_OUT+3*DECAPAR1: updateOUT(3, val); break; + case CTRL_RATIO+3*DECAPAR1: updateRATIO(3, val); break; + case CTRL_DET+3*DECAPAR1: updateDET(3, val); break; + case CTRL_ALG: updateALG(val); break; + case CTRL_FEEDBACK: updateFEEDBACK(val); break; + case CTRL_SPEED: updateSPEED(val); break; + case CTRL_DELAY: updateDELAY(val); break; + case CTRL_PMODDEPTH: updatePMODDEPTH(val); break; + case CTRL_AMODDEPTH: updateAMODDEPTH(val); break; + case CTRL_SYNC: updateSYNC(val==1); break; + case CTRL_WAVE: updateWAVE(val); break; + case CTRL_PMODSENS: updatePMODSENS(val); break; + case CTRL_AMS: updateAMS(val); break; + case CTRL_TRANSPOSE: updateTRANSPOSE(val); break; + case CTRL_POLYMODE: updatePOLYMODE(val); break; + case CTRL_PBENDRANGE: updatePBENDRANGE(val); break; + case CTRL_PORTAMODE: updatePORTAMODE(val); break; + case CTRL_PORTATIME: updatePORTATIME(val); break; + case CTRL_FCVOLUME: updateFcVolume(val); break; + case CTRL_FSW: + break; + case CTRL_MWPITCH: updateMwPitch(val); break; + case CTRL_MWAMPLITUDE: updateMwAmplitude(val); break; + case CTRL_BCPITCH: updateBcPitch(val); break; + case CTRL_BCAMPLITUDE: updateBcAmplitude(val); break; + case CTRL_BCPITCHBIAS: updateBcPitchBias(val); break; + case CTRL_BCEGBIAS: updateBcEgBias(val); break; + case CTRL_PR1: updatePR1(val); break; + case CTRL_PR2: updatePR2(val); break; + case CTRL_PR3: updatePR3(val); break; + case CTRL_PL1: updatePL1(val); break; + case CTRL_PL2: updatePL2(val); break; + case CTRL_PL3: updatePL3(val); break; + case CTRL_FIX: updateFIX(0, val==1); break; + case CTRL_FIXRANGE: updateFIXRANGE(0, val); break; + case CTRL_OSW: updateOSW(0, val); break; + case CTRL_SHFT: updateSHFT(0, val); break; + case CTRL_FIX+DECAPAR2: updateFIX(1, val==1); break; + case CTRL_FIXRANGE+DECAPAR2: updateFIXRANGE(1, val); break; + case CTRL_OSW+DECAPAR2: updateOSW(1, val); break; + case CTRL_SHFT+DECAPAR2: updateSHFT(1, val); break; + case CTRL_FIX+2*DECAPAR2: updateFIX(2, val==1); break; + case CTRL_FIXRANGE+2*DECAPAR2: updateFIXRANGE(2, val); break; + case CTRL_OSW+2*DECAPAR2: updateOSW(2, val); break; + case CTRL_SHFT+2*DECAPAR2: updateSHFT(2, val); break; + case CTRL_FIX+3*DECAPAR2: updateFIX(3, val==1); break; + case CTRL_FIXRANGE+3*DECAPAR2: updateFIXRANGE(3, val); break; + case CTRL_OSW+3*DECAPAR2: updateOSW(3, val); break; + case CTRL_SHFT+3*DECAPAR2: updateSHFT(3, val); break; + case CTRL_REVERBRATE: /*updateReverbRate(val);*/ break; + case CTRL_FCPITCH: updateFcPitch(val); break; + case CTRL_FCAMPLITUDE: updateFcAmplitude(val); break; + case CTRL_CHANNELENABLE: + if(ch == _currentChannel) updateChannelEnable(val); + break; + case CTRL_CHANNELDETUNE: updateChannelDetune(val); break; + case CTRL_CHANNELPAN: updateChannelPan(val); break; + case CTRL_CHANNELVOLUME: updateChannelVolume(val); break; + case CTRL_NBRVOICES: updateNbrVoices(val); break; + 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_VARIATION_SEND: updateChannelDelay(val); break; + case CTRL_MODULATION: updateModulation(val); break; + case CTRL_PROGRAM : + int hbank = (val & 0xff0000) >> 16; + int lbank = (val & 0xff00) >> 8; + if (hbank > 127) // map "dont care" to 0 + hbank = 0; + if (lbank > 127) + lbank = 0; + int prog = val & 0x7f; + //printf("GUI program : ch = %d, hbank = %d, lbank = %d, prog = %d\n", + // ch, hbank, lbank, prog); + //change the _deicsonze preset + //to update the right preset + _deicsOnze->programSelect(ch, hbank, lbank, prog); + //only display _deicsonze preset + updateSelectPreset(hbank, lbank, prog); + updatePreset(); + break; + } + } + } + // Sysexes + else if (ev.type() == ME_SYSEX) { + //printf("ME_SYSEX\n"); + unsigned char* data = ev.data(); + int cmd = *data; + float f; + 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_DELAYACTIV : + updateDelayActiv((bool)data[1]); + break; + case SYSEX_DELAYRETURN : + updateDelayReturn((int)data[1]); + break; + case SYSEX_DELAYBPM : + memcpy(&f, &data[1], sizeof(float)); + updateDelayBPM(f); + break; + case SYSEX_DELAYBEATRATIO : + memcpy(&f, &data[1], sizeof(float)); + updateDelayBeatRatio(f); + break; + case SYSEX_DELAYFEEDBACK : + memcpy(&f, &data[1], sizeof(float)); + updateDelayFeedback(f); + break; + case SYSEX_DELAYLFOFREQ : + memcpy(&f, &data[1], sizeof(float)); + updateDelayPanLFOFreq(f); + break; + case SYSEX_DELAYLFODEPTH : + memcpy(&f, &data[1], sizeof(float)); + updateDelayPanLFODepth(f); + break; + case SYSEX_QUALITY : + updateQuality((int)data[1]); + break; + case SYSEX_FILTER : + updateFilter((bool)data[1]); + break; + case SYSEX_FONTSIZE : + updateFontSize((int)data[1]); + applyFontSize((int)data[1]); + break; + case SYSEX_MASTERVOL : + updateMasterVolume((int)data[1]); + break; + case SYSEX_SAVECONFIG : + updateSaveConfig((bool)data[1]); + break; + case SYSEX_SAVEONLYUSED : + updateSaveOnlyUsed((bool)data[1]); + break; + case SYSEX_COLORGUI : + tColor->setRgb(data[1], data[2], data[3]); + bColor->setRgb(data[4], data[5], data[6]); + etColor->setRgb(data[7], data[8], data[9]); + ebColor->setRgb(data[10], data[11], data[12]); + setTextColor(reinterpret_cast<const QColor &>(*tColor)); + setBackgroundColor(reinterpret_cast<const QColor &>(*bColor)); + setEditTextColor(reinterpret_cast<const QColor &>(*etColor)); + setEditBackgroundColor(reinterpret_cast<const QColor &>(*ebColor)); + setRGBSliders(colorListBox->currentItem()); + break; + case SYSEX_ISINITSET : + updateInitSetCheckBox((bool)data[1]); + break; + case SYSEX_INITSETPATH : + updateInitSetPath(QString((char*)&data[1])); + break; + case SYSEX_ISBACKGROUNDPIX : + updateBackgroundPixCheckBox((bool)data[1]); + if((bool)data[1]) applyBackgroundPix(); + break; + case SYSEX_BACKGROUNDPIXPATH : + updateBackgroundPixPath(QString((char*)&data[1])); + applyBackgroundPix(); + break; + case SYSEX_UPDATESETGUI : + setSet(); + subcategoryListView->clear(); + presetListView->clear(); + updateCategoryName("NONE", false); + hbankSpinBox->setEnabled(false); + updatePreset(); + updateSubcategoryName("NONE", false); + 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 + /*QString filename = (const char*) (data+2); + QFile deicsonzeFile(filename); + deicsonzeFile.open(IO_ReadOnly); + QDomDocument domTree; + domTree.setContent(&deicsonzeFile); + deicsonzeFile.close(); + QDomNode node = domTree.documentElement(); + + printf("After XML\n"); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "deicsOnzeSet") { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + _deicsOnze->_preset=_deicsOnze->_initialPreset;*/ + //read the set + if((bool)data[1]) { + //printf("Mini\n"); + updateSaveOnlyUsed(true); + } + else { + //printf("Huge\n"); + //while(!_deicsOnze->_set->_categoryVector.empty()) + // delete(*_deicsOnze->_set->_categoryVector.begin()); + updateSaveOnlyUsed(false); + } + //_deicsOnze->_set->readSet(node.firstChild()); + //display load preset + setSet(); + /*} + else printf("Wrong set version : %s\n", + version.toLatin1().data()); + } + node = node.nextSibling(); + } + break; + // delete the temporary file created + QString rmfile; + rmfile="rm "; + rmfile+=filename; + system(rmfile); + printf("Finit\n");*/ + } + } +} + +/*! + \fn SimpleSynthGui::readMessage(int) + */ +void DeicsOnzeGui::readMessage(int) +{ + MessGui::readMessage(); +} + +//----------------------------------------------------------- +// num3Digits(int n) +//----------------------------------------------------------- +QString DeicsOnzeGui::num3Digits(int n) { + QString sn=QString::number(n); + return(sn.length()==1?"00"+sn:(sn.length()==2?"0"+sn:sn)); +} + +//----------------------------------------------------------- +// deleteSet +//----------------------------------------------------------- +void DeicsOnzeGui::deleteSetDialog() { + //TODO : maybe to put this in sysex to deicsonze.cpp + for(int c = 0; c < NBRCHANNELS; c++) + _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; + while(!_deicsOnze->_set->_categoryVector.empty()) + delete(*_deicsOnze->_set->_categoryVector.begin()); + setSet(); + //_currentQLVCategory = NULL; + presetListView->clear(); + subcategoryListView->clear(); + updateCategoryName("NONE", false); + hbankSpinBox->setEnabled(false); + updateSubcategoryName("NONE", false); + lbankSpinBox->setEnabled(false); + updatePresetName("INITVOICE", false); + progSpinBox->setEnabled(false); + updatePreset(); +} +//----------------------------------------------------------- +// loadSetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::loadSetDialog() { + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Load set dialog"), + lastDir, + QString("*.dei") + ); + + // read the XML file and create DOM tree + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + QFile deicsonzeFile(fileName); + if(!deicsonzeFile.open(QIODevice::ReadOnly)) { + QMessageBox::critical(0, + tr("Critical Error"), + tr("Cannot open file %1").arg(fileName)); + return; + } + QDomDocument domTree; + if (!domTree.setContent(&deicsonzeFile )) { + QMessageBox::critical + (0, tr("Critical Error"), + tr("Parsing error for file %1").arg(fileName)); + deicsonzeFile.close(); + return; + } + deicsonzeFile.close(); + + QDomNode node = domTree.documentElement(); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "deicsOnzeSet") { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + for(int c = 0; c < NBRCHANNELS; c++) + _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; + while(!_deicsOnze->_set->_categoryVector.empty()) + delete(*_deicsOnze->_set->_categoryVector.begin()); + _deicsOnze->_set->readSet(node.firstChild()); + //display load preset + setSet(); + subcategoryListView->clear(); + presetListView->clear(); + updateCategoryName("NONE", false); + hbankSpinBox->setEnabled(false); + updatePreset(); + updateSubcategoryName("NONE", false); + progSpinBox->setEnabled(false); + updatePresetName("INITVOICE", false); + } + else printf("unsupported *.dei file version %s\n", + version.toLatin1().data()); + } + else printf("DeicsOnze: %s not supported\n", + e.tagName().toLatin1().data()); + node = node.nextSibling(); + } + } +} + +//----------------------------------------------------------- +// saveSetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::saveSetDialog() { + QString filename = + QFileDialog::getSaveFileName( + this, + tr("Save set dialog"), + lastDir, + QString("*.dei")); + if(!filename.isEmpty()) { + QFileInfo fi(filename); + lastDir = fi.path(); + if(!filename.endsWith(".dei")) filename+=".dei"; + QFile f(filename); + f.open(QIODevice::WriteOnly); + + AL::Xml* xml = new AL::Xml(&f); + xml->header(); + _deicsOnze->_set->writeSet(xml, false); + + f.close(); + } +} + +//----------------------------------------------------------- +// popupMenuCategory +//----------------------------------------------------------- +void DeicsOnzeGui::categoryPopupMenu(const QPoint&) { + QTreeWidgetItem* cat = categoryListView->currentItem(); + QMenu *categoryMenu = new QMenu; + categoryMenu->addAction(tr("New category"), + this, SLOT(newCategoryDialog())); + QAction* deleteItem = categoryMenu->addAction(tr("Delete category"), this, + SLOT(deleteCategoryDialog())); + categoryMenu->addAction(tr("Load category"), + this, SLOT(loadCategoryDialog())); + QAction* saveItem = categoryMenu->addAction(tr("Save category"), this, + SLOT(saveCategoryDialog())); + if(!cat || !categoryListView->isItemSelected(cat)) { + deleteItem->setEnabled(false); + saveItem->setEnabled(false); + } + categoryMenu->addSeparator(); + categoryMenu->addAction(tr("Load set"), + this, SLOT(loadSetDialog()));; + categoryMenu->addAction(tr("Save set"), + this, SLOT(saveSetDialog()));; + categoryMenu->addAction(tr("Delete set"), + this, SLOT(deleteSetDialog()));; + categoryMenu->exec(QCursor::pos()); +} +void DeicsOnzeGui::subcategoryPopupMenu(const QPoint&) { + QTreeWidgetItem* sub = subcategoryListView->currentItem(); + QMenu *subcategoryMenu = new QMenu; + QAction* newItem = + subcategoryMenu->addAction(tr("New subcategory"), this, + SLOT(newSubcategoryDialog())); + QAction* deleteItem = + subcategoryMenu->addAction(tr("Delete subcategory"), + this, SLOT(deleteSubcategoryDialog())); + QAction* loadItem = + subcategoryMenu->addAction(tr("Load subcategory"), this, + SLOT(loadSubcategoryDialog())); + QAction* saveItem = + subcategoryMenu->addAction(tr("Save subcategory"), this, + SLOT(saveSubcategoryDialog())); + if(!sub || !subcategoryListView->isItemSelected(sub)) { + deleteItem->setEnabled(false); + saveItem->setEnabled(false); + } + if(!categoryListView->currentItem() + || !categoryListView->isItemSelected(categoryListView->currentItem())) { + newItem->setEnabled(false); + loadItem->setEnabled(false); + } + subcategoryMenu->exec(QCursor::pos()); +} +void DeicsOnzeGui::presetPopupMenu(const QPoint&) { + QTreeWidgetItem* pre = presetListView->currentItem(); + QMenu *presetMenu = new QMenu; + QAction* newItem = presetMenu->addAction(tr("New preset"), this, + SLOT(newPresetDialog())); + QAction* deleteItem = presetMenu->addAction(tr("Delete preset"), this, + SLOT(deletePresetDialog())); + QAction* loadItem = presetMenu->addAction(tr("Load preset"), this, + SLOT(loadPresetDialog())); + QAction* saveItem = presetMenu->addAction(tr("Save preset"), this, + SLOT(savePresetDialog())); + if(!pre || !presetListView->isItemSelected(pre)) { + deleteItem->setEnabled(false); + saveItem->setEnabled(false); + } + if(!subcategoryListView->currentItem() || + !subcategoryListView->isItemSelected(subcategoryListView->currentItem())){ + newItem->setEnabled(false); + loadItem->setEnabled(false); + } + presetMenu->exec(QCursor::pos()); +} + +//----------------------------------------------------------- +// newCategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::newCategoryDialog() { + int nhbank=_deicsOnze->_set->firstFreeHBank(); + if(nhbank==-1) + QMessageBox::information(this, + tr("No more category supported"), + tr("You can not add more categories"), + QMessageBox::Ok); + else { + new Category(_deicsOnze->_set, "NEWCAT", nhbank); + setSet(); + QTreeWidgetItem* ci= + categoryListView->findItems(num3Digits(nhbank+1), Qt::MatchExactly).at(0); + categoryListView->setItemSelected(ci, true); + categoryListView->setCurrentItem(ci); + setCategory(ci); + categoryListView->scrollToItem(ci); + } +} + +//----------------------------------------------------------- +// deleteCategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::deleteCategoryDialog() { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + if(cat && categoryListView->isItemSelected(cat)) { + if(!QMessageBox::question( + this, + tr("Delete category"), + tr("Do you really want to delete %1 ?") + .arg(cat->_category->_categoryName.c_str()), + tr("&Yes"), tr("&No"), + QString::null, 0, 1 )) + { + for(int c = 0; c < NBRCHANNELS; c++) + _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; + delete(cat->_category); + delete(cat); + subcategoryListView->clear(); + presetListView->clear(); + updateCategoryName("NONE", false); + hbankSpinBox->setEnabled(false); + updatePreset(); + updateSubcategoryName("NONE", false); + progSpinBox->setEnabled(false); + updatePresetName("INITVOICE", false); + } + } + else QMessageBox::warning(this, tr("No category selected"), + tr("You must first select a category.")); +} + +//----------------------------------------------------------- +// loadCategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::loadCategoryDialog() { + QString buffstr; + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Load category dialog"), + lastDir, + QString("*.dec")); + + // read the XML file and create DOM tree + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + QFile deicsonzeFile(fileName); + if(!deicsonzeFile.open(QIODevice::ReadOnly)) { + QMessageBox::critical(0, + tr("Critical Error"), + tr("Cannot open file %1").arg(fileName)); + return; + } + QDomDocument domTree; + if (!domTree.setContent(&deicsonzeFile )) { + QMessageBox::critical + (0, tr("Critical Error"), + tr("Parsing error for file %1").arg(fileName)); + deicsonzeFile.close(); + return; + } + deicsonzeFile.close(); + + QDomNode node = domTree.documentElement(); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "deicsOnzeCategory") { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + Category* lCategory = new Category(); + lCategory->readCategory(node.firstChild()); + if (!_deicsOnze->_set->isFreeHBank(lCategory->_hbank)) { + if(!QMessageBox::question( + this, + tr("Replace or add"), + tr("%1 is supposed to be affected to the hbank number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") + .arg((lCategory->_categoryName).c_str()) + .arg(buffstr.setNum(lCategory->_hbank+1)), + tr("&Replace"), tr("&Add"), + QString::null, 0, 1 )) { + delete(_deicsOnze->_set + ->findCategory(lCategory->_hbank)); + lCategory->linkSet(_deicsOnze->_set); + } + else { + int ffhb=_deicsOnze->_set->firstFreeHBank(); + if(ffhb==-1) + QMessageBox::warning + (this, tr("Download error"), + tr("There is no more free category slot.")); + else lCategory->_hbank=ffhb; + lCategory->linkSet(_deicsOnze->_set); + } + } + else lCategory->linkSet(_deicsOnze->_set); + //display category + setSet(); + } + else printf("unsupported *.dec file version %s\n", + version.toLatin1().data()); + } + else printf("DeicsOnze: %s not supported\n", + e.tagName().toLatin1().data()); + node = node.nextSibling(); + } + } +} + +//----------------------------------------------------------- +// saveCategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::saveCategoryDialog() { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + if(cat) { + QString filename = + QFileDialog::getSaveFileName( + this, + tr("Save category dialog"), + lastDir, + QString("*.dec")); + + if(!filename.isEmpty()) { + QFileInfo fi(filename); + lastDir = fi.path(); + if(!filename.endsWith(".dec")) filename+=".dec"; + QFile f(filename); + f.open(QIODevice::WriteOnly); + AL::Xml* xml = new AL::Xml(&f); + xml->header(); + cat->_category->writeCategory(xml, false); + + f.close(); + } + } + else QMessageBox::warning(this, tr("No category selected"), + tr("You must first select a category.")); +} + +//----------------------------------------------------------- +// newSubcategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::newSubcategoryDialog() { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + if(cat && categoryListView->isItemSelected(cat)) { + int nlbank=cat->_category->firstFreeLBank(); + if(nlbank==-1) + QMessageBox::information(this, + tr("No more subcategory supported"), + tr("You can not add more subcategories"), + QMessageBox::Ok); + else { + new Subcategory(cat->_category, "NEWSUB", nlbank); + setCategory(cat); + QTreeWidgetItem* si= + subcategoryListView->findItems(num3Digits(nlbank+1), + Qt::MatchExactly).at(0); + subcategoryListView->setItemSelected(si, true); + subcategoryListView->setCurrentItem(si); + setSubcategory(si); + subcategoryListView->scrollToItem(si); + } + } +} + +//----------------------------------------------------------- +// deleteSubcategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::deleteSubcategoryDialog() { + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub && subcategoryListView->isItemSelected(sub)) { + if(!QMessageBox::question( + this, + tr("Delete subcategory"), + tr("Do you really want to delete %1 ?") + .arg(sub->_subcategory + ->_subcategoryName.c_str()), + tr("&Yes"), tr("&No"), + QString::null, 0, 1 )) { + for(int c = 0; c < NBRCHANNELS; c++) + _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; + delete(sub->_subcategory); + delete(sub); + presetListView->clear(); + //subcategoryLineEdit->setEnabled(false); + updateSubcategoryName("NONE", false); + lbankSpinBox->setEnabled(false); + updatePreset(); + } + } + else QMessageBox::warning(this, tr("No subcategory selected"), + tr("You must first select a subcategory.")); +} + +//----------------------------------------------------------- +// loadSubcategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::loadSubcategoryDialog() { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + QString buffstr; + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Load subcategory dialog"), + lastDir, + QString("*.des")); + + // read the XML file and create DOM tree + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + QFile deicsonzeFile(fileName); + if(!deicsonzeFile.open(QIODevice::ReadOnly)) { + QMessageBox::critical(0, + tr("Critical Error"), + tr("Cannot open file %1").arg(fileName)); + return; + } + QDomDocument domTree; + if (!domTree.setContent(&deicsonzeFile )) { + QMessageBox::critical + (0, tr("Critical Error"), + tr("Parsing error for file %1").arg(fileName)); + deicsonzeFile.close(); + return; + } + deicsonzeFile.close(); + + QDomNode node = domTree.documentElement(); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "deicsOnzeSubcategory") { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + Subcategory* lSubcategory = new Subcategory(); + lSubcategory->readSubcategory(node.firstChild()); + if (!cat->_category->isFreeLBank(lSubcategory->_lbank)) { + if(!QMessageBox::question( + this, + tr("Replace or add"), + tr("%1 is supposed to be affected to the lbank number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") + .arg((lSubcategory->_subcategoryName) + .c_str()) + .arg(buffstr.setNum(lSubcategory->_lbank+1)), + tr("&Replace"), tr("&Add"), + QString::null, 0, 1 )) { + delete(cat->_category->findSubcategory(lSubcategory->_lbank)); + lSubcategory->linkCategory(cat->_category); + } + else { + int fflb=cat->_category->firstFreeLBank(); + if(fflb==-1) + QMessageBox::warning + (this, tr("Download error"), + tr("There is no more free subcategory slot.")); + else lSubcategory->_lbank=fflb; + lSubcategory->linkCategory(cat->_category); + } + } + else lSubcategory->linkCategory(cat->_category); + //display subcategory + setCategory(cat); + } + else printf("unsupported *.des file version %s\n", + version.toLatin1().data()); + } + else printf("DeicsOnze: %s not supported\n", + e.tagName().toLatin1().data()); + node = node.nextSibling(); + } + } +} + +//----------------------------------------------------------- +// saveSubcategoryDialog +//----------------------------------------------------------- +void DeicsOnzeGui::saveSubcategoryDialog() { + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub) { + QString filename = + QFileDialog::getSaveFileName( + this, + tr("Save subcategory dialog"), + lastDir, + QString("*.des")); + + if(!filename.isEmpty()) { + QFileInfo fi(filename); + lastDir = fi.path(); + if(!filename.endsWith(".des")) filename+=".des"; + QFile f(filename); + f.open(QIODevice::WriteOnly); + + AL::Xml* xml = new AL::Xml(&f); + xml->header(); + sub->_subcategory->writeSubcategory(xml, false); + + f.close(); + } + } + else QMessageBox::warning(this, tr("No subcategory selected"), + tr("You must first select a subcategory.")); +} + + +//----------------------------------------------------------- +// newPresetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::newPresetDialog() { + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub && subcategoryListView->isItemSelected(sub)) { + int nprog=sub->_subcategory->firstFreeProg(); + if(nprog==-1) + QMessageBox::information(this, + tr("No more preset supported"), + tr("You can not add more presets"), + QMessageBox::Ok); + else { + new Preset(sub->_subcategory, nprog); + setSubcategory(sub); + QTreeWidgetItem* pi= + presetListView->findItems(num3Digits(nprog+1), + Qt::MatchExactly).at(0); + presetListView->setItemSelected(pi, true); + presetListView->setCurrentItem(pi); + setPreset(pi); + presetListView->scrollToItem(pi); + } + } +} + +//----------------------------------------------------------- +// deletePresetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::deletePresetDialog() { + QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); + if(pre) { + if(presetListView->isItemSelected(pre)) { + if(!QMessageBox::question( + this, + tr("Delete preset"), + tr("Do you really want to delete %1 ?") + .arg(pre->_preset->name.c_str()), + tr("&Yes"), tr("&No"), + QString::null, 0, 1 )) { + for(int c = 0; c < NBRCHANNELS; c++) + _deicsOnze->_preset[c]=_deicsOnze->_initialPreset; + delete(pre->_preset); + delete(pre); + presetLineEdit->setEnabled(false); + progSpinBox->setEnabled(false); + updatePreset(); + } + } + else QMessageBox::warning(this, tr("No preset selected"), + tr("You must first select a preset.")); + } + else QMessageBox::warning(this, tr("No preset selected"), + tr("You must first select a preset.")); +} + +//----------------------------------------------------------- +// loadPresetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::loadPresetDialog() { + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + QString buffstr; + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Load preset dialog"), + lastDir, + QString("*.dep")); + + // read the XML file and create DOM tree + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + QFile deicsonzeFile(fileName); + if(!deicsonzeFile.open(QIODevice::ReadOnly)) { + QMessageBox::critical(0, + tr("Critical Error"), + tr("Cannot open file %1").arg(fileName)); + return; + } + QDomDocument domTree; + if (!domTree.setContent(&deicsonzeFile )) { + QMessageBox::critical + (0, tr("Critical Error"), + tr("Parsing error for file %1").arg(fileName)); + deicsonzeFile.close(); + return; + } + deicsonzeFile.close(); + + QDomNode node = domTree.documentElement(); + while (!node.isNull()) { + QDomElement e = node.toElement(); + if(e.isNull()) + continue; + if(e.tagName() == "deicsOnzePreset") { + QString version = e.attribute(QString("version")); + if (version == "1.0") { + Preset* lPreset = new Preset(); + lPreset->readPreset(node.firstChild()); + if(!sub->_subcategory->isFreeProg(lPreset->prog)) { + if(!QMessageBox::question( + this, + tr("Replace or add"), + tr("%1 is supposed to be affected to the prog number %2, but there is already one on this slot.\n Do you want to replace it or to add it in the next free slot ?") + .arg((lPreset->name).c_str()) + .arg(buffstr.setNum(lPreset->prog+1)), + tr("&Replace"), tr("&Add"), + QString::null, 0, 1 )) { + delete(sub->_subcategory->findPreset(lPreset->prog)); + lPreset->linkSubcategory(sub->_subcategory); + } + else { + int ffp=sub->_subcategory->firstFreeProg(); + if(ffp==-1) + QMessageBox::warning + (this, tr("Download error"), + tr("There is no more free preset slot.")); + else lPreset->prog=ffp; + lPreset->linkSubcategory(sub->_subcategory); + } + } + else lPreset->linkSubcategory(sub->_subcategory); + //display preset + setSubcategory(sub->_subcategory); + } + else printf("unsupported *.dep file version %s\n", + version.toLatin1().data()); + } + else printf("DeicsOnze: %s not supported\n", + e.tagName().toLatin1().data()); + node = node.nextSibling(); + } + } +} + + +//----------------------------------------------------------- +// savePresetDialog +//----------------------------------------------------------- +void DeicsOnzeGui::savePresetDialog() { + QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); + if(pre) { + QString filename = + QFileDialog::getSaveFileName( + this, + tr("Save preset dialog"), + lastDir, + QString("*.dep")); + if(!filename.isEmpty()) { + QFileInfo fi(filename); + lastDir = fi.path(); + if(!filename.endsWith(".dep")) filename+=".dep"; + QFile f(filename); + f.open(QIODevice::WriteOnly); + AL::Xml* xml = new AL::Xml(&f); + + xml->header(); + pre->_preset->writePreset(xml, false); + f.close(); + } + } + else QMessageBox::warning(this, tr("No preset selected"), + tr("You must first select a preset.")); +} + +//----------------------------------------------------------- +// Preset and bank +//----------------------------------------------------------- +void DeicsOnzeGui::setPresetName(const QString& n) { + QTreeWidgetItem* pre = presetListView->currentItem(); + if(pre) { + //TODO : must be changed with SysEx + _deicsOnze->_preset[_currentChannel]->name = n.toAscii().data(); + pre->setText(1,n.toAscii().data()); + } +} +void DeicsOnzeGui::setSubcategoryName(const QString& s) { + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub) {//must be changed with SysEx + sub->_subcategory->_subcategoryName=s.toAscii().data(); + sub->setText(1, s.toAscii().data()); + } +} +void DeicsOnzeGui::setCategoryName(const QString& c) { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + if(cat) {//must be changed with SysEx + cat->_category->_categoryName=c.toAscii().data(); + cat->setText(1, c.toAscii().data()); + } +} +void DeicsOnzeGui::setHBank(int hb) { + QTreeCategory* cat = (QTreeCategory*) categoryListView->currentItem(); + if(cat) {//must be changed with SysEx + if(!_deicsOnze->_set->isFreeHBank(hb-1)) { + QTreeWidgetItem* qcat; + qcat=categoryListView->findItems(num3Digits(hb), Qt::MatchExactly).at(0); + ((QTreeCategory*)qcat)->_category->_hbank= + cat->_category->_hbank; + qcat->setText(0, num3Digits(((QTreeCategory*)qcat) + ->_category->_hbank+1)); + } + cat->_category->_hbank=hb-1; + cat->setText(0,num3Digits(hb)); + categoryListView->sortItems(0, Qt::AscendingOrder); + categoryListView->scrollToItem(cat); + } +} +void DeicsOnzeGui::setLBank(int lb) {//must be changed with SysEx + QTreeSubcategory* sub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub) { + Category* currentCat=sub->_subcategory->_category; + if(!currentCat->isFreeLBank(lb-1)) { + QTreeWidgetItem* qsub; + qsub=subcategoryListView->findItems(num3Digits(lb), + Qt::MatchExactly).at(0); + ((QTreeSubcategory*)qsub)->_subcategory->_lbank= + sub->_subcategory->_lbank; + qsub->setText(0, num3Digits(((QTreeSubcategory*)qsub) + ->_subcategory->_lbank+1)); + } + sub->_subcategory->_lbank=lb-1; + sub->setText(0,num3Digits(lb)); + subcategoryListView->sortItems(0, Qt::AscendingOrder); + subcategoryListView->scrollToItem(sub); + } +} +void DeicsOnzeGui::setProg(int pr) {//must be changed with SysEx + QTreePreset* pre = (QTreePreset*) presetListView->currentItem(); + if(pre) { + Subcategory* currentSub=pre->_preset->_subcategory; + if(!currentSub->isFreeProg(pr-1)) { + QTreeWidgetItem* qpre; + qpre=presetListView->findItems(num3Digits(pr), Qt::MatchExactly).at(0); + ((QTreePreset*)qpre)->_preset->prog=pre->_preset->prog; + qpre->setText(0, num3Digits(((QTreePreset*)qpre)->_preset->prog+1)); + } + pre->_preset->prog=pr-1; + pre->setText(0,num3Digits(pr)); + presetListView->sortItems(0,Qt::AscendingOrder); + presetListView->scrollToItem(pre); + } +} +//----------------------------------------------------------- +// load init set +//----------------------------------------------------------- +void DeicsOnzeGui::setIsInitSet(bool b) { + initSetPathLineEdit->setEnabled(b); + initSetBrowsePushButton->setEnabled(b); + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_ISINITSET; + message[1]=(unsigned char)b; + sendSysex(message, 2); +} +void DeicsOnzeGui::setInitSetPath(const QString& s) { + unsigned char* message = new unsigned char[1+MAXSTRLENGTHINITSETPATH]; + message[0]=SYSEX_INITSETPATH; + strncpy((char*)&message[1], s.toAscii().data(), MAXSTRLENGTHINITSETPATH); + sendSysex(message, 1+MAXSTRLENGTHINITSETPATH); +} +void DeicsOnzeGui::setBrowseInitSetPath() { + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Browse set dialog"), + lastDir, + QString("*.dei")); + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + updateInitSetPath(fileName); + setInitSetPath(fileName); + } +} +//----------------------------------------------------------- +// load background pix +//----------------------------------------------------------- +void DeicsOnzeGui::setIsBackgroundPix(bool b) { + if(b && !imagePathLineEdit->text().isEmpty()) applyBackgroundPix(); + else setBackgroundColor(reinterpret_cast<const QColor &>(*bColor)); + imagePathLineEdit->setEnabled(b); + imageBrowsePushButton->setEnabled(b); + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_ISBACKGROUNDPIX; + message[1]=(unsigned char)b; + sendSysex(message, 2); +} +void DeicsOnzeGui::setBackgroundPixPath(const QString& s) { + applyBackgroundPix(); + unsigned char* message = new unsigned char[1+MAXSTRLENGTHBACKGROUNDPIXPATH]; + message[0]=SYSEX_BACKGROUNDPIXPATH; + strncpy((char*)&message[1], s.toAscii().data(), + MAXSTRLENGTHBACKGROUNDPIXPATH); + sendSysex(message, 1+MAXSTRLENGTHBACKGROUNDPIXPATH); +} +void DeicsOnzeGui::setBrowseBackgroundPixPath() { + QString fileName = + QFileDialog::getOpenFileName( + this, + tr("Browse image dialog"), + lastDir, + QString("*.jpg *.png")); + if(!fileName.isEmpty()) { + QFileInfo fi(fileName); + lastDir = fi.path(); + updateBackgroundPixPath(fileName); + 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 +//----------------------------------------------------------- +void DeicsOnzeGui::setChannelVolKnob(double val) { + sendController(_currentChannel, CTRL_CHANNELVOLUME, + (int)(val*(double)MAXCHANNELVOLUME)); +} +void DeicsOnzeGui::setBrightnessKnob(double val) { + sendController(_currentChannel, CTRL_FINEBRIGHTNESS, + (int)(val*(double)MAXFINEBRIGHTNESS)); +} +void DeicsOnzeGui::setModulationKnob(double val) { + sendController(_currentChannel, CTRL_MODULATION, + (int)(val*(double)MAXMODULATION)); +} +void DeicsOnzeGui::setDetuneKnob(double val) { + //channelDetuneSlider->setValue((int)((2.0*val-1.0)*(double)MAXCHANNELDETUNE)); + setChannelDetune((int)((2.0*val-1.0)*(double)MAXCHANNELDETUNE)); +} +void DeicsOnzeGui::setAttackKnob(double val) { + sendController(_currentChannel, CTRL_ATTACK_TIME, + (int)(val*(double)MAXATTACK)); +} +void DeicsOnzeGui::setReleaseKnob(double val) { + sendController(_currentChannel, CTRL_RELEASE_TIME, (int)(val*(double)MAXRELEASE)); +} +//----------------------------------------------------------- +// Global control +//----------------------------------------------------------- +void DeicsOnzeGui::setChannelPan(double mv) { + sendController(_currentChannel, CTRL_CHANNELPAN, + (int)((mv-0.5)*2*(double)MAXCHANNELPAN)); +} +void DeicsOnzeGui::setMasterVolKnob(double mv) { + setMasterVol((int)(mv*(double)MAXMASTERVOLUME)); +} +void DeicsOnzeGui::setMasterVol(int mv) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_MASTERVOL; + message[1]=(unsigned char)mv; + sendSysex(message, 2); +} + +void DeicsOnzeGui::setFeedback(int f) {sendController(_currentChannel, CTRL_FEEDBACK, f);} + +void DeicsOnzeGui::setLfoWave(int lw) {sendController(_currentChannel, CTRL_WAVE, lw);} + +void DeicsOnzeGui::setLfoSpeed(int ls) {sendController(_currentChannel, CTRL_SPEED, ls);} + +void DeicsOnzeGui::setLfoDelay(int ld) {sendController(_currentChannel, CTRL_DELAY, ld);} + +void DeicsOnzeGui::setLfoPModDepth(int lpmd) { + sendController(_currentChannel, CTRL_PMODDEPTH, lpmd); +} + +void DeicsOnzeGui::setLfoPitchSens(int lps) { + sendController(_currentChannel, CTRL_PMODSENS, lps); +} + +void DeicsOnzeGui::setLfoAModDepth(int lamd) { + sendController(_currentChannel, CTRL_AMODDEPTH, lamd); +} +void DeicsOnzeGui::setLfoAmpSens(int las) {sendController(_currentChannel, CTRL_AMS, las);} + +void DeicsOnzeGui::setTranspose(int t) {sendController(_currentChannel, CTRL_TRANSPOSE, t);} + +void DeicsOnzeGui::setChannelDetune(int d) { + sendController(_currentChannel, CTRL_CHANNELDETUNE, d); + updateChannelDetuneKnob(d); +} + +void DeicsOnzeGui::setAlgorithm(int a) { + sendController(_currentChannel, CTRL_ALG, (int) (a==0?FIRST: + (a==1?SECOND: + (a==2?THIRD: + (a==3?FOURTH: + (a==4?FIFTH: + (a==5?SIXTH: + (a==6?SEVENTH:EIGHTH)))))))); +} + +void DeicsOnzeGui::setPitchBendRange(int pbr) { + sendController(_currentChannel, CTRL_PBENDRANGE, pbr); +} + +//--------------------------------------------------------------- +// Pitch Envelope +//--------------------------------------------------------------- +void DeicsOnzeGui::setPL1(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(val, pe->pl2, pe->pl3, + pe->pr1, pe->pr2, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PL1, val); +} +void DeicsOnzeGui::setPL2(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(pe->pl1, val, pe->pl3, + pe->pr1, pe->pr2, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PL2, val); +} +void DeicsOnzeGui::setPL3(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, val, + pe->pr1, pe->pr2, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PL3, val); +} +void DeicsOnzeGui::setPR1(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, + val, pe->pr2, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PR1, val); +} +void DeicsOnzeGui::setPR2(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, + pe->pr1, val, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PR2, val); +} +void DeicsOnzeGui::setPR3(int val) { + PitchEg* pe=&_deicsOnze->_preset[_currentChannel]->pitchEg; + pitchEnvelopeGraph->env2Points(pe->pl1, pe->pl2, pe->pl3, + pe->pr1, pe->pr2, val); + pitchEnvelopeGraph->updateEnv(); + sendController(_currentChannel, CTRL_PR3, val); +} +//--------------------------------------------------------------- +// Function +//--------------------------------------------------------------- +void DeicsOnzeGui::setFcVolume(int val){sendController(_currentChannel, CTRL_FCVOLUME, val);} +void DeicsOnzeGui::setFcPitch(int val){sendController(_currentChannel, CTRL_FCPITCH, val);} +void DeicsOnzeGui::setFcAmplitude(int val) { + sendController(_currentChannel, CTRL_FCAMPLITUDE, val); +} +void DeicsOnzeGui::setMwPitch(int val){sendController(_currentChannel, CTRL_MWPITCH, val);} +void DeicsOnzeGui::setMwAmplitude(int val) { + sendController(_currentChannel, CTRL_MWAMPLITUDE, val); +} +void DeicsOnzeGui::setBcPitch(int val){sendController(_currentChannel, CTRL_BCPITCH, val);} +void DeicsOnzeGui::setBcAmplitude(int val) { + sendController(_currentChannel, CTRL_BCAMPLITUDE, val); +} +void DeicsOnzeGui::setBcPitchBias(int val) { + sendController(_currentChannel, CTRL_BCPITCHBIAS, val);} +void DeicsOnzeGui::setBcEgBias(int val) { + sendController(_currentChannel, CTRL_BCEGBIAS, val); +} +void DeicsOnzeGui::setAtPitch(int val){sendController(_currentChannel, CTRL_ATPITCH, val);} +void DeicsOnzeGui::setAtAmplitude(int val) { + sendController(_currentChannel, CTRL_ATAMPLITUDE, val); +} +void DeicsOnzeGui::setAtPitchBias(int val) { + sendController(_currentChannel, CTRL_ATPITCHBIAS, val);} +void DeicsOnzeGui::setAtEgBias(int val) { + sendController(_currentChannel, CTRL_ATEGBIAS, val); +} +void DeicsOnzeGui::setReverbRate(int val) { + sendController(_currentChannel, CTRL_REVERBRATE, val); +} +void DeicsOnzeGui::setPolyMode(int val) { + sendController(_currentChannel, CTRL_POLYMODE, val); +} +void DeicsOnzeGui::setPortFingerFull(int val) { + sendController(_currentChannel, CTRL_PORTAMODE, val); +} +void DeicsOnzeGui::setPortaTime(int val) { + sendController(_currentChannel, CTRL_PORTATIME, val); +} + +//--------------------------------------------------------------- +// envelope controle +//--------------------------------------------------------------- +void DeicsOnzeGui::setAR1(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); + //printf("ar : %d, d1r : %d, d1l : %d, d2r : %d, rr : %d\n", + // val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[0]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[0]->updateEnv(); + sendController(_currentChannel, CTRL_AR, val); +} +void DeicsOnzeGui::setD1R1(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); + envelopeGraph[0]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[0]->updateEnv(); + sendController(_currentChannel, CTRL_D1R, val); +} +void DeicsOnzeGui::setD1L1(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); + envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); + envelopeGraph[0]->updateEnv(); + sendController(_currentChannel, CTRL_D1L, val); +} +void DeicsOnzeGui::setD2R1(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); + envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); + envelopeGraph[0]->updateEnv(); + sendController(_currentChannel, CTRL_D2R, val); +} +void DeicsOnzeGui::setRR1(int val){ + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[0]); + envelopeGraph[0]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); + envelopeGraph[0]->updateEnv(); + sendController(_currentChannel, CTRL_RR, val); +} +void DeicsOnzeGui::setAR2(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); + envelopeGraph[1]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[1]->updateEnv(); + sendController(_currentChannel, CTRL_AR+DECAPAR1, val); +} +void DeicsOnzeGui::setD1R2(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); + envelopeGraph[1]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[1]->updateEnv(); + sendController(_currentChannel, CTRL_D1R+DECAPAR1, val); +} +void DeicsOnzeGui::setD1L2(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); + envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); + envelopeGraph[1]->updateEnv(); + sendController(_currentChannel, CTRL_D1L+DECAPAR1, val); +} +void DeicsOnzeGui::setD2R2(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); + envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); + envelopeGraph[1]->updateEnv(); + sendController(_currentChannel, CTRL_D2R+DECAPAR1, val); +} +void DeicsOnzeGui::setRR2(int val){ + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[1]); + envelopeGraph[1]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); + envelopeGraph[1]->updateEnv(); + sendController(_currentChannel, CTRL_RR+DECAPAR1, val); +} +void DeicsOnzeGui::setAR3(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); + envelopeGraph[2]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[2]->updateEnv(); + sendController(_currentChannel, CTRL_AR+2*DECAPAR1, val); +} +void DeicsOnzeGui::setD1R3(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); + envelopeGraph[2]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[2]->updateEnv(); + sendController(_currentChannel, CTRL_D1R+2*DECAPAR1, val); +} +void DeicsOnzeGui::setD1L3(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); + envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); + envelopeGraph[2]->updateEnv(); + sendController(_currentChannel, CTRL_D1L+2*DECAPAR1, val); +} +void DeicsOnzeGui::setD2R3(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); + envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); + envelopeGraph[2]->updateEnv(); + sendController(_currentChannel, CTRL_D2R+2*DECAPAR1, val); +} +void DeicsOnzeGui::setRR3(int val){ + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[2]); + envelopeGraph[2]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); + envelopeGraph[2]->updateEnv(); + sendController(_currentChannel, CTRL_RR+2*DECAPAR1, val); +} +void DeicsOnzeGui::setAR4(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); + envelopeGraph[3]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[3]->updateEnv(); + sendController(_currentChannel, CTRL_AR+3*DECAPAR1, val); +} +void DeicsOnzeGui::setD1R4(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); + envelopeGraph[3]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[3]->updateEnv(); + sendController(_currentChannel, CTRL_D1R+3*DECAPAR1, val); +} +void DeicsOnzeGui::setD1L4(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); + envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); + envelopeGraph[3]->updateEnv(); + sendController(_currentChannel, CTRL_D1L+3*DECAPAR1, val); +} +void DeicsOnzeGui::setD2R4(int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); + envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); + envelopeGraph[3]->updateEnv(); + sendController(_currentChannel, CTRL_D2R+3*DECAPAR1, val); +} +void DeicsOnzeGui::setRR4(int val){ + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[3]); + envelopeGraph[3]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); + envelopeGraph[3]->updateEnv(); + sendController(_currentChannel, CTRL_RR+3*DECAPAR1, val); +} + +//-------------------------------------------------------------- +// set Scaling +//-------------------------------------------------------------- +void DeicsOnzeGui::setLS1(int val){sendController(_currentChannel, CTRL_LS, val);} +void DeicsOnzeGui::setRS1(int val){sendController(_currentChannel, CTRL_RS, val);} +void DeicsOnzeGui::setLS2(int val){sendController(_currentChannel, CTRL_LS+DECAPAR1, val);} +void DeicsOnzeGui::setRS2(int val){sendController(_currentChannel, CTRL_RS+DECAPAR1, val);} +void DeicsOnzeGui::setLS3(int val){sendController(_currentChannel, CTRL_LS+2*DECAPAR1, val);} +void DeicsOnzeGui::setRS3(int val){sendController(_currentChannel, CTRL_RS+2*DECAPAR1, val);} +void DeicsOnzeGui::setLS4(int val){sendController(_currentChannel, CTRL_LS+3*DECAPAR1, val);} +void DeicsOnzeGui::setRS4(int val){sendController(_currentChannel, CTRL_RS+3*DECAPAR1, val);} + +//-------------------------------------------------------------- +// set Volume +//-------------------------------------------------------------- +void DeicsOnzeGui::setVol1(int val){sendController(_currentChannel, CTRL_OUT, val);} +void DeicsOnzeGui::setVol2(int val){sendController(_currentChannel, CTRL_OUT+DECAPAR1, val);} +void DeicsOnzeGui::setVol3(int val){sendController(_currentChannel,CTRL_OUT+2*DECAPAR1,val);} +void DeicsOnzeGui::setVol4(int val){sendController(_currentChannel,CTRL_OUT+3*DECAPAR1,val);} + +//-------------------------------------------------------------- +// set Ratio and Frequency +//-------------------------------------------------------------- +void DeicsOnzeGui::setCoarseRatio1(int val) { + sendController(_currentChannel, CTRL_RATIO, val*100+FineRatio1SpinBox->value()); +} +void DeicsOnzeGui::setFineRatio1(int val) { + sendController(_currentChannel, CTRL_RATIO, val+CoarseRatio1SpinBox->value()*100); +} +void DeicsOnzeGui::setFreq1(int val) { + sendController(_currentChannel,CTRL_FIXRANGE,val*100);} +void DeicsOnzeGui::setFix1(bool f) { + sendController(_currentChannel, CTRL_FIX, (f==false?0:1));} +void DeicsOnzeGui::setCoarseRatio2(int val) { + sendController(_currentChannel, CTRL_RATIO+DECAPAR1, val*100+FineRatio2SpinBox->value()); +} +void DeicsOnzeGui::setFineRatio2(int val) { + sendController(_currentChannel,CTRL_RATIO+DECAPAR1,val+CoarseRatio2SpinBox->value()*100); +} +void DeicsOnzeGui::setFreq2(int val) { + sendController(_currentChannel,CTRL_FIXRANGE+DECAPAR2,val*100);} +void DeicsOnzeGui::setFix2(bool f) { + sendController(_currentChannel, CTRL_FIX+DECAPAR2, (f==false?0:1));} +void DeicsOnzeGui::setCoarseRatio3(int val) { + sendController(_currentChannel,CTRL_RATIO+2*DECAPAR1,val*100+FineRatio3SpinBox->value()); +} +void DeicsOnzeGui::setFineRatio3(int val) { + sendController(_currentChannel,CTRL_RATIO+2*DECAPAR1, + val+CoarseRatio3SpinBox->value()*100); +} +void DeicsOnzeGui::setFreq3(int val) { + sendController(_currentChannel,CTRL_FIXRANGE+2*DECAPAR2,val*100);} +void DeicsOnzeGui::setFix3(bool f) { + sendController(_currentChannel, CTRL_FIX+2*DECAPAR2, (f==false?0:1));} +void DeicsOnzeGui::setCoarseRatio4(int val) { + sendController(_currentChannel,CTRL_RATIO+3*DECAPAR1,val*100+FineRatio4SpinBox->value()); +} +void DeicsOnzeGui::setFineRatio4(int val) { + sendController(_currentChannel,CTRL_RATIO+3*DECAPAR1, + val+CoarseRatio4SpinBox->value()*100); +} +void DeicsOnzeGui::setFreq4(int val) { + sendController(_currentChannel,CTRL_FIXRANGE+3*DECAPAR2,val*100);} +void DeicsOnzeGui::setFix4(bool f) { + sendController(_currentChannel, CTRL_FIX+3*DECAPAR2, (f==false?0:1));} + +//-------------------------------------------------------------- +// set Sensitivity +//-------------------------------------------------------------- +void DeicsOnzeGui::setAME1(bool val) {sendController(_currentChannel, CTRL_AME, val);} +void DeicsOnzeGui::setEBS1(int val) {sendController(_currentChannel, CTRL_EBS, val);} +void DeicsOnzeGui::setKVS1(int val) {sendController(_currentChannel, CTRL_KVS, val);} +void DeicsOnzeGui::setAME2(bool val) {sendController(_currentChannel,CTRL_AME+DECAPAR1,val);} +void DeicsOnzeGui::setEBS2(int val) {sendController(_currentChannel,CTRL_EBS+DECAPAR1,val);} +void DeicsOnzeGui::setKVS2(int val) {sendController(_currentChannel,CTRL_KVS+DECAPAR1,val);} +void DeicsOnzeGui::setAME3(bool val) { + sendController(_currentChannel,CTRL_AME+2*DECAPAR1,val);} +void DeicsOnzeGui::setEBS3(int val) { + sendController(_currentChannel, CTRL_EBS+2*DECAPAR1, val);} +void DeicsOnzeGui::setKVS3(int val) { + sendController(_currentChannel, CTRL_KVS+2*DECAPAR1, val);} +void DeicsOnzeGui::setAME4(bool val) { + sendController(_currentChannel, CTRL_AME+3*DECAPAR1, val);} +void DeicsOnzeGui::setEBS4(int val) { + sendController(_currentChannel, CTRL_EBS+3*DECAPAR1, val);} +void DeicsOnzeGui::setKVS4(int val) { + sendController(_currentChannel, CTRL_KVS+3*DECAPAR1, val);} + +//-------------------------------------------------------------- +// set detune +//-------------------------------------------------------------- +void DeicsOnzeGui::setDET1(int val){sendController(_currentChannel, CTRL_DET, val);} +void DeicsOnzeGui::setDET2(int val){sendController(_currentChannel, CTRL_DET+DECAPAR1, val);} +void DeicsOnzeGui::setDET3(int val){sendController(_currentChannel,CTRL_DET+2*DECAPAR1,val);} +void DeicsOnzeGui::setDET4(int val){sendController(_currentChannel,CTRL_DET+3*DECAPAR1,val);} + +//-------------------------------------------------------------- +// set WaveForm +//-------------------------------------------------------------- +void DeicsOnzeGui::setWaveForm1(int w) { + sendController(_currentChannel, CTRL_OSW, w); +} +void DeicsOnzeGui::setWaveForm2(int w) { + sendController(_currentChannel, CTRL_OSW+DECAPAR2, w); +} +void DeicsOnzeGui::setWaveForm3(int w) { + sendController(_currentChannel, CTRL_OSW+2*DECAPAR2, w); +} +void DeicsOnzeGui::setWaveForm4(int w) { + sendController(_currentChannel, CTRL_OSW+3*DECAPAR2, w); +} +//-------------------------------------------------------------- +// set delay +//-------------------------------------------------------------- +void DeicsOnzeGui::setActivDelay(bool a) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_DELAYACTIV; + message[1]=(unsigned char)a; + sendSysex(message, 2); +} +void DeicsOnzeGui::setDelayReturn(int r) { + unsigned char* message = new unsigned char[2]; + message[0]=SYSEX_DELAYRETURN; + message[1]=(unsigned char)r; + sendSysex(message, 2); +} +void DeicsOnzeGui::setChannelDelay(int d) { + sendController(_currentChannel, CTRL_VARIATION_SEND, (unsigned char)d); +} +//void DeicsOnzeGui::setDelayTime(int t) { +// unsigned char* message = new unsigned char[2]; +// message[0]=SYSEX_DELAYTIME; +// message[1]=(unsigned char)t; +// sendSysex(message, 2); +// updateDelayTime(t); +//} +void DeicsOnzeGui::setDelayBPM(double t) { + //int it = (int)(((t - MINDELAYTIME) / (MAXDELAYTIME - MINDELAYTIME))*255.0); + unsigned char* message = new unsigned char[sizeof(float)+1]; + message[0]=SYSEX_DELAYBPM; + float f = (float)t; + memcpy(&message[1], &f, sizeof(float)); + message[1]=(unsigned char)f; + sendSysex(message, sizeof(float)+1); + //updateDelayTime(it); +} +void DeicsOnzeGui::setDelayBeatRatio(double t) { + unsigned char* message = new unsigned char[sizeof(float)+1]; + message[0]=SYSEX_DELAYBEATRATIO; + float f = (float)t; + memcpy(&message[1], &f, sizeof(float)); + message[1]=(unsigned char)f; + sendSysex(message, sizeof(float)+1); +} +//void DeicsOnzeGui::setDelayFeedback(int f) { +// unsigned char* message = new unsigned char[2]; +// message[0]=SYSEX_DELAYFEEDBACK; +// message[1]=(unsigned char)f; +// sendSysex(message, 2); +// updateDelayFeedback(f); +//} +void DeicsOnzeGui::setDelayFeedback(double t) { + //int idf = (int)(f*128.0+128.0); + unsigned char* message = new unsigned char[sizeof(float)+1]; + message[0]=SYSEX_DELAYFEEDBACK; + float f = (float)t; + memcpy(&message[1], &f, sizeof(float)); + sendSysex(message, sizeof(float)+1); + //updateDelayFeedback(idf); +} +//void DeicsOnzeGui::setDelayPanLFOFreq(int pf) { +// unsigned char* message = new unsigned char[2]; +// message[0]=SYSEX_DELAYLFOFREQ; +// message[1]=(unsigned char)pf; +// sendSysex(message, 2); +// updateDelayPanLFOFreq(pf); +//} +void DeicsOnzeGui::setDelayPanLFOFreq(double pf) { + //int ipf = (int)(((pf - MINFREQ) / (MAXFREQ - MINFREQ))*255.0); + unsigned char* message = new unsigned char[sizeof(float)+1]; + message[0]=SYSEX_DELAYLFOFREQ; + float f = (float)pf; + memcpy(&message[1], &f, sizeof(float)); + sendSysex(message, sizeof(float)+1); + //updateDelayPanLFOFreq(ipf); +} +//void DeicsOnzeGui::setDelayPanLFODepth(int pd) { +// unsigned char* message = new unsigned char[2]; +// message[0]=SYSEX_DELAYLFODEPTH; +// message[1]=(unsigned char)pd; +// sendSysex(message, 2); +// updateDelayPanLFODepth(pd); +//} +void DeicsOnzeGui::setDelayPanLFODepth(double pd) { + //int ipd = (int)(pd*255.0); + unsigned char* message = new unsigned char[sizeof(float)+1]; + message[0]=SYSEX_DELAYLFODEPTH; + float f = (float)pd; + memcpy(&message[1], &f, sizeof(float)); + sendSysex(message, sizeof(float)+1); + //updateDelayPanLFODepth(ipd); +} + + +//-------------------------------------------------------------- +// setSet +// Display the set, that is the category list +//-------------------------------------------------------------- +void DeicsOnzeGui::setSet() { + categoryListView->clear(); + hbankSpinBox->setEnabled(false); + categoryLineEdit->setEnabled(false); + for(std::vector<Category*>::iterator + i=_deicsOnze->_set->_categoryVector.begin(); + i!=_deicsOnze->_set->_categoryVector.end(); i++) + (void) new QTreeCategory + (categoryListView, num3Digits((*i)->_hbank+1), + (*i)->_categoryName.c_str(), *i); + categoryListView->resizeColumnToContents(0); + categoryListView->sortItems(0,Qt::AscendingOrder); +} + +//-------------------------------------------------------------- +// setCategory +//-------------------------------------------------------------- +void DeicsOnzeGui::setCategory(Category* cat) { + subcategoryListView->clear(); + lbankSpinBox->setEnabled(false); + subcategoryLineEdit->setEnabled(false); + for(std::vector<Subcategory*>::iterator i=cat->_subcategoryVector.begin(); + i!=cat->_subcategoryVector.end(); i++) + (void) new QTreeSubcategory(subcategoryListView, + num3Digits((*i)->_lbank+1), + (*i)->_subcategoryName.c_str(),*i); + subcategoryListView->resizeColumnToContents(0); + subcategoryListView->sortItems(0,Qt::AscendingOrder); +} +void DeicsOnzeGui::setCategory(QTreeWidgetItem* cat) { + QTreeCategory* ccat = (QTreeCategory*) categoryListView->currentItem(); + if(cat) { + categoryLineEdit->setEnabled(true); + hbankSpinBox->setEnabled(true); + categoryLineEdit + ->setText(((QTreeCategory*)cat)->_category->_categoryName.c_str()); + hbankSpinBox->setValue(((QTreeCategory*)cat)->_category->_hbank+1); + ccat=(QTreeCategory*)cat; + setCategory(ccat->_category); + } +} + +//-------------------------------------------------------------- +// setSubcategory +//-------------------------------------------------------------- +void DeicsOnzeGui::setSubcategory(Subcategory* sub) { + presetListView->clear(); + progSpinBox->setEnabled(false); + presetLineEdit->setEnabled(false); + for(std::vector<Preset*>::iterator i=sub->_presetVector.begin(); + i!=sub->_presetVector.end(); i++) + (void) new QTreePreset(presetListView, + num3Digits((*i)->prog+1), + (*i)->name.c_str(),*i); + presetListView->resizeColumnToContents(0); + presetListView->sortItems(0,Qt::AscendingOrder); +} +void DeicsOnzeGui::setSubcategory(QTreeWidgetItem* sub) { + QTreeSubcategory* csub = + (QTreeSubcategory*) subcategoryListView->currentItem(); + if(sub) { + subcategoryLineEdit->setEnabled(true); + lbankSpinBox->setEnabled(true); + subcategoryLineEdit->setText(((QTreeSubcategory*)sub) + ->_subcategory->_subcategoryName.c_str()); + lbankSpinBox->setValue(((QTreeSubcategory*)sub) + ->_subcategory->_lbank+1); + csub=(QTreeSubcategory*)sub; + setSubcategory(csub->_subcategory); + } +} +//-------------------------------------------------------------- +// setPreset +//-------------------------------------------------------------- +void DeicsOnzeGui::setPreset(QTreeWidgetItem* pre) { + if(pre) { + QTreePreset* cpre=(QTreePreset*)pre; + updatePresetName(cpre->_preset->name.c_str(), true); + updateProg(cpre->_preset->prog, true); + int prog = cpre->_preset->prog; + int lbank = cpre->_preset->_subcategory->_lbank; + int hbank = cpre->_preset->_subcategory->_category->_hbank; + setEnabledPreset(true); + updatePreset(cpre->_preset); + sendController(_currentChannel, CTRL_PROGRAM, (hbank<<16)+(lbank<<8)+prog); + } +} +//-------------------------------------------------------------- +// update the gui +//-------------------------------------------------------------- +void DeicsOnzeGui::setEnabledPreset(bool b) { + if(_enabledPreset!=b) { + FeedbackGroupBox->setEnabled(b); + LFOGroupBox->setEnabled(b); + pitchEnvGroupBox->setEnabled(b); + ModulationMatrixGroupBox->setEnabled(b); + Op1Tab->setEnabled(b); + Op2Tab->setEnabled(b); + Op3Tab->setEnabled(b); + Op4Tab->setEnabled(b); + FunctionsTab->setEnabled(b); + chorusTab->setEnabled(b); + reverbTab->setEnabled(b); + + _enabledPreset=b; + } +} +void DeicsOnzeGui::updateChannelEnable(bool e) { + updateChannelCheckBox(e); + updateEnabledChannel(e); +} +void DeicsOnzeGui::updateEnabledChannel(bool e) { + numberVoicesLabel->setEnabled(e); + nbrVoicesSpinBox->setEnabled(e); + channelCtrlGroupBox->setEnabled(e); + deicsOnzeTabWidget->setEnabled(e); +} +void DeicsOnzeGui::updateNbrVoices(int val) { + nbrVoicesSpinBox->blockSignals(true); + nbrVoicesSpinBox->setValue(val); + nbrVoicesSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateMasterVolume(int val) { + double d = (double)val/(double)MAXMASTERVOLUME; + //printf("D = %d, %f\n", val, d); + masterVolKnob->blockSignals(true); + masterVolKnob->setValue(d); + masterVolKnob->blockSignals(false); +} +//void DeicsOnzeGui::updateMidiInCh(int val) { + //MidiInChComboBox->blockSignals(true); + //MidiInChComboBox->setCurrentIndex(val); + //MidiInChComboBox->blockSignals(false); +//} +void DeicsOnzeGui::updateQuality(int val) { + qualityComboBox->blockSignals(true); + qualityComboBox->setCurrentIndex(val); + qualityComboBox->blockSignals(false); +} +void DeicsOnzeGui::updateFilter(bool f) { + filterCheckBox->blockSignals(true); + filterCheckBox->setChecked(f); + filterCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateFontSize(int val) { + fontSizeSpinBox->blockSignals(true); + 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::updateDelayActiv(bool a) { + delayActivCheckBox->blockSignals(true); + delayActivCheckBox->setChecked(a); + delayActivCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateChannelDelay(int r) { + chDelaySlider->blockSignals(true); + chDelaySlider->setValue(r); + chDelaySlider->blockSignals(false); + chDelaySpinBox->blockSignals(true); + chDelaySpinBox->setValue(r); + chDelaySpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateDelayReturn(int r) { + delayReturnSlider->blockSignals(true); + delayReturnSlider->setValue(r); + delayReturnSlider->blockSignals(false); +} +void DeicsOnzeGui::updateDelayPanLFOFreq(float plf) { + delayPanLFOFreqKnob->blockSignals(true); + delayPanLFOFreqKnob->setValue((double)plf); + delayPanLFOFreqKnob->blockSignals(false); + delayPanLFOFreqFloatentry->blockSignals(true); + delayPanLFOFreqFloatentry->setValue((double)plf); + delayPanLFOFreqFloatentry->blockSignals(false); +} +void DeicsOnzeGui::updateDelayBPM(float dt) { + delayBPMKnob->blockSignals(true); + delayBPMKnob->setValue((double)dt); + delayBPMKnob->blockSignals(false); + delayBPMFloatentry->blockSignals(true); + delayBPMFloatentry->setValue((double)dt); + delayBPMFloatentry->blockSignals(false); +} +void DeicsOnzeGui::updateDelayBeatRatio(float dt) { + delayBeatRatioKnob->blockSignals(true); + delayBeatRatioKnob->setValue((double)dt); + delayBeatRatioKnob->blockSignals(false); + delayBeatRatioFloatentry->blockSignals(true); + delayBeatRatioFloatentry->setValue((double)dt); + delayBeatRatioFloatentry->blockSignals(false); +} +void DeicsOnzeGui::updateDelayFeedback(float df) { + delayFeedbackKnob->blockSignals(true); + delayFeedbackKnob->setValue((double)df); + delayFeedbackKnob->blockSignals(false); + delayFeedbackFloatentry->blockSignals(true); + delayFeedbackFloatentry->setValue((double)df); + delayFeedbackFloatentry->blockSignals(false); +} +void DeicsOnzeGui::updateDelayPanLFODepth(float dpd) { + delayPanLFODepthKnob->blockSignals(true); + delayPanLFODepthKnob->setValue((double)dpd); + delayPanLFODepthKnob->blockSignals(false); + delayPanLFODepthFloatentry->blockSignals(true); + delayPanLFODepthFloatentry->setValue((double)dpd); + delayPanLFODepthFloatentry->blockSignals(false); +} + +void DeicsOnzeGui::applyFontSize(int fs) { + QFont f = font(); + f.setPointSize(fs); + setFont(f); +} +void DeicsOnzeGui::updateSaveConfig(bool usc) { + saveConfigCheckBox->blockSignals(true); + saveConfigCheckBox->setChecked(usc); + saveConfigCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateSaveOnlyUsed(bool usou) { + hugeSaveRadioButton->blockSignals(true); + hugeSaveRadioButton->setChecked(!usou); + hugeSaveRadioButton->blockSignals(false); + minSaveRadioButton->blockSignals(true); + minSaveRadioButton->setChecked(usou); + minSaveRadioButton->blockSignals(false); +} +//Pitch Envelope +void DeicsOnzeGui::updatePL1(int val) { + PL1SpinBox->blockSignals(true); + PL1SpinBox->setValue(val); + PL1SpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePL2(int val) { + PL2SpinBox->blockSignals(true); + PL2SpinBox->setValue(val); + PL2SpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePL3(int val) { + PL3SpinBox->blockSignals(true); + PL3SpinBox->setValue(val); + PL3SpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePR1(int val) { + PR1SpinBox->blockSignals(true); + PR1SpinBox->setValue(val); + PR1SpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePR2(int val) { + PR2SpinBox->blockSignals(true); + PR2SpinBox->setValue(val); + PR2SpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePR3(int val) { + PR3SpinBox->blockSignals(true); + PR3SpinBox->setValue(val); + PR3SpinBox->blockSignals(false); +} +//Function +void DeicsOnzeGui::updateFcVolume(int val) { + fcVolumeSpinBox->blockSignals(true); + fcVolumeSpinBox->setValue(val); + fcVolumeSpinBox->blockSignals(false); + fcVolumeSlider->blockSignals(true); + fcVolumeSlider->setValue(val); + fcVolumeSlider->blockSignals(false); +} +void DeicsOnzeGui::updateFcPitch(int val) { + fcPitchSpinBox->blockSignals(true); + fcPitchSpinBox->setValue(val); + fcPitchSpinBox->blockSignals(false); + fcPitchSlider->blockSignals(true); + fcPitchSlider->setValue(val); + fcPitchSlider->blockSignals(false); +} +void DeicsOnzeGui::updateFcAmplitude(int val) { + fcAmplitudeSpinBox->blockSignals(true); + fcAmplitudeSpinBox->setValue(val); + fcAmplitudeSpinBox->blockSignals(false); + fcAmplitudeSlider->blockSignals(true); + fcAmplitudeSlider->setValue(val); + fcAmplitudeSlider->blockSignals(false); +} +void DeicsOnzeGui::updateMwPitch(int val) { + mwPitchSpinBox->blockSignals(true); + mwPitchSpinBox->setValue(val); + mwPitchSpinBox->blockSignals(false); + mwPitchSlider->blockSignals(true); + mwPitchSlider->setValue(val); + mwPitchSlider->blockSignals(false); +} +void DeicsOnzeGui::updateMwAmplitude(int val) { + mwAmplitudeSpinBox->blockSignals(true); + mwAmplitudeSpinBox->setValue(val); + mwAmplitudeSpinBox->blockSignals(false); + mwAmplitudeSlider->blockSignals(true); + mwAmplitudeSlider->setValue(val); + mwAmplitudeSlider->blockSignals(false); +} +void DeicsOnzeGui::updateBcPitch(int val) { + bcPitchSpinBox->blockSignals(true); + bcPitchSpinBox->setValue(val); + bcPitchSpinBox->blockSignals(false); + bcPitchSlider->blockSignals(true); + bcPitchSlider->setValue(val); + bcPitchSlider->blockSignals(false); +} +void DeicsOnzeGui::updateBcAmplitude(int val) { + bcAmplitudeSpinBox->blockSignals(true); + bcAmplitudeSpinBox->setValue(val); + bcAmplitudeSpinBox->blockSignals(false); + bcAmplitudeSlider->blockSignals(true); + bcAmplitudeSlider->setValue(val); + bcAmplitudeSlider->blockSignals(false); +} +void DeicsOnzeGui::updateBcPitchBias(int val) { + bcPitchBiasSpinBox->blockSignals(true); + bcPitchBiasSpinBox->setValue(val); + bcPitchBiasSpinBox->blockSignals(false); + bcPitchBiasSlider->blockSignals(true); + bcPitchBiasSlider->setValue(val); + bcPitchBiasSlider->blockSignals(false); +} +void DeicsOnzeGui::updateBcEgBias(int val) { + bcEgBiasSpinBox->blockSignals(true); + bcEgBiasSpinBox->setValue(val); + bcEgBiasSpinBox->blockSignals(false); + bcEgBiasSlider->blockSignals(true); + bcEgBiasSlider->setValue(val); + bcEgBiasSlider->blockSignals(false); +} +void DeicsOnzeGui::updateAtPitch(int val) { + atPitchSpinBox->blockSignals(true); + atPitchSpinBox->setValue(val); + atPitchSpinBox->blockSignals(false); + atPitchSlider->blockSignals(true); + atPitchSlider->setValue(val); + atPitchSlider->blockSignals(false); +} +void DeicsOnzeGui::updateAtAmplitude(int val) { + atAmplitudeSpinBox->blockSignals(true); + atAmplitudeSpinBox->setValue(val); + atAmplitudeSpinBox->blockSignals(false); + atAmplitudeSlider->blockSignals(true); + atAmplitudeSlider->setValue(val); + atAmplitudeSlider->blockSignals(false); +} +void DeicsOnzeGui::updateAtPitchBias(int val) { + atPitchBiasSpinBox->blockSignals(true); + atPitchBiasSpinBox->setValue(val); + atPitchBiasSpinBox->blockSignals(false); + atPitchBiasSlider->blockSignals(true); + atPitchBiasSlider->setValue(val); + atPitchBiasSlider->blockSignals(false); +} +void DeicsOnzeGui::updateAtEgBias(int val) { + atEgBiasSpinBox->blockSignals(true); + atEgBiasSpinBox->setValue(val); + atEgBiasSpinBox->blockSignals(false); + atEgBiasSlider->blockSignals(true); + atEgBiasSlider->setValue(val); + atEgBiasSlider->blockSignals(false); +} +//void DeicsOnzeGui::updateReverbRate(int val) { + //reverbSpinBox->blockSignals(true); + //reverbSpinBox->setValue(val); + //reverbSpinBox->blockSignals(false); + //reverbSlider->blockSignals(true); + //reverbSlider->setValue(val); + //reverbSlider->blockSignals(false); +//} +//Envelope +void DeicsOnzeGui::updateAR(int op, int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); + envelopeGraph[op]->env2Points(val, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[op]->updateEnv(); + switch(op) { + case 0: + AR1SpinBox->blockSignals(true); + AR1SpinBox->setValue(val); + AR1SpinBox->blockSignals(false); + break; + case 1: + AR2SpinBox->blockSignals(true); + AR2SpinBox->setValue(val); + AR2SpinBox->blockSignals(false); + break; + case 2: + AR3SpinBox->blockSignals(true); + AR3SpinBox->setValue(val); + AR3SpinBox->blockSignals(false); + break; + case 3: + AR4SpinBox->blockSignals(true); + AR4SpinBox->setValue(val); + AR4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateAR : Error switch\n"); + } +} + +void DeicsOnzeGui::updateD1R(int op, int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); + envelopeGraph[op]->env2Points(_eg->ar, val, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[op]->updateEnv(); + switch(op) { + case 0: + D1R1SpinBox->blockSignals(true); + D1R1SpinBox->setValue(val); + D1R1SpinBox->blockSignals(false); + break; + case 1: + D1R2SpinBox->blockSignals(true); + D1R2SpinBox->setValue(val); + D1R2SpinBox->blockSignals(false); + break; + case 2: + D1R3SpinBox->blockSignals(true); + D1R3SpinBox->setValue(val); + D1R3SpinBox->blockSignals(false); + break; + case 3: + D1R4SpinBox->blockSignals(true); + D1R4SpinBox->setValue(val); + D1R4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateD1R : Error switch\n"); + } +} +void DeicsOnzeGui::updateD2R(int op, int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); + envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, val, _eg->rr); + envelopeGraph[op]->updateEnv(); + switch(op) { + case 0: + D2R1SpinBox->blockSignals(true); + D2R1SpinBox->setValue(val); + D2R1SpinBox->blockSignals(false); + break; + case 1: + D2R2SpinBox->blockSignals(true); + D2R2SpinBox->setValue(val); + D2R2SpinBox->blockSignals(false); + break; + case 2: + D2R3SpinBox->blockSignals(true); + D2R3SpinBox->setValue(val); + D2R3SpinBox->blockSignals(false); + break; + case 3: + D2R4SpinBox->blockSignals(true); + D2R4SpinBox->setValue(val); + D2R4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateD2R : Error switch\n"); + } +} +void DeicsOnzeGui::updateRR(int op, int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); + envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, val); + envelopeGraph[op]->updateEnv(); + switch(op) { + case 0: + RR1SpinBox->blockSignals(true); + RR1SpinBox->setValue(val); + RR1SpinBox->blockSignals(false); + break; + case 1: + RR2SpinBox->blockSignals(true); + RR2SpinBox->setValue(val); + RR2SpinBox->blockSignals(false); + break; + case 2: + RR3SpinBox->blockSignals(true); + RR3SpinBox->setValue(val); + RR3SpinBox->blockSignals(false); + break; + case 3: + RR4SpinBox->blockSignals(true); + RR4SpinBox->setValue(val); + RR4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateRR : Error switch\n"); + } +} +void DeicsOnzeGui::updateD1L(int op, int val) { + Eg* _eg=&(_deicsOnze->_preset[_currentChannel]->eg[op]); + envelopeGraph[op]->env2Points(_eg->ar, _eg->d1r, val, _eg->d2r, _eg->rr); + envelopeGraph[op]->updateEnv(); + switch(op) { + case 0: + D1L1SpinBox->blockSignals(true); + D1L1SpinBox->setValue(val); + D1L1SpinBox->blockSignals(false); + break; + case 1: + D1L2SpinBox->blockSignals(true); + D1L2SpinBox->setValue(val); + D1L2SpinBox->blockSignals(false); + break; + case 2: + D1L3SpinBox->blockSignals(true); + D1L3SpinBox->setValue(val); + D1L3SpinBox->blockSignals(false); + break; + case 3: + D1L4SpinBox->blockSignals(true); + D1L4SpinBox->setValue(val); + D1L4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateD1L : Error switch\n"); + } +} +void DeicsOnzeGui::updateLS(int op, int val) { + switch(op) { + case 0: + LS1Slider->blockSignals(true); + LS1Slider->setValue(val); + LS1Slider->blockSignals(false); + LS1SpinBox->blockSignals(true); + LS1SpinBox->setValue(val); + LS1SpinBox->blockSignals(false); + break; + case 1: + LS2Slider->blockSignals(true); + LS2Slider->setValue(val); + LS2Slider->blockSignals(false); + LS2SpinBox->blockSignals(true); + LS2SpinBox->setValue(val); + LS2SpinBox->blockSignals(false); + break; + case 2: + LS3Slider->blockSignals(true); + LS3Slider->setValue(val); + LS3Slider->blockSignals(false); + LS3SpinBox->blockSignals(true); + LS3SpinBox->setValue(val); + LS3SpinBox->blockSignals(false); + break; + case 3: + LS4Slider->blockSignals(true); + LS4Slider->setValue(val); + LS4Slider->blockSignals(false); + LS4SpinBox->blockSignals(true); + LS4SpinBox->setValue(val); + LS4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateLS : Error switch\n"); + } +} +void DeicsOnzeGui::updateRS(int op, int val) { + switch(op) { + case 0: + RS1Slider->blockSignals(true); + RS1Slider->setValue(val); + RS1Slider->blockSignals(false); + RS1SpinBox->blockSignals(true); + RS1SpinBox->setValue(val); + RS1SpinBox->blockSignals(false); + break; + case 1: + RS2Slider->blockSignals(true); + RS2Slider->setValue(val); + RS2Slider->blockSignals(false); + RS2SpinBox->blockSignals(true); + RS2SpinBox->setValue(val); + RS2SpinBox->blockSignals(false); + break; + case 2: + RS3Slider->blockSignals(true); + RS3Slider->setValue(val); + RS3Slider->blockSignals(false); + RS3SpinBox->blockSignals(true); + RS3SpinBox->setValue(val); + RS3SpinBox->blockSignals(false); + break; + case 3: + RS4Slider->blockSignals(true); + RS4Slider->setValue(val); + RS4Slider->blockSignals(false); + RS4SpinBox->blockSignals(true); + RS4SpinBox->setValue(val); + RS4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateRS : Error switch\n"); + } +} +void DeicsOnzeGui::updateEBS(int op, int val) { + switch(op) { + case 0: + EBS1Slider->blockSignals(true); + EBS1Slider->setValue(val); + EBS1Slider->blockSignals(false); + EBS1SpinBox->blockSignals(true); + EBS1SpinBox->setValue(val); + EBS1SpinBox->blockSignals(false); + break; + case 1: + EBS2Slider->blockSignals(true); + EBS2Slider->setValue(val); + EBS2Slider->blockSignals(false); + EBS2SpinBox->blockSignals(true); + EBS2SpinBox->setValue(val); + EBS2SpinBox->blockSignals(false); + break; + case 2: + EBS3Slider->blockSignals(true); + EBS3Slider->setValue(val); + EBS3Slider->blockSignals(false); + EBS3SpinBox->blockSignals(true); + EBS3SpinBox->setValue(val); + EBS3SpinBox->blockSignals(false); + break; + case 3: + EBS4Slider->blockSignals(true); + EBS4Slider->setValue(val); + EBS4Slider->blockSignals(false); + EBS4SpinBox->blockSignals(true); + EBS4SpinBox->setValue(val); + EBS4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateEBS : Error switch\n"); + } +} +void DeicsOnzeGui::updateAME(int op, bool val) { + switch(op) { + case 0: + AME1CheckBox->blockSignals(true); + AME1CheckBox->setChecked(val); + AME1CheckBox->blockSignals(false); + break; + case 1: + AME2CheckBox->blockSignals(true); + AME2CheckBox->setChecked(val); + AME2CheckBox->blockSignals(false); + break; + case 2: + AME3CheckBox->blockSignals(true); + AME3CheckBox->setChecked(val); + AME3CheckBox->blockSignals(false); + break; + case 3: + AME4CheckBox->blockSignals(true); + AME4CheckBox->setChecked(val); + AME4CheckBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateAME : Error switch\n"); + } +} +void DeicsOnzeGui::updateKVS(int op, int val) { + switch(op) { + case 0: + KVS1Slider->blockSignals(true); + KVS1Slider->setValue(val); + KVS1Slider->blockSignals(false); + KVS1SpinBox->blockSignals(true); + KVS1SpinBox->setValue(val); + KVS1SpinBox->blockSignals(false); + break; + case 1: + KVS2Slider->blockSignals(true); + KVS2Slider->setValue(val); + KVS2Slider->blockSignals(false); + KVS2SpinBox->blockSignals(true); + KVS2SpinBox->setValue(val); + KVS2SpinBox->blockSignals(false); + break; + case 2: + KVS3Slider->blockSignals(true); + KVS3Slider->setValue(val); + KVS3Slider->blockSignals(false); + KVS3SpinBox->blockSignals(true); + KVS3SpinBox->setValue(val); + KVS3SpinBox->blockSignals(false); + break; + case 3: + KVS4Slider->blockSignals(true); + KVS4Slider->setValue(val); + KVS4Slider->blockSignals(false); + KVS4SpinBox->blockSignals(true); + KVS4SpinBox->setValue(val); + KVS4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateKVS : Error switch\n"); + } +} +void DeicsOnzeGui::updateOUT(int op, int val) { + switch(op) { + case 0: + OUT1Slider->blockSignals(true); + OUT1Slider->setValue(val); + OUT1Slider->blockSignals(false); + OUT1SpinBox->blockSignals(true); + OUT1SpinBox->setValue(val); + OUT1SpinBox->blockSignals(false); + break; + case 1: + OUT2Slider->blockSignals(true); + OUT2Slider->setValue(val); + OUT2Slider->blockSignals(false); + OUT2SpinBox->blockSignals(true); + OUT2SpinBox->setValue(val); + OUT2SpinBox->blockSignals(false); + break; + case 2: + OUT3Slider->blockSignals(true); + OUT3Slider->setValue(val); + OUT3Slider->blockSignals(false); + OUT3SpinBox->blockSignals(true); + OUT3SpinBox->setValue(val); + OUT3SpinBox->blockSignals(false); + break; + case 3: + OUT4Slider->blockSignals(true); + OUT4Slider->setValue(val); + OUT4Slider->blockSignals(false); + OUT4SpinBox->blockSignals(true); + OUT4SpinBox->setValue(val); + OUT4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateOUT : Error switch\n"); + } +} +void DeicsOnzeGui::updateRATIO(int op, int val) { + switch(op) { + case 0: + CoarseRatio1SpinBox->blockSignals(true); + CoarseRatio1SpinBox->setValue(val/100); + CoarseRatio1SpinBox->blockSignals(false); + FineRatio1SpinBox->blockSignals(true); + FineRatio1SpinBox->setValue(val%100); + FineRatio1SpinBox->blockSignals(false); + break; + case 1: + CoarseRatio2SpinBox->blockSignals(true); + CoarseRatio2SpinBox->setValue(val/100); + CoarseRatio2SpinBox->blockSignals(false); + FineRatio2SpinBox->blockSignals(true); + FineRatio2SpinBox->setValue(val%100); + FineRatio2SpinBox->blockSignals(false); + break; + case 2: + CoarseRatio3SpinBox->blockSignals(true); + CoarseRatio3SpinBox->setValue(val/100); + CoarseRatio3SpinBox->blockSignals(false); + FineRatio3SpinBox->blockSignals(true); + FineRatio3SpinBox->setValue(val%100); + FineRatio3SpinBox->blockSignals(false); + break; + case 3: + CoarseRatio4SpinBox->blockSignals(true); + CoarseRatio4SpinBox->setValue(val/100); + CoarseRatio4SpinBox->blockSignals(false); + FineRatio4SpinBox->blockSignals(true); + FineRatio4SpinBox->setValue(val%100); + FineRatio4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateRATIO : Error switch\n"); + } +} +void DeicsOnzeGui::updateDET(int op, int val) { + switch(op) { + case 0: + DET1Slider->blockSignals(true); + DET1Slider->setValue(val); + DET1Slider->blockSignals(false); + DET1SpinBox->blockSignals(true); + DET1SpinBox->setValue(val); + DET1SpinBox->blockSignals(false); + break; + case 1: + DET2Slider->blockSignals(true); + DET2Slider->setValue(val); + DET2Slider->blockSignals(false); + DET2SpinBox->blockSignals(true); + DET2SpinBox->setValue(val); + DET2SpinBox->blockSignals(false); + break; + case 2: + DET3Slider->blockSignals(true); + DET3Slider->setValue(val); + DET3Slider->blockSignals(false); + DET3SpinBox->blockSignals(true); + DET3SpinBox->setValue(val); + DET3SpinBox->blockSignals(false); + break; + case 3: + DET4Slider->blockSignals(true); + DET4Slider->setValue(val); + DET4Slider->blockSignals(false); + DET4SpinBox->blockSignals(true); + DET4SpinBox->setValue(val); + DET4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateDET : Error switch\n"); + } +} +void DeicsOnzeGui::updateALG(int val) { + algorithmComboBox->blockSignals(true); + algorithmComboBox->setCurrentIndex(val); + algorithmComboBox->blockSignals(false); +} +void DeicsOnzeGui::updateFEEDBACK(int val) { + feedbackSlider->blockSignals(true); + feedbackSlider->setValue(val); + feedbackSlider->blockSignals(false); + feedbackSpinBox->blockSignals(true); + feedbackSpinBox->setValue(val); + feedbackSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateSPEED(int val) { + LFOSpeedSlider->blockSignals(true); + LFOSpeedSlider->setValue(val); + LFOSpeedSlider->blockSignals(false); + LFOSpeedSpinBox->blockSignals(true); + LFOSpeedSpinBox->setValue(val); + LFOSpeedSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateDELAY(int val) { + LFODelaySlider->blockSignals(true); + LFODelaySlider->setValue(val); + LFODelaySlider->blockSignals(false); + LFODelaySpinBox->blockSignals(true); + LFODelaySpinBox->setValue(val); + LFODelaySpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePMODDEPTH(int val) { + PModDepthSlider->blockSignals(true); + PModDepthSlider->setValue(val); + PModDepthSlider->blockSignals(false); + PModDepthSpinBox->blockSignals(true); + PModDepthSpinBox->setValue(val); + PModDepthSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateAMODDEPTH(int val) { + AModDepthSlider->blockSignals(true); + AModDepthSlider->setValue(val); + AModDepthSlider->blockSignals(false); + AModDepthSpinBox->blockSignals(true); + AModDepthSpinBox->setValue(val); + AModDepthSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateSYNC(bool val) { + LFOSyncCheckBox->blockSignals(true); + LFOSyncCheckBox->setChecked(val); + LFOSyncCheckBox->blockSignals(false); +} +void DeicsOnzeGui::updateWAVE(int val) { + LFOWaveComboBox->blockSignals(true); + LFOWaveComboBox->setCurrentIndex(val); + LFOWaveComboBox->blockSignals(false); +} +void DeicsOnzeGui::updatePMODSENS(int val) { + PModSensSlider->blockSignals(true); + PModSensSlider->setValue(val); + PModSensSlider->blockSignals(false); + PModSensSpinBox->blockSignals(true); + PModSensSpinBox->setValue(val); + PModSensSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateAMS(int val) { + AModSensSlider->blockSignals(true); + AModSensSlider->setValue(val); + AModSensSlider->blockSignals(false); + AModSensSpinBox->blockSignals(true); + AModSensSpinBox->setValue(val); + AModSensSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateTRANSPOSE(int val) { + transposeSlider->blockSignals(true); + transposeSlider->setValue(val); + transposeSlider->blockSignals(false); + transposeSpinBox->blockSignals(true); + transposeSpinBox->setValue(val); + transposeSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePOLYMODE(int val) { + polyMonoComboBox->blockSignals(true); + polyMonoComboBox->setCurrentIndex(val); + polyMonoComboBox->blockSignals(false); +} +void DeicsOnzeGui::updatePBENDRANGE(int val) { + pitchBendRangeSlider->blockSignals(true); + pitchBendRangeSlider->setValue(val); + pitchBendRangeSlider->blockSignals(false); + pitchBendRangeSpinBox->blockSignals(true); + pitchBendRangeSpinBox->setValue(val); + pitchBendRangeSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updatePORTAMODE(int val) { + PortFingerFullComboBox->blockSignals(true); + PortFingerFullComboBox->setCurrentIndex(val); + PortFingerFullComboBox->blockSignals(false); +} +void DeicsOnzeGui::updatePORTATIME(int val) { + PortamentoTimeSlider->blockSignals(true); + PortamentoTimeSlider->setValue(val); + PortamentoTimeSlider->blockSignals(false); + PortamentoTimeSpinBox->blockSignals(true); + PortamentoTimeSpinBox->setValue(val); + PortamentoTimeSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateFIX(int op, bool val) { + switch(op) { + case 0: + Fix1CheckBox->blockSignals(true); + Fix1CheckBox->setChecked(val); + Fix1CheckBox->blockSignals(false); + FineRatio1SpinBox->blockSignals(true); + FineRatio1SpinBox->setEnabled(!val); + FineRatio1SpinBox->blockSignals(false); + CoarseRatio1SpinBox->blockSignals(true); + CoarseRatio1SpinBox->setEnabled(!val); + CoarseRatio1SpinBox->blockSignals(false); + break; + case 1: + Fix2CheckBox->blockSignals(true); + Fix2CheckBox->setChecked(val); + Fix2CheckBox->blockSignals(false); + FineRatio2SpinBox->blockSignals(true); + FineRatio2SpinBox->setEnabled(!val); + FineRatio2SpinBox->blockSignals(false); + CoarseRatio2SpinBox->blockSignals(true); + CoarseRatio2SpinBox->setEnabled(!val); + CoarseRatio2SpinBox->blockSignals(false); + break; + case 2: + Fix3CheckBox->blockSignals(true); + Fix3CheckBox->setChecked(val); + Fix3CheckBox->blockSignals(false); + FineRatio3SpinBox->blockSignals(true); + FineRatio3SpinBox->setEnabled(!val); + FineRatio3SpinBox->blockSignals(false); + CoarseRatio3SpinBox->blockSignals(true); + CoarseRatio3SpinBox->setEnabled(!val); + CoarseRatio3SpinBox->blockSignals(false); + break; + case 3: + Fix4CheckBox->blockSignals(true); + Fix4CheckBox->setChecked(val); + Fix4CheckBox->blockSignals(false); + FineRatio4SpinBox->blockSignals(true); + FineRatio4SpinBox->setEnabled(!val); + FineRatio4SpinBox->blockSignals(false); + CoarseRatio4SpinBox->blockSignals(true); + CoarseRatio4SpinBox->setEnabled(!val); + CoarseRatio4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateFIX : error switch\n"); + } +} +void DeicsOnzeGui::updateFIXRANGE(int op, int val) { + switch(op) { + case 0: + Freq1SpinBox->blockSignals(true); + Freq1SpinBox->setValue(val/100); + //val/100 because it is still a coarse display + Freq1SpinBox->blockSignals(false); + break; + case 1: + Freq2SpinBox->blockSignals(true); + Freq2SpinBox->setValue(val/100); + Freq2SpinBox->blockSignals(false); + break; + case 2: + Freq3SpinBox->blockSignals(true); + Freq3SpinBox->setValue(val/100); + Freq3SpinBox->blockSignals(false); + break; + case 3: + Freq4SpinBox->blockSignals(true); + Freq4SpinBox->setValue(val/100); + Freq4SpinBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateFIXRANGE : error switch\n"); + } +} +void DeicsOnzeGui::updateOSW(int op, int val) { + switch(op) { + case 0: + WaveForm1ComboBox->blockSignals(true); + WaveForm1ComboBox->setCurrentIndex(val); + WaveForm1ComboBox->blockSignals(false); + break; + case 1: + WaveForm2ComboBox->blockSignals(true); + WaveForm2ComboBox->setCurrentIndex(val); + WaveForm2ComboBox->blockSignals(false); + break; + case 2: + WaveForm3ComboBox->blockSignals(true); + WaveForm3ComboBox->setCurrentIndex(val); + WaveForm3ComboBox->blockSignals(false); + break; + case 3: + WaveForm4ComboBox->blockSignals(true); + WaveForm4ComboBox->setCurrentIndex(val); + WaveForm4ComboBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateOSW : Error switch\n"); + } +} +void DeicsOnzeGui::updateSHFT(int op, int val) { + switch(op) { + case 0: + EGS1ComboBox->blockSignals(true); + EGS1ComboBox->setCurrentIndex(val); + EGS1ComboBox->blockSignals(false); + break; + case 1: + EGS2ComboBox->blockSignals(true); + EGS2ComboBox->setCurrentIndex(val); + EGS2ComboBox->blockSignals(false); + break; + case 2: + EGS3ComboBox->blockSignals(true); + EGS3ComboBox->setCurrentIndex(val); + EGS3ComboBox->blockSignals(false); + break; + case 3: + EGS4ComboBox->blockSignals(true); + EGS4ComboBox->setCurrentIndex(val); + EGS4ComboBox->blockSignals(false); + break; + default: printf("DeicsOnzeGui::updateSHFT : Error switch\n"); + } +} +void DeicsOnzeGui::updateChannelDetune(int val) { + updateChannelDetuneKnob(val); + //updateChannelDetuneSlider(val); +} +void DeicsOnzeGui::updateChannelDetuneKnob(int val) { + detuneKnob->blockSignals(true); + detuneKnob->setValue((((double)val)/((double)MAXCHANNELDETUNE))/2.0+0.5); + detuneKnob->blockSignals(false); +} +//void DeicsOnzeGui::updateChannelDetuneSlider(int val) { + //channelDetuneSlider->blockSignals(true); + //channelDetuneSlider->setValue(val); + //channelDetuneSlider->blockSignals(false); + //channelDetuneSpinBox->blockSignals(true); + //channelDetuneSpinBox->setValue(val); + //channelDetuneSpinBox->blockSignals(false); +//} +void DeicsOnzeGui::updateChannelVolume(int val) { + channelVolumeKnob->blockSignals(true); + channelVolumeKnob->setValue(((double)val)/(double)MAXCHANNELVOLUME); + channelVolumeKnob->blockSignals(false); +} +void DeicsOnzeGui::updateCategoryName(QString cn, bool enable) { + categoryLineEdit->setEnabled(enable); + categoryLineEdit->blockSignals(true); + categoryLineEdit->setText(cn); + categoryLineEdit->blockSignals(false); +} +void DeicsOnzeGui::updateSubcategoryName(QString sn, bool enable) { + subcategoryLineEdit->setEnabled(enable); + subcategoryLineEdit->blockSignals(true); + subcategoryLineEdit->setText(sn); + subcategoryLineEdit->blockSignals(false); +} +void DeicsOnzeGui::updatePresetName(QString pn) { + //presetNameLineEdit->blockSignals(true); + //presetNameLineEdit->setText(pn); + //presetNameLineEdit->blockSignals(false); + //presetNameLabel->setText(pn); + presetLineEdit->blockSignals(true); + presetLineEdit->setText(pn); + presetLineEdit->blockSignals(false); +} +void DeicsOnzeGui::updatePresetName(QString pn, bool enable) { + presetLineEdit->setEnabled(enable); + //presetNameLineEdit->setEnabled(enable); + updatePresetName(pn); +} +void DeicsOnzeGui::updateHBank(int n, bool enable) { + hbankSpinBox->setEnabled(enable); + hbankSpinBox->blockSignals(true); + hbankSpinBox->setValue(n+1); + hbankSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateLBank(int n, bool enable) { + lbankSpinBox->setEnabled(enable); + lbankSpinBox->blockSignals(true); + lbankSpinBox->setValue(n+1); + lbankSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateProg(int n, bool enable) { + progSpinBox->setEnabled(enable); + progSpinBox->blockSignals(true); + progSpinBox->setValue(n+1); + progSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateInitSetCheckBox(bool b) { + initSetCheckBox->blockSignals(true); + initSetCheckBox->setChecked(b); + initSetCheckBox->blockSignals(false); + initSetPathLineEdit->setEnabled(b); + initSetBrowsePushButton-> setEnabled(b); +} +void DeicsOnzeGui::updateInitSetPath(QString s) { + initSetPathLineEdit->blockSignals(true); + initSetPathLineEdit->setText(s); + initSetPathLineEdit->blockSignals(false); +} +void DeicsOnzeGui::updateBackgroundPixCheckBox(bool b) { + imageCheckBox->blockSignals(true); + imageCheckBox->setChecked(b); + imageCheckBox->blockSignals(false); + imagePathLineEdit->setEnabled(b); + imageBrowsePushButton-> setEnabled(b); +} +void DeicsOnzeGui::updateBackgroundPixPath(QString s) { + imagePathLineEdit->blockSignals(true); + imagePathLineEdit->setText(s); + imagePathLineEdit->blockSignals(false); +} +void DeicsOnzeGui::applyBackgroundPix() { + QPalette p = this->palette(); + QPixmap pixmap = QPixmap(imagePathLineEdit->text()); + p.setBrush((this)->backgroundRole(), QBrush(pixmap)); + (this)->setPalette(p); +} +void DeicsOnzeGui::updateChannelPan(int val) { + channelPanKnob->blockSignals(true); + channelPanKnob->setValue((((double)val/(double)MAXCHANNELPAN)+1.0)/2.0); + channelPanKnob->blockSignals(false); + //channelPanSpinBox->blockSignals(true); + //channelPanSpinBox->setValue(val); + //channelPanSpinBox->blockSignals(false); +} +void DeicsOnzeGui::updateBrightness(int val) { + brightnessKnob->blockSignals(true); + brightnessKnob->setValue((double)val/((double)MAXFINEBRIGHTNESS)); + brightnessKnob->blockSignals(false); +} +void DeicsOnzeGui::updateModulation(int val) { + modulationKnob->blockSignals(true); + modulationKnob->setValue((double)val/((double)MAXMODULATION)); + modulationKnob->blockSignals(false); +} +void DeicsOnzeGui::updateAttack(int val) { + attackKnob->blockSignals(true); + attackKnob->setValue((double)val/((double)MAXATTACK)); + attackKnob->blockSignals(false); +} +void DeicsOnzeGui::updateRelease(int val) { + releaseKnob->blockSignals(true); + releaseKnob->setValue((double)val/((double)MAXRELEASE)); + releaseKnob->blockSignals(false); +} +void DeicsOnzeGui::updateQuickEdit() { + updateChannelVolume(_deicsOnze->getChannelVol(_currentChannel)); + updateChannelPan(_deicsOnze->getChannelPan(_currentChannel)); + updateBrightness(_deicsOnze->getChannelBrightness(_currentChannel)); + updateModulation(_deicsOnze->getChannelModulation(_currentChannel)); + updateChannelDetune(_deicsOnze->getChannelDetune(_currentChannel)); + updateAttack(_deicsOnze->getChannelAttack(_currentChannel)); + updateRelease(_deicsOnze->getChannelRelease(_currentChannel)); + updateChannelReverb(_deicsOnze->getChannelReverb(_currentChannel)); + updateChannelChorus(_deicsOnze->getChannelChorus(_currentChannel)); + updateChannelDelay(_deicsOnze->getChannelDelay(_currentChannel)); +} +//-------------------------------------------------------------- +// updatePreset +//-------------------------------------------------------------- +void DeicsOnzeGui::updatePreset(Preset* p) { + //TODO : why updateMasterVolume + //updateMasterVolume(_deicsOnze->getMasterVol()); //to change + updatePresetName(p->name.c_str()); + updateFEEDBACK(p->feedback); + updateWAVE((int)p->lfo.wave); + updateSPEED(p->lfo.speed); + updateDELAY(p->lfo.delay); + updatePMODDEPTH(p->lfo.pModDepth); + updatePMODSENS(p->sensitivity.pitch); + updateAMODDEPTH(p->lfo.aModDepth); + updateAMS(p->sensitivity.amplitude); + updateTRANSPOSE(p->function.transpose); + updateALG((int)p->algorithm); + updatePBENDRANGE(p->function.pBendRange); + //pitch envelope + PitchEg* pe=&(p->pitchEg); + pitchEnvelopeGraph + ->env2Points(pe->pl1, pe->pl2, pe->pl3, pe->pr1, pe->pr2, pe->pr3); + pitchEnvelopeGraph->updateEnv(); + updatePL1(pe->pl1); + updatePL2(pe->pl2); + updatePL3(pe->pl3); + updatePR1(pe->pr1); + updatePR2(pe->pr2); + updatePR3(pe->pr3); + //function + updateFcVolume(p->function.fcVolume); + updateFcPitch(p->function.fcPitch); + updateFcAmplitude(p->function.fcAmplitude); + updateMwPitch(p->function.mwPitch); + updateMwAmplitude(p->function.mwAmplitude); + updateBcPitch(p->function.bcPitch); + updateBcAmplitude(p->function.bcAmplitude); + updateBcPitchBias(p->function.bcPitchBias); + updateBcEgBias(p->function.bcEgBias); + updateAtPitch(p->function.atPitch); + updateAtAmplitude(p->function.atAmplitude); + updateAtPitchBias(p->function.atPitchBias); + updateAtEgBias(p->function.atEgBias); + //updateReverbRate(p->function.reverbRate); + updatePOLYMODE((int)p->function.mode); + updatePORTAMODE((int)p->function.portamento); + updatePORTATIME((int)p->function.portamentoTime); + for(int k=0; k<NBROP; k++) { + //envelope + Eg* _eg=&(p->eg[k]); + envelopeGraph[k] + ->env2Points(_eg->ar, _eg->d1r, _eg->d1l, _eg->d2r, _eg->rr); + envelopeGraph[k]->updateEnv(); + updateAR(k, _eg->ar); + updateD1R(k, _eg->d1r); + updateD1L(k, _eg->d1l); + updateD2R(k, _eg->d2r); + updateRR(k, _eg->rr); + //scaling + updateLS(k, p->scaling.level[k]); + updateRS(k, p->scaling.rate[k]); + //Volume + updateOUT(k, p->outLevel[k]); + //Ratio and Frequency + updateRATIO(k, (int)(100*p->frequency[k].ratio)); + updateFIXRANGE(k, (int)(100*p->frequency[k].freq)); + updateFIX(k, p->frequency[k].isFix); + //Sensitivity + updateAME(k, p->sensitivity.ampOn[k]); + updateEBS(k, p->sensitivity.egBias[k]); + updateKVS(k, p->sensitivity.keyVelocity[k]); + //detune + updateDET(k, p->detune[k]); + //Waveform + updateOSW(k, (int)p->oscWave[0]); + } +} +/*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* pre = presetListView->currentItem(); + //select category, subcategory, preset + //category + QList<QTreeWidgetItem *> qlcat = + categoryListView->findItems(num3Digits(hbank+1), Qt::MatchExactly); + QTreeWidgetItem* qcat = qlcat.empty()? NULL:qlcat.at(0); + //if the category is different than the last one then select the new one + //if(!cat || !qcat || qcat!= cat) { + if(qcat) { + categoryListView->setItemSelected(qcat, true); + categoryListView->setCurrentItem(qcat); + categoryListView->scrollToItem(qcat); + setEnabledPreset(true); + } + else { + updateCategoryName(QString("NONE"), false); + updateHBank(hbank, false); + categoryListView->clearSelection(); + subcategoryListView->clear(); + setEnabledPreset(false); + } + //} + //subcategory + //if(cat) { + QList<QTreeWidgetItem *> qlsub = + subcategoryListView->findItems(num3Digits(lbank+1), Qt::MatchExactly); + QTreeWidgetItem* qsub = qlsub.empty()? NULL:qlsub.at(0); + // if(!sub || qsub!=sub) { + if(qsub) { + subcategoryListView->setItemSelected(qsub, true); + subcategoryListView->setCurrentItem(qsub); + subcategoryListView->scrollToItem(qsub); + setEnabledPreset(true); + } + else { + updateSubcategoryName(QString("NONE"), false); + updateLBank(lbank, false); + subcategoryListView->clearSelection(); + presetListView->clear(); + setEnabledPreset(false); + } + // } + //} + //else { + // updateSubcategoryName(QString("NONE"), false); + // updateLBank(lbank, false); + // subcategoryListView->clearSelection(); + // presetListView->clear(); + // setEnabledPreset(false); + //} + //preset + //if(sub) { + QList<QTreeWidgetItem *> qlpre = + presetListView->findItems(num3Digits(prog+1), Qt::MatchExactly); + QTreeWidgetItem* qpre = qlpre.empty()? NULL:qlpre.at(0); + if(qpre) { + presetListView->blockSignals(true); + presetListView->setItemSelected(qpre, true); + presetListView->setCurrentItem(qpre); + presetListView->blockSignals(false); + presetListView->scrollToItem(qpre); + updatePresetName(qpre->text(1), true); + updateProg(prog, true); + pre=(QTreePreset*) qpre; + setEnabledPreset(true); + } + else { + updatePresetName(QString("INITVOICE"), false); + updateProg(prog, false); + presetListView->clearSelection(); + setEnabledPreset(false); + } + //} + //else { + // updatePresetName(QString("INITVOICE"), false); + // updateProg(prog, false); + // presetListView->clearSelection(); + // setEnabledPreset(false); + //} +} + |