BigClockExtra: Added time unit measures/beats. closes #7
This commit is contained in:
parent
fa570bbb4b
commit
f41bb72fe5
@ -10,10 +10,12 @@
|
|||||||
-- Basic gui stuff by forum user "spk77": https://forum.cockos.com/showthread.php?t=161557
|
-- 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 timeSinceProject = true -- EITHER this one is true OR one of the next two
|
||||||
local timeSinceMarker = false
|
local timeSinceMarker = false
|
||||||
local timeSinceRegion = 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...
|
-- Nothing to adjust here anymore...
|
||||||
local script_path
|
local script_path
|
||||||
@ -28,6 +30,13 @@ function msg(m)
|
|||||||
reaper.ShowConsoleMsg(tostring(m) .. "\n")
|
reaper.ShowConsoleMsg(tostring(m) .. "\n")
|
||||||
end
|
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
|
-- Store state to project variables
|
||||||
function storeExtState()
|
function storeExtState()
|
||||||
if timeSinceProject then
|
if timeSinceProject then
|
||||||
@ -48,6 +57,12 @@ function storeExtState()
|
|||||||
reaper.SetProjExtState(0, 'bigclock_extra', 'timeSinceRegion', '0')
|
reaper.SetProjExtState(0, 'bigclock_extra', 'timeSinceRegion', '0')
|
||||||
end
|
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))
|
reaper.SetProjExtState(0, 'bigclock_extra', 'dockState', gfx.dock(-1))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -89,9 +104,15 @@ function gui_init()
|
|||||||
rc_menu:add_item({label = "Time since previous marker",
|
rc_menu:add_item({label = "Time since previous marker",
|
||||||
toggleable = true,
|
toggleable = true,
|
||||||
selected = timeSinceMarker})
|
selected = timeSinceMarker})
|
||||||
rc_menu:add_item({label = "Time since previous region",
|
rc_menu:add_item({label = "Time since previous region|",
|
||||||
toggleable = true,
|
toggleable = true,
|
||||||
selected = timeSinceRegion})
|
selected = timeSinceRegion})
|
||||||
|
rc_menu:add_item({label = "Minutes:Seconds.Milliseconds",
|
||||||
|
toggleable = true,
|
||||||
|
selected = timeUnitHMS})
|
||||||
|
rc_menu:add_item({label = "Measures.Beats",
|
||||||
|
toggleable = true,
|
||||||
|
selected = timeUnitMeasures})
|
||||||
rc_menu:add_item({label = "Quit"})
|
rc_menu:add_item({label = "Quit"})
|
||||||
|
|
||||||
-- Let's add a command to all created items:
|
-- Let's add a command to all created items:
|
||||||
@ -134,7 +155,29 @@ function gui_init()
|
|||||||
end
|
end
|
||||||
storeExtState()
|
storeExtState()
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
-- Draw GUI --
|
-- Draw GUI --
|
||||||
@ -144,6 +187,8 @@ function drawGui()
|
|||||||
local timeRaw
|
local timeRaw
|
||||||
local timeDisplay
|
local timeDisplay
|
||||||
local timeDisplaySeconds
|
local timeDisplaySeconds
|
||||||
|
local timeMeasures
|
||||||
|
local timeBeats
|
||||||
local markerId
|
local markerId
|
||||||
local regionId
|
local regionId
|
||||||
local isRegion
|
local isRegion
|
||||||
@ -168,13 +213,20 @@ function drawGui()
|
|||||||
end
|
end
|
||||||
if retval > 0 then timeRaw = timeRaw - markerRegionPos end
|
if retval > 0 then timeRaw = timeRaw - markerRegionPos end
|
||||||
|
|
||||||
-- construct display string, with leading zeros if neccessary (e.g. 27:08.321)
|
-- Construct display string
|
||||||
timeDisplaySeconds = math.floor((timeRaw%60)*1000)/1000
|
if timeUnitMeasures then
|
||||||
timeDisplay = math.floor(timeRaw/60) .. ":"
|
-- measures and beats: e.g. 07.3.99
|
||||||
if timeDisplaySeconds < 10 then
|
timeBeats, timeMeasures, _, _, _ = reaper.TimeMap2_timeToBeats(0, timeRaw)
|
||||||
timeDisplay = timeDisplay .. "0"
|
timeDisplay = timeMeasures+1 .. '.' .. round(timeBeats+1, 2)
|
||||||
end
|
else
|
||||||
timeDisplay = timeDisplay .. timeDisplaySeconds
|
-- minutes and seconds: MM:SS.xxx (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
|
||||||
|
end
|
||||||
|
|
||||||
gfx.clear = 3355443 -- background is dark grey
|
gfx.clear = 3355443 -- background is dark grey
|
||||||
|
|
||||||
@ -260,6 +312,16 @@ function init()
|
|||||||
timeSinceRegion = false
|
timeSinceRegion = false
|
||||||
end
|
end
|
||||||
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...
|
-- init stuff...
|
||||||
gui_init()
|
gui_init()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user