View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0009543 | ardour | bugs | public | 2023-11-19 14:18 | 2026-07-23 05:04 |
| Reporter | pdechery | Assigned To | paul | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | feedback | Resolution | open | ||
| Platform | Debian GNU | OS | Linux | OS Version | (any) |
| Product Version | 8.1 | ||||
| Summary | 0009543: MIDI Clip loses presets when played on Cue | ||||
| Description | MIDI Clips doesn't work on Cues, as they does not honor the chosen presets and remove any configuration you did on your plugin window. | ||||
| Steps To Reproduce | Create MIDI track and choose some MIDI instrument. I've tried this with ZynAddSubFx and General MIDI Synth. Choose a preset on the above mentioned plugin. Create a region and draw some notes on it. Create a MIDI clip by selecting this region, using "Bounce without processing". Go to Cue Window and on the same track place the MIDI clip on it. Create a Cue marker on Timeline to play the Cue where your clip is. Try to play your project with the "Play Cues" button enabled. The preset you had chosen should not be played. If you go to the plugin window it should not even be there anymore. | ||||
| Tags | Ardour 8.0, clip, cue, Midi | ||||
|
|
"The preset you had chosen should not be played. If you go to the plugin window it should not even be there anymore." I am confused. Why do you think is? Or is this just a description of what happens or doesn't happen? |
|
|
Same issue on Ardour 8.11, it appears that the Cue MIDI player sends a patch change at the beginning of each loop, which depending on the plugin's implementation can cause parameter changes, erasing any previous setting. |
|
|
See attached screenshot .... |
|
|
this is a massive issue for me, in my opinion it needs to be turned off by default. |
|
|
We don't agree. It's that simple. |
|
|
how inconvenient would it be to turn this into a preference? |
|
|
Not very, it's just some work that would have to get done. |
|
|
how far off am I with this? so far it only affects clips in tracks created after the preference was changed, still figuring out how to get the config to modify existing empty clips. 0001-send-patch-preference.patch (2,920 bytes)
From 6a14c2728e75554ede342fd7668d970699850dfe Mon Sep 17 00:00:00 2001
From: ergen <rhetr@users.noreply.github.com>
Date: Fri, 17 Jul 2026 14:31:47 -0400
Subject: [PATCH] send patch preference
---
gtk2_ardour/rc_option_editor.cc | 10 ++++++++++
libs/ardour/ardour/rc_configuration_vars.inc.h | 1 +
libs/ardour/triggerbox.cc | 2 +-
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 2c9bae1186..f976e16509 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -3690,6 +3690,16 @@ These settings will only take effect after %1 is restarted.\n\
add_option (_("Editor/Modifiers"), new KeyboardOptions);
add_option (_("Editor/Modifiers"), new OptionEditorBlank ());
+ /* Cue Page *****************************************************************/
+
+ add_option (_("Cue"), new OptionEditorHeading (_("Default Clip Properties")));
+ add_option (_("Cue"),
+ new BoolOption (
+ "allow-patch-changes",
+ _("Send MIDI patches on clip trigger"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_allow_patch_changes),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_allow_patch_changes)
+ ));
/* MIDI *********************************************************************/
diff --git a/libs/ardour/ardour/rc_configuration_vars.inc.h b/libs/ardour/ardour/rc_configuration_vars.inc.h
index 87afd076b2..dcfa3ca88b 100644
--- a/libs/ardour/ardour/rc_configuration_vars.inc.h
+++ b/libs/ardour/ardour/rc_configuration_vars.inc.h
@@ -221,6 +221,7 @@ CONFIG_VARIABLE_SPECIAL (std::string, default_session_parent_dir, "default-sessi
#endif
CONFIG_VARIABLE (std::string, clip_library_dir, "clip-library-dir", "@default@") /* writable folder */
CONFIG_VARIABLE (std::string, sample_lib_path, "sample-lib-path", "") /* custom paths */
+CONFIG_VARIABLE (bool, allow_patch_changes, "allow-patch-changes", true)
CONFIG_VARIABLE (bool, allow_special_bus_removal, "allow-special-bus-removal", false)
CONFIG_VARIABLE (int32_t, processor_usage, "processor-usage", -1)
CONFIG_VARIABLE (int32_t, cpu_dma_latency, "cpu-dma-latency", -1) /* >=0 to enable */
diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc
index a6a9db3259..b3f647f032 100644
--- a/libs/ardour/triggerbox.cc
+++ b/libs/ardour/triggerbox.cc
@@ -232,7 +232,7 @@ Trigger::Trigger (uint32_t n, TriggerBox& b)
, _velocity_effect (Properties::velocity_effect, 0.)
, _stretchable (Properties::stretchable, true)
, _cue_isolated (Properties::cue_isolated, false)
- , _allow_patch_changes (Properties::allow_patch_changes, true)
+ , _allow_patch_changes (Properties::allow_patch_changes, Config->get_allow_patch_changes())
, _stretch_mode (Properties::stretch_mode, Trigger::Crisp)
, _name (Properties::name, "")
, _color (Properties::color, 0xBEBEBEFF)
--
2.43.0
|
|
|
good start |
|
|
getting closer, I believe I just need to figure out how to trigger RCOptionEditor::set_allow_patch_changes on startup. Also I placed the preference under a new "Cue" page right after "Editor" since they are both major view modes but let me know if that or any of the other wording should be different. 0001-set-allow-patch-changes.patch (4,225 bytes)
From 26134d5c7b78b7e3eb9a50bf9cf1679f8de29c4b Mon Sep 17 00:00:00 2001
From: ergen <rhetr@users.noreply.github.com>
Date: Thu, 23 Jul 2026 00:58:57 -0400
Subject: [PATCH] set allow patch changes
---
gtk2_ardour/rc_option_editor.cc | 32 +++++++++++++++++++
gtk2_ardour/rc_option_editor.h | 1 +
.../ardour/ardour/rc_configuration_vars.inc.h | 1 +
libs/ardour/triggerbox.cc | 2 +-
4 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 2c9bae1186..7d6ff68012 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -3690,6 +3690,16 @@ These settings will only take effect after %1 is restarted.\n\
add_option (_("Editor/Modifiers"), new KeyboardOptions);
add_option (_("Editor/Modifiers"), new OptionEditorBlank ());
+ /* Cue Page *****************************************************************/
+
+ add_option (_("Cue"), new OptionEditorHeading (_("Default Clip Properties")));
+ add_option (_("Cue"),
+ new BoolOption (
+ "allow-patch-changes",
+ _("Send MIDI patches on clip trigger"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_allow_patch_changes),
+ sigc::mem_fun (*this, &RCOptionEditor::set_allow_patch_changes)
+ ));
/* MIDI *********************************************************************/
@@ -5579,3 +5589,25 @@ RCOptionEditor::set_default_upper_midi_note (std::string str)
return UIConfiguration::instance().set_default_upper_midi_note (note);
}
+
+bool
+RCOptionEditor::set_allow_patch_changes (bool enabled)
+{
+ std::shared_ptr<RouteList const> rl = _session->get_routes();
+ for (auto const& route : *rl) {
+ std::shared_ptr<TriggerBox> box = route->triggerbox();
+ if (!box) {
+ // ignore routes with no triggerbox
+ continue;
+ }
+ for (int32_t n = 0; n < TriggerBox::default_triggers_per_box; ++n) {
+ TriggerPtr trigger = box->trigger(n);
+ if (std::shared_ptr<Region> () == trigger->the_region()) {
+ // only modify empty triggers
+ trigger->set_allow_patch_changes(enabled);
+ }
+ }
+ }
+
+ return _rc_config->set_allow_patch_changes (enabled);
+}
diff --git a/gtk2_ardour/rc_option_editor.h b/gtk2_ardour/rc_option_editor.h
index b617c784b9..12732e05b6 100644
--- a/gtk2_ardour/rc_option_editor.h
+++ b/gtk2_ardour/rc_option_editor.h
@@ -76,6 +76,7 @@ private:
bool set_default_lower_midi_note (std::string);
std::string get_default_upper_midi_note ();
bool set_default_upper_midi_note (std::string);
+ bool set_allow_patch_changes(bool);
/* plugin actions */
void plugin_scan_refresh ();
diff --git a/libs/ardour/ardour/rc_configuration_vars.inc.h b/libs/ardour/ardour/rc_configuration_vars.inc.h
index 87afd076b2..dcfa3ca88b 100644
--- a/libs/ardour/ardour/rc_configuration_vars.inc.h
+++ b/libs/ardour/ardour/rc_configuration_vars.inc.h
@@ -221,6 +221,7 @@ CONFIG_VARIABLE_SPECIAL (std::string, default_session_parent_dir, "default-sessi
#endif
CONFIG_VARIABLE (std::string, clip_library_dir, "clip-library-dir", "@default@") /* writable folder */
CONFIG_VARIABLE (std::string, sample_lib_path, "sample-lib-path", "") /* custom paths */
+CONFIG_VARIABLE (bool, allow_patch_changes, "allow-patch-changes", true)
CONFIG_VARIABLE (bool, allow_special_bus_removal, "allow-special-bus-removal", false)
CONFIG_VARIABLE (int32_t, processor_usage, "processor-usage", -1)
CONFIG_VARIABLE (int32_t, cpu_dma_latency, "cpu-dma-latency", -1) /* >=0 to enable */
diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc
index 6eef6cad12..baa83eae17 100644
--- a/libs/ardour/triggerbox.cc
+++ b/libs/ardour/triggerbox.cc
@@ -232,7 +232,7 @@ Trigger::Trigger (uint32_t n, TriggerBox& b)
, _velocity_effect (Properties::velocity_effect, 0.)
, _stretchable (Properties::stretchable, true)
, _cue_isolated (Properties::cue_isolated, false)
- , _allow_patch_changes (Properties::allow_patch_changes, true)
+ , _allow_patch_changes (Properties::allow_patch_changes, Config->get_allow_patch_changes())
, _stretch_mode (Properties::stretch_mode, Trigger::Crisp)
, _name (Properties::name, "")
, _color (Properties::color, 0xBEBEBEFF)
--
2.43.0
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2023-11-19 14:18 | pdechery | New Issue | |
| 2023-11-19 14:18 | pdechery | Tag Attached: Ardour 8.0 | |
| 2023-11-19 14:18 | pdechery | Tag Attached: clip | |
| 2023-11-19 14:18 | pdechery | Tag Attached: cue | |
| 2023-11-19 14:18 | pdechery | Tag Attached: Midi | |
| 2023-11-20 19:41 | paul | Assigned To | => paul |
| 2023-11-20 19:41 | paul | Status | new => feedback |
| 2023-11-20 19:41 | paul | Note Added: 0028342 | |
| 2025-02-15 11:57 | lrkngntty | Note Added: 0029217 | |
| 2025-02-15 14:14 | paul | Note Added: 0029218 | |
| 2025-02-15 14:14 | paul | File Added: sp.png | |
| 2026-07-16 15:58 | ergen | Note Added: 0030588 | |
| 2026-07-16 16:10 | paul | Note Added: 0030589 | |
| 2026-07-16 16:13 | ergen | Note Added: 0030590 | |
| 2026-07-16 16:14 | paul | Note Added: 0030591 | |
| 2026-07-17 20:12 | ergen | Note Added: 0030595 | |
| 2026-07-17 20:12 | ergen | File Added: 0001-send-patch-preference.patch | |
| 2026-07-17 21:18 | paul | Note Added: 0030596 | |
| 2026-07-23 05:04 | ergen | Note Added: 0030600 | |
| 2026-07-23 05:04 | ergen | File Added: 0001-set-allow-patch-changes.patch |