--- /dev/null
+ardour {
+ ["type"] = "dsp",
+ name = "Lua Fluid Synth",
+ category = "Instrument",
+ license = "MIT",
+ author = "Ardour Lua Task Force",
+ description = [[An Example Synth for Prototyping.]]
+}
+
+function dsp_ioconfig ()
+ return
+ {
+ { midi_in = 1, audio_in = 0, audio_out = 2},
+ }
+end
+
+fluidsynth = nil
+
+function dsp_init (rate)
+ fluidsynth = ARDOUR.FluidSynth (rate, 32)
+ assert (fluidsynth:load_sf2 ("/usr/share/sounds/sf2/FluidR3_GM.sf2"))
+end
+
+function dsp_run (ins, outs, n_samples)
+ local tme = 1
+ assert (#outs == 2)
+
+ -- parse midi messages
+ assert (type(midiin) == "table") -- global table of midi events (for now)
+ for _, e in pairs (midiin) do
+ local t = e["time"] -- t = [ 1 .. n_samples ]
+
+ -- synth sound until event
+ if t > tme then
+ local off = tme - 1
+ local len = t - tme
+ fluidsynth:synth (outs[1]:offset (off), outs[2]:offset (off), len)
+ end
+
+ tme = t + 1
+
+ fluidsynth:midi_event (e["bytes"], e["size"]) -- parse midi event
+ end
+
+ -- synth rest of cycle
+ if tme <= n_samples then
+ local off = tme - 1
+ local len = 1 + n_samples - tme
+ fluidsynth:synth (outs[1]:offset (off), outs[2]:offset (off), len)
+ end
+end
+++ /dev/null
-ardour {
- ["type"] = "dsp",
- name = "Lua Fluid Synth",
- category = "Instrument",
- license = "MIT",
- author = "Ardour Lua Task Force",
- description = [[An Example Synth for Prototyping.]]
-}
-
-function dsp_ioconfig ()
- return
- {
- { midi_in = 1, audio_in = 0, audio_out = 2},
- }
-end
-
-fluidsynth = nil
-
-function dsp_init (rate)
- fluidsynth = ARDOUR.FluidSynth (rate, 32)
- assert (fluidsynth:load_sf2 ("/usr/share/sounds/sf2/FluidR3_GM.sf2"))
-end
-
-function dsp_run (ins, outs, n_samples)
- local tme = 1
- assert (#outs == 2)
-
- -- parse midi messages
- assert (type(midiin) == "table") -- global table of midi events (for now)
- for _, e in pairs (midiin) do
- local t = e["time"] -- t = [ 1 .. n_samples ]
-
- -- synth sound until event
- if t > tme then
- local off = tme - 1
- local len = t - tme
- fluidsynth:synth (outs[1]:offset (off), outs[2]:offset (off), len)
- end
-
- tme = t + 1
-
- fluidsynth:midi_event (e["bytes"], e["size"]) -- parse midi event
- end
-
- -- synth rest of cycle
- if tme <= n_samples then
- local off = tme - 1
- local len = 1 + n_samples - tme
- fluidsynth:synth (outs[1]:offset (off), outs[2]:offset (off), len)
- end
-end