From 5a07da92558c4bef0bdfb925f54a1b1af6f0e35a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 16 Nov 2022 16:25:09 -0700 Subject: [PATCH] triggers: code to dump MIDI learn-ed bindings as a binding map --- libs/ardour/ardour/triggerbox.h | 1 + libs/ardour/triggerbox.cc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/libs/ardour/ardour/triggerbox.h b/libs/ardour/ardour/triggerbox.h index dbe066ea28..39f6247687 100644 --- a/libs/ardour/ardour/triggerbox.h +++ b/libs/ardour/ardour/triggerbox.h @@ -819,6 +819,7 @@ class LIBARDOUR_API TriggerBox : public Processor static void add_custom_midi_binding (int id, int x, int y); static void remove_custom_midi_binding (int x, int y); static void clear_custom_midi_bindings (); + static int dump_custom_midi_bindings (std::string const & path); void begin_midi_learn (int index); void midi_unlearn (int index); diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc index ca8a561cc8..d6fb711acd 100644 --- a/libs/ardour/triggerbox.cc +++ b/libs/ardour/triggerbox.cc @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -3968,6 +3969,28 @@ TriggerBox::clear_custom_midi_bindings () _custom_midi_map.clear (); } +int +TriggerBox::dump_custom_midi_bindings (std::string const & path) +{ + std::ofstream f (path.c_str()); + + if (!f) { + return -1; + } + + f << "\n \n"; + + for (CustomMidiMap::iterator i = _custom_midi_map.begin(); i != _custom_midi_map.end(); ++i) { + string str = string_compose (X_("\t\n"), + i->first % 16, /* note number */ + i->first / 16, /* channel */ + i->second.first, + i->second.second); + } + + f << "\n"; +} + void TriggerBox::add_custom_midi_binding (int id, int x, int y) {