forked from ReaTeam/ReaScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathedgemeal_Disable multichannel metering on selected tracks.lua
51 lines (41 loc) · 1.45 KB
/
edgemeal_Disable multichannel metering on selected tracks.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
-- @description Disable multichannel metering on selected tracks
-- @author Edgemeal
-- @version 1.0
-- @link Forum Thread https://forum.cockos.com/showthread.php?t=208982
-- Disable multichannel metering on selected tracks
-- Edgemeal
-- v1.0
-- https://forum.cockos.com/showthread.php?t=208982
local tracks = reaper.CountSelectedTracks()
if tracks == 0 then return end
--init_time = reaper.time_precise() -- For benchmarking code.
reaper.PreventUIRefresh(1)
-- get selected tracks
trk={}
for i = 0, tracks-1 do
trk[i+1] = reaper.GetSelectedTrack(0, i)
end
reaper.Main_OnCommand(40297, 0) -- Track: Unselect all tracks
-- disable multichannel for selected tracks
for i = 1, #trk do
local ret, str = reaper.GetTrackStateChunk(trk[i],"",false)
for line in str:gmatch('[^\r\n]+') do
if line == 'VU 2' then -- multichannel metering is on.
reaper.SetTrackSelected(trk[i], true)
reaper.Main_OnCommand(41726, 0) -- Track: Toggle full multichannel metering
reaper.SetTrackSelected(trk[i], false)
break
elseif line:find("TRACKHEIGHT ") then -- went past where VU line normally is so skip to next track.
break
end
end
end
-- restore selected tracks
for i = 1, #trk do
reaper.SetTrackSelected(trk[i], true)
end
reaper.PreventUIRefresh(-1)
-- >>> For benchmarking code,...
-- duration = reaper.time_precise() - init_time
-- reaper.ShowConsoleMsg(tostring(duration) .. "\n")
-- <<<