Compare commits
2 Commits
fa570bbb4b
...
3a4d7aab2e
Author | SHA1 | Date | |
---|---|---|---|
3a4d7aab2e | |||
f41bb72fe5 |
@ -10,10 +10,12 @@
|
||||
-- Basic gui stuff by forum user "spk77": https://forum.cockos.com/showthread.php?t=161557
|
||||
|
||||
|
||||
-- Some adjustable settings:
|
||||
-- Some adjustable settings (startup settings that can be changed in GUI):
|
||||
local timeSinceProject = true -- EITHER this one is true OR one of the next two
|
||||
local timeSinceMarker = false
|
||||
local timeSinceRegion = false
|
||||
local timeUnitHMS = false -- EITHER this one is true OR one of the next one
|
||||
local timeUnitMeasures = true
|
||||
|
||||
-- Nothing to adjust here anymore...
|
||||
local script_path
|
||||
@ -28,6 +30,13 @@ function msg(m)
|
||||
reaper.ShowConsoleMsg(tostring(m) .. "\n")
|
||||
end
|
||||
|
||||
-- Round number
|
||||
function round(num, numDecimalPlaces)
|
||||
local mult = 10^(numDecimalPlaces or 0)
|
||||
return math.floor(num * mult + 0.5) / mult
|
||||
end
|
||||
|
||||
|
||||
-- Store state to project variables
|
||||
function storeExtState()
|
||||
if timeSinceProject then
|
||||
@ -48,6 +57,12 @@ function storeExtState()
|
||||
reaper.SetProjExtState(0, 'bigclock_extra', 'timeSinceRegion', '0')
|
||||
end
|
||||
|
||||
if timeUnitMeasures then
|
||||
reaper.SetProjExtState(0, 'bigclock_extra', 'timeUnit', 'measures')
|
||||
else
|
||||
reaper.SetProjExtState(0, 'bigclock_extra', 'timeUnit', 'hms')
|
||||
end
|
||||
|
||||
reaper.SetProjExtState(0, 'bigclock_extra', 'dockState', gfx.dock(-1))
|
||||
end
|
||||
|
||||
@ -89,9 +104,15 @@ function gui_init()
|
||||
rc_menu:add_item({label = "Time since previous marker",
|
||||
toggleable = true,
|
||||
selected = timeSinceMarker})
|
||||
rc_menu:add_item({label = "Time since previous region",
|
||||
rc_menu:add_item({label = "Time since previous region|",
|
||||
toggleable = true,
|
||||
selected = timeSinceRegion})
|
||||
selected = timeSinceRegion})
|
||||
rc_menu:add_item({label = "HH:MM:SS.xxx",
|
||||
toggleable = true,
|
||||
selected = timeUnitHMS})
|
||||
rc_menu:add_item({label = "Measures.Beats.xx|",
|
||||
toggleable = true,
|
||||
selected = timeUnitMeasures})
|
||||
rc_menu:add_item({label = "Quit"})
|
||||
|
||||
-- Let's add a command to all created items:
|
||||
@ -134,7 +155,29 @@ function gui_init()
|
||||
end
|
||||
storeExtState()
|
||||
end
|
||||
rc_menu.items[4].command = function() quit = true end
|
||||
rc_menu.items[4].command = function()
|
||||
if rc_menu.items[4].selected then
|
||||
timeUnitHMS = true
|
||||
timeUnitMeasures = false
|
||||
rc_menu.items[5].selected = false
|
||||
else
|
||||
--dont let user disable option but force selection of other option
|
||||
rc_menu.items[5].selected = true;
|
||||
end
|
||||
storeExtState()
|
||||
end
|
||||
rc_menu.items[5].command = function()
|
||||
if rc_menu.items[5].selected then
|
||||
timeUnitHMS = false
|
||||
timeUnitMeasures = true
|
||||
rc_menu.items[4].selected = false
|
||||
else
|
||||
--dont let user disable option but force selection of other option
|
||||
rc_menu.items[4].selected = true;
|
||||
end
|
||||
storeExtState()
|
||||
end
|
||||
rc_menu.items[6].command = function() quit = true end
|
||||
end
|
||||
|
||||
-- Draw GUI --
|
||||
@ -143,7 +186,11 @@ function drawGui()
|
||||
local val
|
||||
local timeRaw
|
||||
local timeDisplay
|
||||
local timeDisplayHours
|
||||
local timeDisplayMinutes
|
||||
local timeDisplaySeconds
|
||||
local timeMeasures
|
||||
local timeBeats
|
||||
local markerId
|
||||
local regionId
|
||||
local isRegion
|
||||
@ -168,13 +215,31 @@ function drawGui()
|
||||
end
|
||||
if retval > 0 then timeRaw = timeRaw - markerRegionPos end
|
||||
|
||||
-- construct display string, with leading zeros if neccessary (e.g. 27:08.321)
|
||||
timeDisplaySeconds = math.floor((timeRaw%60)*1000)/1000
|
||||
timeDisplay = math.floor(timeRaw/60) .. ":"
|
||||
if timeDisplaySeconds < 10 then
|
||||
timeDisplay = timeDisplay .. "0"
|
||||
end
|
||||
timeDisplay = timeDisplay .. timeDisplaySeconds
|
||||
-- Construct display string
|
||||
if timeUnitMeasures then
|
||||
-- measures and beats: e.g. 07.3.99
|
||||
timeBeats, timeMeasures, _, _, _ = reaper.TimeMap2_timeToBeats(0, timeRaw)
|
||||
timeDisplay = timeMeasures+1 .. '.' .. round(timeBeats+1, 2)
|
||||
else
|
||||
-- minutes and seconds: MM:SS.xxx (e.g. 27:08.321)
|
||||
timeDisplayHours = math.floor(timeRaw/3600)
|
||||
timeRaw = timeRaw%3600
|
||||
timeDisplayMinutes = math.floor(timeRaw/60)
|
||||
timeDisplaySeconds = round(timeRaw%60, 3)
|
||||
if timeDisplayHours > 0 then
|
||||
timeDisplay = timeDisplayHours .. ":"
|
||||
if timeDisplayMinutes < 10 then
|
||||
timeDisplay = timeDisplay .. "0"
|
||||
end
|
||||
else
|
||||
timeDisplay = ""
|
||||
end
|
||||
timeDisplay = timeDisplay .. timeDisplayMinutes .. ":"
|
||||
if timeDisplaySeconds < 10 then
|
||||
timeDisplay = timeDisplay .. "0"
|
||||
end
|
||||
timeDisplay = timeDisplay .. timeDisplaySeconds
|
||||
end
|
||||
|
||||
gfx.clear = 3355443 -- background is dark grey
|
||||
|
||||
@ -260,6 +325,16 @@ function init()
|
||||
timeSinceRegion = false
|
||||
end
|
||||
end
|
||||
retval, val = reaper.GetProjExtState(0, 'bigclock_extra', 'timeUnit')
|
||||
if retval > 0 then
|
||||
if val == 'measures' then
|
||||
timeUnitMeasures = true
|
||||
timeUnitHMS = false
|
||||
else
|
||||
timeUnitMeasures = false
|
||||
timeUnitHMS = true
|
||||
end
|
||||
end
|
||||
|
||||
-- init stuff...
|
||||
gui_init()
|
||||
|
Loading…
x
Reference in New Issue
Block a user