diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 9b3d4f6809..04722ff6af 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -231,6 +231,9 @@ CONFIG_VARIABLE (EditMode, edit_mode, "edit-mode", Slide) CONFIG_VARIABLE (RippleMode, ripple_mode, "ripple-mode", RippleSelected) CONFIG_VARIABLE (Temporal::TimeDomain, default_automation_time_domain, "default-automation-time-domain", Temporal::BeatTime) +CONFIG_VARIABLE (bool, mark_at_pgm_change, "mark-at-pgm-change", true) +CONFIG_VARIABLE (bool, locate_to_pgm_change, "locate-to-pgm-change", true) + /* plugin related */ CONFIG_VARIABLE (bool, new_plugins_active, "new-plugins-active", true) diff --git a/libs/ardour/midi_scene_changer.cc b/libs/ardour/midi_scene_changer.cc index d791c1275a..505c7fec8c 100644 --- a/libs/ardour/midi_scene_changer.cc +++ b/libs/ardour/midi_scene_changer.cc @@ -283,16 +283,22 @@ MIDISceneChanger::program_change_input (MIDI::Parser& parser, MIDI::byte program last_program_message_time = time; - if (!recording()) { + if (!recording ()) { + if (Config->get_locate_to_pgm_change ()) { + MIDIInputActivity (); /* EMIT SIGNAL */ - MIDIInputActivity (); /* EMIT SIGNAL */ + int bank = -1; + if (have_seen_bank_changes) { + bank = std::dynamic_pointer_cast(input_port)->channel (channel)->bank(); + } - int bank = -1; - if (have_seen_bank_changes) { - bank = std::dynamic_pointer_cast(input_port)->channel (channel)->bank(); + jump_to (bank, program); + return; } + } - jump_to (bank, program); + /* we are recording, do we need to create a marker */ + if (!Config->get_mark_at_pgm_change ()) { return; }