Don't prevent user from choosing Linear interpolation for controllers if they want...
authorDavid Robillard <d@drobilla.net>
Mon, 26 Oct 2009 22:07:23 +0000 (22:07 +0000)
committerDavid Robillard <d@drobilla.net>
Mon, 26 Oct 2009 22:07:23 +0000 (22:07 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5933 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/automation_time_axis.cc
libs/ardour/event_type_map.cc

index 63476b051bea5cbdd836b23513b36e228a17dd18..8e0445c4eb5e191fe9bbc8578db723ceb125ac1d 100644 (file)
@@ -535,7 +535,7 @@ AutomationTimeAxisView::build_display_menu ()
 
        /* mode menu */
 
-       if ( EventTypeMap::instance().is_midi_parameter(_control->parameter()) ) {
+       if (EventTypeMap::instance().is_midi_parameter(_control->parameter())) {
 
                Menu* auto_mode_menu = manage (new Menu);
                auto_mode_menu->set_name ("ArdourContextMenu");
@@ -544,17 +544,18 @@ AutomationTimeAxisView::build_display_menu ()
                RadioMenuItem::Group group;
 
                am_items.push_back (RadioMenuElem (group, _("Discrete"), bind (
-                                               mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
-                                               AutomationList::Discrete)));
+                               mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
+                               AutomationList::Discrete)));
                mode_discrete_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
                mode_discrete_item->set_active(_control->list()->interpolation() == AutomationList::Discrete);
 
-               // For discrete types we dont allow the linear option since it makes no sense for those Controls
+               am_items.push_back (RadioMenuElem (group, _("Linear"), bind (
+                               mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
+                               AutomationList::Linear)));
+               mode_line_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
+
+               // Set default interpolation type to linear if this isn't a (usually) discrete controller
                if (EventTypeMap::instance().interpolation_of(_control->parameter()) == Evoral::ControlList::Linear) {
-                       am_items.push_back (RadioMenuElem (group, _("Line"), bind (
-                                                       mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
-                                                       AutomationList::Linear)));
-                       mode_line_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
                        mode_line_item->set_active(_control->list()->interpolation() == AutomationList::Linear);
                }
 
index dd5b1a9149118b2535a140e211745b7d446e7792..0388a934f20bd9fa92ebd5af2e0ee1257040db17 100644 (file)
@@ -118,9 +118,9 @@ EventTypeMap::interpolation_of(const Evoral::Parameter& param)
                case MIDI_CTL_OMNI_ON:
                case MIDI_CTL_MONO:
                case MIDI_CTL_POLY:
-                       return Evoral::ControlList::Discrete;
-                       break;
-               default: return Evoral::ControlList::Linear; break;
+                       return Evoral::ControlList::Discrete; break;
+               default:
+                       return Evoral::ControlList::Linear; break;
                }
                break;
        case MidiPgmChangeAutomation:       return Evoral::ControlList::Discrete; break;