summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/luaproc.cc15
-rw-r--r--share/scripts/_midigenerator_multi_ports.lua48
2 files changed, 6 insertions, 57 deletions
diff --git a/libs/ardour/luaproc.cc b/libs/ardour/luaproc.cc
index ab20bdf251..bbde673299 100644
--- a/libs/ardour/luaproc.cc
+++ b/libs/ardour/luaproc.cc
@@ -725,15 +725,12 @@ LuaProc::connect_and_run (BufferSet& bufs,
// copy back midi events
if (_has_midi_output && lua_midi_sink_tbl.isTable ()) {
- uint32_t count = 0;
- uint32_t idx;
- for (luabridge::Iterator i (lua_midi_sink_tbl); !i.isNil (); ++i) {
- bool iter_is_valid;
- idx = out.get(DataType::MIDI, count, &iter_is_valid);
- count++;
- if (iter_is_valid && bufs.count().n_midi() > idx) {
- MidiBuffer& mbuf = bufs.get_midi(idx);
- mbuf.silence(0, 0);
+ bool valid;
+ const uint32_t idx = out.get(DataType::MIDI, 0, &valid);
+ if (valid && bufs.count().n_midi() > idx) {
+ MidiBuffer& mbuf = bufs.get_midi(idx);
+ mbuf.silence(0, 0);
+ for (luabridge::Iterator i (lua_midi_sink_tbl); !i.isNil (); ++i) {
if (!i.key ().isNumber ()) { continue; }
if (!i.value ()["time"].isNumber ()) { continue; }
if (!i.value ()["data"].isTable ()) { continue; }
diff --git a/share/scripts/_midigenerator_multi_ports.lua b/share/scripts/_midigenerator_multi_ports.lua
deleted file mode 100644
index a61db04e5a..0000000000
--- a/share/scripts/_midigenerator_multi_ports.lua
+++ /dev/null
@@ -1,48 +0,0 @@
-ardour {
- ["type"] = "dsp",
- name = "MIDI generator with multiple ports",
- category = "Example",
- license = "MIT",
- author = "R8000",
- description = [[An Example Midi Generator for prototyping.]]
-}
-
-function dsp_ioconfig () return { { midi_out = 5} } end
-
-local tme = 0 -- sample-counter
-local seq = 0 -- sequence-step
-local spb = 0 -- samples per beat
-
-local midi_sequence_one = {
- { 0x90, 64, 127 },
- { 0x80, 64, 0 },
-}
-local midi_sequence_two = {
- { 0x90, 60, 70 },
- { 0x80, 60, 0 },
-}
-
-local midi_sequences = { midi_sequence_one, midi_sequence_two }
-
-function dsp_init (rate)
- local bpm = 120
- spb = rate * 60 / bpm
- if spb < 2 then spb = 2 end
-end
-
-function dsp_run (_, _, n_samples)
- assert (type(midiout) == "table")
- assert (spb > 1)
-
- for time = 1,n_samples do -- not very efficient
- -- TODO, timestamp the sequence in beats, calc/skip to next event
- tme = tme + 1
- if tme >= spb then
- for m = 1, 5 do
- midiout[m] = {time = time, data = midi_sequences[m % 2 + 1][seq + 1]}
- end
- tme = 0
- seq = (seq + 1) % 2
- end
- end
-end