MIDI Randomization

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:

  1. A pattern or region is selected as the target to receive random note data.
  2. A control panel or persistent dialog window (not modal) allows the user to change the parameters of the randomization.
  3. The note data is updated after each parameter change.
  4. 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:

  1. 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!

  2. 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.

1 Like

the “beatbox” branches (there have been several) contain a plugin-like element that is essentially a step-sequencer, with the additional feature that it can export its current pattern to a MIDI region in the track that owns it.

it will have a randomize feature.

1 Like

Thanks for the pointer. I’ll check it out.

There’s nothing to check at this time. Just a heads up that we’re aware of these ideas and there is work going on.

1 Like

That’s curious. What about https://github.com/Ardour/ardour/tree/beatbox and https://github.com/Ardour/ardour/tree/master/tools/bb? Are the branches you refer to not public?

Just because the trees exist doesn’t mean they are ready for even testing yet, just that some development has happened in that route and it is not seen as ready to merge into Master where public testing might take place. They may not even compile for instance.


Gotcha. I don’t always mind a broken build. Just trying to get acquainted with the project and development status in case I decide to contribute.

If you are going to contribute I highly recommend jumping on #ardour on IRC during the daytime in the US as more realtime discussions tend to happen there, and you are more likely to have meaningful conversations about programming decisions there.