diff options
author | Robin Gareus <robin@gareus.org> | 2019-12-01 21:32:51 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-12-01 21:32:51 +0100 |
commit | c5066dcf38298e18445f2407bd5f92f2c8b4a16d (patch) | |
tree | 4372102006a1533903a27529134136b0d002b271 /scripts | |
parent | 5e1a73a28c07ba8c9c80b27abdacdc6da5f080bd (diff) |
Lua MIDI genertors
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/_midigenerator.lua | 2 | ||||
-rw-r--r-- | scripts/_midigenerator2.lua | 34 |
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 |