X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=scripts%2Fmidimon.lua;h=ac92507a829d0eca63879fe3964eca09181fd70e;hb=2e933a6414406d9bd069b73ac6094b49c9d2de81;hp=226b4b0d177d5e8b6f6572f5ed395405e12f3694;hpb=30240b33e903a6a0ee098cc5c787f74e9f69f6c3;p=ardour.git diff --git a/scripts/midimon.lua b/scripts/midimon.lua index 226b4b0d17..ac92507a82 100644 --- a/scripts/midimon.lua +++ b/scripts/midimon.lua @@ -37,7 +37,11 @@ function dsp_params () { ["type"] = "input", name = "System messages", doc = "If enabled, the monitor will show System Control and Real-Time messages", - min = 0, max = 1, default = 0, toggled = true } + min = 0, max = 1, default = 0, toggled = true }, + { ["type"] = "input", + name = "Numeric Notes", + doc = "If enabled, note-events displayed numerically", + min = 0, max = 1, default = 0, toggled = true }, } end @@ -90,19 +94,29 @@ end local txt = nil -- a pango context local cursize = 0 local hex = nil +local format_note = nil local show_scm = nil +function format_note_name(b) + return string.format ("%5s", ARDOUR.ParameterDescriptor.midi_note_name (b)) +end + +function format_note_num(b) + return string.format (hex, b) +end + + function show_midi(ctx, x, y, buffer, event) local base = (event - 1) * evlen if buffer[base+1] == -1 then return false end local evtype = buffer[base + 1] >> 4 local channel = (buffer[base + 1] & 15) + 1 -- for System Common Messages this has no use if evtype == 8 then - txt:set_text(string.format("%02u \u{2669}Off" .. hex .. hex, channel, buffer[base+2], buffer[base+3])) + txt:set_text(string.format("%02u \u{2669}Off%s" .. hex, channel, format_note(buffer[base+2]), buffer[base+3])) elseif evtype == 9 then - txt:set_text(string.format("%02u \u{2669}On " .. hex .. hex, channel, buffer[base+2], buffer[base+3])) + txt:set_text(string.format("%02u \u{2669}On %s" .. hex, channel, format_note(buffer[base+2]), buffer[base+3])) elseif evtype == 10 then - txt:set_text(string.format("%02u \u{2669}KP " .. hex .. hex, channel, buffer[base+2], buffer[base+3])) + txt:set_text(string.format("%02u \u{2669}KP %s" .. hex, channel, format_note(buffer[base+2]), buffer[base+3])) elseif evtype == 11 then txt:set_text(string.format("%02u CC " .. hex .. hex, channel, buffer[base+2], buffer[base+3])) elseif evtype == 12 then @@ -160,6 +174,12 @@ function render_inline (ctx, displaywidth, max_h) if ctrl[3] > 0 then hex = " %02X" else hex = " %3u" end show_scm = ctrl[4] + if ctrl[5] > 0 then + format_note = format_note_num + else + format_note = format_note_name + end + -- compute the size of the display txt:set_text("0") local _, lineheight = txt:get_pixel_size()