full (?) set of changes required to make MonitorSection an "always-there" component...
[ardour.git] / scripts / _vamp_example.lua
index da400265aea8a8e79ace092a4c74acbd7500b501..73552d638c7c0692543d103329e59b1230388442 100644 (file)
@@ -1,9 +1,20 @@
 ardour { ["type"] = "Snippet", name = "Vamp Plugin Example" }
 
 function factory () return function ()
+
+       -- get a list of all available plugins
+       -- http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:LuaAPI:Vamp
+       -- returns a http://manual.ardour.org/lua-scripting/class_reference/#C:StringVector
+       local plugins = ARDOUR.LuaAPI.Vamp.list_plugins ();
+       for id in plugins:iter () do
+               print ("--", id)
+       end
+
        local sel = Editor:get_selection ()
 
-       local vamp = ARDOUR.LuaAPI.Vamp("libardourvampplugins:dBTP", Session:nominal_frame_rate())
+       -- load the Vamp Plugin with Id "libardourvampplugins:dBTP"
+       -- http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:LuaAPI:Vamp
+       local vamp = ARDOUR.LuaAPI.Vamp("libardourvampplugins:dBTP", Session:nominal_sample_rate())
        print (vamp:plugin():getName())
 
        -- for each selected region
@@ -17,6 +28,7 @@ function factory () return function ()
                local f = vamp:plugin ():getRemainingFeatures ()
 
                -- f is-a Vamp::Plugin::FeatureSet  aka  std::map<int, Vamp::Plugin::FeatureList>
+               -- http://manual.ardour.org/lua-scripting/class_reference/#Vamp:Plugin:FeatureSet
                for id, featlist in f:iter () do
                        print (id, featlist)
                end
@@ -29,6 +41,7 @@ function factory () return function ()
                end
 
                -- get the first feature..
+               -- http://manual.ardour.org/lua-scripting/class_reference/#Vamp:Plugin:Feature
                local feature = featurelist:at(0)
                -- ..and the values of the feature, which is-a std::vector<float>
                local values = feature.values
@@ -38,12 +51,13 @@ function factory () return function ()
                end
 
                -- access the first element of Vamp::Plugin::Feature's "values" vector
+               -- http://manual.ardour.org/lua-scripting/class_reference/#C:FloatVector
                local value = values:at(0)
-               -- in case of libardourvampplugins:dBTP that's the true-peak
-               local dbtp = 20 * math.log (value) / math.log(10)
+               -- in case of libardourvampplugins:dBTP that's the true-peak (signal value)
+               local dbtp = 20 * math.log (value) / math.log(10) -- convert it to dB
                print (string.format ("Region '%s': %.2f dBTP", r:name (), dbtp))
 
-               -- reset the plugin
+               -- reset the plugin for the next iteration
                vamp:reset ()
        end
 end end