aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Effect/ladspa
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-04-18 13:27:36 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-04-18 13:27:36 +0000
commit1777472932392a99c8ea7da8b35dee0535998ae5 (patch)
tree0ea698b9d3610348e49caeb2b979025558534052 /src/plugins/Effect/ladspa
parent03580534cc6896edcddcb9a8e1e10b9bdaa819d5 (diff)
downloadqmmp-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.cpp53
-rw-r--r--src/plugins/Effect/ladspa/ladspahost.h2
-rw-r--r--src/plugins/Effect/ladspa/ladspaslider.cpp3
-rw-r--r--src/plugins/Effect/ladspa/settingsdialog.cpp6
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);