summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-05-04 15:50:51 +0000
committerDavid Robillard <d@drobilla.net>2009-05-04 15:50:51 +0000
commitca10cc82a4374a5b413c06ead6cc89c53f8881ee (patch)
tree3d44716ed02d80bd1256609631c77a730d04e169 /gtk2_ardour
parent9b06b1da0cec57a6848cf1f7920691ae022b30e7 (diff)
Preliminary MIDI plugin support.
git-svn-id: svn://localhost/ardour2/branches/3.0@5036 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/lv2_plugin_ui.cc11
-rw-r--r--gtk2_ardour/panner2d.cc6
-rw-r--r--gtk2_ardour/plugin_eq_gui.cc18
-rw-r--r--gtk2_ardour/plugin_selector.cc28
-rw-r--r--gtk2_ardour/processor_box.cc67
5 files changed, 47 insertions, 83 deletions
diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc
index d02e83d466..f83ff7384c 100644
--- a/gtk2_ardour/lv2_plugin_ui.cc
+++ b/gtk2_ardour/lv2_plugin_ui.cc
@@ -29,11 +29,12 @@ using namespace ARDOUR;
using namespace PBD;
void
-LV2PluginUI::lv2_ui_write(LV2UI_Controller controller,
- uint32_t port_index,
- uint32_t buffer_size,
- uint32_t format,
- const void* buffer)
+LV2PluginUI::lv2_ui_write(
+ LV2UI_Controller controller,
+ uint32_t port_index,
+ uint32_t buffer_size,
+ uint32_t format,
+ const void* buffer)
{
LV2PluginUI* me = (LV2PluginUI*)controller;
if (*(float*)buffer != me->_values[port_index])
diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc
index 0f4655221e..0216e76c27 100644
--- a/gtk2_ardour/panner2d.cc
+++ b/gtk2_ardour/panner2d.cc
@@ -118,12 +118,6 @@ Panner2d::reset (uint32_t n_inputs)
case 2:
pucks[0]->set_text ("R");
- assert(existing_pucks >= 0);
- // FIXME: Impossible (unsigned)
- if (existing_pucks < 0) {
- pucks[0]->x.set_value (0.5f);
- pucks[1]->y.set_value (0.25f);
- }
pucks[0]->visible = true;
pucks[1]->set_text ("L");
if (existing_pucks < 2) {
diff --git a/gtk2_ardour/plugin_eq_gui.cc b/gtk2_ardour/plugin_eq_gui.cc
index f28234592c..6bf4da0123 100644
--- a/gtk2_ardour/plugin_eq_gui.cc
+++ b/gtk2_ardour/plugin_eq_gui.cc
@@ -25,6 +25,7 @@
#include "gui_thread.h"
#include "ardour/audio_buffer.h"
#include "ardour/data_type.h"
+#include "ardour/chan_mapping.h"
#include <gtkmm/box.h>
#include <gtkmm/button.h>
@@ -310,18 +311,16 @@ PluginEqGui::run_impulse_analysis()
// Create the impulse, can't use silence() because consecutive calls won't work
for (uint32_t i = 0; i < inputs; ++i) {
- ARDOUR::AudioBuffer &buf = _bufferset.get_audio(i);
- ARDOUR::Sample *d = buf.data();
+ ARDOUR::AudioBuffer& buf = _bufferset.get_audio(i);
+ ARDOUR::Sample* d = buf.data();
memset(d, 0, sizeof(ARDOUR::Sample)*_buffer_size);
*d = 1.0;
}
- uint32_t x,y;
- x=y=0;
-
-
+ ARDOUR::ChanMapping in_map(_plugin->get_info()->n_inputs);
+ ARDOUR::ChanMapping out_map(_plugin->get_info()->n_outputs);
- _plugin->connect_and_run(_bufferset, x, y, _buffer_size, (nframes_t)0);
+ _plugin->connect_and_run(_bufferset, in_map, out_map, _buffer_size, (nframes_t)0);
nframes_t f = _plugin->signal_latency();
// Adding user_latency() could be interesting
@@ -378,8 +377,9 @@ PluginEqGui::run_impulse_analysis()
memset(d, 0, sizeof(ARDOUR::Sample)*_buffer_size);
}
- x=y=0;
- _plugin->connect_and_run(_bufferset, x, y, _buffer_size, (nframes_t)0);
+ in_map = ARDOUR::ChanMapping(_plugin->get_info()->n_inputs);
+ out_map = ARDOUR::ChanMapping(_plugin->get_info()->n_outputs);
+ _plugin->connect_and_run(_bufferset, in_map, out_map, _buffer_size, (nframes_t)0);
}
} while ( frames_left > 0);
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 8932585544..705146eccd 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -303,25 +303,15 @@ PluginSelector::refiller (const PluginInfoList& plugs, const::std::string& filte
newrow[plugin_columns.creator] = creator;
- if ((*i)->n_inputs.n_total() < 0) { // FIXME: Impossible (unsigned)
- newrow[plugin_columns.audio_ins] = "various";
- newrow[plugin_columns.midi_ins] = "various";
- } else {
- snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_audio());
- newrow[plugin_columns.audio_ins] = buf;
- snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_midi());
- newrow[plugin_columns.midi_ins] = buf;
- }
-
- if ((*i)->n_outputs.n_total() < 0) { // FIXME: Impossible (unsigned)
- newrow[plugin_columns.audio_outs] = "various";
- newrow[plugin_columns.midi_outs] = "various";
- } else {
- snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_audio());
- newrow[plugin_columns.audio_outs] = buf;
- snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_midi());
- newrow[plugin_columns.midi_outs] = buf;
- }
+ snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_audio());
+ newrow[plugin_columns.audio_ins] = buf;
+ snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_midi());
+ newrow[plugin_columns.midi_ins] = buf;
+
+ snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_audio());
+ newrow[plugin_columns.audio_outs] = buf;
+ snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_midi());
+ newrow[plugin_columns.midi_outs] = buf;
newrow[plugin_columns.plugin] = *i;
}
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 627bada571..75d9281a94 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -434,52 +434,31 @@ ProcessorBox::weird_plugin_dialog (Plugin& p, Route::ProcessorStreams streams, b
ArdourDialog dialog (_("ardour: weird plugin dialog"));
Label label;
- /* i hate this kind of code */
-
- if (streams.count > p.get_info()->n_inputs) {
- label.set_text (string_compose (_(
-"You attempted to add a plugin (%1).\n"
-"The plugin has %2 inputs\n"
-"but at the processorion point, there are\n"
-"%3 active signal streams.\n"
-"\n"
-"This makes no sense - you are throwing away\n"
-"part of the signal."),
- p.name(),
- p.get_info()->n_inputs.n_total(),
- streams.count.n_total()));
- } else if (streams.count < p.get_info()->n_inputs) {
- label.set_text (string_compose (_(
-"You attempted to add a plugin (%1).\n"
-"The plugin has %2 inputs\n"
-"but at the processorion point there are\n"
-"only %3 active signal streams.\n"
-"\n"
-"This makes no sense - unless the plugin supports\n"
-"side-chain inputs. A future version of Ardour will\n"
-"support this type of configuration."),
- p.name(),
- p.get_info()->n_inputs.n_total(),
- streams.count.n_total()));
- } else {
- label.set_text (string_compose (_(
-"You attempted to add a plugin (%1).\n"
-"\n"
-"The I/O configuration doesn't make sense:\n"
-"\n"
-"The plugin has %2 inputs and %3 outputs.\n"
-"The track/bus has %4 inputs and %5 outputs.\n"
-"The processorion point, has %6 active signals.\n"
-"\n"
-"Ardour does not understand what to do in such situations.\n"),
- p.name(),
- p.get_info()->n_inputs.n_total(),
- p.get_info()->n_outputs.n_total(),
- io->n_inputs().n_total(),
- io->n_outputs().n_total(),
- streams.count.n_total()));
+ string text = string_compose(_("You attempted to add the plugin \"%1\" at index %2.\n"),
+ p.name(), streams.index);
+
+ bool has_midi = streams.count.n_midi() > 0 || p.get_info()->n_inputs.n_midi() > 0;
+ bool has_audio = streams.count.n_audio() > 0 || p.get_info()->n_inputs.n_audio() > 0;
+
+ text += _("\nThis plugin has:\n");
+ if (has_midi) {
+ text += string_compose("\t%1 ", p.get_info()->n_inputs.n_midi()) + _("MIDI input(s)\n");
+ }
+ if (has_audio) {
+ text += string_compose("\t%1 ", p.get_info()->n_inputs.n_audio()) + _("audio input(s)\n");
}
+ text += "\nBut at the insertion point, there are:\n";
+ if (has_midi) {
+ text += string_compose("\t%1 ", streams.count.n_midi()) + _("MIDI channel(s)\n");
+ }
+ if (has_audio) {
+ text += string_compose("\t%1 ", streams.count.n_audio()) + _("audio channel(s)\n");
+ }
+
+ text += "\nArdour is unable to insert this plugin here.\n";
+ label.set_text(text);
+
dialog.get_vbox()->pack_start (label);
dialog.add_button (Stock::OK, RESPONSE_ACCEPT);