This is an old revision of the document!


Ardour Lua Scripting

Lua is a lightweight programming language which lends itself nicely to embedded into other applications.

In Ardour's case Lua is available…

  • DSP Scripts - audio processor plugins (per track) with access to the session
  • Session Scripts - global per session actions
  • Editor Action Scripts - user accessible actions (menu, bindings)
  • Editor Hooks - event triggered GUI actions
  • Script Console

Why Lua?

small, lean, rt-safe.

General Concepts

  • Ardour calls Lua (not the other way 'round).
  • No bound constructors. ardour provided factory methods. ie. Lua asks ardour to create objects (eg, new tracks) then get a reference to the object.

DSP Scripts

Editor Examples

print (Session:route_by_remote_id(1):name())

a = Session:route_by_remote_id(1);
print (a:name());

print(Session:get_tracks():size())

for i, v in ipairs(Session:unknown_processors():table()) do print(v) end
for i, v in ipairs(Session:get_tracks():table()) do print(v:name()) end

for t in Session:get_tracks():iter() do print(t:name()) end
for r in Session:get_routes():iter() do print(r:name()) end


Session:tempo_map():add_tempo(ARDOUR.Tempo(100,4), ARDOUR.BBT_TIME(4,1,0))


Editor:set_zoom_focus(Editing.ZoomFocusRight)
print(Editing.ZoomFocusRight);
Editor:set_zoom_focus(1)


files = ARDOUR.StringVector();
files:push_back("/home/rgareus/data/coding/ltc-tools/smpte.wav")
pos = -1
Editor:do_import(files, Editing.ImportDistinctFiles, Editing.ImportAsTrack, ARDOUR.SrcQuality.SrcBest, pos, ARDOUR.PluginInfo())

#or in one line:
Editor:do_import(ARDOUR.StringVector():add({"/path/to/file.wav"}), Editing.ImportDistinctFiles, Editing.ImportAsTrack, ARDOUR.SrcQuality.SrcBest, -1, ARDOUR.PluginInfo())

# called when a new session is loaded:
function new_session (name) print("NEW SESSION:", name) end
 
wiki/ardourlua.1453825744.txt.gz · Last modified: 26.01.2016 17:29 by rgareus