summaryrefslogtreecommitdiff
path: root/libs/ardour/luabindings.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-10-03 03:51:53 +0200
committerRobin Gareus <robin@gareus.org>2016-10-03 03:52:51 +0200
commit330e69b5652676653d4c49d33e503617ad476194 (patch)
treef6f2f6eafb849e05fa3647d276fcb18f6c91ae7a /libs/ardour/luabindings.cc
parentaf289cab6231ec8785a2e69ab78f6257626aef9f (diff)
Add Vamp-plugin Lua bindings (work in progress)
Diffstat (limited to 'libs/ardour/luabindings.cc')
-rw-r--r--libs/ardour/luabindings.cc123
1 files changed, 123 insertions, 0 deletions
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index 096c0647ae..59e64d3a86 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -32,6 +32,7 @@
#include "ardour/audio_buffer.h"
#include "ardour/audio_port.h"
#include "ardour/audio_track.h"
+#include "ardour/audioplaylist.h"
#include "ardour/buffer_set.h"
#include "ardour/chan_mapping.h"
#include "ardour/dB.h"
@@ -239,6 +240,10 @@ LuaBindings::stddef (lua_State* L)
.beginStdVector <std::string> ("StringVector")
.endClass ()
+ // std::vector<float>
+ .beginStdVector <float> ("FloatVector")
+ .endClass ()
+
// register float array (uint8_t*)
.registerArray <uint8_t> ("ByteArray")
@@ -437,6 +442,103 @@ LuaBindings::common (lua_State* L)
.endNamespace () // Evoral
+ .beginNamespace ("Vamp")
+
+ .beginClass<Vamp::RealTime> ("RealTime")
+ .addConstructor <void (*) (int, int)> ()
+ .addFunction ("usec", &Vamp::RealTime::usec)
+ .addFunction ("msec", &Vamp::RealTime::msec)
+ .addFunction ("toString", &Vamp::RealTime::toString)
+ .endClass ()
+
+ .beginClass<Vamp::PluginBase> ("PluginBase")
+ .addFunction ("getIdentifier", &Vamp::PluginBase::getIdentifier)
+ .addFunction ("getName", &Vamp::PluginBase::getName)
+ .addFunction ("getDescription", &Vamp::PluginBase::getDescription)
+ .addFunction ("getMaker", &Vamp::PluginBase::getMaker)
+ .addFunction ("getCopyright", &Vamp::PluginBase::getCopyright)
+ .addFunction ("getPluginVersion", &Vamp::PluginBase::getPluginVersion)
+ .addFunction ("getParameterDescriptors", &Vamp::PluginBase::getParameterDescriptors)
+ .addFunction ("getParameter", &Vamp::PluginBase::getParameter)
+ .addFunction ("setParameter", &Vamp::PluginBase::setParameter)
+ .addFunction ("getPrograms", &Vamp::PluginBase::getPrograms)
+ .addFunction ("getCurrentProgram", &Vamp::PluginBase::getCurrentProgram)
+ .addFunction ("selectProgram", &Vamp::PluginBase::selectProgram)
+ .addFunction ("getType", &Vamp::PluginBase::getType)
+ .endClass ()
+
+ .beginNamespace ("PluginBase")
+ .beginClass<Vamp::PluginBase::ParameterDescriptor> ("ParameterDescriptor")
+ .addData ("identifier", &Vamp::PluginBase::ParameterDescriptor::identifier)
+ .addData ("name", &Vamp::PluginBase::ParameterDescriptor::name)
+ .addData ("description", &Vamp::PluginBase::ParameterDescriptor::description)
+ .addData ("unit", &Vamp::PluginBase::ParameterDescriptor::unit)
+ .addData ("minValue", &Vamp::PluginBase::ParameterDescriptor::minValue)
+ .addData ("maxValue", &Vamp::PluginBase::ParameterDescriptor::maxValue)
+ .addData ("defaultValue", &Vamp::PluginBase::ParameterDescriptor::defaultValue)
+ .addData ("isQuantized", &Vamp::PluginBase::ParameterDescriptor::isQuantized)
+ .addData ("quantizeStep", &Vamp::PluginBase::ParameterDescriptor::quantizeStep)
+ .addData ("valueNames", &Vamp::PluginBase::ParameterDescriptor::valueNames)
+ .endClass ()
+
+ .beginStdVector <Vamp::PluginBase::ParameterDescriptor> ("ParameterList")
+ .endClass ()
+ .endNamespace () // Vamp::PluginBase
+
+ .deriveClass<Vamp::Plugin, Vamp::PluginBase> ("Plugin")
+ // TODO add wrapper std::vector<FloatArray>
+ .addFunction ("process", &Vamp::Plugin::process) // XXX unusable due to float * const *
+ .addFunction ("getRemainingFeatures", &Vamp::Plugin::getRemainingFeatures)
+ .endClass ()
+
+ .beginNamespace ("Plugin")
+ .beginClass<Vamp::Plugin::OutputDescriptor> ("OutputDescriptor")
+ .addData ("identifier", &Vamp::Plugin::OutputDescriptor::identifier)
+ .addData ("description", &Vamp::Plugin::OutputDescriptor::description)
+ .addData ("unit", &Vamp::Plugin::OutputDescriptor::unit)
+ .addData ("hasFixedBinCount", &Vamp::Plugin::OutputDescriptor::hasFixedBinCount)
+ .addData ("binCount", &Vamp::Plugin::OutputDescriptor::binCount)
+ .addData ("binNames", &Vamp::Plugin::OutputDescriptor::binNames)
+ .addData ("hasKnownExtents", &Vamp::Plugin::OutputDescriptor::hasKnownExtents)
+ .addData ("minValue", &Vamp::Plugin::OutputDescriptor::minValue)
+ .addData ("maxValue", &Vamp::Plugin::OutputDescriptor::maxValue)
+ .addData ("isQuantized", &Vamp::Plugin::OutputDescriptor::isQuantized)
+ .addData ("quantizeStep", &Vamp::Plugin::OutputDescriptor::quantizeStep)
+ .addData ("sampleType", &Vamp::Plugin::OutputDescriptor::sampleType)
+ .addData ("sampleRate", &Vamp::Plugin::OutputDescriptor::sampleRate)
+ .addData ("hasDuration", &Vamp::Plugin::OutputDescriptor::hasDuration)
+ .endClass ()
+
+ .beginNamespace ("OutputDescriptor")
+ /* Vamp::Plugin::OutputDescriptor enum */
+ .beginNamespace ("SampleType")
+ .addConst ("OneSamplePerStep", Vamp::Plugin::OutputDescriptor::SampleType(Vamp::Plugin::OutputDescriptor::OneSamplePerStep))
+ .addConst ("FixedSampleRate", Vamp::Plugin::OutputDescriptor::SampleType(Vamp::Plugin::OutputDescriptor::FixedSampleRate))
+ .addConst ("VariableSampleRate", Vamp::Plugin::OutputDescriptor::SampleType(Vamp::Plugin::OutputDescriptor::VariableSampleRate))
+ .endNamespace ()
+ .endNamespace () /* Vamp::Plugin::OutputDescriptor */
+
+ .beginClass<Vamp::Plugin::Feature> ("Feature")
+ .addData ("hasTimestamp", &Vamp::Plugin::Feature::hasTimestamp, false)
+ .addData ("timestamp", &Vamp::Plugin::Feature::timestamp, false)
+ .addData ("hasDuration", &Vamp::Plugin::Feature::hasDuration, false)
+ .addData ("duration", &Vamp::Plugin::Feature::duration, false)
+ .addData ("values", &Vamp::Plugin::Feature::values, false)
+ .addData ("label", &Vamp::Plugin::Feature::label, false)
+ .endClass ()
+
+ .beginStdVector <Vamp::Plugin::OutputDescriptor> ("OutputList")
+ .endClass ()
+
+ .beginStdVector <Vamp::Plugin::Feature> ("FeatureList")
+ .endClass ()
+
+ .beginStdMap <int, Vamp::Plugin::FeatureList> ("FeatureSet")
+ .endClass ()
+
+ .endNamespace () // Vamp::Plugin
+ .endNamespace () // Vamp
+
.beginNamespace ("ARDOUR")
.beginClass <InterThreadInfo> ("InterThreadInfo")
@@ -712,6 +814,7 @@ LuaBindings::common (lua_State* L)
.endClass ()
.deriveWSPtrClass <Playlist, SessionObject> ("Playlist")
+ .addCast<AudioPlaylist> ("to_audioplaylist")
.addFunction ("region_by_id", &Playlist::region_by_id)
.addFunction ("data_type", &Playlist::data_type)
.addFunction ("n_regions", &Playlist::n_regions)
@@ -746,6 +849,10 @@ LuaBindings::common (lua_State* L)
#endif
.endClass ()
+ .deriveWSPtrClass <AudioPlaylist, Playlist> ("AudioPlaylist")
+ .addFunction ("read", &AudioPlaylist::read)
+ .endClass ()
+
.deriveWSPtrClass <Track, Route> ("Track")
.addCast<AudioTrack> ("to_audio_track")
.addCast<MidiTrack> ("to_midi_track")
@@ -763,7 +870,14 @@ LuaBindings::common (lua_State* L)
.deriveWSPtrClass <MidiTrack, Track> ("MidiTrack")
.endClass ()
+ .beginWSPtrClass <Readable> ("Readable")
+ .addFunction ("read", &Readable::read)
+ .addFunction ("readable_length", &Readable::readable_length)
+ .addFunction ("n_channels", &Readable::n_channels)
+ .endClass ()
+
.deriveWSPtrClass <Region, SessionObject> ("Region")
+ .addCast<Readable> ("to_readable")
/* properties */
.addFunction ("position", &Region::position)
.addFunction ("start", &Region::start)
@@ -1472,6 +1586,15 @@ LuaBindings::common (lua_State* L)
.addCFunction ("hsla_to_rgba", ARDOUR::LuaAPI::hsla_to_rgba)
.addFunction ("usleep", Glib::usleep)
.addCFunction ("build_filename", ARDOUR::LuaAPI::build_filename)
+
+ .beginClass <ARDOUR::LuaAPI::Vamp> ("Vamp")
+ .addConstructor <void (*) (const std::string&, float)> ()
+ .addFunction ("plugin", &ARDOUR::LuaAPI::Vamp::plugin)
+ .addFunction ("analyze", &ARDOUR::LuaAPI::Vamp::analyze)
+ .addFunction ("reset", &ARDOUR::LuaAPI::Vamp::reset)
+ .addFunction ("initialize", &ARDOUR::LuaAPI::Vamp::initialize)
+ .endClass ()
+
.endNamespace () // end LuaAPI
.endNamespace ();// end ARDOUR
}