summaryrefslogtreecommitdiff
path: root/scripts/_vamp_tempomap_example.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/_vamp_tempomap_example.lua')
-rw-r--r--scripts/_vamp_tempomap_example.lua85
1 files changed, 0 insertions, 85 deletions
diff --git a/scripts/_vamp_tempomap_example.lua b/scripts/_vamp_tempomap_example.lua
deleted file mode 100644
index 1c216c06f3..0000000000
--- a/scripts/_vamp_tempomap_example.lua
+++ /dev/null
@@ -1,85 +0,0 @@
-ardour { ["type"] = "Snippet", name = "Vamp TempoMap Test" }
-
-function factory () return function ()
-
- -- get Editor selection
- -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:Editor
- -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:Selection
- local sel = Editor:get_selection ()
-
- -- Instantiate the QM BarBeat Tracker
- -- see http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:LuaAPI:Vamp
- -- http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-barbeattracker
- local vamp = ARDOUR.LuaAPI.Vamp("libardourvampplugins:qm-barbeattracker", Session:nominal_sample_rate())
-
- -- prepare table to hold results
- local beats = {}
- local bars = {}
-
- -- for each selected region
- -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:RegionSelection
- for r in sel.regions:regionlist ():iter () do
- -- "r" is-a http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Region
-
- -- prepare lua table to hold results for the given region (by name)
- beats[r:name ()] = {}
- bars[r:name ()] = {}
-
- -- callback to handle Vamp-Plugin analysis results
- function callback (feats)
- -- "feats" is-a http://manual.ardour.org/lua-scripting/class_reference/#Vamp:Plugin:FeatureSet
-
- -- get the first output. here: Beats, estimated beat locations & beat-number
- local fl = feats:table()[0]
- -- "fl" is-a http://manual.ardour.org/lua-scripting/class_reference/#Vamp:Plugin:FeatureList
- -- which may be empty or not nil
- if fl then
- -- iterate over returned features
- for f in fl:iter () do
- -- "f" is-a http://manual.ardour.org/lua-scripting/class_reference/#Vamp:Plugin:Feature
- if f.hasTimestamp then
- local fn = Vamp.RealTime.realTime2Frame (f.timestamp, 48000)
- table.insert (beats[r:name ()], {pos = fn, beat = f.label})
- end
- end
- end
-
- -- get the 2nd output. here: estimated bar locations
- local fl = feats:table()[1]
- if fl then
- for f in fl:iter () do
- if f.hasTimestamp then
- local fn = Vamp.RealTime.realTime2Frame (f.timestamp, 48000)
- table.insert (bars[r:name ()], fn)
- end
- end
- end
- return false -- continue, !cancel
- end
-
- vamp:plugin ():setParameter ("Beats Per Bar", 4); -- TODO ask
-
- -- run the plugin, analyze the first channel of the audio-region
- vamp:analyze (r:to_readable (), 0, callback)
- -- get remaining features (end of analyis)
- callback (vamp:plugin ():getRemainingFeatures ())
- -- reset the plugin (prepare for next iteration)
- vamp:reset ()
- end
-
- -- print results (for now)
- -- TODO: calculate and set tempo-map
- for n,o in pairs(bars) do
- print ("Bar analysis for region:", n)
- for _,t in ipairs(o) do
- print ("-", t)
- end
- end
- for n,o in pairs(beats) do
- print ("Beat analysis for region:", n)
- for _,t in ipairs(o) do
- print ("-", t['pos'], t['beat'])
- end
- end
-
-end end