diff options
Diffstat (limited to 'qmidiplayer-desktop/qmpefxwindow.cpp')
-rw-r--r-- | qmidiplayer-desktop/qmpefxwindow.cpp | 367 |
1 files changed, 224 insertions, 143 deletions
diff --git a/qmidiplayer-desktop/qmpefxwindow.cpp b/qmidiplayer-desktop/qmpefxwindow.cpp index 7691756..ec1cef3 100644 --- a/qmidiplayer-desktop/qmpefxwindow.cpp +++ b/qmidiplayer-desktop/qmpefxwindow.cpp @@ -4,215 +4,296 @@ #include "qmpmainwindow.hpp" qmpEfxWindow::qmpEfxWindow(QWidget *parent) : - QWidget(parent,Qt::Dialog), - ui(new Ui::qmpEfxWindow) -{ - ui->setupUi(this);initialized=false; - styl=new QDialSkulptureStyle(); - QList<QDial*> dials=findChildren<QDial*>(); - for(int i=0;i<dials.count();++i) - dials.at(i)->setStyle(styl); - qmpSettings *settings=qmpMainWindow::getInstance()->getSettings(); - ui->cbEnabledC->setChecked(settings->getOptionRaw("Effects/ChorusEnabled",1).toInt()); - ui->cbEnabledR->setChecked(settings->getOptionRaw("Effects/ReverbEnabled",1).toInt()); - rr=settings->getOptionRaw("Effects/ReverbRoom",0.2).toDouble(); - rd=settings->getOptionRaw("Effects/ReverbDamp",0.0).toDouble(); - rw=settings->getOptionRaw("Effects/ReverbWidth",0.5).toDouble(); - rl=settings->getOptionRaw("Effects/ReverbLevel",0.9).toDouble(); - - cfb=settings->getOptionRaw("Effects/ChorusFeedbk",3).toInt(); - cl=settings->getOptionRaw("Effects/ChorusLevel",2.0).toDouble(); - cr=settings->getOptionRaw("Effects/ChorusRate",0.3).toDouble(); - cd=settings->getOptionRaw("Effects/ChorusDepth",8.0).toDouble(); - ct=settings->getOptionRaw("Effects/ChorusType",FLUID_CHORUS_MOD_SINE).toInt(); - qmpMainWindow::getInstance()->registerFunctionality( - efxf=new qmpEfxFunc(this), - std::string("Effects"), - tr("Effects").toStdString(), - getThemedIconc(":/img/effects.svg"), - 0, - true - ); - if(settings->getOptionRaw("DialogStatus/EfxW",QRect(-999,-999,999,999)).toRect()!=QRect(-999,-999,999,999)) - setGeometry(settings->getOptionRaw("DialogStatus/EfxW",QRect(-999,-999,999,999)).toRect()); - if(settings->getOptionRaw("DialogStatus/EfxWShown",0).toInt()) - {show();qmpMainWindow::getInstance()->setFuncState("Effects",true);} + QWidget(parent, Qt::Dialog), + ui(new Ui::qmpEfxWindow) +{ + ui->setupUi(this); + initialized = false; + styl = new QDialSkulptureStyle(); + QList<QDial *> dials = findChildren<QDial *>(); + for (int i = 0; i < dials.count(); ++i) + dials.at(i)->setStyle(styl); + qmpSettings *settings = qmpMainWindow::getInstance()->getSettings(); + ui->cbEnabledC->setChecked(settings->getOptionRaw("Effects/ChorusEnabled", 1).toInt()); + ui->cbEnabledR->setChecked(settings->getOptionRaw("Effects/ReverbEnabled", 1).toInt()); + rr = settings->getOptionRaw("Effects/ReverbRoom", 0.2).toDouble(); + rd = settings->getOptionRaw("Effects/ReverbDamp", 0.0).toDouble(); + rw = settings->getOptionRaw("Effects/ReverbWidth", 0.5).toDouble(); + rl = settings->getOptionRaw("Effects/ReverbLevel", 0.9).toDouble(); + + cfb = settings->getOptionRaw("Effects/ChorusFeedbk", 3).toInt(); + cl = settings->getOptionRaw("Effects/ChorusLevel", 2.0).toDouble(); + cr = settings->getOptionRaw("Effects/ChorusRate", 0.3).toDouble(); + cd = settings->getOptionRaw("Effects/ChorusDepth", 8.0).toDouble(); + ct = settings->getOptionRaw("Effects/ChorusType", FLUID_CHORUS_MOD_SINE).toInt(); + qmpMainWindow::getInstance()->registerFunctionality( + efxf = new qmpEfxFunc(this), + std::string("Effects"), + tr("Effects").toStdString(), + getThemedIconc(":/img/effects.svg"), + 0, + true + ); + if (settings->getOptionRaw("DialogStatus/EfxW", QRect(-999, -999, 999, 999)).toRect() != QRect(-999, -999, 999, 999)) + setGeometry(settings->getOptionRaw("DialogStatus/EfxW", QRect(-999, -999, 999, 999)).toRect()); + if (settings->getOptionRaw("DialogStatus/EfxWShown", 0).toInt()) + { + show(); + qmpMainWindow::getInstance()->setFuncState("Effects", true); + } } qmpEfxWindow::~qmpEfxWindow() { - qmpMainWindow::getInstance()->unregisterFunctionality("Effects"); - delete efxf; - delete styl; - delete ui; + qmpMainWindow::getInstance()->unregisterFunctionality("Effects"); + delete efxf; + delete styl; + delete ui; } void qmpEfxWindow::closeEvent(QCloseEvent *event) { - qmpSettings *settings=qmpMainWindow::getInstance()->getSettings(); - if(settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/EfxW",geometry()); - } - setVisible(false); - if(!qmpMainWindow::getInstance()->isFinalizing()&&settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/EfxWShown",0); - } - qmpMainWindow::getInstance()->setFuncState("Effects",false); - event->accept(); + qmpSettings *settings = qmpMainWindow::getInstance()->getSettings(); + if (settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/EfxW", geometry()); + } + setVisible(false); + if (!qmpMainWindow::getInstance()->isFinalizing() && settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/EfxWShown", 0); + } + qmpMainWindow::getInstance()->setFuncState("Effects", false); + event->accept(); } void qmpEfxWindow::showEvent(QShowEvent *event) { - //CMidiPlayer* player=qmpMainWindow::getInstance()->getPlayer(); - //These parameters will never be modified outside this window... - /*if(initialized) - { - player->getReverbPara(&rr,&rd,&rw,&rl); - player->getChorusPara(&cfb,&cl,&cr,&cd,&ct); - }*/ - ui->sbRoom->setValue((int)round(rr*100));ui->dRoom->setValue((int)round(rr*100)); - ui->sbDamp->setValue((int)round(rd*100));ui->dDamp->setValue((int)round(rd*100)); - ui->sbWidth->setValue((int)round(rw*100));ui->dWidth->setValue((int)round(rw*100)); - ui->sbLevelR->setValue((int)round(rl*100));ui->dLevelR->setValue((int)round(rl*100)); - - ui->sbFeedBack->setValue(cfb);ui->dFeedBack->setValue(cfb); - ui->sbRate->setValue(cr);ui->dRate->setValue((int)round(cr*100)); - ui->sbDepth->setValue(cd);ui->dDepth->setValue((int)round(cd*10)); - ui->sbLevelC->setValue((int)round(cl*100));ui->dLevelC->setValue((int)round(cl*100)); - if(ct==FLUID_CHORUS_MOD_SINE)ui->rbSine->setChecked(true),ui->rbTriangle->setChecked(false); - if(ct==FLUID_CHORUS_MOD_TRIANGLE)ui->rbSine->setChecked(false),ui->rbTriangle->setChecked(true); - initialized=true; - qmpSettings *settings=qmpMainWindow::getInstance()->getSettings(); - if(settings->getOptionRaw("DialogStatus/EfxW",QRect(-999,-999,999,999)).toRect()!=QRect(-999,-999,999,999)) - setGeometry(settings->getOptionRaw("DialogStatus/EfxW",QRect(-999,-999,999,999)).toRect()); - if(settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/EfxWShown",1); - } - event->accept(); + //These parameters will never be modified outside this window... + /*if(initialized) + { + player->getReverbPara(&rr,&rd,&rw,&rl); + player->getChorusPara(&cfb,&cl,&cr,&cd,&ct); + }*/ + ui->sbRoom->setValue((int)round(rr * 100)); + ui->dRoom->setValue((int)round(rr * 100)); + ui->sbDamp->setValue((int)round(rd * 100)); + ui->dDamp->setValue((int)round(rd * 100)); + ui->sbWidth->setValue((int)round(rw * 100)); + ui->dWidth->setValue((int)round(rw * 100)); + ui->sbLevelR->setValue((int)round(rl * 100)); + ui->dLevelR->setValue((int)round(rl * 100)); + + ui->sbFeedBack->setValue(cfb); + ui->dFeedBack->setValue(cfb); + ui->sbRate->setValue(cr); + ui->dRate->setValue((int)round(cr * 100)); + ui->sbDepth->setValue(cd); + ui->dDepth->setValue((int)round(cd * 10)); + ui->sbLevelC->setValue((int)round(cl * 100)); + ui->dLevelC->setValue((int)round(cl * 100)); + if (ct == FLUID_CHORUS_MOD_SINE) + { + ui->rbSine->setChecked(true); + ui->rbTriangle->setChecked(false); + } + if (ct == FLUID_CHORUS_MOD_TRIANGLE) + { + ui->rbSine->setChecked(false); + ui->rbTriangle->setChecked(true); + } + initialized = true; + qmpSettings *settings = qmpMainWindow::getInstance()->getSettings(); + if (settings->getOptionRaw("DialogStatus/EfxW", QRect(-999, -999, 999, 999)).toRect() != QRect(-999, -999, 999, 999)) + setGeometry(settings->getOptionRaw("DialogStatus/EfxW", QRect(-999, -999, 999, 999)).toRect()); + if (settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/EfxWShown", 1); + } + event->accept(); } void qmpEfxWindow::sendEfxChange(void *_fs) { - if(!qmpMainWindow::getInstance()||!initialized)return; - rr=ui->sbRoom->value()/100.;rd=ui->sbDamp->value()/100.; - rw=ui->sbWidth->value()/100.;rl=ui->sbLevelR->value()/100.; - ct=ui->rbSine->isChecked()?FLUID_CHORUS_MOD_SINE:FLUID_CHORUS_MOD_TRIANGLE; - cfb=ui->sbFeedBack->value();cl=ui->sbLevelC->value()/100.; - cr=ui->sbRate->value();cd=ui->sbDepth->value(); - IFluidSettings* fs=(IFluidSettings*)_fs; - if(!_fs)fs=qmpMainWindow::getInstance()->getFluid(); - fs->setReverbPara(ui->cbEnabledR->isChecked()?1:0,rr,rd,rw,rl); - fs->setChorusPara(ui->cbEnabledC->isChecked()?1:0,cfb,cl,cr,cd,ct); - - qmpSettings *settings=qmpMainWindow::getInstance()->getSettings(); - settings->setOptionRaw("Effects/ChorusEnabled",ui->cbEnabledC->isChecked()?1:0); - settings->setOptionRaw("Effects/ReverbEnabled",ui->cbEnabledR->isChecked()?1:0); - settings->setOptionRaw("Effects/ReverbRoom",rr); - settings->setOptionRaw("Effects/ReverbDamp",rd); - settings->setOptionRaw("Effects/ReverbWidth",rw); - settings->setOptionRaw("Effects/ReverbLevel",rl); - - settings->setOptionRaw("Effects/ChorusFeedbk",cfb); - settings->setOptionRaw("Effects/ChorusLevel",cl); - settings->setOptionRaw("Effects/ChorusRate",cr); - settings->setOptionRaw("Effects/ChorusDepth",cd); - settings->setOptionRaw("Effects/ChorusType",ct); + if (!qmpMainWindow::getInstance() || !initialized) + return; + rr = ui->sbRoom->value() / 100.; + rd = ui->sbDamp->value() / 100.; + rw = ui->sbWidth->value() / 100.; + rl = ui->sbLevelR->value() / 100.; + ct = ui->rbSine->isChecked() ? FLUID_CHORUS_MOD_SINE : FLUID_CHORUS_MOD_TRIANGLE; + cfb = ui->sbFeedBack->value(); + cl = ui->sbLevelC->value() / 100.; + cr = ui->sbRate->value(); + cd = ui->sbDepth->value(); + IFluidSettings *fs = (IFluidSettings *)_fs; + if (!_fs) + fs = qmpMainWindow::getInstance()->getFluid(); + fs->setReverbPara(ui->cbEnabledR->isChecked() ? 1 : 0, rr, rd, rw, rl); + fs->setChorusPara(ui->cbEnabledC->isChecked() ? 1 : 0, cfb, cl, cr, cd, ct); + + qmpSettings *settings = qmpMainWindow::getInstance()->getSettings(); + settings->setOptionRaw("Effects/ChorusEnabled", ui->cbEnabledC->isChecked() ? 1 : 0); + settings->setOptionRaw("Effects/ReverbEnabled", ui->cbEnabledR->isChecked() ? 1 : 0); + settings->setOptionRaw("Effects/ReverbRoom", rr); + settings->setOptionRaw("Effects/ReverbDamp", rd); + settings->setOptionRaw("Effects/ReverbWidth", rw); + settings->setOptionRaw("Effects/ReverbLevel", rl); + + settings->setOptionRaw("Effects/ChorusFeedbk", cfb); + settings->setOptionRaw("Effects/ChorusLevel", cl); + settings->setOptionRaw("Effects/ChorusRate", cr); + settings->setOptionRaw("Effects/ChorusDepth", cd); + settings->setOptionRaw("Effects/ChorusType", ct); } void qmpEfxWindow::dailValueChange() { - if(!initialized)return; - ui->sbRoom->setValue(ui->dRoom->value()); - ui->sbDamp->setValue(ui->dDamp->value()); - ui->sbWidth->setValue(ui->dWidth->value()); - ui->sbLevelR->setValue(ui->dLevelR->value()); - ui->sbFeedBack->setValue(ui->dFeedBack->value()); - ui->sbRate->setValue(ui->dRate->value()/100.); - ui->sbDepth->setValue(ui->dDepth->value()/10.); - ui->sbLevelC->setValue(ui->dLevelC->value()); - sendEfxChange(); + if (!initialized) + return; + ui->sbRoom->setValue(ui->dRoom->value()); + ui->sbDamp->setValue(ui->dDamp->value()); + ui->sbWidth->setValue(ui->dWidth->value()); + ui->sbLevelR->setValue(ui->dLevelR->value()); + ui->sbFeedBack->setValue(ui->dFeedBack->value()); + ui->sbRate->setValue(ui->dRate->value() / 100.); + ui->sbDepth->setValue(ui->dDepth->value() / 10.); + ui->sbLevelC->setValue(ui->dLevelC->value()); + sendEfxChange(); } void qmpEfxWindow::spinValueChange() { - if(!initialized)return; - ui->dRoom->setValue(ui->sbRoom->value()); - ui->dDamp->setValue(ui->sbDamp->value()); - ui->dWidth->setValue(ui->sbWidth->value()); - ui->dLevelR->setValue(ui->sbLevelR->value()); - ui->dFeedBack->setValue(ui->sbFeedBack->value()); - ui->dRate->setValue((int)(ui->sbRate->value()*100)); - ui->dDepth->setValue((int)(ui->sbDepth->value()*10)); - ui->dLevelC->setValue(ui->sbLevelC->value()); - sendEfxChange(); + if (!initialized) + return; + ui->dRoom->setValue(ui->sbRoom->value()); + ui->dDamp->setValue(ui->sbDamp->value()); + ui->dWidth->setValue(ui->sbWidth->value()); + ui->dLevelR->setValue(ui->sbLevelR->value()); + ui->dFeedBack->setValue(ui->sbFeedBack->value()); + ui->dRate->setValue((int)(ui->sbRate->value() * 100)); + ui->dDepth->setValue((int)(ui->sbDepth->value() * 10)); + ui->dLevelC->setValue(ui->sbLevelC->value()); + sendEfxChange(); } void qmpEfxWindow::on_dRoom_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dDamp_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dWidth_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dLevelR_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dFeedBack_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dRate_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dDepth_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_dLevelC_valueChanged() -{dailValueChange();} +{ + dailValueChange(); +} void qmpEfxWindow::on_sbRoom_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbDamp_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbWidth_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbLevelR_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbFeedBack_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbRate_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbDepth_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_sbLevelC_valueChanged(QString s) -{s=QString();spinValueChange();} +{ + s = QString(); + spinValueChange(); +} void qmpEfxWindow::on_cbEnabledC_stateChanged() -{sendEfxChange();} +{ + sendEfxChange(); +} void qmpEfxWindow::on_cbEnabledR_stateChanged() -{sendEfxChange();} +{ + sendEfxChange(); +} void qmpEfxWindow::on_rbSine_toggled() -{sendEfxChange();} +{ + sendEfxChange(); +} void qmpEfxWindow::on_rbTriangle_toggled() -{sendEfxChange();} +{ + sendEfxChange(); +} qmpEfxFunc::qmpEfxFunc(qmpEfxWindow *par) -{p=par;} +{ + p = par; +} void qmpEfxFunc::show() -{p->show();} +{ + p->show(); +} void qmpEfxFunc::close() -{p->close();} +{ + p->close(); +} |