void LLFloaterDayCycle::onKeyPresetChanged(LLUICtrl* ctrl, void* userData) { // get the time LLComboBox* comboBox = sDayCycle->getChild<LLComboBox>( "WLKeyPresets"); LLMultiSliderCtrl* sldr = sDayCycle->getChild<LLMultiSliderCtrl>( "WLDayCycleKeys"); // do nothing if no sliders if(sldr->getValue().size() == 0) { return; } // change the map std::string newPreset(comboBox->getSelectedValue().asString()); const std::string& curSldr = sldr->getCurSlider(); // if null, don't use if(curSldr == "") { return; } sSliderToKey[curSldr].presetName = newPreset; syncTrack(); }
Tpreset* Tpresets::getAutoPreset0(TautoPresetProps &aprops,bool filefirst) { if (filefirst) { const char_t *AVIname=aprops.getSourceFullFlnm(); ffstring presetFlnm; changepathext(AVIname, presetext, presetFlnm); if (fileexists(presetFlnm.c_str())) { Tpreset *preset=newPreset(AVIname); preset->loadFile(presetFlnm.c_str()); Tpreset::normalizePresetName(preset->presetName, AVIname, countof(preset->presetName)); preset->autoLoadedFromFile=true; iterator i=findPreset(preset->presetName); if (i!=end() && (*i)->autoLoadedFromFile) { removePreset(preset->presetName); } nextUniqueName(preset); push_back(preset); return preset; } } for (iterator i=begin(); i!=end(); i++) if ((*i)->isAutoPreset(aprops)) { return *i; } return NULL; }
// Preset control. void synthv1widget_preset::initPreset (void) { synthv1_config *pConfig = synthv1_config::getInstance(); if (pConfig && !pConfig->sPreset.isEmpty()) loadPreset(pConfig->sPreset); else newPreset(); }
void Tpresets::init(void) { Tpreset *def=newPreset(); def->loadDefault(); push_back(def); strings keys; listRegKeys(keys); for (strings::const_iterator i=keys.begin(); i!=keys.end(); i++) if (findPreset(i->c_str())==end()) { Tpreset *preset=newPreset(i->c_str()); preset->loadReg(); push_back(preset); } if (keys.size()==0) { (*begin())->saveReg(); } }
Tpreset* Tpresets::getPreset(const char_t *presetName,bool create) { iterator i=findPreset(presetName); if (i!=end()) { return *i; } else if (create) { Tpreset *newpreset=newPreset(presetName); newpreset->loadReg(); storePreset(newpreset); return newpreset; } else { return NULL; } }
void LLFloaterDayCycle::onAddKey(void* userData) { LLComboBox* comboBox = sDayCycle->getChild<LLComboBox>( "WLKeyPresets"); LLMultiSliderCtrl* kSldr = sDayCycle->getChild<LLMultiSliderCtrl>( "WLDayCycleKeys"); LLMultiSliderCtrl* tSldr = sDayCycle->getChild<LLMultiSliderCtrl>( "WLTimeSlider"); llassert_always(sSliderToKey.size() == kSldr->getValue().size()); // get the values std::string newPreset(comboBox->getSelectedValue().asString()); // add the slider key addSliderKey(tSldr->getCurSliderValue(), newPreset); syncTrack(); }
void Equalizer::createEvents() { connect(defaultButton, SIGNAL(clicked()), this, SLOT(defaultEqualizer())); connect(okButton, SIGNAL(clicked()), this, SLOT(ok())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(close())); connect(newButton, SIGNAL(clicked()), this, SLOT(newPreset())); connect(editButton, SIGNAL(clicked()), this, SLOT(editPreset())); connect(saveButton, SIGNAL(clicked()), this, SLOT(savePreset())); connect(deleteButton, SIGNAL(clicked()), this, SLOT(deletePreset())); connect(presetCombo, SIGNAL(activated(int)), this, SLOT(loadPreset())); connect(presetCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(indexChanged())); for (int i = 0; i < 16; i++) { connect(eq[i], &QSlider::valueChanged, [this,i](int arg) { equalizerChanged(i, arg); eqDb[i]->setText(QString("%1dB").arg(arg)); }); } }
// Constructor. synthv1widget::synthv1widget ( QWidget *pParent, Qt::WindowFlags wflags ) : QWidget(pParent, wflags) { Q_INIT_RESOURCE(synthv1); #if QT_VERSION >= 0x050000 // HACK: Dark themes grayed/disabled color group fix... QPalette pal; if (pal.base().color().value() < 0x7f) { const QColor& color = pal.window().color(); const int iGroups = int(QPalette::Active | QPalette::Inactive) + 1; for (int i = 0; i < iGroups; ++i) { const QPalette::ColorGroup group = QPalette::ColorGroup(i); pal.setBrush(group, QPalette::Light, color.lighter(150)); pal.setBrush(group, QPalette::Midlight, color.lighter(120)); pal.setBrush(group, QPalette::Dark, color.darker(150)); pal.setBrush(group, QPalette::Mid, color.darker(120)); pal.setBrush(group, QPalette::Shadow, color.darker(200)); } pal.setColor(QPalette::Disabled, QPalette::ButtonText, pal.mid().color()); QWidget::setPalette(pal); } #endif m_ui.setupUi(this); // Init sched notifier. m_sched_notifier = NULL; // Init swapable params A/B to default. for (uint32_t i = 0; i < synthv1::NUM_PARAMS; ++i) m_params_ab[i] = synthv1_param::paramDefaultValue(synthv1::ParamIndex(i)); // Start clean. m_iUpdate = 0; // Replicate the stacked/pages for (int iTab = 0; iTab < m_ui.StackedWidget->count(); ++iTab) m_ui.TabBar->addTab(m_ui.StackedWidget->widget(iTab)->windowTitle()); // Swappable params A/B group. QButtonGroup *pSwapParamsGroup = new QButtonGroup(this); pSwapParamsGroup->addButton(m_ui.SwapParamsAButton); pSwapParamsGroup->addButton(m_ui.SwapParamsBButton); pSwapParamsGroup->setExclusive(true); m_ui.SwapParamsAButton->setChecked(true); // Wave shapes. QStringList shapes; shapes << tr("Pulse"); shapes << tr("Saw"); shapes << tr("Sine"); shapes << tr("Rand"); shapes << tr("Noise"); m_ui.Dco1Shape1Knob->insertItems(0, shapes); m_ui.Dco1Shape2Knob->insertItems(0, shapes); m_ui.Dco2Shape1Knob->insertItems(0, shapes); m_ui.Dco2Shape2Knob->insertItems(0, shapes); m_ui.Lfo1ShapeKnob->insertItems(0, shapes); m_ui.Lfo2ShapeKnob->insertItems(0, shapes); // Filter types. QStringList types; types << tr("LPF"); types << tr("BPF"); types << tr("HPF"); types << tr("BRF"); m_ui.Dcf1TypeKnob->insertItems(0, types); m_ui.Dcf2TypeKnob->insertItems(0, types); // Filter slopes. QStringList slopes; slopes << tr("12dB/oct"); slopes << tr("24dB/oct"); m_ui.Dcf1SlopeKnob->insertItems(0, slopes); m_ui.Dcf2SlopeKnob->insertItems(0, slopes); // Dynamic states. QStringList states; states << tr("Off"); states << tr("On"); m_ui.Dco1Bandl1Knob->insertItems(0, states); m_ui.Dco1Bandl2Knob->insertItems(0, states); m_ui.Dco2Bandl1Knob->insertItems(0, states); m_ui.Dco2Bandl2Knob->insertItems(0, states); m_ui.Dyn1CompressKnob->insertItems(0, states); m_ui.Dyn1LimiterKnob->insertItems(0, states); // Special values const QString& sOff = states.first(); m_ui.Cho1WetKnob->setSpecialValueText(sOff); m_ui.Fla1WetKnob->setSpecialValueText(sOff); m_ui.Pha1WetKnob->setSpecialValueText(sOff); m_ui.Del1WetKnob->setSpecialValueText(sOff); m_ui.Rev1WetKnob->setSpecialValueText(sOff); const QString& sAuto = tr("Auto"); m_ui.Del1BpmKnob->setSpecialValueText(sAuto); // Wave integer widths. m_ui.Dco1Width1Knob->setDecimals(0); m_ui.Dco1Width2Knob->setDecimals(0); m_ui.Dco2Width1Knob->setDecimals(0); m_ui.Dco2Width2Knob->setDecimals(0); m_ui.Lfo1WidthKnob->setDecimals(0); m_ui.Lfo2WidthKnob->setDecimals(0); // DCO octave limits. m_ui.Dco1OctaveKnob->setMinimum(-4.0f); m_ui.Dco1OctaveKnob->setMaximum(+4.0f); m_ui.Dco2OctaveKnob->setMinimum(-4.0f); m_ui.Dco2OctaveKnob->setMaximum(+4.0f); // DCO balance limits. m_ui.Dco1BalanceKnob->setMinimum(-1.0f); m_ui.Dco1BalanceKnob->setMaximum(+1.0f); m_ui.Dco2BalanceKnob->setMinimum(-1.0f); m_ui.Dco2BalanceKnob->setMaximum(+1.0f); // DCO tune limits. m_ui.Dco1TuningKnob->setMinimum(-1.0f); m_ui.Dco1TuningKnob->setMaximum(+1.0f); m_ui.Dco2TuningKnob->setMinimum(-1.0f); m_ui.Dco2TuningKnob->setMaximum(+1.0f); // DCF volume (env.amount) limits. m_ui.Dcf1EnvelopeKnob->setMinimum(-1.0f); m_ui.Dcf1EnvelopeKnob->setMaximum(+1.0f); m_ui.Dcf2EnvelopeKnob->setMinimum(-1.0f); m_ui.Dcf2EnvelopeKnob->setMaximum(+1.0f); // LFO parameter limits. m_ui.Lfo1SweepKnob->setMinimum(-1.0f); m_ui.Lfo1SweepKnob->setMaximum(+1.0f); m_ui.Lfo1CutoffKnob->setMinimum(-1.0f); m_ui.Lfo1CutoffKnob->setMaximum(+1.0f); m_ui.Lfo1ResoKnob->setMinimum(-1.0f); m_ui.Lfo1ResoKnob->setMaximum(+1.0f); m_ui.Lfo1PitchKnob->setMinimum(-1.0f); m_ui.Lfo1PitchKnob->setMaximum(+1.0f); m_ui.Lfo1PanningKnob->setMinimum(-1.0f); m_ui.Lfo1PanningKnob->setMaximum(+1.0f); m_ui.Lfo1VolumeKnob->setMinimum(-1.0f); m_ui.Lfo1VolumeKnob->setMaximum(+1.0f); m_ui.Lfo2SweepKnob->setMinimum(-1.0f); m_ui.Lfo2SweepKnob->setMaximum(+1.0f); m_ui.Lfo2CutoffKnob->setMinimum(-1.0f); m_ui.Lfo2CutoffKnob->setMaximum(+1.0f); m_ui.Lfo2ResoKnob->setMinimum(-1.0f); m_ui.Lfo2ResoKnob->setMaximum(+1.0f); m_ui.Lfo2PitchKnob->setMinimum(-1.0f); m_ui.Lfo2PitchKnob->setMaximum(+1.0f); m_ui.Lfo2PanningKnob->setMinimum(-1.0f); m_ui.Lfo2PanningKnob->setMaximum(+1.0f); m_ui.Lfo2VolumeKnob->setMinimum(-1.0f); m_ui.Lfo2VolumeKnob->setMaximum(+1.0f); // Channel filters QStringList channels; channels << tr("Omni"); for (int iChannel = 0; iChannel < 16; ++iChannel) channels << QString::number(iChannel + 1); m_ui.Def1ChannelKnob->insertItems(0, channels); m_ui.Def2ChannelKnob->insertItems(0, channels); // Mono switches m_ui.Def1MonoKnob->insertItems(0, states); m_ui.Def2MonoKnob->insertItems(0, states); // Output (stereo-)width limits. m_ui.Out1WidthKnob->setMinimum(-1.0f); m_ui.Out1WidthKnob->setMaximum(+1.0f); m_ui.Out2WidthKnob->setMinimum(-1.0f); m_ui.Out2WidthKnob->setMaximum(+1.0f); // Output (stereo-)panning limits. m_ui.Out1PanningKnob->setMinimum(-1.0f); m_ui.Out1PanningKnob->setMaximum(+1.0f); m_ui.Out2PanningKnob->setMinimum(-1.0f); m_ui.Out2PanningKnob->setMaximum(+1.0f); // Effects (delay BPM) m_ui.Del1BpmKnob->setScale(1.0f); m_ui.Del1BpmKnob->setMinimum(3.6f); m_ui.Del1BpmKnob->setMaximum(360.0f); m_ui.Del1BpmKnob->setSingleStep(1.0f); // Reverb (stereo-)width limits. m_ui.Rev1WidthKnob->setMinimum(-1.0f); m_ui.Rev1WidthKnob->setMaximum(+1.0f); // DCO1 setParamKnob(synthv1::DCO1_SHAPE1, m_ui.Dco1Shape1Knob); setParamKnob(synthv1::DCO1_WIDTH1, m_ui.Dco1Width1Knob); setParamKnob(synthv1::DCO1_BANDL1, m_ui.Dco1Bandl1Knob); setParamKnob(synthv1::DCO1_SHAPE2, m_ui.Dco1Shape2Knob); setParamKnob(synthv1::DCO1_WIDTH2, m_ui.Dco1Width2Knob); setParamKnob(synthv1::DCO1_BANDL2, m_ui.Dco1Bandl2Knob); setParamKnob(synthv1::DCO1_BALANCE, m_ui.Dco1BalanceKnob); setParamKnob(synthv1::DCO1_DETUNE, m_ui.Dco1DetuneKnob); setParamKnob(synthv1::DCO1_PHASE, m_ui.Dco1PhaseKnob); setParamKnob(synthv1::DCO1_OCTAVE, m_ui.Dco1OctaveKnob); setParamKnob(synthv1::DCO1_TUNING, m_ui.Dco1TuningKnob); setParamKnob(synthv1::DCO1_GLIDE, m_ui.Dco1GlideKnob); setParamKnob(synthv1::DCO1_ENVTIME, m_ui.Dco1EnvTimeKnob); QObject::connect( m_ui.Dco1Shape1Knob, SIGNAL(valueChanged(float)), m_ui.Dco1Wave1, SLOT(setWaveShape(float))); QObject::connect( m_ui.Dco1Wave1, SIGNAL(waveShapeChanged(float)), m_ui.Dco1Shape1Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco1Width1Knob, SIGNAL(valueChanged(float)), m_ui.Dco1Wave1, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Dco1Wave1, SIGNAL(waveWidthChanged(float)), m_ui.Dco1Width1Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco1Shape2Knob, SIGNAL(valueChanged(float)), m_ui.Dco1Wave2, SLOT(setWaveShape(float))); QObject::connect( m_ui.Dco1Wave2, SIGNAL(waveShapeChanged(float)), m_ui.Dco1Shape2Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco1Width2Knob, SIGNAL(valueChanged(float)), m_ui.Dco1Wave2, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Dco1Wave2, SIGNAL(waveWidthChanged(float)), m_ui.Dco1Width2Knob, SLOT(setValue(float))); // DCF1 setParamKnob(synthv1::DCF1_CUTOFF, m_ui.Dcf1CutoffKnob); setParamKnob(synthv1::DCF1_RESO, m_ui.Dcf1ResoKnob); setParamKnob(synthv1::DCF1_TYPE, m_ui.Dcf1TypeKnob); setParamKnob(synthv1::DCF1_SLOPE, m_ui.Dcf1SlopeKnob); setParamKnob(synthv1::DCF1_ENVELOPE, m_ui.Dcf1EnvelopeKnob); setParamKnob(synthv1::DCF1_ATTACK, m_ui.Dcf1AttackKnob); setParamKnob(synthv1::DCF1_DECAY, m_ui.Dcf1DecayKnob); setParamKnob(synthv1::DCF1_SUSTAIN, m_ui.Dcf1SustainKnob); setParamKnob(synthv1::DCF1_RELEASE, m_ui.Dcf1ReleaseKnob); QObject::connect( m_ui.Dcf1Filt, SIGNAL(cutoffChanged(float)), m_ui.Dcf1CutoffKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1CutoffKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Filt, SLOT(setCutoff(float))); QObject::connect( m_ui.Dcf1Filt, SIGNAL(resoChanged(float)), m_ui.Dcf1ResoKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1ResoKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Filt, SLOT(setReso(float))); QObject::connect( m_ui.Dcf1TypeKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Filt, SLOT(setType(float))); QObject::connect( m_ui.Dcf1SlopeKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Filt, SLOT(setSlope(float))); QObject::connect( m_ui.Dcf1Env, SIGNAL(attackChanged(float)), m_ui.Dcf1AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1AttackKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Env, SLOT(setAttack(float))); QObject::connect( m_ui.Dcf1Env, SIGNAL(decayChanged(float)), m_ui.Dcf1DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1DecayKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Env, SLOT(setDecay(float))); QObject::connect( m_ui.Dcf1Env, SIGNAL(sustainChanged(float)), m_ui.Dcf1SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1SustainKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Env, SLOT(setSustain(float))); QObject::connect( m_ui.Dcf1Env, SIGNAL(releaseChanged(float)), m_ui.Dcf1ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf1ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Dcf1Env, SLOT(setRelease(float))); // LFO1 setParamKnob(synthv1::LFO1_SHAPE, m_ui.Lfo1ShapeKnob); setParamKnob(synthv1::LFO1_WIDTH, m_ui.Lfo1WidthKnob); setParamKnob(synthv1::LFO1_RATE, m_ui.Lfo1RateKnob); setParamKnob(synthv1::LFO1_PANNING, m_ui.Lfo1PanningKnob); setParamKnob(synthv1::LFO1_VOLUME, m_ui.Lfo1VolumeKnob); setParamKnob(synthv1::LFO1_CUTOFF, m_ui.Lfo1CutoffKnob); setParamKnob(synthv1::LFO1_RESO, m_ui.Lfo1ResoKnob); setParamKnob(synthv1::LFO1_PITCH, m_ui.Lfo1PitchKnob); setParamKnob(synthv1::LFO1_SWEEP, m_ui.Lfo1SweepKnob); setParamKnob(synthv1::LFO1_ATTACK, m_ui.Lfo1AttackKnob); setParamKnob(synthv1::LFO1_DECAY, m_ui.Lfo1DecayKnob); setParamKnob(synthv1::LFO1_SUSTAIN, m_ui.Lfo1SustainKnob); setParamKnob(synthv1::LFO1_RELEASE, m_ui.Lfo1ReleaseKnob); QObject::connect( m_ui.Lfo1ShapeKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Wave, SLOT(setWaveShape(float))); QObject::connect( m_ui.Lfo1Wave, SIGNAL(waveShapeChanged(float)), m_ui.Lfo1ShapeKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1WidthKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Wave, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Lfo1Wave, SIGNAL(waveWidthChanged(float)), m_ui.Lfo1WidthKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1Env, SIGNAL(attackChanged(float)), m_ui.Lfo1AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1AttackKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Env, SLOT(setAttack(float))); QObject::connect( m_ui.Lfo1Env, SIGNAL(decayChanged(float)), m_ui.Lfo1DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1DecayKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Env, SLOT(setDecay(float))); QObject::connect( m_ui.Lfo1Env, SIGNAL(sustainChanged(float)), m_ui.Lfo1SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1SustainKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Env, SLOT(setSustain(float))); QObject::connect( m_ui.Lfo1Env, SIGNAL(releaseChanged(float)), m_ui.Lfo1ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo1ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Lfo1Env, SLOT(setRelease(float))); // DCA1 setParamKnob(synthv1::DCA1_VOLUME, m_ui.Dca1VolumeKnob); setParamKnob(synthv1::DCA1_ATTACK, m_ui.Dca1AttackKnob); setParamKnob(synthv1::DCA1_DECAY, m_ui.Dca1DecayKnob); setParamKnob(synthv1::DCA1_SUSTAIN, m_ui.Dca1SustainKnob); setParamKnob(synthv1::DCA1_RELEASE, m_ui.Dca1ReleaseKnob); QObject::connect( m_ui.Dca1Env, SIGNAL(attackChanged(float)), m_ui.Dca1AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca1AttackKnob, SIGNAL(valueChanged(float)), m_ui.Dca1Env, SLOT(setAttack(float))); QObject::connect( m_ui.Dca1Env, SIGNAL(decayChanged(float)), m_ui.Dca1DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca1DecayKnob, SIGNAL(valueChanged(float)), m_ui.Dca1Env, SLOT(setDecay(float))); QObject::connect( m_ui.Dca1Env, SIGNAL(sustainChanged(float)), m_ui.Dca1SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca1SustainKnob, SIGNAL(valueChanged(float)), m_ui.Dca1Env, SLOT(setSustain(float))); QObject::connect( m_ui.Dca1Env, SIGNAL(releaseChanged(float)), m_ui.Dca1ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca1ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Dca1Env, SLOT(setRelease(float))); // DEF1 setParamKnob(synthv1::DEF1_PITCHBEND, m_ui.Def1PitchbendKnob); setParamKnob(synthv1::DEF1_MODWHEEL, m_ui.Def1ModwheelKnob); setParamKnob(synthv1::DEF1_PRESSURE, m_ui.Def1PressureKnob); setParamKnob(synthv1::DEF1_VELOCITY, m_ui.Def1VelocityKnob); setParamKnob(synthv1::DEF1_CHANNEL, m_ui.Def1ChannelKnob); setParamKnob(synthv1::DEF1_MONO, m_ui.Def1MonoKnob); // OUT1 setParamKnob(synthv1::OUT1_WIDTH, m_ui.Out1WidthKnob); setParamKnob(synthv1::OUT1_PANNING, m_ui.Out1PanningKnob); setParamKnob(synthv1::OUT1_VOLUME, m_ui.Out1VolumeKnob); // DCO2 setParamKnob(synthv1::DCO2_SHAPE1, m_ui.Dco2Shape1Knob); setParamKnob(synthv1::DCO2_WIDTH1, m_ui.Dco2Width1Knob); setParamKnob(synthv1::DCO2_BANDL1, m_ui.Dco2Bandl1Knob); setParamKnob(synthv1::DCO2_SHAPE2, m_ui.Dco2Shape2Knob); setParamKnob(synthv1::DCO2_WIDTH2, m_ui.Dco2Width2Knob); setParamKnob(synthv1::DCO2_BANDL2, m_ui.Dco2Bandl2Knob); setParamKnob(synthv1::DCO2_BALANCE, m_ui.Dco2BalanceKnob); setParamKnob(synthv1::DCO2_DETUNE, m_ui.Dco2DetuneKnob); setParamKnob(synthv1::DCO2_PHASE, m_ui.Dco2PhaseKnob); setParamKnob(synthv1::DCO2_OCTAVE, m_ui.Dco2OctaveKnob); setParamKnob(synthv1::DCO2_TUNING, m_ui.Dco2TuningKnob); setParamKnob(synthv1::DCO2_GLIDE, m_ui.Dco2GlideKnob); setParamKnob(synthv1::DCO2_ENVTIME, m_ui.Dco2EnvTimeKnob); QObject::connect( m_ui.Dco2Shape1Knob, SIGNAL(valueChanged(float)), m_ui.Dco2Wave1, SLOT(setWaveShape(float))); QObject::connect( m_ui.Dco2Wave1, SIGNAL(waveShapeChanged(float)), m_ui.Dco2Shape1Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco2Width1Knob, SIGNAL(valueChanged(float)), m_ui.Dco2Wave1, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Dco2Wave1, SIGNAL(waveWidthChanged(float)), m_ui.Dco2Width1Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco2Shape2Knob, SIGNAL(valueChanged(float)), m_ui.Dco2Wave2, SLOT(setWaveShape(float))); QObject::connect( m_ui.Dco2Wave2, SIGNAL(waveShapeChanged(float)), m_ui.Dco2Shape2Knob, SLOT(setValue(float))); QObject::connect( m_ui.Dco2Width2Knob, SIGNAL(valueChanged(float)), m_ui.Dco2Wave2, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Dco2Wave2, SIGNAL(waveWidthChanged(float)), m_ui.Dco2Width2Knob, SLOT(setValue(float))); // DCF2 setParamKnob(synthv1::DCF2_CUTOFF, m_ui.Dcf2CutoffKnob); setParamKnob(synthv1::DCF2_RESO, m_ui.Dcf2ResoKnob); setParamKnob(synthv1::DCF2_TYPE, m_ui.Dcf2TypeKnob); setParamKnob(synthv1::DCF2_SLOPE, m_ui.Dcf2SlopeKnob); setParamKnob(synthv1::DCF2_ENVELOPE, m_ui.Dcf2EnvelopeKnob); setParamKnob(synthv1::DCF2_ATTACK, m_ui.Dcf2AttackKnob); setParamKnob(synthv1::DCF2_DECAY, m_ui.Dcf2DecayKnob); setParamKnob(synthv1::DCF2_SUSTAIN, m_ui.Dcf2SustainKnob); setParamKnob(synthv1::DCF2_RELEASE, m_ui.Dcf2ReleaseKnob); QObject::connect( m_ui.Dcf2Filt, SIGNAL(cutoffChanged(float)), m_ui.Dcf2CutoffKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2CutoffKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Filt, SLOT(setCutoff(float))); QObject::connect( m_ui.Dcf2Filt, SIGNAL(resoChanged(float)), m_ui.Dcf2ResoKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2ResoKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Filt, SLOT(setReso(float))); QObject::connect( m_ui.Dcf2TypeKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Filt, SLOT(setType(float))); QObject::connect( m_ui.Dcf2SlopeKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Filt, SLOT(setSlope(float))); QObject::connect( m_ui.Dcf2Env, SIGNAL(attackChanged(float)), m_ui.Dcf2AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2AttackKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Env, SLOT(setAttack(float))); QObject::connect( m_ui.Dcf2Env, SIGNAL(decayChanged(float)), m_ui.Dcf2DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2DecayKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Env, SLOT(setDecay(float))); QObject::connect( m_ui.Dcf2Env, SIGNAL(sustainChanged(float)), m_ui.Dcf2SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2SustainKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Env, SLOT(setSustain(float))); QObject::connect( m_ui.Dcf2Env, SIGNAL(releaseChanged(float)), m_ui.Dcf2ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dcf2ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Dcf2Env, SLOT(setRelease(float))); // LFO2 setParamKnob(synthv1::LFO2_SHAPE, m_ui.Lfo2ShapeKnob); setParamKnob(synthv1::LFO2_WIDTH, m_ui.Lfo2WidthKnob); setParamKnob(synthv1::LFO2_RATE, m_ui.Lfo2RateKnob); setParamKnob(synthv1::LFO2_PANNING, m_ui.Lfo2PanningKnob); setParamKnob(synthv1::LFO2_VOLUME, m_ui.Lfo2VolumeKnob); setParamKnob(synthv1::LFO2_CUTOFF, m_ui.Lfo2CutoffKnob); setParamKnob(synthv1::LFO2_RESO, m_ui.Lfo2ResoKnob); setParamKnob(synthv1::LFO2_PITCH, m_ui.Lfo2PitchKnob); setParamKnob(synthv1::LFO2_SWEEP, m_ui.Lfo2SweepKnob); setParamKnob(synthv1::LFO2_ATTACK, m_ui.Lfo2AttackKnob); setParamKnob(synthv1::LFO2_DECAY, m_ui.Lfo2DecayKnob); setParamKnob(synthv1::LFO2_SUSTAIN, m_ui.Lfo2SustainKnob); setParamKnob(synthv1::LFO2_RELEASE, m_ui.Lfo2ReleaseKnob); QObject::connect( m_ui.Lfo2ShapeKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Wave, SLOT(setWaveShape(float))); QObject::connect( m_ui.Lfo2Wave, SIGNAL(waveShapeChanged(float)), m_ui.Lfo2ShapeKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2WidthKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Wave, SLOT(setWaveWidth(float))); QObject::connect( m_ui.Lfo2Wave, SIGNAL(waveWidthChanged(float)), m_ui.Lfo2WidthKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2Env, SIGNAL(attackChanged(float)), m_ui.Lfo2AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2AttackKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Env, SLOT(setAttack(float))); QObject::connect( m_ui.Lfo2Env, SIGNAL(decayChanged(float)), m_ui.Lfo2DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2DecayKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Env, SLOT(setDecay(float))); QObject::connect( m_ui.Lfo2Env, SIGNAL(sustainChanged(float)), m_ui.Lfo2SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2SustainKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Env, SLOT(setSustain(float))); QObject::connect( m_ui.Lfo2Env, SIGNAL(releaseChanged(float)), m_ui.Lfo2ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Lfo2ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Lfo2Env, SLOT(setRelease(float))); // DCA2 setParamKnob(synthv1::DCA2_VOLUME, m_ui.Dca2VolumeKnob); setParamKnob(synthv1::DCA2_ATTACK, m_ui.Dca2AttackKnob); setParamKnob(synthv1::DCA2_DECAY, m_ui.Dca2DecayKnob); setParamKnob(synthv1::DCA2_SUSTAIN, m_ui.Dca2SustainKnob); setParamKnob(synthv1::DCA2_RELEASE, m_ui.Dca2ReleaseKnob); QObject::connect( m_ui.Dca2Env, SIGNAL(attackChanged(float)), m_ui.Dca2AttackKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca2AttackKnob, SIGNAL(valueChanged(float)), m_ui.Dca2Env, SLOT(setAttack(float))); QObject::connect( m_ui.Dca2Env, SIGNAL(decayChanged(float)), m_ui.Dca2DecayKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca2DecayKnob, SIGNAL(valueChanged(float)), m_ui.Dca2Env, SLOT(setDecay(float))); QObject::connect( m_ui.Dca2Env, SIGNAL(sustainChanged(float)), m_ui.Dca2SustainKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca2SustainKnob, SIGNAL(valueChanged(float)), m_ui.Dca2Env, SLOT(setSustain(float))); QObject::connect( m_ui.Dca2Env, SIGNAL(releaseChanged(float)), m_ui.Dca2ReleaseKnob, SLOT(setValue(float))); QObject::connect( m_ui.Dca2ReleaseKnob, SIGNAL(valueChanged(float)), m_ui.Dca2Env, SLOT(setRelease(float))); // DEF2 setParamKnob(synthv1::DEF2_PITCHBEND, m_ui.Def2PitchbendKnob); setParamKnob(synthv1::DEF2_MODWHEEL, m_ui.Def2ModwheelKnob); setParamKnob(synthv1::DEF2_PRESSURE, m_ui.Def2PressureKnob); setParamKnob(synthv1::DEF2_VELOCITY, m_ui.Def2VelocityKnob); setParamKnob(synthv1::DEF2_CHANNEL, m_ui.Def2ChannelKnob); setParamKnob(synthv1::DEF2_MONO, m_ui.Def2MonoKnob); // OUT2 setParamKnob(synthv1::OUT2_WIDTH, m_ui.Out2WidthKnob); setParamKnob(synthv1::OUT2_PANNING, m_ui.Out2PanningKnob); setParamKnob(synthv1::OUT2_VOLUME, m_ui.Out2VolumeKnob); // Effects setParamKnob(synthv1::CHO1_WET, m_ui.Cho1WetKnob); setParamKnob(synthv1::CHO1_DELAY, m_ui.Cho1DelayKnob); setParamKnob(synthv1::CHO1_FEEDB, m_ui.Cho1FeedbKnob); setParamKnob(synthv1::CHO1_RATE, m_ui.Cho1RateKnob); setParamKnob(synthv1::CHO1_MOD, m_ui.Cho1ModKnob); setParamKnob(synthv1::FLA1_WET, m_ui.Fla1WetKnob); setParamKnob(synthv1::FLA1_DELAY, m_ui.Fla1DelayKnob); setParamKnob(synthv1::FLA1_FEEDB, m_ui.Fla1FeedbKnob); setParamKnob(synthv1::FLA1_DAFT, m_ui.Fla1DaftKnob); setParamKnob(synthv1::PHA1_WET, m_ui.Pha1WetKnob); setParamKnob(synthv1::PHA1_RATE, m_ui.Pha1RateKnob); setParamKnob(synthv1::PHA1_FEEDB, m_ui.Pha1FeedbKnob); setParamKnob(synthv1::PHA1_DEPTH, m_ui.Pha1DepthKnob); setParamKnob(synthv1::PHA1_DAFT, m_ui.Pha1DaftKnob); setParamKnob(synthv1::DEL1_WET, m_ui.Del1WetKnob); setParamKnob(synthv1::DEL1_DELAY, m_ui.Del1DelayKnob); setParamKnob(synthv1::DEL1_FEEDB, m_ui.Del1FeedbKnob); setParamKnob(synthv1::DEL1_BPM, m_ui.Del1BpmKnob); QObject::connect(m_ui.Del1BpmKnob, SIGNAL(valueChanged(float)), SLOT(bpmSyncChanged())); // Reverb setParamKnob(synthv1::REV1_WET, m_ui.Rev1WetKnob); setParamKnob(synthv1::REV1_ROOM, m_ui.Rev1RoomKnob); setParamKnob(synthv1::REV1_DAMP, m_ui.Rev1DampKnob); setParamKnob(synthv1::REV1_FEEDB, m_ui.Rev1FeedbKnob); setParamKnob(synthv1::REV1_WIDTH, m_ui.Rev1WidthKnob); // Dynamics setParamKnob(synthv1::DYN1_COMPRESS, m_ui.Dyn1CompressKnob); setParamKnob(synthv1::DYN1_LIMITER, m_ui.Dyn1LimiterKnob); // Preset management QObject::connect(m_ui.Preset, SIGNAL(newPresetFile()), SLOT(newPreset())); QObject::connect(m_ui.Preset, SIGNAL(loadPresetFile(const QString&)), SLOT(loadPreset(const QString&))); QObject::connect(m_ui.Preset, SIGNAL(savePresetFile(const QString&)), SLOT(savePreset(const QString&))); QObject::connect(m_ui.Preset, SIGNAL(resetPresetFile()), SLOT(resetParams())); // Swap params A/B QObject::connect(m_ui.SwapParamsAButton, SIGNAL(toggled(bool)), SLOT(swapParams(bool))); QObject::connect(m_ui.SwapParamsBButton, SIGNAL(toggled(bool)), SLOT(swapParams(bool))); // Direct stacked-page signal/slot QObject::connect(m_ui.TabBar, SIGNAL(currentChanged(int)), m_ui.StackedWidget, SLOT(setCurrentIndex(int))); // Menu actions QObject::connect(m_ui.helpConfigureAction, SIGNAL(triggered(bool)), SLOT(helpConfigure())); QObject::connect(m_ui.helpAboutAction, SIGNAL(triggered(bool)), SLOT(helpAbout())); QObject::connect(m_ui.helpAboutQtAction, SIGNAL(triggered(bool)), SLOT(helpAboutQt())); // General knob/dial behavior init... synthv1_config *pConfig = synthv1_config::getInstance(); if (pConfig) { synthv1widget_dial::setDialMode( synthv1widget_dial::DialMode(pConfig->iKnobDialMode)); } // Epilog. // QWidget::adjustSize(); m_ui.StatusBar->showMessage(tr("Ready"), 5000); m_ui.StatusBar->setModified(false); m_ui.Preset->setDirtyPreset(false); }
// Constructor. synthv1widget_preset::synthv1widget_preset ( QWidget *pParent ) : QWidget (pParent) { m_pNewButton = new QToolButton(); m_pOpenButton = new QToolButton(); m_pComboBox = new QComboBox(); m_pSaveButton = new QToolButton(); m_pDeleteButton = new QToolButton(); m_pResetButton = new QToolButton(); m_pNewButton->setIcon(QIcon(":/images/presetNew.png")); m_pOpenButton->setIcon(QIcon(":/images/presetOpen.png")); m_pComboBox->setEditable(true); m_pComboBox->setMinimumWidth(240); #if QT_VERSION >= 0x040200 m_pComboBox->setCompleter(NULL); #endif m_pComboBox->setInsertPolicy(QComboBox::NoInsert); m_pSaveButton->setIcon(QIcon(":/images/presetSave.png")); m_pDeleteButton->setIcon(QIcon(":/images/presetDelete.png")); m_pResetButton->setText("Reset"); m_pNewButton->setToolTip(tr("New Preset")); m_pOpenButton->setToolTip(tr("Open Preset")); m_pSaveButton->setToolTip(tr("Save Preset")); m_pDeleteButton->setToolTip(tr("Delete Preset")); m_pResetButton->setToolTip(tr("Reset Preset")); QHBoxLayout *pHBoxLayout = new QHBoxLayout(); pHBoxLayout->setMargin(2); pHBoxLayout->setSpacing(4); pHBoxLayout->addWidget(m_pNewButton); pHBoxLayout->addWidget(m_pOpenButton); pHBoxLayout->addWidget(m_pComboBox); pHBoxLayout->addWidget(m_pSaveButton); pHBoxLayout->addWidget(m_pDeleteButton); pHBoxLayout->addSpacing(4); pHBoxLayout->addWidget(m_pResetButton); QWidget::setLayout(pHBoxLayout); m_iInitPreset = 0; m_iDirtyPreset = 0; // UI signal/slot connections... QObject::connect(m_pNewButton, SIGNAL(clicked()), SLOT(newPreset())); QObject::connect(m_pOpenButton, SIGNAL(clicked()), SLOT(openPreset())); QObject::connect(m_pComboBox, SIGNAL(editTextChanged(const QString&)), SLOT(stabilizePreset())); QObject::connect(m_pComboBox, SIGNAL(activated(const QString&)), SLOT(activatePreset(const QString&))); QObject::connect(m_pSaveButton, SIGNAL(clicked()), SLOT(savePreset())); QObject::connect(m_pDeleteButton, SIGNAL(clicked()), SLOT(deletePreset())); QObject::connect(m_pResetButton, SIGNAL(clicked()), SLOT(resetPreset())); refreshPreset(); stabilizePreset(); }