summaryrefslogtreecommitdiff
path: root/scripts/_osc_hook_example.lua
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-08-10 03:12:11 +0200
committerRobin Gareus <robin@gareus.org>2016-08-10 03:12:11 +0200
commita8143ea44e83a87fb6a9500d59409a14a94ad655 (patch)
tree3aac8610dc26fb63abd4cc1c7afe864714a2f408 /scripts/_osc_hook_example.lua
parent2b7a89ecffa92a616cd61774d42bea1e99db6f79 (diff)
prefix no-inst script with an underscore and skip install
Diffstat (limited to 'scripts/_osc_hook_example.lua')
-rw-r--r--scripts/_osc_hook_example.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/scripts/_osc_hook_example.lua b/scripts/_osc_hook_example.lua
new file mode 100644
index 0000000000..fdcda4b44f
--- /dev/null
+++ b/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["unique"] 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_frame(), Session:transport_speed())
+ elseif (signal == LuaSignal.RegionPropertyChanged) then
+ obj,pch = ...
+ tx:send ("/region_property_changed", "sTTiii",
+ obj:name (),
+ (pch:containsFramePos (ARDOUR.Properties.Start)),
+ (pch:containsFramePos (ARDOUR.Properties.Length)),
+ obj:position (), obj:start (), obj:length ())
+ end
+ end
+end