diff options
author | David Robillard <d@drobilla.net> | 2009-05-04 15:50:51 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-05-04 15:50:51 +0000 |
commit | ca10cc82a4374a5b413c06ead6cc89c53f8881ee (patch) | |
tree | 3d44716ed02d80bd1256609631c77a730d04e169 /gtk2_ardour | |
parent | 9b06b1da0cec57a6848cf1f7920691ae022b30e7 (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.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/panner2d.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/plugin_eq_gui.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.cc | 28 | ||||
-rw-r--r-- | gtk2_ardour/processor_box.cc | 67 |
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); |