From b5ec66ae6cb60fa43c343d3d29340b2370d0b9d1 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 29 Sep 2008 22:47:40 +0000 Subject: [PATCH] Can't call the wrong function when there's only one of them: remove ARDOUR::Parameter and just use Evoral::Parameter (move Ardour specific functionality to EventTypeMap where it belongs). Less than pretty in places but easily seddable just in case... git-svn-id: svn://localhost/ardour2/branches/3.0@3838 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/add_midi_cc_track_dialog.cc | 4 +- gtk2_ardour/add_midi_cc_track_dialog.h | 4 +- gtk2_ardour/audio_time_axis.cc | 8 +- gtk2_ardour/audio_time_axis.h | 2 +- gtk2_ardour/automation_controller.cc | 2 +- gtk2_ardour/automation_region_view.cc | 5 +- gtk2_ardour/automation_region_view.h | 4 +- gtk2_ardour/automation_time_axis.cc | 4 +- gtk2_ardour/crossfade_edit.cc | 6 +- gtk2_ardour/curvetest.cc | 4 +- gtk2_ardour/gain_meter.cc | 8 +- gtk2_ardour/generic_pluginui.cc | 4 +- gtk2_ardour/midi_time_axis.cc | 23 ++-- gtk2_ardour/midi_time_axis.h | 4 +- gtk2_ardour/plugin_ui.h | 2 +- gtk2_ardour/region_view.h | 2 +- gtk2_ardour/route_time_axis.cc | 44 ++++---- gtk2_ardour/route_time_axis.h | 34 +++--- gtk2_ardour/route_ui.cc | 8 +- gtk2_ardour/route_ui.h | 2 +- gtk2_ardour/time_axis_view.h | 4 +- libs/ardour/SConscript | 1 - libs/ardour/ardour/automatable.h | 27 +++-- libs/ardour/ardour/automation_control.h | 3 +- libs/ardour/ardour/automation_list.h | 7 +- libs/ardour/ardour/event_type_map.h | 9 +- libs/ardour/ardour/io.h | 2 +- libs/ardour/ardour/ladspa_plugin.h | 4 +- libs/ardour/ardour/lv2_plugin.h | 4 +- libs/ardour/ardour/midi_playlist.h | 4 +- libs/ardour/ardour/midi_track.h | 2 +- libs/ardour/ardour/panner.h | 14 +-- libs/ardour/ardour/parameter.h | 103 ----------------- libs/ardour/ardour/plugin.h | 5 +- libs/ardour/ardour/plugin_insert.h | 12 +- libs/ardour/audioengine.cc | 30 ++--- libs/ardour/audioregion.cc | 48 ++++---- libs/ardour/automatable.cc | 44 ++++---- libs/ardour/automation_control.cc | 4 +- libs/ardour/automation_list.cc | 12 +- libs/ardour/crossfade.cc | 12 +- libs/ardour/event_type_map.cc | 142 ++++++++++++++++++++++++ libs/ardour/gain.cc | 2 +- libs/ardour/io.cc | 8 +- libs/ardour/ladspa_plugin.cc | 8 +- libs/ardour/lv2_plugin.cc | 8 +- libs/ardour/midi_playlist.cc | 4 +- libs/ardour/panner.cc | 26 ++--- libs/ardour/parameter.cc | 121 -------------------- libs/ardour/plugin_insert.cc | 28 ++--- libs/ardour/processor.cc | 6 +- libs/ardour/send.cc | 2 +- libs/evoral/evoral/Parameter.hpp | 18 +-- libs/evoral/evoral/TypeMap.hpp | 7 +- libs/evoral/evoral/midi_events.h | 6 +- libs/evoral/src/Sequence.cpp | 4 +- 56 files changed, 416 insertions(+), 499 deletions(-) delete mode 100644 libs/ardour/ardour/parameter.h delete mode 100644 libs/ardour/parameter.cc diff --git a/gtk2_ardour/add_midi_cc_track_dialog.cc b/gtk2_ardour/add_midi_cc_track_dialog.cc index 98fd501a95..0c393f3981 100644 --- a/gtk2_ardour/add_midi_cc_track_dialog.cc +++ b/gtk2_ardour/add_midi_cc_track_dialog.cc @@ -74,12 +74,12 @@ AddMidiCCTrackDialog::AddMidiCCTrackDialog () } -ARDOUR::Parameter +Evoral::Parameter AddMidiCCTrackDialog::parameter () { int chan = _chan_spinner.get_value_as_int() - 1; int cc_num = _cc_num_spinner.get_value_as_int() - 1; - return Parameter(MidiCCAutomation, chan, cc_num); + return Evoral::Parameter(MidiCCAutomation, chan, cc_num); } diff --git a/gtk2_ardour/add_midi_cc_track_dialog.h b/gtk2_ardour/add_midi_cc_track_dialog.h index d3124044fe..b04456afc4 100644 --- a/gtk2_ardour/add_midi_cc_track_dialog.h +++ b/gtk2_ardour/add_midi_cc_track_dialog.h @@ -27,14 +27,14 @@ #include #include #include -#include +#include class AddMidiCCTrackDialog : public Gtk::Dialog { public: AddMidiCCTrackDialog (); - ARDOUR::Parameter parameter (); + Evoral::Parameter parameter (); private: Gtk::Adjustment _chan_adjustment; diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index a991bffe54..14a94e7195 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -319,7 +319,7 @@ AudioTimeAxisView::set_waveform_scale (WaveformScale scale) } void -AudioTimeAxisView::create_automation_child (const Parameter& param, bool show) +AudioTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool show) { if (param.type() == GainAutomation) { @@ -337,7 +337,7 @@ AudioTimeAxisView::create_automation_child (const Parameter& param, bool show) parent_canvas, _route->describe_parameter(param))); - add_automation_child(Parameter(GainAutomation), gain_track, show); + add_automation_child(Evoral::Parameter(GainAutomation), gain_track, show); } else if (param.type() == PanAutomation) { @@ -345,7 +345,7 @@ AudioTimeAxisView::create_automation_child (const Parameter& param, bool show) update_pans (show); } else { - error << "AudioTimeAxisView: unknown automation child " << param.symbol() << endmsg; + error << "AudioTimeAxisView: unknown automation child " << EventTypeMap::instance().to_symbol(param) << endmsg; } } @@ -370,7 +370,7 @@ AudioTimeAxisView::update_pans (bool show) false, parent_canvas, _route->describe_parameter(pan_control->parameter()))); - add_automation_child(Parameter(PanAutomation, i), pan_track, show); + add_automation_child(Evoral::Parameter(PanAutomation, i), pan_track, show); ++i; } } diff --git a/gtk2_ardour/audio_time_axis.h b/gtk2_ardour/audio_time_axis.h index ce5697d7c1..133a84e590 100644 --- a/gtk2_ardour/audio_time_axis.h +++ b/gtk2_ardour/audio_time_axis.h @@ -82,7 +82,7 @@ class AudioTimeAxisView : public RouteTimeAxisView guint32 show_at (double y, int& nth, Gtk::VBox *parent); void hide (); - void create_automation_child (const ARDOUR::Parameter& param, bool show); + void create_automation_child (const Evoral::Parameter& param, bool show); void first_idle (); diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index 263761dcc5..c9e04bf70b 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -68,7 +68,7 @@ AutomationController::create( { Gtk::Adjustment* adjustment = manage(new Gtk::Adjustment(param.normal(), param.min(), param.max())); if (!ac) { - PBD::warning << "Creating AutomationController for " << param.symbol() << endmsg; + PBD::warning << "Creating AutomationController for " << EventTypeMap::instance().to_symbol(param) << endmsg; ac = boost::dynamic_pointer_cast(parent->control_factory(param)); } else { assert(ac->parameter() == param); diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index c213b3feeb..d8b90e6458 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -26,7 +26,7 @@ AutomationRegionView::AutomationRegionView(ArdourCanvas::Group* parent, AutomationTimeAxisView& time_axis, boost::shared_ptr region, - const ARDOUR::Parameter& param, + const Evoral::Parameter& param, boost::shared_ptr list, double spu, Gdk::Color& basic_color) @@ -65,7 +65,8 @@ void AutomationRegionView::create_line (boost::shared_ptr list) { _line = boost::shared_ptr(new AutomationLine( - list->parameter().symbol(), trackview, *get_canvas_group(), list)); + ARDOUR::EventTypeMap::instance().to_symbol(list->parameter()), + trackview, *get_canvas_group(), list)); _line->set_colors(); _line->show(); _line->show_all_control_points(); diff --git a/gtk2_ardour/automation_region_view.h b/gtk2_ardour/automation_region_view.h index 759382b562..dfe774aba6 100644 --- a/gtk2_ardour/automation_region_view.h +++ b/gtk2_ardour/automation_region_view.h @@ -42,7 +42,7 @@ public: AutomationRegionView(ArdourCanvas::Group*, AutomationTimeAxisView&, boost::shared_ptr, - const ARDOUR::Parameter& parameter, + const Evoral::Parameter& parameter, boost::shared_ptr, double initial_samples_per_unit, Gdk::Color& basic_color); @@ -73,7 +73,7 @@ protected: void exited(); private: - ARDOUR::Parameter _parameter; + Evoral::Parameter _parameter; boost::shared_ptr _line; }; diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index 299674dfdb..acb0921b7f 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -212,7 +212,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr line(new AutomationLine ( - _control->parameter().symbol(), + ARDOUR::EventTypeMap::instance().to_symbol(_control->parameter()), *this, *canvas_display, _control->alist())); @@ -884,7 +884,7 @@ AutomationTimeAxisView::set_state (const XMLNode& node) if ((*iter)->name() == state_node_name) { XMLProperty* type = (*iter)->property("automation-id"); - if (type && type->value() == _control->parameter().symbol()) { + if (type && type->value() == ARDOUR::EventTypeMap::instance().to_symbol(_control->parameter())) { XMLProperty *shown = (*iter)->property("shown_editor"); if (shown && shown->value() == "yes") { diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index 6e4cbb3457..3c67c62f68 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -65,9 +65,9 @@ CrossfadeEditor::Presets* CrossfadeEditor::fade_out_presets = 0; CrossfadeEditor::Half::Half () : line (0), - //normative_curve (Parameter(GainAutomation, 0.0, 1.0, 1.0)), // FIXME: GainAutomation? - normative_curve (Parameter(GainAutomation)), - gain_curve (Parameter(GainAutomation)) + //normative_curve (Evoral::Parameter(GainAutomation, 0.0, 1.0, 1.0)), // FIXME: GainAutomation? + normative_curve (Evoral::Parameter(GainAutomation)), + gain_curve (Evoral::Parameter(GainAutomation)) { } diff --git a/gtk2_ardour/curvetest.cc b/gtk2_ardour/curvetest.cc index 9235fb9ba9..15195ff2a5 100644 --- a/gtk2_ardour/curvetest.cc +++ b/gtk2_ardour/curvetest.cc @@ -34,8 +34,8 @@ curvetest (string filename) { ifstream in (filename.c_str()); stringstream line; - //Parameter param(GainAutomation, -1.0, +1.0, 0.0); - Parameter param(GainAutomation); + //Evoral::Parameter param(GainAutomation, -1.0, +1.0, 0.0); + Evoral::Parameter param(GainAutomation); AutomationList al (param); double minx = DBL_MAX; double maxx = DBL_MIN; diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 182cf2d89d..a580ec6b38 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -148,16 +148,16 @@ GainMeterBase::GainMeterBase (boost::shared_ptr io, Session& s, gain_astate_menu.items().push_back (MenuElem (_("Manual"), bind (mem_fun (*_io, &IO::set_parameter_automation_state), - Parameter(GainAutomation), (AutoState) Off))); + Evoral::Parameter(GainAutomation), (AutoState) Off))); gain_astate_menu.items().push_back (MenuElem (_("Play"), bind (mem_fun (*_io, &IO::set_parameter_automation_state), - Parameter(GainAutomation), (AutoState) Play))); + Evoral::Parameter(GainAutomation), (AutoState) Play))); gain_astate_menu.items().push_back (MenuElem (_("Write"), bind (mem_fun (*_io, &IO::set_parameter_automation_state), - Parameter(GainAutomation), (AutoState) Write))); + Evoral::Parameter(GainAutomation), (AutoState) Write))); gain_astate_menu.items().push_back (MenuElem (_("Touch"), bind (mem_fun (*_io, &IO::set_parameter_automation_state), - Parameter(GainAutomation), (AutoState) Touch))); + Evoral::Parameter(GainAutomation), (AutoState) Touch))); gain_astyle_menu.items().push_back (MenuElem (_("Trim"))); gain_astyle_menu.items().push_back (MenuElem (_("Abs"))); diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index 07573c1454..1c414d6785 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -185,7 +185,7 @@ GenericPluginUI::build () /* Don't show latency control ports */ - if (plugin->describe_parameter (Parameter(PluginAutomation, i)) == X_("latency")) { + if (plugin->describe_parameter (Evoral::Parameter(PluginAutomation, i)) == X_("latency")) { continue; } @@ -211,7 +211,7 @@ GenericPluginUI::build () boost::shared_ptr c = boost::dynamic_pointer_cast( - insert->data().control(Parameter(PluginAutomation, i))); + insert->data().control(Evoral::Parameter(PluginAutomation, i))); if ((cui = build_control_ui (i, c)) == 0) { error << string_compose(_("Plugin Editor: could not build control element for port %1"), i) << endmsg; diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 8d1f46d55a..bc036be991 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -263,10 +263,10 @@ MidiTimeAxisView::build_automation_action_menu () mem_fun(*this, &MidiTimeAxisView::add_cc_track))); automation_items.push_back (MenuElem (_("Bender"), sigc::bind(mem_fun(*this, &MidiTimeAxisView::add_parameter_track), - Parameter(MidiPitchBenderAutomation)))); + Evoral::Parameter(MidiPitchBenderAutomation)))); automation_items.push_back (MenuElem (_("Pressure"), sigc::bind(mem_fun(*this, &MidiTimeAxisView::add_parameter_track), - Parameter(MidiChannelPressureAutomation)))); + Evoral::Parameter(MidiChannelPressureAutomation)))); } @@ -328,10 +328,10 @@ void MidiTimeAxisView::show_all_automation () { if (midi_track()) { - const set params = midi_track()->midi_diskstream()-> + const set params = midi_track()->midi_diskstream()-> midi_playlist()->contained_automation(); - for (set::const_iterator i = params.begin(); i != params.end(); ++i) { + for (set::const_iterator i = params.begin(); i != params.end(); ++i) { create_automation_child(*i, true); } } @@ -343,10 +343,10 @@ void MidiTimeAxisView::show_existing_automation () { if (midi_track()) { - const set params = midi_track()->midi_diskstream()-> + const set params = midi_track()->midi_diskstream()-> midi_playlist()->contained_automation(); - for (set::const_iterator i = params.begin(); i != params.end(); ++i) { + for (set::const_iterator i = params.begin(); i != params.end(); ++i) { create_automation_child(*i, true); } } @@ -360,7 +360,7 @@ void MidiTimeAxisView::add_cc_track() { int response; - Parameter param; + Evoral::Parameter param(0, 0, 0); { AddMidiCCTrackDialog dialog; @@ -371,7 +371,7 @@ MidiTimeAxisView::add_cc_track() param = dialog.parameter(); } - if (response == Gtk::RESPONSE_ACCEPT) + if (param.type() != 0 && response == Gtk::RESPONSE_ACCEPT) create_automation_child(param, true); } @@ -379,13 +379,13 @@ MidiTimeAxisView::add_cc_track() /** Add an automation track for the given parameter (pitch bend, channel pressure). */ void -MidiTimeAxisView::add_parameter_track(const Parameter& param) +MidiTimeAxisView::add_parameter_track(const Evoral::Parameter& param) { create_automation_child(param, true); } void -MidiTimeAxisView::create_automation_child (const Parameter& param, bool show) +MidiTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool show) { if ( param.type() == MidiCCAutomation || param.type() == MidiPgmChangeAutomation || @@ -419,7 +419,8 @@ MidiTimeAxisView::create_automation_child (const Parameter& param, bool show) add_automation_child(param, track, show); } else { - error << "MidiTimeAxisView: unknown automation child " << param.symbol() << endmsg; + error << "MidiTimeAxisView: unknown automation child " + << ARDOUR::EventTypeMap::instance().to_symbol(param) << endmsg; } } diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h index 7a1a3ffc5c..18dfedcaf0 100644 --- a/gtk2_ardour/midi_time_axis.h +++ b/gtk2_ardour/midi_time_axis.h @@ -70,8 +70,8 @@ class MidiTimeAxisView : public RouteTimeAxisView void show_all_automation (); void show_existing_automation (); void add_cc_track (); - void add_parameter_track (const ARDOUR::Parameter& param); - void create_automation_child (const ARDOUR::Parameter& param, bool show); + void add_parameter_track (const Evoral::Parameter& param); + void create_automation_child (const Evoral::Parameter& param, bool show); ARDOUR::NoteMode note_mode() const { return _note_mode; } diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index 19c2774be0..a957fc37cb 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -152,7 +152,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox boost::shared_ptr control; - ARDOUR::Parameter parameter() { return control->parameter(); } + Evoral::Parameter parameter() { return control->parameter(); } /* input */ diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index a001e241f1..987b2d66a9 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -144,7 +144,7 @@ class RegionView : public TimeAxisViewItem vector ghosts; - typedef std::map > AutomationChildren; + typedef std::map > AutomationChildren; AutomationChildren _automation_children; }; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 6d6188c146..fe03190b67 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -51,7 +51,7 @@ #include #include #include -#include +#include #include #include "ardour_ui.h" @@ -427,7 +427,7 @@ RouteTimeAxisView::set_state (const XMLNode& node) for (iter = kids.begin(); iter != kids.end(); ++iter) { if ((*iter)->name() == AutomationTimeAxisView::state_node_name) { if ((prop = (*iter)->property ("automation-id")) != 0) { - Parameter param(prop->value()); + Evoral::Parameter param = ARDOUR::EventTypeMap::instance().new_parameter(prop->value()); bool show = ((prop = (*iter)->property ("shown")) != 0) && prop->value() == "yes"; create_automation_child(param, show); } else { @@ -461,7 +461,7 @@ RouteTimeAxisView::build_automation_action_menu () automation_items.push_back (MenuElem (_("Plugins"), subplugin_menu)); - map::iterator i; + map::iterator i; for (i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { automation_items.push_back (SeparatorElem()); @@ -1187,7 +1187,7 @@ RouteTimeAxisView::get_inverted_selectables (Selection& sel, list& } bool -RouteTimeAxisView::show_automation(Parameter param) +RouteTimeAxisView::show_automation(Evoral::Parameter param) { return (_show_automation.find(param) != _show_automation.end()); } @@ -1195,9 +1195,9 @@ RouteTimeAxisView::show_automation(Parameter param) /** Retuns NULL if track for \a param doesn't exist. */ RouteTimeAxisView::RouteAutomationNode* -RouteTimeAxisView::automation_track(Parameter param) +RouteTimeAxisView::automation_track(Evoral::Parameter param) { - map::iterator i = _automation_tracks.find(param); + map::iterator i = _automation_tracks.find(param); if (i != _automation_tracks.end()) return i->second; @@ -1210,7 +1210,7 @@ RouteTimeAxisView::automation_track(Parameter param) RouteTimeAxisView::RouteAutomationNode* RouteTimeAxisView::automation_track(AutomationType type) { - return automation_track(Parameter(type)); + return automation_track(Evoral::Parameter(type)); } RouteGroup* @@ -1515,7 +1515,7 @@ RouteTimeAxisView::color_handler () } void -RouteTimeAxisView::toggle_automation_track (Parameter param) +RouteTimeAxisView::toggle_automation_track (Evoral::Parameter param) { RouteAutomationNode* node = automation_track(param); @@ -1544,7 +1544,7 @@ RouteTimeAxisView::toggle_automation_track (Parameter param) } void -RouteTimeAxisView::automation_track_hidden (Parameter param) +RouteTimeAxisView::automation_track_hidden (Evoral::Parameter param) { RouteAutomationNode* ran = automation_track(param); if (!ran) { @@ -1569,7 +1569,7 @@ RouteTimeAxisView::show_all_automation () /* Show our automation */ - map::iterator i; + map::iterator i; for (i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { i->second->track->set_marked_for_display (true); i->second->track->canvas_display->show(); @@ -1604,7 +1604,7 @@ RouteTimeAxisView::show_existing_automation () /* Show our automation */ - map::iterator i; + map::iterator i; for (i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { if (i->second->track->line() && i->second->track->line()->npoints() > 0) { i->second->track->set_marked_for_display (true); @@ -1637,7 +1637,7 @@ RouteTimeAxisView::hide_all_automation () /* Hide our automation */ - for (map::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { + for (map::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { i->second->track->set_marked_for_display (false); i->second->track->hide (); i->second->track->get_state_node()->add_property ("shown", X_("no")); @@ -1700,7 +1700,7 @@ RouteTimeAxisView::remove_processor_automation_node (ProcessorAutomationNode* pa } RouteTimeAxisView::ProcessorAutomationNode* -RouteTimeAxisView::find_processor_automation_node (boost::shared_ptr processor, Parameter what) +RouteTimeAxisView::find_processor_automation_node (boost::shared_ptr processor, Evoral::Parameter what) { for (list::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) { @@ -1737,7 +1737,7 @@ legalize_for_xml_node (string str) void -RouteTimeAxisView::add_processor_automation_curve (boost::shared_ptr processor, Parameter what) +RouteTimeAxisView::add_processor_automation_curve (boost::shared_ptr processor, Evoral::Parameter what) { string name; ProcessorAutomationNode* pan; @@ -1803,12 +1803,12 @@ RouteTimeAxisView::processor_automation_track_hidden (RouteTimeAxisView::Process void RouteTimeAxisView::add_existing_processor_automation_curves (boost::shared_ptr processor) { - set s; + set s; boost::shared_ptr al; processor->what_has_visible_data (s); - for (set::iterator i = s.begin(); i != s.end(); ++i) { + for (set::iterator i = s.begin(); i != s.end(); ++i) { if ((al = find_processor_automation_curve (processor, *i)) != 0) { al->queue_reset (); @@ -1819,7 +1819,7 @@ RouteTimeAxisView::add_existing_processor_automation_curves (boost::shared_ptr

