From 572f94ad4408b181f2c9a040c9cc35d35cc64896 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Tue, 29 Sep 2020 22:56:05 -0700 Subject: [PATCH] MIDI-Mapper: Preserve mapping creation order when loading/saving. This makes it possible to fiddle controls in a defined order and then edit the file to give them useful names. --- mixer/src/midi-mapper.C | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mixer/src/midi-mapper.C b/mixer/src/midi-mapper.C index 76dc4ec..5fe3007 100644 --- a/mixer/src/midi-mapper.C +++ b/mixer/src/midi-mapper.C @@ -416,6 +416,7 @@ int signal_handler ( float value, void *user_data ) std::map sig_map; +std::map sig_map_ordered; bool save_settings ( void ) @@ -425,11 +426,12 @@ save_settings ( void ) if ( !fp ) return false; - for ( std::map::const_iterator i = sig_map.begin(); - i != sig_map.end(); + for ( std::map::const_iterator i = sig_map_ordered.begin(); + i != sig_map_ordered.end(); i++ ) { - fprintf( fp, "[%s] %s\n", i->first.c_str(), i->second.signal_name.c_str() ); + + fprintf( fp, "[%s] %s\n", i->second.c_str(), sig_map[i->second.c_str()].signal_name.c_str() ); } fclose(fp); @@ -450,6 +452,7 @@ load_settings ( void ) return false; sig_map.clear(); + sig_map_ordered.clear(); char *signal_name; char *midi_event; @@ -471,6 +474,8 @@ load_settings ( void ) sig_map[midi_event] = m; sig_map[midi_event].signal_name = signal_name; sig_map[midi_event].signal = osc->add_signal( signal_name, OSC::Signal::Output, 0, 1, 0, signal_handler, &sig_map[midi_event] ); + + sig_map_ordered[max_signal] = midi_event; } free(signal_name); @@ -780,6 +785,8 @@ main ( int argc, char **argv ) sig_map[midi_event].signal_name = s; sig_map[midi_event].signal = osc->add_signal( s, OSC::Signal::Output, 0, 1, 0, signal_handler, &sig_map[midi_event] ); + sig_map_ordered[max_signal] = midi_event; + nsm_send_is_dirty( nsm ); free(s);