summaryrefslogtreecommitdiff
path: root/scripts/midimon.lua
diff options
context:
space:
mode:
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2016-07-11 17:39:59 +0200
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2016-07-11 17:39:59 +0200
commit2d32b50a3f25fdbf25648ca4a1de0664f575bfac (patch)
treea07c4f4307d30a0457e3f8893206b87f3391d19e /scripts/midimon.lua
parent1f7f7f85973a0fff968a99b0f68573c1bc4be9d4 (diff)
Improve MIDI monitor
Diffstat (limited to 'scripts/midimon.lua')
-rw-r--r--scripts/midimon.lua30
1 files changed, 18 insertions, 12 deletions
diff --git a/scripts/midimon.lua b/scripts/midimon.lua
index 9c8df8bf8c..bda71be74a 100644
--- a/scripts/midimon.lua
+++ b/scripts/midimon.lua
@@ -85,7 +85,7 @@ local show_scm = nil
function show_midi(ctx, x, y, buffer, event)
local base = (event - 1) * evlen
- if buffer[base+1] == -1 then return end
+ 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
@@ -126,10 +126,15 @@ function show_midi(ctx, x, y, buffer, event)
txt:set_text("-- Active")
elseif message == 15 then
txt:set_text("-- Reset")
+ else
+ return false
end
+ else
+ return false
end
ctx:move_to (x, y)
txt:show_in_cairo_context (ctx)
+ return true
end
function render_inline (ctx, displaywidth, max_h)
@@ -143,7 +148,7 @@ function render_inline (ctx, displaywidth, max_h)
txt = Cairo.PangoLayout (ctx, "Mono " .. cursize)
end
- if ctrl[3] > 0 then hex = " %2X" else hex = " %3u" end
+ if ctrl[3] > 0 then hex = " %02X" else hex = " %3u" end
show_scm = ctrl[4]
-- compute the size of the display
@@ -159,22 +164,23 @@ function render_inline (ctx, displaywidth, max_h)
ctx:set_source_rgba (.2, .2, .2, 1.0)
ctx:fill ()
- -- print latest event
+ -- color of latest event
ctx:set_source_rgba (1.0, 1.0, 1.0, 1.0)
- show_midi(ctx, x, y, buffer, pos)
- y = y - lineheight - vpadding
- -- and remaining events
- ctx:set_source_rgba (.8, .8, .8, 1.0)
- for i = pos-1, 1, -1 do
+ -- print events
+ for i = pos, 1, -1 do
if y < 0 then break end
- show_midi(ctx, x, y, buffer, i)
- y = y - lineheight - vpadding
+ if show_midi(ctx, x, y, buffer, i) then
+ y = y - lineheight - vpadding
+ ctx:set_source_rgba (.8, .8, .8, 1.0)
+ end
end
for i = ringsize, pos+1, -1 do
if y < 0 then break end
- show_midi(ctx, x, y, buffer, i)
- y = y - lineheight - vpadding
+ if show_midi(ctx, x, y, buffer, i) then
+ y = y - lineheight - vpadding
+ ctx:set_source_rgba (.8, .8, .8, 1.0)
+ end
end
return {displaywidth, displayheight}