add FluidSynth Lua Bindings
authorRobin Gareus <robin@gareus.org>
Tue, 23 Aug 2016 20:18:04 +0000 (22:18 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 23 Aug 2016 20:21:03 +0000 (22:21 +0200)
libs/ardour/luabindings.cc
libs/ardour/luaproc.cc

index 81d14b2a6fab88fee0a3a5d6a45bc1ca53a2cbf9..e2ba1aa81c8e57774fdadca5d91fe0ba4054f6a0 100644 (file)
@@ -36,6 +36,7 @@
 #include "ardour/chan_mapping.h"
 #include "ardour/dB.h"
 #include "ardour/dsp_filter.h"
+#include "ardour/fluid_synth.h"
 #include "ardour/interthread_info.h"
 #include "ardour/lua_api.h"
 #include "ardour/luabindings.h"
@@ -169,6 +170,7 @@ CLASSKEYS(ARDOUR::LuaOSC::Address);
 CLASSKEYS(ARDOUR::Session);
 CLASSKEYS(ARDOUR::BufferSet);
 CLASSKEYS(ARDOUR::ChanMapping);
+CLASSKEYS(ARDOUR::FluidSynth);
 CLASSKEYS(ARDOUR::DSP::DspShm);
 CLASSKEYS(ARDOUR::LuaTableRef);
 CLASSKEYS(PBD::Configuration);
@@ -1479,6 +1481,20 @@ LuaBindings::dsp (lua_State* L)
                .endClass ()
                .endNamespace ();
 
+       luabridge::getGlobalNamespace (L)
+               .beginNamespace ("ARDOUR")
+               .beginClass <FluidSynth> ("FluidSynth")
+               .addConstructor <void (*) (float, int)> ()
+               .addFunction ("load_sf2", &FluidSynth::load_sf2)
+               .addFunction ("synth", &FluidSynth::synth)
+               .addFunction ("midi_event", &FluidSynth::midi_event)
+               .addFunction ("panic", &FluidSynth::panic)
+               .addFunction ("select_program", &FluidSynth::select_program)
+               .addFunction ("program_count", &FluidSynth::program_count)
+               .addFunction ("program_name", &FluidSynth::program_name)
+               .endClass ()
+               .endNamespace ();
+
        luabridge::getGlobalNamespace (L)
                .beginNamespace ("ARDOUR")
                .beginNamespace ("DSP")
index fbba74bba328103788c8987ae02a4a1f6b76ca51..c67667c6ea0adf6bb393f5da191c5ca70432a248 100644 (file)
@@ -664,6 +664,8 @@ LuaProc::connect_and_run (BufferSet& bufs,
                                                luabridge::LuaRef lua_midi_event (luabridge::newTable (L));
                                                lua_midi_event["time"] = 1 + (*m).time();
                                                lua_midi_event["data"] = lua_midi_data;
+                                               lua_midi_event["bytes"] = data;
+                                               lua_midi_event["size"] = ev.size();
                                                lua_midi_src_tbl[e] = lua_midi_event;
                                        }
                                }