summaryrefslogtreecommitdiff
path: root/share/scripts/_osc_hook_example.lua
diff options
context:
space:
mode:
Diffstat (limited to 'share/scripts/_osc_hook_example.lua')
-rw-r--r--share/scripts/_osc_hook_example.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/share/scripts/_osc_hook_example.lua b/share/scripts/_osc_hook_example.lua
new file mode 100644
index 0000000000..2ef81cd5bb
--- /dev/null
+++ b/share/scripts/_osc_hook_example.lua
@@ -0,0 +1,52 @@
+ardour {
+ ["type"] = "EditorHook",
+ name = "OSC Callback Example",
+ author = "Ardour Lua Task Force",
+ description = "Send OSC messages",
+}
+
+function action_params ()
+ return
+ {
+ ["uri"] = { title = "OSC URI ", default = "osc.udp://localhost:7890"},
+ }
+end
+
+
+function signals ()
+ s = LuaSignal.Set()
+ s:add (
+ {
+ [LuaSignal.SoloActive] = true,
+ [LuaSignal.RegionPropertyChanged] = true,
+ [LuaSignal.Exported] = true,
+ [LuaSignal.TransportStateChange] = true
+ }
+ )
+ return s
+end
+
+function factory (params)
+ return function (signal, ref, ...)
+ local uri = params["uri"] or "osc.udp://localhost:7890"
+ local tx = ARDOUR.LuaOSC.Address (uri)
+ -- debug print (stdout)
+ -- print (signal, ref, ...)
+
+ if (signal == LuaSignal.Exported) then
+ tx:send ("/session/exported", "ss", ...)
+ elseif (signal == LuaSignal.SoloActive) then
+ tx:send ("/session/solo_changed", "")
+ elseif (signal == LuaSignal.TransportStateChange) then
+ tx:send ("/session/transport", "if",
+ Session:transport_sample(), Session:transport_speed())
+ elseif (signal == LuaSignal.RegionPropertyChanged) then
+ obj,pch = ...
+ tx:send ("/region_property_changed", "sTTiii",
+ obj:name (),
+ (pch:containsSamplePos (ARDOUR.Properties.Start)),
+ (pch:containsSamplePos (ARDOUR.Properties.Length)),
+ obj:position (), obj:start (), obj:length ())
+ end
+ end
+end