Hey guys we (me and eugen2777) found some issues when using
GetTrackStateChunk() and SetTrackStateChunk()
Problems can be if you work with large track chunks (more than 4 mb)
At the moment we have the following solution (by eugen2777):
Code:
function GetTrackChunk(track)
if not track then return end
local fast_str, track_chunk
fast_str = reaper.SNM_CreateFastString("")
if reaper.SNM_GetSetObjectState(track, fast_str, false, false) then
track_chunk = reaper.SNM_GetFastString(fast_str)
end
reaper.SNM_DeleteFastString(fast_str)
return track_chunk
end
function SetTrackChunk(track, track_chunk)
if not (track and track_chunk) then return end
local fast_str, ret
fast_str = reaper.SNM_CreateFastString("")
if reaper.SNM_SetFastString(fast_str, track_chunk) then
ret = reaper.SNM_GetSetObjectState(track, fast_str, true, false)
end
reaper.SNM_DeleteFastString(fast_str)
return ret
end
We recommend to use this code instead of GetTrackStateChunk() and SetTrackStateChunk() if possible.