track, bool show) +RouteTimeAxisView::add_automation_child(Evoral::Parameter param, boost::shared_ptr track, bool show) { using namespace Menu_Helpers; @@ -1864,8 +1864,8 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::shared_ptr ProcessorAutomationInfo *rai; list::iterator x; - const std::set& automatable = processor->what_can_be_automated (); - std::set has_visible_automation; + const std::set& automatable = processor->what_can_be_automated (); + std::set has_visible_automation; processor->what_has_visible_data(has_visible_automation); @@ -1900,7 +1900,7 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::shared_ptr items.clear (); - for (std::set::const_iterator i = automatable.begin(); i != automatable.end(); ++i) { + for (std::set::const_iterator i = automatable.begin(); i != automatable.end(); ++i) { ProcessorAutomationNode* pan; CheckMenuItem* mitem; @@ -2014,7 +2014,7 @@ RouteTimeAxisView::processors_changed () } boost::shared_ptr -RouteTimeAxisView::find_processor_automation_curve (boost::shared_ptr processor, Parameter what) +RouteTimeAxisView::find_processor_automation_curve (boost::shared_ptr processor, Evoral::Parameter what) { ProcessorAutomationNode* pan; @@ -2050,7 +2050,7 @@ RouteTimeAxisView::set_layer_display (LayerDisplay d) boost::shared_ptr -RouteTimeAxisView::automation_child(ARDOUR::Parameter param) +RouteTimeAxisView::automation_child(Evoral::Parameter param) { AutomationTracks::iterator i = _automation_tracks.find(param); if (i != _automation_tracks.end()) diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index b098894d8c..73d3295aaf 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -82,7 +82,7 @@ public: void set_selected_regionviews (RegionSelection&); void get_selectables (nframes_t start, nframes_t end, double top, double bot, list&); void get_inverted_selectables (Selection&, list&); - bool show_automation(ARDOUR::Parameter param); + bool show_automation(Evoral::Parameter param); void set_layer_display (LayerDisplay d); boost::shared_ptr find_next_region (nframes_t pos, ARDOUR::RegionPoint, int32_t dir); @@ -109,24 +109,24 @@ public: /* This is a bit nasty to expose :/ */ struct RouteAutomationNode { - ARDOUR::Parameter param; + Evoral::Parameter param; Gtk::CheckMenuItem* menu_item; boost::shared_ptr track; - RouteAutomationNode (ARDOUR::Parameter par, Gtk::CheckMenuItem* mi, boost::shared_ptr tr) + RouteAutomationNode (Evoral::Parameter par, Gtk::CheckMenuItem* mi, boost::shared_ptr tr) : param (par), menu_item (mi), track (tr) {} }; - virtual void create_automation_child (const ARDOUR::Parameter& param, bool show) = 0; + virtual void create_automation_child (const Evoral::Parameter& param, bool show) = 0; /* make sure we get the right version of this */ - XMLNode* get_automation_child_xml_node (ARDOUR::Parameter param) { return RouteUI::get_automation_child_xml_node (param); } + XMLNode* get_automation_child_xml_node (Evoral::Parameter param) { return RouteUI::get_automation_child_xml_node (param); } - typedef map AutomationTracks; + typedef map AutomationTracks; AutomationTracks automation_tracks() { return _automation_tracks; } - boost::shared_ptr automation_child(ARDOUR::Parameter param); + boost::shared_ptr automation_child(Evoral::Parameter param); string name() const; StreamView* view() const { return _view; } @@ -148,12 +148,12 @@ protected: friend class StreamView; struct ProcessorAutomationNode { - ARDOUR::Parameter what; + Evoral::Parameter what; Gtk::CheckMenuItem* menu_item; boost::shared_ptr view; RouteTimeAxisView& parent; - ProcessorAutomationNode (ARDOUR::Parameter w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p) + ProcessorAutomationNode (Evoral::Parameter w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p) : what (w), menu_item (mitem), parent (p) {} ~ProcessorAutomationNode (); @@ -188,21 +188,21 @@ protected: void processor_automation_track_hidden (ProcessorAutomationNode*, boost::shared_ptr); - void automation_track_hidden (ARDOUR::Parameter param); + void automation_track_hidden (Evoral::Parameter param); - RouteAutomationNode* automation_track(ARDOUR::Parameter param); + RouteAutomationNode* automation_track(Evoral::Parameter param); RouteAutomationNode* automation_track(ARDOUR::AutomationType type); ProcessorAutomationNode* - find_processor_automation_node (boost::shared_ptr i, ARDOUR::Parameter); + find_processor_automation_node (boost::shared_ptr i, Evoral::Parameter); boost::shared_ptr - find_processor_automation_curve (boost::shared_ptr i, ARDOUR::Parameter); + find_processor_automation_curve (boost::shared_ptr i, Evoral::Parameter); - void add_processor_automation_curve (boost::shared_ptr r, ARDOUR::Parameter); + void add_processor_automation_curve (boost::shared_ptr r, Evoral::Parameter); void add_existing_processor_automation_curves (boost::shared_ptr); - void add_automation_child(ARDOUR::Parameter param, boost::shared_ptr track, bool show=true); + void add_automation_child(Evoral::Parameter param, boost::shared_ptr track, bool show=true); void reset_processor_automation_curves (); @@ -237,7 +237,7 @@ protected: void rename_current_playlist (); void automation_click (); - void toggle_automation_track (ARDOUR::Parameter param); + void toggle_automation_track (Evoral::Parameter param); virtual void show_all_automation (); virtual void show_existing_automation (); virtual void hide_all_automation (); @@ -297,7 +297,7 @@ protected: ProcessorAutomationCurves processor_automation_curves; // Set from XML so context menu automation buttons can be correctly initialized - set _show_automation; + set _show_automation; AutomationTracks _automation_tracks; diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index c02c4109b1..44032a4ea5 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -766,24 +766,26 @@ RouteUI::ensure_xml_node () } XMLNode* -RouteUI::get_automation_child_xml_node (Parameter param) +RouteUI::get_automation_child_xml_node (Evoral::Parameter param) { ensure_xml_node (); XMLNodeList kids = xml_node->children(); XMLNodeConstIterator iter; + const string sym = ARDOUR::EventTypeMap::instance().to_symbol(param); + for (iter = kids.begin(); iter != kids.end(); ++iter) { if ((*iter)->name() == AutomationTimeAxisView::state_node_name) { XMLProperty* type = (*iter)->property("automation-id"); - if (type && type->value() == param.symbol()) + if (type && type->value() == sym) return *iter; } } // Didn't find it, make a new one XMLNode* child = new XMLNode (AutomationTimeAxisView::state_node_name); - child->add_property("automation-id", param.symbol()); + child->add_property("automation-id", sym); xml_node->add_child_nocopy (*child); return child; diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index aecf351f3a..e18eda6871 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -86,7 +86,7 @@ class RouteUI : public virtual AxisView XMLNode *xml_node; void ensure_xml_node (); - virtual XMLNode* get_automation_child_xml_node (ARDOUR::Parameter param); + virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter param); bool mute_press(GdkEventButton*); bool mute_release(GdkEventButton*); diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index ae4d035af8..9d0c536a8f 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -37,7 +37,7 @@ #include #include -#include +#include #include "prompter.h" #include "axis_view.h" @@ -230,7 +230,7 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful /* call this on the parent */ - virtual XMLNode* get_automation_child_xml_node (ARDOUR::Parameter param) { return 0; } + virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter param) { return 0; } typedef std::vector > Children; diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index 156daf2bc0..f310e7ca0f 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -117,7 +117,6 @@ mtc_slave.cc named_selection.cc onset_detector.cc panner.cc -parameter.cc pcm_utils.cc playlist.cc playlist_factory.cc diff --git a/libs/ardour/ardour/automatable.h b/libs/ardour/ardour/automatable.h index dbce7de0bf..8cfadec638 100644 --- a/libs/ardour/ardour/automatable.h +++ b/libs/ardour/ardour/automatable.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -56,20 +55,20 @@ public: virtual void automation_snapshot(nframes_t now, bool force); virtual void transport_stopped(nframes_t now); - virtual string describe_parameter(Parameter param); + virtual string describe_parameter(Evoral::Parameter param); - AutoState get_parameter_automation_state (Parameter param, bool lock = true); - virtual void set_parameter_automation_state (Parameter param, AutoState); + AutoState get_parameter_automation_state (Evoral::Parameter param, bool lock = true); + virtual void set_parameter_automation_state (Evoral::Parameter param, AutoState); - AutoStyle get_parameter_automation_style (Parameter param); - void set_parameter_automation_style (Parameter param, AutoStyle); + AutoStyle get_parameter_automation_style (Evoral::Parameter param); + void set_parameter_automation_style (Evoral::Parameter param, AutoStyle); void protect_automation (); - void what_has_visible_data(std::set&) const; - const std::set& what_can_be_automated() const { return _can_automate_list; } + void what_has_visible_data(std::set&) const; + const std::set& what_can_be_automated() const { return _can_automate_list; } - void mark_automation_visible(Parameter, bool); + void mark_automation_visible(Evoral::Parameter, bool); inline bool should_snapshot (nframes_t now) { return (_last_automation_snapshot > now @@ -92,18 +91,18 @@ public: protected: Session& _a_session; - void can_automate(Parameter); + void can_automate(Evoral::Parameter); - virtual void auto_state_changed (Parameter which) {} + virtual void auto_state_changed (Evoral::Parameter which) {} - int set_automation_state(const XMLNode&, Parameter default_param); + int set_automation_state(const XMLNode&, Evoral::Parameter default_param); XMLNode& get_automation_state(); int load_automation (const std::string& path); int old_set_automation_state(const XMLNode&); - std::set _visible_controls; - std::set _can_automate_list; + std::set _visible_controls; + std::set _can_automate_list; nframes_t _last_automation_snapshot; static nframes_t _automation_interval; diff --git a/libs/ardour/ardour/automation_control.h b/libs/ardour/ardour/automation_control.h index 7878077a98..db481b2f99 100644 --- a/libs/ardour/ardour/automation_control.h +++ b/libs/ardour/ardour/automation_control.h @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -40,7 +39,7 @@ class AutomationControl : public PBD::Controllable, public Evoral::Control { public: AutomationControl(ARDOUR::Session&, - const Parameter& parameter, + const Evoral::Parameter& parameter, boost::shared_ptr l=boost::shared_ptr(), const string& name=""); diff --git a/libs/ardour/ardour/automation_list.h b/libs/ardour/ardour/automation_list.h index cae8d3cbba..d5aff74ab9 100644 --- a/libs/ardour/ardour/automation_list.h +++ b/libs/ardour/ardour/automation_list.h @@ -32,19 +32,16 @@ #include #include -#include #include -using Evoral::ControlEvent; - namespace ARDOUR { class AutomationList : public PBD::StatefulDestructible, public Evoral::ControlList { public: - AutomationList (Parameter id); - AutomationList (const XMLNode&, Parameter id); + AutomationList (Evoral::Parameter id); + AutomationList (const XMLNode&, Evoral::Parameter id); ~AutomationList(); virtual boost::shared_ptr create(Evoral::Parameter id); diff --git a/libs/ardour/ardour/event_type_map.h b/libs/ardour/ardour/event_type_map.h index 4d7180c028..99911121c5 100644 --- a/libs/ardour/ardour/event_type_map.h +++ b/libs/ardour/ardour/event_type_map.h @@ -21,17 +21,24 @@ #ifndef __ardour_event_type_map_h__ #define __ardour_event_type_map_h__ +#include #include namespace ARDOUR { +/** This is the interface Ardour provides to Evoral about what + * parameter and event types/ranges/names etc. to use. + */ class EventTypeMap : public Evoral::TypeMap { public: bool type_is_midi(uint32_t type) const; uint8_t parameter_midi_type(const Evoral::Parameter& param) const; uint32_t midi_event_type(uint8_t status) const; - bool is_integer(const Evoral::Parameter& param) const; + bool is_integer(const Evoral::Parameter& param) const; + Evoral::Parameter new_parameter(uint32_t type, uint8_t channel=0, uint32_t id=0) const; + Evoral::Parameter new_parameter(const std::string& str) const; + std::string to_symbol(const Evoral::Parameter& param) const; static EventTypeMap& instance() { return event_type_map; } diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index 521efbafb4..34ffad94ce 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -248,7 +248,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent void clear_automation (); - void set_parameter_automation_state (Parameter, AutoState); + void set_parameter_automation_state (Evoral::Parameter, AutoState); virtual void transport_stopped (nframes_t now); virtual void automation_snapshot (nframes_t now, bool force); diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index b26e4120b1..1e7a53a65a 100644 --- a/libs/ardour/ardour/ladspa_plugin.h +++ b/libs/ardour/ardour/ladspa_plugin.h @@ -58,7 +58,7 @@ class LadspaPlugin : public ARDOUR::Plugin int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; uint32_t nth_parameter (uint32_t port, bool& ok) const; - std::set automatable() const; + std::set automatable() const; void activate () { if (!_was_activated && _descriptor->activate) @@ -85,7 +85,7 @@ class LadspaPlugin : public ARDOUR::Plugin void set_block_size (nframes_t nframes) {} int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); - std::string describe_parameter (Parameter); + std::string describe_parameter (Evoral::Parameter); std::string state_node_name() const { return "ladspa"; } void print_parameter (uint32_t, char*, uint32_t len) const; diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index b3711c5588..978e52b446 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -68,7 +68,7 @@ class LV2Plugin : public ARDOUR::Plugin const LV2_Feature* const* features() { return _features; } - std::set automatable() const; + std::set automatable() const; void activate () { if (!_was_activated) { @@ -94,7 +94,7 @@ class LV2Plugin : public ARDOUR::Plugin void set_block_size (nframes_t nframes) {} int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); - std::string describe_parameter (Parameter); + std::string describe_parameter (Evoral::Parameter); std::string state_node_name() const { return "lv2"; } void print_parameter (uint32_t, char*, uint32_t len) const; diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h index dcc202bbf4..697d80611b 100644 --- a/libs/ardour/ardour/midi_playlist.h +++ b/libs/ardour/ardour/midi_playlist.h @@ -25,7 +25,7 @@ #include #include -#include +#include namespace ARDOUR { @@ -57,7 +57,7 @@ public: void set_note_mode (NoteMode m) { _note_mode = m; } - std::set contained_automation(); + std::set contained_automation(); protected: diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 02313c7e6e..56f73fbe9d 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -75,7 +75,7 @@ public: /** A control that will send "immediate" events to a MIDI track when twiddled */ struct MidiControl : public AutomationControl { - MidiControl(MidiTrack* route, const Parameter& param, + MidiControl(MidiTrack* route, const Evoral::Parameter& param, boost::shared_ptr al = boost::shared_ptr()) : AutomationControl (route->session(), param, al) , _route (route) diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index 6cd3b0755d..7b4f2d1039 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -46,7 +46,7 @@ class AudioBuffer; class StreamPanner : public sigc::trackable, public PBD::Stateful { public: - StreamPanner (Panner& p, Parameter param); + StreamPanner (Panner& p, Evoral::Parameter param); ~StreamPanner (); void set_muted (bool yn); @@ -103,7 +103,7 @@ class StreamPanner : public sigc::trackable, public PBD::Stateful bool _muted; struct PanControllable : public AutomationControl { - PanControllable (Session& s, std::string name, StreamPanner& p, Parameter param) + PanControllable (Session& s, std::string name, StreamPanner& p, Evoral::Parameter param) : AutomationControl (s, param, boost::shared_ptr(new AutomationList(param)), name) , panner (p) @@ -125,7 +125,7 @@ class StreamPanner : public sigc::trackable, public PBD::Stateful class BaseStereoPanner : public StreamPanner { public: - BaseStereoPanner (Panner&, Parameter param); + BaseStereoPanner (Panner&, Evoral::Parameter param); ~BaseStereoPanner (); /* this class just leaves the pan law itself to be defined @@ -152,7 +152,7 @@ class BaseStereoPanner : public StreamPanner class EqualPowerStereoPanner : public BaseStereoPanner { public: - EqualPowerStereoPanner (Panner&, Parameter param); + EqualPowerStereoPanner (Panner&, Evoral::Parameter param); ~EqualPowerStereoPanner (); void distribute_automated (AudioBuffer& src, BufferSet& obufs, @@ -161,7 +161,7 @@ class EqualPowerStereoPanner : public BaseStereoPanner void get_current_coefficients (pan_t*) const; void get_desired_coefficients (pan_t*) const; - static StreamPanner* factory (Panner&, Parameter param); + static StreamPanner* factory (Panner&, Evoral::Parameter param); static string name; XMLNode& state (bool full_state); @@ -175,14 +175,14 @@ class EqualPowerStereoPanner : public BaseStereoPanner class Multi2dPanner : public StreamPanner { public: - Multi2dPanner (Panner& parent, Parameter); + Multi2dPanner (Panner& parent, Evoral::Parameter); ~Multi2dPanner (); void distribute (AudioBuffer& src, BufferSet& obufs, gain_t gain_coeff, nframes_t nframes); void distribute_automated (AudioBuffer& src, BufferSet& obufs, nframes_t start, nframes_t end, nframes_t nframes, pan_t** buffers); - static StreamPanner* factory (Panner&, Parameter); + static StreamPanner* factory (Panner&, Evoral::Parameter); static string name; XMLNode& state (bool full_state); diff --git a/libs/ardour/ardour/parameter.h b/libs/ardour/ardour/parameter.h deleted file mode 100644 index a9aa051924..0000000000 --- a/libs/ardour/ardour/parameter.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright (C) 2007 Paul Davis - Author: Dave Robillard - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __ardour_parameter_h__ -#define __ardour_parameter_h__ - -#include -#include -#include -#include -#include -#include - -namespace ARDOUR { - -/** ID of an automatable parameter. - * - * A given automatable object has a number of automatable parameters. This is - * the unique ID for those parameters. Anything automatable (AutomationList, - * Curve) must have unique Parameter ID with respect to it's Automatable parent. - * - * These are fast to compare, but passing a (const) reference around is - * probably more efficient than copying because the Parameter contains - * metadata not used for comparison. - * - * See evoral/Parameter.hpp for precise definition. - */ -class Parameter : public Evoral::Parameter -{ -public: - Parameter(AutomationType type = NullAutomation, uint32_t id=0, uint8_t channel=0) - : Evoral::Parameter((uint32_t)type, channel, id) - { - init_metadata(type); - } - - Parameter(const Evoral::Parameter& copy) - : Evoral::Parameter(copy) - { - } - - static void init_metadata(AutomationType type) { - double min = 0.0f; - double max = 1.0f; - double normal = 0.0f; - switch(type) { - case NullAutomation: - case GainAutomation: - max = 2.0f; - normal = 1.0f; - break; - case PanAutomation: - normal = 0.5f; - break; - case PluginAutomation: - case SoloAutomation: - case MuteAutomation: - case FadeInAutomation: - case FadeOutAutomation: - case EnvelopeAutomation: - max = 2.0f; - normal = 1.0f; - break; - case MidiCCAutomation: - case MidiPgmChangeAutomation: - case MidiChannelPressureAutomation: - Evoral::MIDI::controller_range(min, max, normal); break; - case MidiPitchBenderAutomation: - Evoral::MIDI::bender_range(min, max, normal); break; - } - set_range(type, min, max, normal); - } - - Parameter(const std::string& str); - - inline AutomationType type() const { return (AutomationType)_type; } - - std::string symbol() const; - - inline operator Parameter() { return (Parameter)*this; } -}; - - -} // namespace ARDOUR - -#endif // __ardour_parameter_h__ - diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index fec044e885..bb81776d53 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include @@ -129,8 +128,8 @@ class Plugin : public PBD::StatefulDestructible, public Latent virtual int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset) = 0; - virtual std::set automatable() const = 0; - virtual string describe_parameter (Parameter) = 0; + virtual std::set automatable() const = 0; + virtual string describe_parameter (Evoral::Parameter) = 0; virtual string state_node_name() const = 0; virtual void print_parameter (uint32_t, char*, uint32_t len) const = 0; diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 28c7718971..25a9e52e88 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -74,14 +74,14 @@ class PluginInsert : public Processor bool is_generator() const; - void set_parameter (Parameter param, float val); - float get_parameter (Parameter param); + void set_parameter (Evoral::Parameter param, float val); + float get_parameter (Evoral::Parameter param); float default_parameter_value (const Evoral::Parameter& param); struct PluginControl : public AutomationControl { - PluginControl (PluginInsert* p, const Parameter ¶m, + PluginControl (PluginInsert* p, const Evoral::Parameter ¶m, boost::shared_ptr list = boost::shared_ptr()); void set_value (float val); @@ -103,13 +103,13 @@ class PluginInsert : public Processor PluginType type (); - string describe_parameter (Parameter param); + string describe_parameter (Evoral::Parameter param); nframes_t signal_latency() const; private: - void parameter_changed (Parameter, float); + void parameter_changed (Evoral::Parameter, float); std::vector > _plugins; @@ -118,7 +118,7 @@ class PluginInsert : public Processor void init (); void set_automatable (); - void auto_state_changed (Parameter which); + void auto_state_changed (Evoral::Parameter which); int32_t count_for_configuration (ChanCount in, ChanCount out) const; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index d7bbe369fe..1b9962744d 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -86,20 +86,22 @@ AudioEngine::AudioEngine (string client_name) Port::set_engine (this); - Parameter::init_metadata(NullAutomation); - Parameter::init_metadata(GainAutomation); - Parameter::init_metadata(PanAutomation); - Parameter::init_metadata(PluginAutomation); - Parameter::init_metadata(SoloAutomation); - Parameter::init_metadata(MuteAutomation); - Parameter::init_metadata(MidiCCAutomation); - Parameter::init_metadata(MidiPgmChangeAutomation); - Parameter::init_metadata(MidiPitchBenderAutomation); - Parameter::init_metadata(MidiChannelPressureAutomation); - Parameter::init_metadata(FadeInAutomation); - Parameter::init_metadata(FadeOutAutomation); - Parameter::init_metadata(EnvelopeAutomation); - Parameter::init_metadata(MidiCCAutomation); + // Initialize parameter metadata (e.g. ranges) + Evoral::Parameter p(NullAutomation); + p = EventTypeMap::instance().new_parameter(NullAutomation); + p = EventTypeMap::instance().new_parameter(GainAutomation); + p = EventTypeMap::instance().new_parameter(PanAutomation); + p = EventTypeMap::instance().new_parameter(PluginAutomation); + p = EventTypeMap::instance().new_parameter(SoloAutomation); + p = EventTypeMap::instance().new_parameter(MuteAutomation); + p = EventTypeMap::instance().new_parameter(MidiCCAutomation); + p = EventTypeMap::instance().new_parameter(MidiPgmChangeAutomation); + p = EventTypeMap::instance().new_parameter(MidiPitchBenderAutomation); + p = EventTypeMap::instance().new_parameter(MidiChannelPressureAutomation); + p = EventTypeMap::instance().new_parameter(FadeInAutomation); + p = EventTypeMap::instance().new_parameter(FadeOutAutomation); + p = EventTypeMap::instance().new_parameter(EnvelopeAutomation); + p = EventTypeMap::instance().new_parameter(MidiCCAutomation); } AudioEngine::~AudioEngine () diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index f74fb83735..d7ade04bc4 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -78,9 +78,9 @@ AudioRegion::init () AudioRegion::AudioRegion (Session& s, nframes_t start, nframes_t length, string name) : Region (s, start, length, name, DataType::AUDIO) , _automatable(s) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { init (); } @@ -89,9 +89,9 @@ AudioRegion::AudioRegion (Session& s, nframes_t start, nframes_t length, string AudioRegion::AudioRegion (boost::shared_ptr src, nframes_t start, nframes_t length) : Region (src, start, length, PBD::basename_nosuffix(src->name()), DataType::AUDIO, 0, Region::Flag(Region::DefaultFlags|Region::External)) , _automatable(src->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { boost::shared_ptr afs = boost::dynamic_pointer_cast (src); if (afs) { @@ -105,9 +105,9 @@ AudioRegion::AudioRegion (boost::shared_ptr src, nframes_t start, n AudioRegion::AudioRegion (boost::shared_ptr src, nframes_t start, nframes_t length, const string& name, layer_t layer, Flag flags) : Region (src, start, length, name, DataType::AUDIO, layer, flags) , _automatable(src->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { boost::shared_ptr afs = boost::dynamic_pointer_cast (src); if (afs) { @@ -121,9 +121,9 @@ AudioRegion::AudioRegion (boost::shared_ptr src, nframes_t start, n AudioRegion::AudioRegion (const SourceList& srcs, nframes_t start, nframes_t length, const string& name, layer_t layer, Flag flags) : Region (srcs, start, length, name, DataType::AUDIO, layer, flags) , _automatable(srcs[0]->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { init (); listen_to_my_sources (); @@ -133,9 +133,9 @@ AudioRegion::AudioRegion (const SourceList& srcs, nframes_t start, nframes_t len AudioRegion::AudioRegion (boost::shared_ptr other, nframes_t offset, nframes_t length, const string& name, layer_t layer, Flag flags) : Region (other, offset, length, name, layer, flags) , _automatable(other->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { set > unique_srcs; @@ -186,9 +186,9 @@ AudioRegion::AudioRegion (boost::shared_ptr other, nframes_t AudioRegion::AudioRegion (boost::shared_ptr other) : Region (other) , _automatable(other->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { assert(_type == DataType::AUDIO); _scale_amplitude = other->_scale_amplitude; @@ -203,9 +203,9 @@ AudioRegion::AudioRegion (boost::shared_ptr other) AudioRegion::AudioRegion (boost::shared_ptr src, const XMLNode& node) : Region (src, node) , _automatable(src->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { boost::shared_ptr afs = boost::dynamic_pointer_cast (src); if (afs) { @@ -225,9 +225,9 @@ AudioRegion::AudioRegion (boost::shared_ptr src, const XMLNode& nod AudioRegion::AudioRegion (SourceList& srcs, const XMLNode& node) : Region (srcs, node) , _automatable(srcs[0]->session()) - , _fade_in (new AutomationList(Parameter(FadeInAutomation))) - , _fade_out (new AutomationList(Parameter(FadeOutAutomation))) - , _envelope (new AutomationList(Parameter(EnvelopeAutomation))) + , _fade_in (new AutomationList(Evoral::Parameter(FadeInAutomation))) + , _fade_out (new AutomationList(Evoral::Parameter(FadeOutAutomation))) + , _envelope (new AutomationList(Evoral::Parameter(EnvelopeAutomation))) { init (); diff --git a/libs/ardour/automatable.cc b/libs/ardour/automatable.cc index c9f774d441..a4d0de0958 100644 --- a/libs/ardour/automatable.cc +++ b/libs/ardour/automatable.cc @@ -67,7 +67,7 @@ Automatable::old_set_automation_state (const XMLNode& node) if (sstr.fail()) { break; } - mark_automation_visible (Parameter(PluginAutomation, what), true); + mark_automation_visible (Evoral::Parameter(PluginAutomation, what), true); } } @@ -96,7 +96,7 @@ Automatable::load_automation (const string& path) } Glib::Mutex::Lock lm (control_lock()); - set tosave; + set tosave; controls().clear (); _last_automation_snapshot = 0; @@ -110,10 +110,11 @@ Automatable::load_automation (const string& path) in >> when; if (!in) goto bad; in >> value; if (!in) goto bad; + Evoral::Parameter param(PluginAutomation, port); /* FIXME: this is legacy and only used for plugin inserts? I think? */ - boost::shared_ptr c = control (Parameter(PluginAutomation, port), true); + boost::shared_ptr c = control (param, true); c->list()->add (when, value); - tosave.insert (Parameter(PluginAutomation, port)); + tosave.insert (param); } return 0; @@ -127,7 +128,7 @@ Automatable::load_automation (const string& path) void Automatable::add_control(boost::shared_ptr ac) { - Parameter param = ac->parameter(); + Evoral::Parameter param = ac->parameter(); ControlSet::add_control(ac); _can_automate_list.insert(param); @@ -135,10 +136,10 @@ Automatable::add_control(boost::shared_ptr ac) } void -Automatable::what_has_visible_data(set& s) const +Automatable::what_has_visible_data(set& s) const { Glib::Mutex::Lock lm (control_lock()); - set::const_iterator li; + set::const_iterator li; for (li = _visible_controls.begin(); li != _visible_controls.end(); ++li) { s.insert (*li); @@ -146,11 +147,11 @@ Automatable::what_has_visible_data(set& s) const } string -Automatable::describe_parameter (Parameter param) +Automatable::describe_parameter (Evoral::Parameter param) { /* derived classes like PluginInsert should override this */ - if (param == Parameter(GainAutomation)) { + if (param == Evoral::Parameter(GainAutomation)) { return _("Fader"); } else if (param.type() == PanAutomation) { /* ID's are zero-based, present them as 1-based */ @@ -165,23 +166,23 @@ Automatable::describe_parameter (Parameter param) } else if (param.type() == MidiChannelPressureAutomation) { return string_compose("Pressure [%1]", int(param.channel()) + 1); } else { - return param.symbol(); + return EventTypeMap::instance().to_symbol(param); } } void -Automatable::can_automate (Parameter what) +Automatable::can_automate (Evoral::Parameter what) { _can_automate_list.insert (what); } void -Automatable::mark_automation_visible (Parameter what, bool yn) +Automatable::mark_automation_visible (Evoral::Parameter what, bool yn) { if (yn) { _visible_controls.insert (what); } else { - set::iterator i; + set::iterator i; if ((i = _visible_controls.find (what)) != _visible_controls.end()) { _visible_controls.erase (i); @@ -194,7 +195,7 @@ Automatable::mark_automation_visible (Parameter what, bool yn) * pass that type and it will be used for the untyped AutomationList found. */ int -Automatable::set_automation_state (const XMLNode& node, Parameter legacy_param) +Automatable::set_automation_state (const XMLNode& node, Evoral::Parameter legacy_param) { Glib::Mutex::Lock lm (control_lock()); @@ -216,7 +217,10 @@ Automatable::set_automation_state (const XMLNode& node, Parameter legacy_param) const XMLProperty* id_prop = (*niter)->property("automation-id"); - Parameter param = (id_prop ? Parameter(id_prop->value()) : legacy_param); + Evoral::Parameter param = (id_prop + ? EventTypeMap::instance().new_parameter(id_prop->value()) + : legacy_param); + if (param.type() == NullAutomation) { warning << "Automation has null type" << endl; continue; @@ -226,7 +230,7 @@ Automatable::set_automation_state (const XMLNode& node, Parameter legacy_param) if (!id_prop) { warning << "AutomationList node without automation-id property, " - << "using default: " << legacy_param.symbol() << endmsg; + << "using default: " << EventTypeMap::instance().to_symbol(legacy_param) << endmsg; } boost::shared_ptr existing = control(param); @@ -265,7 +269,7 @@ Automatable::get_automation_state () } void -Automatable::set_parameter_automation_state (Parameter param, AutoState s) +Automatable::set_parameter_automation_state (Evoral::Parameter param, AutoState s) { Glib::Mutex::Lock lm (control_lock()); @@ -279,7 +283,7 @@ Automatable::set_parameter_automation_state (Parameter param, AutoState s) } AutoState -Automatable::get_parameter_automation_state (Parameter param, bool lock) +Automatable::get_parameter_automation_state (Evoral::Parameter param, bool lock) { AutoState result = Off; @@ -299,7 +303,7 @@ Automatable::get_parameter_automation_state (Parameter param, bool lock) } void -Automatable::set_parameter_automation_style (Parameter param, AutoStyle s) +Automatable::set_parameter_automation_style (Evoral::Parameter param, AutoStyle s) { Glib::Mutex::Lock lm (control_lock()); @@ -313,7 +317,7 @@ Automatable::set_parameter_automation_style (Parameter param, AutoStyle s) } AutoStyle -Automatable::get_parameter_automation_style (Parameter param) +Automatable::get_parameter_automation_style (Evoral::Parameter param) { Glib::Mutex::Lock lm (control_lock()); diff --git a/libs/ardour/automation_control.cc b/libs/ardour/automation_control.cc index 769f111a23..710fe449f8 100644 --- a/libs/ardour/automation_control.cc +++ b/libs/ardour/automation_control.cc @@ -31,10 +31,10 @@ using namespace PBD; AutomationControl::AutomationControl( ARDOUR::Session& session, - const Parameter& parameter, + const Evoral::Parameter& parameter, boost::shared_ptr list, const string& name) - : Controllable((name != "") ? name : parameter.symbol()) + : Controllable((name != "") ? name : EventTypeMap::instance().to_symbol(parameter)) , Evoral::Control(parameter, list) , _session(session) { diff --git a/libs/ardour/automation_list.cc b/libs/ardour/automation_list.cc index c8a5ba7a39..6e2d959628 100644 --- a/libs/ardour/automation_list.cc +++ b/libs/ardour/automation_list.cc @@ -24,8 +24,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -51,7 +51,7 @@ static void dumpit (const AutomationList& al, string prefix = "") #endif /* XXX: min_val max_val redundant? (param.min() param.max()) */ -AutomationList::AutomationList (Parameter id) +AutomationList::AutomationList (Evoral::Parameter id) : ControlList(id) { _state = Off; @@ -86,7 +86,7 @@ AutomationList::AutomationList (const AutomationList& other, double start, doubl /** \a id is used for legacy sessions where the type is not present * in or below the node. It is used if \a id is non-null. */ -AutomationList::AutomationList (const XMLNode& node, Parameter id) +AutomationList::AutomationList (const XMLNode& node, Evoral::Parameter id) : ControlList(id) { _touching = false; @@ -127,7 +127,7 @@ AutomationList::operator= (const AutomationList& other) _events.clear (); for (const_iterator i = other._events.begin(); i != other._events.end(); ++i) { - _events.push_back (new ControlEvent (**i)); + _events.push_back (new Evoral::ControlEvent (**i)); } _min_yval = other._min_yval; @@ -220,7 +220,7 @@ AutomationList::state (bool full) char buf[64]; LocaleGuard lg (X_("POSIX")); - root->add_property ("automation-id", _parameter.symbol()); + root->add_property ("automation-id", EventTypeMap::instance().to_symbol(_parameter)); root->add_property ("id", _id.to_s()); @@ -388,7 +388,7 @@ AutomationList::set_state (const XMLNode& node) } if ((prop = node.property (X_("automation-id"))) != 0){ - _parameter = Evoral::Parameter(prop->value()); + _parameter = EventTypeMap::instance().new_parameter(prop->value()); } else { warning << "Legacy session: automation list has no automation-id property."; } diff --git a/libs/ardour/crossfade.cc b/libs/ardour/crossfade.cc index b6ca322c73..fb4325865c 100644 --- a/libs/ardour/crossfade.cc +++ b/libs/ardour/crossfade.cc @@ -78,8 +78,8 @@ Crossfade::Crossfade (boost::shared_ptr in, boost::shared_ptr