Beispiel #1
0
void Music::onTxtMsg(const std::string& text)
{
    if(text=="stop")
    {
        stop();
    } else if(text=="replay")
    {
        replay();
    } else if(text=="+")
    {
        adjustVolume(+0.1);
    } else if(text=="-")
    {
        adjustVolume(-0.1);
    } else if(text == "status")
    {
        std::ostringstream strs;
        strs << volume *100;
        std::string msg = "Dolanik status: <br />";
        msg += "Current volume = " + strs.str() + "%<br />";
        if(playback)
            msg += "I'm currently playing song : "+ currentSong->getTitle() 
              + "(Length:" /*"+ Anal::toStr(getCurrentSongLength()) +" */ "s ) <br />"; //FIXME
        mc->SendTextMessage("music",msg);
    } else if(text == "playlist")
    {
      mc->SendTextMessage("music", genPlaylistString());
    } else if(text.substr(0, 2) == "eq") {
        int band = -1;
        double amp = -1;

        if(text.substr(3, 5) == "reset") {
            resetEqualizer();
            return;
        }

        std::stringstream ss;
        ss << text.substr(2);
        ss >> band;
        ss >> amp;

        setEqualizer(band,amp);
    } else if(text == "help")
Beispiel #2
0
AudioEqualizerDialog::AudioEqualizerDialog(QWidget *parent)
    : QDialog(parent), d(new Data)
{
    d->p = this;

    auto vbox = new QVBoxLayout;

    auto hbox = new QHBoxLayout;

    hbox->addWidget(new QLabel(tr("Preset")));
    d->presets = new QComboBox;
    d->presets->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
    for (int i = 0; i < Eq::MaxPreset; ++i)
        d->presets->addItem(AudioEqualizer::name((Preset)i), i);
    auto sig = static_cast<Signal<QComboBox, int>>(&QComboBox::currentIndexChanged);
    auto load = [=] () {
        auto data = d->presets->currentData();
        if (data.type() == (int)QMetaType::Int)
            setEqualizer(Eq(Preset(data.toInt())));
    };
    connect(d->presets, sig, this, load);
    hbox->addWidget(d->presets);

    auto button = new QPushButton(tr("Load"));
    connect(button, &QPushButton::clicked, this, load);
    hbox->addWidget(button);
    vbox->addLayout(hbox);

    hbox = new QHBoxLayout;
    auto font = this->font();
    font.setPointSizeF(font.pointSizeF()*0.8);
    const int w = QFontMetrics(font).width(u"+20.0dB"_q) + 2;
    for (int i = 0; i < Eq::bands(); ++i) {
        auto s = d->sliders[i] = new QSlider;
        s->setOrientation(Qt::Vertical);
        s->setRange(Eq::min() * Factor, Eq::max() * Factor);
        s->setFixedWidth(w);
        auto vbox = new QVBoxLayout;
        const auto f = Eq::freqeuncy(i);
        const QString fq = f < 999.9 ? (QString::number(f) % "Hz"_a)
                                     : (QString::number(f/1000.0) % "kHz"_a);
        auto label = new QLabel(fq);
        label->setFont(font);
        label->setAlignment(Qt::AlignCenter);
        vbox->addWidget(label);
        vbox->addWidget(s);
        auto dB = new QLabel("0.0dB"_a);
        dB->setFont(font);
        dB->setAlignment(Qt::AlignCenter);
        vbox->addWidget(dB);
        hbox->addLayout(vbox);

        connect(s, &QSlider::valueChanged, this, [=] () {
            const auto v = s->value()/(double)Factor;
            dB->setText((v > 0 ? "+"_a : ""_a) % QString::number(v, 'f', 1) % "dB"_a);
            if (_Change(d->eq[i], v) && d->update)
                d->update(d->eq);
        });
    }
    vbox->addLayout(hbox);
    setLayout(vbox);

    _SetWindowTitle(this, tr("Audio Equalizer"));
}