[Ardour-Dev] lua bindings - midi region create

Robin Gareus robin at gareus.org
Tue Oct 18 12:12:11 PDT 2016

On 10/18/2016 08:02 PM, Nathan Stewart wrote:
> I took a look at the _vamp_audio_to_midi lua script, and had some questions:
> 1) We don't currently have bindings for creating midi regions (or audio?) I
> can't bind the constructor, but what should be exported?

Since the objects need C++ lifetime, they cannot be directly constructed
from a script.

Effectively  RegionFactory::create() needs to be exposed, but it's
probably better to abstract that and create a dedicated method for Lua
which hides some details (PropertyList), like
MidiTimeAxisView::add_region() does for the Ardour GUI.

boost::shared_ptr<MidiRegion> ARDOUR::LuaAPI::create_midi_region(...)
to libs/ardour/lua_api.cc

> 2) The function expects one audio region and one midi region. We currently
> can't select dissimilar types - so you can't for instance select an audio
> region and a MIDI track.

Indeed, the current Audio-to-MIDI script is just an example and proof of

> That would be one way to select the desired audio
> region, and provide a destination for the MIDI region created.  If we
> select an audio track (so that we can select the MIDI track for the
> destination), we don't have a way to restrict the conversion to specific
> regions.  Given the two current options, I think selecting regions and
> creating a new track for them to go to would be the most desirable solution.

Yes, creating new MIDI tracks is likely the most usable option. I'd keep
region/track mapping intact though.

e.g select 3 audio-regions on audio-track1, 2 audio-egions on
audio-track2   -> create 2 new midi tracks  (not 5).

One downside: Undo is not possible (since track creation cannot be undone).

> 3) If we expect the output region to exist, it's currently
> difficult to (impossible? I haven't yet figured out how, seeing indications
> you can't) create an empty region in a MIDI track with no content.

press "D" (draw mode), then draw a region onto the midi-track.
see  20sec into https://vimeo.com/186035015


More information about the Ardour-Dev mailing list