diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-04-18 13:27:36 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-04-18 13:27:36 +0000 |
| commit | 1777472932392a99c8ea7da8b35dee0535998ae5 (patch) | |
| tree | 0ea698b9d3610348e49caeb2b979025558534052 /src/plugins/Effect/ladspa | |
| parent | 03580534cc6896edcddcb9a8e1e10b9bdaa819d5 (diff) | |
| download | qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.tar.gz qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.tar.bz2 qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.zip | |
fixed ladspa plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1681 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect/ladspa')
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahost.cpp | 53 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahost.h | 2 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspaslider.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/settingsdialog.cpp | 6 |
4 files changed, 56 insertions, 8 deletions
diff --git a/src/plugins/Effect/ladspa/ladspahost.cpp b/src/plugins/Effect/ladspa/ladspahost.cpp index 2e84fe205..f18b9312b 100644 --- a/src/plugins/Effect/ladspa/ladspahost.cpp +++ b/src/plugins/Effect/ladspa/ladspahost.cpp @@ -23,6 +23,7 @@ #include <QByteArray> #include <QDir> #include <QFileInfo> +#include <QSettings> #include <math.h> #include <stdlib.h> #include <dlfcn.h> @@ -46,15 +47,59 @@ LADSPAHost::LADSPAHost(QObject *parent) : QObject(parent) m_freq = 0; m_instance = this; findAllPlugins(); + + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + int p = settings.value("LADSPA/plugins_number", 0).toInt(); + for(int i = 0; i < p; ++i) + { + QString section = QString("LADSPA_%1/").arg(i); + int id = settings.value(section +"id").toInt(); + QString file = settings.value(section +"file").toString(); + int ports = settings.value(section +"ports").toInt(); + + + LADSPAPlugin *plugin = 0; + foreach(LADSPAPlugin *p, plugins()) + { + if(p->unique_id == id) + { + plugin = p; + break; + } + } + if(!plugin) + continue; + + LADSPAEffect *effect = addPlugin(plugin); + for(int j = 0; j < ports; ++j) + { + double value = settings.value(section + QString("port%1").arg(j)).toDouble(); + effect->knobs[j] = value; + } + } } LADSPAHost::~LADSPAHost() { m_instance = 0; - foreach(LADSPAEffect *instance, m_effects) + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("LADSPA/plugins_number", m_effects.count()); + for(int i = 0; i < m_effects.count(); ++i) { - unload(instance); + QString section = QString("LADSPA_%1/").arg(i); + settings.setValue(section +"id", (quint64)m_effects[i]->descriptor->UniqueID); + settings.setValue(section +"file", m_effects[i]->fileName); + + int ports = qMin((int)m_effects[i]->descriptor->PortCount, MAX_KNOBS); + settings.setValue(section +"ports", ports); + for(int j = 0; j < ports; ++j) + { + settings.setValue(section + QString("port%1").arg(j), + m_effects[i]->knobs[j]); + } } + foreach(LADSPAEffect *effect, m_effects) + unload(effect); } void LADSPAHost::configure(quint32 freq, int chan, Qmmp::AudioFormat format) @@ -93,7 +138,7 @@ QList <LADSPAPlugin *> LADSPAHost::plugins() return m_plugins; } -QList <LADSPAEffect *> LADSPAHost::runningPlugins() +QList <LADSPAEffect *> LADSPAHost::effects() { return m_effects; } @@ -112,6 +157,8 @@ void LADSPAHost::findAllPlugins() /* Fallback, look in obvious places */ directories << "/usr/lib/ladspa"; directories << "/usr/local/lib/ladspa"; + directories << "/usr/lib64/ladspa"; + directories << "/usr/local/lib64/ladspa"; } else directories = ladspa_path.split(':'); diff --git a/src/plugins/Effect/ladspa/ladspahost.h b/src/plugins/Effect/ladspa/ladspahost.h index 2a35d7bbc..9d65f0f49 100644 --- a/src/plugins/Effect/ladspa/ladspahost.h +++ b/src/plugins/Effect/ladspa/ladspahost.h @@ -86,7 +86,7 @@ public: int applyEffect(qint16 *d, int length); void configure(quint32 freq, int chan, Qmmp::AudioFormat format); QList <LADSPAPlugin *> plugins(); - QList <LADSPAEffect *> runningPlugins(); + QList <LADSPAEffect *> effects(); LADSPAEffect *addPlugin(LADSPAPlugin * plugin); void unload(LADSPAEffect *instance); static LADSPAHost* instance(); diff --git a/src/plugins/Effect/ladspa/ladspaslider.cpp b/src/plugins/Effect/ladspa/ladspaslider.cpp index 9430ec539..b9e3c8d85 100644 --- a/src/plugins/Effect/ladspa/ladspaslider.cpp +++ b/src/plugins/Effect/ladspa/ladspaslider.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -64,5 +64,6 @@ void LADSPASlider::setValue(int v) { m_spinBox->blockSignals(true); m_spinBox->setValue(v*m_step + m_min); + *m_value = v*m_step + m_min; m_spinBox->blockSignals(false); } diff --git a/src/plugins/Effect/ladspa/settingsdialog.cpp b/src/plugins/Effect/ladspa/settingsdialog.cpp index 5ea760be9..a78fa8c5a 100644 --- a/src/plugins/Effect/ladspa/settingsdialog.cpp +++ b/src/plugins/Effect/ladspa/settingsdialog.cpp @@ -80,7 +80,7 @@ void SettingsDialog::on_unloadButton_clicked() QModelIndex index = ui.runningListWidget->currentIndex (); if(index.isValid()) { - l->unload(l->runningPlugins().at(index.row())); + l->unload(l->effects().at(index.row())); updateRunningPlugins(); } } @@ -92,7 +92,7 @@ void SettingsDialog::on_configureButton_clicked() if(!index.isValid()) return; - LADSPAEffect *effect = l->runningPlugins().at(index.row()); + LADSPAEffect *effect = l->effects().at(index.row()); QDialog *dialog = new QDialog(this); dialog->setWindowTitle(effect->descriptor->Name); QFormLayout *formLayout = new QFormLayout(dialog); @@ -132,7 +132,7 @@ void SettingsDialog::accept() void SettingsDialog::updateRunningPlugins() { ui.runningListWidget->clear(); - QList <LADSPAEffect *> plugin_list = LADSPAHost::instance()->runningPlugins(); + QList <LADSPAEffect *> plugin_list = LADSPAHost::instance()->effects(); for(int i = 0; i < plugin_list.size(); ++i) ui.runningListWidget->addItem(plugin_list[i]->descriptor->Name); |
