From 2607e154eac7bdc92bf881af2fdb1cb895b19e1d Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 3 Oct 2016 03:52:35 +0200 Subject: add vamp-plugin example lua script --- scripts/_vamp_example.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 scripts/_vamp_example.lua diff --git a/scripts/_vamp_example.lua b/scripts/_vamp_example.lua new file mode 100644 index 0000000000..da400265ae --- /dev/null +++ b/scripts/_vamp_example.lua @@ -0,0 +1,49 @@ +ardour { ["type"] = "Snippet", name = "Vamp Plugin Example" } + +function factory () return function () + local sel = Editor:get_selection () + + local vamp = ARDOUR.LuaAPI.Vamp("libardourvampplugins:dBTP", Session:nominal_frame_rate()) + print (vamp:plugin():getName()) + + -- for each selected region + for r in sel.regions:regionlist ():iter () do + print ("Region:", r:name ()) + + -- run the plugin, analyze the first channel of the audio-region + vamp:analyze (r:to_readable (), 0, nil) + + -- get analysis results + local f = vamp:plugin ():getRemainingFeatures () + + -- f is-a Vamp::Plugin::FeatureSet aka std::map + for id, featlist in f:iter () do + print (id, featlist) + end + + -- get the first FeatureList + local featurelist = f:table()[0] + -- Vamp::Plugin::FeatureList is a typedef for std::vector + for feat in featurelist:iter () do + print ("-", feat.label) + end + + -- get the first feature.. + local feature = featurelist:at(0) + -- ..and the values of the feature, which is-a std::vector + local values = feature.values + -- iterate over the std::vector + for val in values:iter () do + print ("*", val) + end + + -- access the first element of Vamp::Plugin::Feature's "values" vector + local value = values:at(0) + -- in case of libardourvampplugins:dBTP that's the true-peak + local dbtp = 20 * math.log (value) / math.log(10) + print (string.format ("Region '%s': %.2f dBTP", r:name (), dbtp)) + + -- reset the plugin + vamp:reset () + end +end end -- cgit v1.2.3