Re: lua bindings - midi region create
Robin Gareus <[email protected]> Tue, 18 Oct 2016 21:12:11 +0200
| Newsgroups | gmane.comp.audio.ardour.devel |
|---|---|
| Message-ID | <[email protected]> |
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. add 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 concept. > 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 ciao, robin