Option to disable editing/drawing MIDI notes in main editor

Now that we have the new workflow of editing MIDI regions in a separate piano roll window, could it be useful to add an option to disable the drawing of MIDI notes in the main editor altogether?

I see 2 reasons to justify such an option:

(1) Separation of tasks. Programs like LMMS make it impossible to mess with MIDI note and automation data unless you open a MIDI region and do stuff in it. In Ardour, if you press E or D, you can often select notes and automation nodes and do stuff to them, even when zoomed out a significant amount. This is sometimes useful, but most of the time it gives me paranoia that I modified something by accident and didn’t notice.

(2) Performance. In large projects, I feel like a lot of processing power is wasted on notes. A DAW should not punish you for using too many MIDI notes, or for wanting to zoom out your project to see more regions. If my understanding is correct, when you press D and have a thousand MIDI notes visible, Ardour needs to continuously compute mouse collisions with a thousand hitboxes. This of course is a powerful feature, but I rarely need it. If doing away with this collision checking lead to noticeable performance improvements, I think it should be an option.

Overall, I see a reasonable case for 1-3 settings:

  • Disable interacting with MIDI notes in the Editor. This would mean notes are still drawn as decoration, but you can’t do any edits to them. I imagine this would eliminate most performance issues, since audio regions already do this and they feel snappy.
  • Disable drawing MIDI notes. To squeeze out maximum performance. For completeness, there could also be an option to disable drawing audio waveforms. But only if there is genuine performance impact, which I’m not sure there is. Would need more input and benchmarks.

Curious to hear your thoughts.

It won’t change that. The notes are still on the canvas; even if they are insensitive to events, they are still in the object tree. Waveforms are not the same, because they are a single object for their entire extent.

Just unbind/rebind “e” and “d” …

I see, then I assume it’s impossible to do what I described without a massive and chaos-inducing refactor. A bit of a shame, but understandable. Thank you.