3 name = "Midi Generator",
6 author = "Robin Gareus",
7 email = "robin@gareus.org",
8 site = "http://gareus.org",
9 description = [[An Example Midi Generator for prototyping.]]
12 function dsp_ioconfig ()
13 return { { audio_in = 0, audio_out = 0}, }
16 function dsp_has_midi_output () return true end
18 local tme = 0 -- sample-counter
19 local seq = 1 -- sequence-step
20 local spb = 0 -- samples per beat
22 local midi_sequence = {
27 function dsp_init (rate)
30 if spb < 2 then spb = 2 end
33 function dsp_run (_, _, n_samples)
34 assert (type(midiout) == "table")
38 for time = 1,n_samples do -- not very efficient
39 -- TODO, timestamp the sequence in beats, calc/skip to next event
44 midiout[m]["time"] = time
45 midiout[m]["data"] = midi_sequence[seq]
49 if seq == #midi_sequence then seq = 1 else seq = seq + 1 end