Some DAWs such as FL Studio and Ableton Live have ways of generating random MIDI sequences, which are useful for inspiration. The user experience of these features goes something like this:
- A pattern or region is selected as the target to receive random note data.
- A control panel or persistent dialog window (not modal) allows the user to change the parameters of the randomization.
- The note data is updated after each parameter change.
- Transport state can be changed without accepting or dismissing the randomization.
As I think about how to achieve this in Ardour, a few possibilities occur to me:
Write a DSP plugin (perhaps in Lua) that outputs random MIDI. This takes advantage of existing scriptability, but introduces difficulties in that we cannot use an existing MIDI region as a context; the data must be recorded to get a region. This also introduces a visualization problem: must the DSP plugin have its own piano roll? This seems redundant as Ardour already has a way of working with MIDI data: regions!
Write an editor action script. Now we have the ability to select a region and fill it with random data, and the ability to show a dialog in which parameters can be set. The difficulty is that the dialog is transient, whereas the process of tweaking a random sequence is much more interactive, like tweaking plugin parameters. We could trigger the action multiple times, but it’s unwieldy as the previous parameter values are not remembered, and we have to either undo the last action or clear initial MIDI data automatically in the script.
Both approaches have drawbacks. Perhaps others know of a better way, and I welcome learning of it.
But if there is no better way, I conclude that Ardour needs a way to support this type of feature, if not directly then through scripting. If we could store the parameters of randomization in the session, it would be possible to always revisit them. I’m not beyond contributing to the codebase if it is felt that support for such a feature is feasible.