From 44c40bc06529c4c1b6a3dca6fec96f1515f19fc9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Jul 2018 14:56:56 -0400 Subject: use MIDI meter colors (themeable) to show MIDI note velocity. Selected notes no longer show the selected color for fill, following Alex Mitchell's proof-of-concept patch that showed it was easier to see what you're doing when the fill color shows velocity and we just use outline for selection status. --- gtk2_ardour/note_base.cc | 18 ++++++++++++++++++ gtk2_ardour/note_base.h | 10 +--------- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/note_base.cc b/gtk2_ardour/note_base.cc index afc72551a1..52ee88a2d6 100644 --- a/gtk2_ardour/note_base.cc +++ b/gtk2_ardour/note_base.cc @@ -330,3 +330,21 @@ NoteBase::big_enough_to_trim () const return (x1() - x0()) > 10; } + +uint32_t +NoteBase::meter_style_fill_color(uint8_t vel, bool selected) +{ + if (vel < 32) { + return UINT_INTERPOLATE(UIConfiguration::instance().color ("midi meter color0"), UIConfiguration::instance().color ("midi meter color1"), (vel / 32.0)); + } else if (vel < 64) { + return UINT_INTERPOLATE(UIConfiguration::instance().color ("midi meter color2"), UIConfiguration::instance().color ("midi meter color3"), ((vel-32) / 32.0)); + } else if (vel < 100) { + return UINT_INTERPOLATE(UIConfiguration::instance().color ("midi meter color4"), UIConfiguration::instance().color ("midi meter color5"), ((vel-64) / 32.0)); + } else if (vel < 112) { + return UINT_INTERPOLATE(UIConfiguration::instance().color ("midi meter color6"), UIConfiguration::instance().color ("midi meter color7"), ((vel-100) / 36.0)); + } else { + return UINT_INTERPOLATE(UIConfiguration::instance().color ("midi meter color8"), UIConfiguration::instance().color ("midi meter color9"), ((vel-112) / 17.0)); + } +} + + diff --git a/gtk2_ardour/note_base.h b/gtk2_ardour/note_base.h index ebc00cbfa4..2a3612579d 100644 --- a/gtk2_ardour/note_base.h +++ b/gtk2_ardour/note_base.h @@ -103,15 +103,7 @@ public: static void set_colors (); - inline static uint32_t meter_style_fill_color(uint8_t vel, bool selected) { - if (selected) { - return _selected_mod_col; - } else if (vel < 64) { - return UINT_INTERPOLATE(_min_col, _mid_col, (vel / (double)63.0)); - } else { - return UINT_INTERPOLATE(_mid_col, _max_col, ((vel - 64) / (double)63.0)); - } - } + static uint32_t meter_style_fill_color(uint8_t vel, bool selected); /// calculate outline colors from fill colors of notes inline static uint32_t calculate_outline(uint32_t color, bool selected=false) { -- cgit v1.2.3