[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/... |
Date: |
Fri, 20 Apr 2007 12:17:31 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/04/20 12:17:31
Modified files:
src/plugins/LV2: LV2Plugin.cpp LV2Plugin.h
src/plugins : PluginManager.cpp PluginManager.h
src/traverso/songcanvas: PluginChainView.cpp PluginView.cpp
Log message:
* merged Nicolas slv2 patch
* updated patch to compile and work with latest slv2
* some minor plugin painting updates
* download and compile the swh lv2 plugins, and have fun :)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/LV2/LV2Plugin.cpp?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/LV2/LV2Plugin.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/PluginManager.cpp?cvsroot=traverso&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/PluginManager.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginChainView.cpp?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginView.cpp?cvsroot=traverso&r1=1.13&r2=1.14
Patches:
Index: plugins/LV2/LV2Plugin.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/LV2/LV2Plugin.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- plugins/LV2/LV2Plugin.cpp 19 Jan 2007 12:15:27 -0000 1.4
+++ plugins/LV2/LV2Plugin.cpp 20 Apr 2007 12:17:31 -0000 1.5
@@ -1,4 +1,4 @@
-/*Copyright (C) 2006 Remon Sijrier
+/*Copyright (C) 2006-2007 Remon Sijrier
This file is part of Traverso
@@ -16,9 +16,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: LV2Plugin.cpp,v 1.4 2007/01/19 12:15:27 r_sijrier Exp $
-
-slv2 url: http://codeson.net/svn/libslv2/
*/
@@ -28,21 +25,27 @@
#include <PluginManager.h>
#include <AudioBus.h>
#include <AudioDevice.h>
+#include <Utils.h>
+
#include <Debugger.h>
-#define C_(x) x.toAscii().data()
#define UC_(x) (const unsigned char* ) x.toAscii().data()
LV2Plugin::LV2Plugin()
- : Plugin(), m_instance(0), m_plugin(0)
+ : Plugin()
+ , m_instance(0)
+ , m_slv2plugin(0)
{
}
LV2Plugin::LV2Plugin(char* pluginUri)
- : Plugin(), m_pluginUri((char*) pluginUri), m_instance(0), m_plugin(0)
+ : Plugin()
+ , m_pluginUri((char*) pluginUri)
+ , m_instance(0)
+ , m_slv2plugin(0)
{
}
@@ -155,10 +158,10 @@
}
/* Create ports */
- int numPorts = slv2_plugin_get_num_ports(m_plugin);
- printf("numports is %d\n", (int) numPorts);
+ m_portcount = slv2_plugin_get_num_ports(m_slv2plugin);
+ printf("numports is %d\n", (int) m_portcount);
- for (int i=0; i < numPorts; ++i) {
+ for (int i=0; i < m_portcount; ++i) {
LV2ControlPort* port = create_port(i);
if (port) {
m_controlPorts.append(port);
@@ -171,12 +174,12 @@
slv2_instance_activate(m_instance);
if (m_audioInputPorts.size() == 0) {
- PERROR("Plugin %s has no audio input ports set!!",
C_(get_name()));
+ PERROR("Plugin %s has no audio input ports set!!",
QS_C(get_name()));
return -1;
}
if (m_audioOutputPorts.size() == 0) {
- PERROR("Plugin %s has no audio output ports set!!",
C_(get_name()));
+ PERROR("Plugin %s has no audio output ports set!!",
QS_C(get_name()));
return -1;
}
@@ -186,24 +189,24 @@
int LV2Plugin::create_instance()
{
- printf("URI:\t%s\n", C_(m_pluginUri));
+ printf("URI:\t%s\n", QS_C(m_pluginUri));
- m_plugin =
slv2_list_get_plugin_by_uri(PluginManager::instance()->get_slv2_plugin_list(),
C_(m_pluginUri));
+ m_slv2plugin =
slv2_plugins_get_by_uri(PluginManager::instance()->get_slv2_plugin_list(),
QS_C(m_pluginUri));
- if (! m_plugin) {
- fprintf(stderr, "Failed to find plugin %s.\n", C_(m_pluginUri));
+ if (! m_slv2plugin) {
+ fprintf(stderr, "Failed to find plugin %s.\n",
QS_C(m_pluginUri));
return -1;
}
/* Get the plugin's name */
- char* name = slv2_plugin_get_name(m_plugin);
+ char* name = slv2_plugin_get_name(m_slv2plugin);
printf("Name:\t%s\n", name);
/* Instantiate the plugin */
int samplerate = audiodevice().get_sample_rate();
- m_instance = slv2_plugin_instantiate(m_plugin, samplerate, NULL);
+ m_instance = slv2_plugin_instantiate(m_slv2plugin, samplerate, NULL);
if (! m_instance) {
printf("Failed to instantiate plugin.\n");
@@ -222,57 +225,50 @@
return;
}
- /* Connect the AudioBus Channel buffers to the plugin instance */
-// for (int index = 0; index < (int)bus->get_channel_count(); ++index) {
+ for (int i=0; i<m_audioInputPorts.size(); ++i) {
+ AudioInputPort* port = m_audioInputPorts.at(i);
+ int index = port->get_index();
+ slv2_instance_connect_port(m_instance, index,
bus->get_buffer(i, (nframes_t)nframes));
+ }
- slv2_instance_connect_port(m_instance, 1, bus->get_buffer(0,
(nframes_t)nframes));
- slv2_instance_connect_port(m_instance, 2, bus->get_buffer(0,
(nframes_t)nframes));
-// }
+ for (int i=0; i<m_audioOutputPorts.size(); ++i) {
+ AudioOutputPort* port = m_audioOutputPorts.at(i);
+ int index = port->get_index();
+ slv2_instance_connect_port(m_instance, index,
bus->get_buffer(i, (nframes_t)nframes));
+ }
/* Run plugin for this cycle */
slv2_instance_run(m_instance, nframes);
-
- slv2_instance_connect_port(m_instance, 1, bus->get_buffer(1,
(nframes_t)nframes));
- slv2_instance_connect_port(m_instance, 2, bus->get_buffer(1,
(nframes_t)nframes));
-
- slv2_instance_run(m_instance, nframes);
}
LV2ControlPort* LV2Plugin::create_port(int portIndex)
{
- LV2ControlPort* port = (LV2ControlPort*) 0;
+ LV2ControlPort* ctrlport = (LV2ControlPort*) 0;
- /* Make sure this is a float port */
- char* type = (char*) slv2_port_get_data_type(m_plugin, portIndex);
-
- if (strcmp(type, SLV2_DATA_TYPE_FLOAT)) {
- PERROR("Unrecognized data type.");
- return port;
- }
- free(type);
+ SLV2Port slvport = slv2_plugin_get_port_by_index(m_slv2plugin,
portIndex);
/* Get the port symbol (label) for console printing */
- char* symbol = (char*) slv2_port_get_symbol(m_plugin, portIndex);
+ char* symbol = slv2_port_get_symbol(m_slv2plugin, slvport);
/* Get the 'class' of the port (control input, audio output, etc) */
- enum SLV2PortClass portClass = slv2_port_get_class(m_plugin, portIndex);
+ SLV2PortClass portClass = slv2_port_get_class(m_slv2plugin, slvport);
/* Create the port based on it's 'class' */
switch (portClass) {
- case SLV2_CONTROL_RATE_INPUT:
- port = new LV2ControlPort(this, portIndex);
+ case SLV2_CONTROL_INPUT:
+ ctrlport = new LV2ControlPort(this, portIndex,
slv2_port_get_default_value(m_slv2plugin, slvport));
printf("Set %s to ", symbol);
break;
- case SLV2_CONTROL_RATE_OUTPUT:
- port = new LV2ControlPort(this, portIndex);
+ case SLV2_CONTROL_OUTPUT:
+ ctrlport = new LV2ControlPort(this, portIndex, 0);
printf("Set %s to ", symbol);
break;
- case SLV2_AUDIO_RATE_INPUT:
+ case SLV2_AUDIO_INPUT:
m_audioInputPorts.append(new AudioInputPort(this,
portIndex));
break;
- case SLV2_AUDIO_RATE_OUTPUT:
+ case SLV2_AUDIO_OUTPUT:
m_audioOutputPorts.append(new AudioOutputPort(this,
portIndex));
break;
default:
@@ -281,32 +277,36 @@
free(symbol);
- return port;
+ return ctrlport;
}
QString LV2Plugin::get_name( )
{
- return QString( (char*) slv2_plugin_get_name(m_plugin));
+ return QString(slv2_plugin_get_name(m_slv2plugin));
}
-LV2ControlPort::LV2ControlPort(LV2Plugin* plugin, int index)
- : PluginPort(plugin, index), m_plugin(plugin)
-{
- m_controlValue =
slv2_port_get_default_value(m_plugin->get_slv2_plugin(), m_index);
- slv2_instance_connect_port(m_plugin->get_instance(), m_index,
&m_controlValue);
+/*********************************************************/
+/* LV2 Control Port */
+/*********************************************************/
+
- printf(" %f\n", m_controlValue);
+LV2ControlPort::LV2ControlPort(LV2Plugin* plugin, int index, float value)
+ : PluginPort(plugin, index)
+ , m_lv2plugin(plugin)
+ , m_controlValue(value)
+{
+ slv2_instance_connect_port(m_lv2plugin->get_instance(), m_index,
&m_controlValue);
}
LV2ControlPort::LV2ControlPort( LV2Plugin * plugin, const QDomNode node )
- : PluginPort(plugin), m_plugin(plugin)
+ : PluginPort(plugin), m_lv2plugin(plugin)
{
set_state(node);
- slv2_instance_connect_port(m_plugin->get_instance(), m_index,
&m_controlValue);
+ slv2_instance_connect_port(m_lv2plugin->get_instance(), m_index,
&m_controlValue);
}
@@ -332,29 +332,23 @@
float LV2ControlPort::get_min_control_value()
{
- return slv2_port_get_minimum_value (m_plugin->get_slv2_plugin(),
m_index);
+ SLV2Port port =
slv2_plugin_get_port_by_index(m_lv2plugin->get_slv2_plugin(), m_index);
+ return slv2_port_get_minimum_value (m_lv2plugin->get_slv2_plugin(),
port);
}
float LV2ControlPort::get_max_control_value()
{
- return slv2_port_get_maximum_value (m_plugin->get_slv2_plugin(),
m_index);
+ SLV2Port port =
slv2_plugin_get_port_by_index(m_lv2plugin->get_slv2_plugin(), m_index);
+ return slv2_port_get_maximum_value (m_lv2plugin->get_slv2_plugin(),
port);
}
QString LV2ControlPort::get_description()
{
- SLV2Property prop = slv2_port_get_property(m_plugin->get_slv2_plugin(),
m_index, "lv2:symbol");
-
- if (prop && prop->num_values == 1) {
- return QString((char*)prop->values[0]);
- }
-
- return QString("no desc. avail.");
+ SLV2Port port =
slv2_plugin_get_port_by_index(m_lv2plugin->get_slv2_plugin(), m_index);
+ return QString(slv2_port_get_symbol(m_lv2plugin->get_slv2_plugin(),
port));
}
-
-/******* SLOTS ********/
-
void LV2ControlPort::set_control_value(float value)
{
m_controlValue = value;
Index: plugins/LV2/LV2Plugin.h
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/LV2/LV2Plugin.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- plugins/LV2/LV2Plugin.h 19 Jan 2007 12:15:27 -0000 1.3
+++ plugins/LV2/LV2Plugin.h 20 Apr 2007 12:17:31 -0000 1.4
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2006 Remon Sijrier
+Copyright (C) 2006-2007 Remon Sijrier
This file is part of Traverso
@@ -17,7 +17,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: LV2Plugin.h,v 1.3 2007/01/19 12:15:27 r_sijrier Exp $
*/
@@ -46,8 +45,8 @@
void process(AudioBus* bus, unsigned long nframes);
- SLV2Instance* get_instance() const {return m_instance; }
- SLV2Plugin* get_slv2_plugin() const {return m_plugin; }
+ SLV2Instance get_instance() const {return m_instance; }
+ SLV2Plugin get_slv2_plugin() const {return m_slv2plugin; }
QList<LV2ControlPort* > get_control_ports() const { return
m_controlPorts; }
@@ -59,8 +58,9 @@
private:
QString m_pluginUri;
- SLV2Instance* m_instance; /**< Plugin "instance" (loaded shared
lib) */
- SLV2Plugin* m_plugin; /**< Plugin "class" (actually just a few
strings) */
+ SLV2Instance m_instance;
+ SLV2Plugin m_slv2plugin;
+ int m_portcount;
QList<LV2ControlPort* > m_controlPorts;
QList<AudioInputPort* > m_audioInputPorts;
@@ -77,7 +77,7 @@
Q_OBJECT
public:
- LV2ControlPort(LV2Plugin* plugin, int index);
+ LV2ControlPort(LV2Plugin* plugin, int index, float value);
LV2ControlPort(LV2Plugin* plugin, const QDomNode node);
~LV2ControlPort(){};
@@ -89,7 +89,7 @@
QString get_description();
private:
- LV2Plugin* m_plugin;
+ LV2Plugin* m_lv2plugin;
float m_controlValue;
int set_state( const QDomNode & node );
Index: plugins/PluginManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/PluginManager.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- plugins/PluginManager.cpp 1 Feb 2007 15:45:29 -0000 1.6
+++ plugins/PluginManager.cpp 20 Apr 2007 12:17:31 -0000 1.7
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: PluginManager.cpp,v 1.6 2007/02/01 15:45:29 r_sijrier Exp $
+$Id: PluginManager.cpp,v 1.7 2007/04/20 12:17:31 r_sijrier Exp $
slv2 url: http://codeson.net/svn/libslv2/
*/
@@ -43,7 +43,7 @@
PluginManager::~PluginManager()
{
#if defined (LV2_SUPPORT)
- slv2_list_free(slv2PluginList);
+ slv2_world_free(m_slv2World);
#endif
}
@@ -62,8 +62,9 @@
{
#if defined (LV2_SUPPORT)
// LV2 part:
- slv2PluginList = slv2_list_new();
- slv2_list_load_all(slv2PluginList);
+ m_slv2World = slv2_world_new();
+ slv2_world_load_all(m_slv2World);
+ m_slv2Plugins = slv2_world_get_all_plugins(m_slv2World);
#endif
}
@@ -108,9 +109,9 @@
#if defined (LV2_SUPPORT)
-SLV2List PluginManager::get_slv2_plugin_list()
+SLV2Plugins PluginManager::get_slv2_plugin_list()
{
- return slv2PluginList;
+ return m_slv2Plugins;
}
#endif
Index: plugins/PluginManager.h
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/PluginManager.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- plugins/PluginManager.h 31 Jan 2007 11:59:11 -0000 1.3
+++ plugins/PluginManager.h 20 Apr 2007 12:17:31 -0000 1.4
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: PluginManager.h,v 1.3 2007/01/31 11:59:11 r_sijrier Exp $
+$Id: PluginManager.h,v 1.4 2007/04/20 12:17:31 r_sijrier Exp $
*/
@@ -43,7 +43,7 @@
Plugin* get_plugin(const QDomNode node);
#if defined (LV2_SUPPORT)
- SLV2List get_slv2_plugin_list();
+ SLV2Plugins get_slv2_plugin_list();
#endif
private:
@@ -51,7 +51,8 @@
static PluginManager* m_instance;
#if defined (LV2_SUPPORT)
- SLV2List slv2PluginList;
+ SLV2World m_slv2World;
+ SLV2Plugins m_slv2Plugins;
#endif
void init();
};
Index: traverso/songcanvas/PluginChainView.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/songcanvas/PluginChainView.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- traverso/songcanvas/PluginChainView.cpp 23 Feb 2007 13:52:38 -0000
1.8
+++ traverso/songcanvas/PluginChainView.cpp 20 Apr 2007 12:17:31 -0000
1.9
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: PluginChainView.cpp,v 1.8 2007/02/23 13:52:38 r_sijrier Exp $
+ $Id: PluginChainView.cpp,v 1.9 2007/04/20 12:17:31 r_sijrier Exp $
*/
#include "PluginChainView.h"
@@ -72,16 +72,22 @@
void PluginChainView::add_new_pluginview( Plugin * plugin )
{
PluginView* view = new PluginView(m_trackView, plugin,
m_pluginViews.size());
- m_pluginViews.append(view);
scene()->addItem(view);
- view->setPos( ( m_pluginViews.size() -1 )* 120, m_boundingRect.height()
- view->boundingRect().height());
+
+ int x = 6;
+ foreach(PluginView* view, m_pluginViews) {
+ x += view->boundingRect().width() + 6;
+ }
+
+ view->setPos(x, m_boundingRect.height() -
view->boundingRect().height());
+
+ m_pluginViews.append(view);
}
void PluginChainView::remove_pluginview( Plugin * plugin )
{
foreach(PluginView* view, m_pluginViews) {
if (view->get_plugin() == plugin) {
- printf("Removing pluginview\n");
m_pluginViews.removeAll(view);
delete view;
}
Index: traverso/songcanvas/PluginView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/PluginView.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- traverso/songcanvas/PluginView.cpp 17 Apr 2007 11:51:20 -0000 1.13
+++ traverso/songcanvas/PluginView.cpp 20 Apr 2007 12:17:31 -0000 1.14
@@ -54,10 +54,16 @@
m_track = m_trackView->get_track();
m_name = plugin->get_name();
- m_boundingRect = QRectF(0, 0, 100, 25);
+
+ QFontMetrics fm(themer()->get_font("Plugin:name"));
+ int fontwidth = fm.width(m_name);
+
+ m_boundingRect = QRectF(0, 0, fontwidth + 8, 25);
setAcceptsHoverEvents(true);
setCursor(themer()->get_cursor("Plugin"));
+
+ connect(m_plugin, SIGNAL(bypassChanged()), this, SLOT(repaint()));
}
PluginView::~PluginView( )
@@ -77,28 +83,27 @@
QColor color;
if (m_plugin->is_bypassed()) {
- color.setRgb(230, 0, 230, 80);
+ color = themer()->get_color("Plugin:background:bypassed");
} else {
- color.setRgb(230, 0, 230, 170);
+ color = themer()->get_color("Plugin:background");
}
int height, width;
if (option->state & QStyle::State_MouseOver) {
height = 21;
- width = 101;
+ width = m_boundingRect.width() + 1;
color = color.light(120);
} else {
height = 20;
- width = 100;
+ width = m_boundingRect.width();
}
QBrush brush(color);
QRect rect(0, 0, width, height);
painter->fillRect(rect, brush);
- painter->setPen(QColor(Qt::white));
+ painter->setPen(themer()->get_color("Plugin:text"));
+ painter->setFont(themer()->get_font("Plugin:name"));
painter->drawText(rect, Qt::AlignCenter, m_name);
-
- connect(m_plugin, SIGNAL(bypassChanged()), this, SLOT(repaint()));
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/...,
Remon Sijrier <=