summaryrefslogtreecommitdiff
path: root/share/scripts/_midigenerator2.lua
blob: 3dcb378d88abfc7e6339d6a397c3f02af4266682 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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_configure (ins, outs)
	n_out = outs
	n_out:set_midi (0)
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
	ARDOUR.DSP.process_map (bufs, n_out, in_map, out_map, n_samples, offset)
end