2016-02-23 09:44:41 -05:00
|
|
|
ardour {
|
|
|
|
["type"] = "session",
|
2016-05-14 17:59:32 -04:00
|
|
|
name = "Good Night",
|
2020-09-30 16:06:35 -04:00
|
|
|
author = "Ardour Team",
|
2016-02-23 09:44:41 -05:00
|
|
|
description = [[
|
2016-05-14 17:59:32 -04:00
|
|
|
Example Ardour Session Script.
|
|
|
|
Session scripts are called at the beginning of every process-callback (before doing any audio processing).
|
|
|
|
This example stops the transport after rolling for a configurable time which can be set when instantiating the script.]]
|
2016-02-23 09:44:41 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
function sess_params ()
|
|
|
|
return
|
|
|
|
{
|
|
|
|
["print"] = { title = "Debug Print (yes/no)", default = "no", optional = true },
|
|
|
|
["time"] = { title = "Timeout (sec)", default = "90", optional = false },
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
function factory (params)
|
|
|
|
return function (n_samples)
|
|
|
|
local p = params["print"] or "no"
|
|
|
|
local timeout = params["time"] or 90
|
|
|
|
a = a or 0
|
2017-09-26 23:03:10 -04:00
|
|
|
if p ~= "no" then print (a, n_samples, Session:sample_rate (), Session:transport_rolling ()) end -- debug output (not rt safe)
|
2016-02-23 09:44:41 -05:00
|
|
|
if (not Session:transport_rolling()) then
|
|
|
|
a = 0
|
|
|
|
return
|
|
|
|
end
|
|
|
|
a = a + n_samples
|
2017-09-26 23:03:10 -04:00
|
|
|
if (a > timeout * Session:sample_rate()) then
|
2021-11-28 15:10:19 -05:00
|
|
|
Session:request_stop (false, false, ARDOUR.TransportRequestSource.TRS_UI);
|
2016-02-23 09:44:41 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|