summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-01 21:32:51 +0100
committerRobin Gareus <robin@gareus.org>2019-12-01 21:32:51 +0100
commitc5066dcf38298e18445f2407bd5f92f2c8b4a16d (patch)
tree4372102006a1533903a27529134136b0d002b271 /scripts
parent5e1a73a28c07ba8c9c80b27abdacdc6da5f080bd (diff)
Lua MIDI genertors
Diffstat (limited to 'scripts')
-rw-r--r--scripts/_midigenerator.lua2
-rw-r--r--scripts/_midigenerator2.lua34
2 files changed, 35 insertions, 1 deletions
diff --git a/scripts/_midigenerator.lua b/scripts/_midigenerator.lua
index 4ef4bf4c71..9c093946f9 100644
--- a/scripts/_midigenerator.lua
+++ b/scripts/_midigenerator.lua
@@ -1,6 +1,6 @@
ardour {
["type"] = "dsp",
- name = "Midi Generator",
+ name = "MIDI Generator",
category = "Example", -- "Utility"
license = "MIT",
author = "Ardour Lua Task Force",
diff --git a/scripts/_midigenerator2.lua b/scripts/_midigenerator2.lua
new file mode 100644
index 0000000000..6bd904b097
--- /dev/null
+++ b/scripts/_midigenerator2.lua
@@ -0,0 +1,34 @@
+ardour {
+ ["type"] = "dsp",
+ name = "MIDI Generator II",
+ category = "Example",
+ license = "MIT",
+ author = "Ardour Lua Task Force",
+ description = [[An Example Midi Generator for prototyping.]]
+}
+
+function dsp_ioconfig ()
+ return { { midi_in = 1, midi_out = 1, audio_in = -1, audio_out = -1}, }
+end
+
+function dsp_runmap (bufs, in_map, out_map, n_samples, offset)
+ local ob = out_map:get (ARDOUR.DataType ("midi"), 0)
+ if ob ~= ARDOUR.ChanMapping.Invalid then
+ local mb = bufs:get_midi (ob)
+
+ -- see _midigenerator.lua for
+ -- how to use a timed sequence
+
+ local ba = C.ByteVector () -- construct a byte vector
+ ba:add ({0x90, 64, 127}) -- add some data to the vector
+ -- send a message at cycle-start
+ mb:push_back (offset, ba:size (), ba:to_array());
+
+ ba:clear ()
+ ba:add ({0x80, 64, 127})
+ mb:push_back (n_samples - 1 - offset, ba:size (), ba:to_array());
+ end
+
+ -- passthrough audio, apply pin/channel mapping
+ ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("audio"))
+end