问题详情
想不出来这样的代码,求教
代码的思路主要是卡在什么地方?你本来想的执行流程是怎样的(代码)?
卡在怎么能把后面的对象依次,放在全面的区间开始处,我主要不知道有没有这样的代码,所以问问,思路是框选对象并获取对象的轨道和在轨道上的顺序,然后再获取它们位置前的区间信息,然后设置对象1的位置在区间1开始处,以此类推到结束
去学习一下lua的table,会很有帮助
这种需求好像是插入片头片尾,有人写过类似的脚本
那个是就固定两个,我希望可以多个,这是大佬的,借鉴不出来
local p_header = reaper.GetSelectedMediaItem(0, 0) --获取所选的片头对象
local p_footer = reaper.GetSelectedMediaItem(0, 1) --获取所选的片尾对象
local header_len = reaper.GetMediaItemInfo_Value(p_header, "D_LENGTH") --获取片头长度
local footer_len = reaper.GetMediaItemInfo_Value(p_footer, "D_LENGTH") --获取片尾长度
local retval, mknums, rgnums = reaper.CountProjectMarkers(0) --获取项目中的标记数量和详情
reaper.Main_OnCommand(40699, 0) --剪切对象
local tk =reaper.GetSelectedTrack(0,0) --获取复制后的音频对象所在的轨道
for i = 0, marker_count-1 do
local retval,isrgn,this_start,this_end,this_name,this_index = reaper.EnumProjectMarkers3(0,i)
if isrgn then
region_index = region_index + 1
if (start_time and end_time and this_start >= start_time and this_end <= end_time) or not start_time then --如果有时间选区,则只处理选区内的标记;否则处理全部标记
reaper.Main_OnCommand(42398, 0) --对象:粘贴对象/轨道
local header = reaper.GetSelectedMediaItem(0, 0) --获取所添加的片头对象
local footer = reaper.GetSelectedMediaItem(0, 1) --获取所添加的片尾对象
--计算添加后新的开始时间和结束时间,并更新项目标记
new_start = this_start-header_len-offset
new_end = this_end+footer_len+offset
reaper.SetProjectMarker2(0, region_index, true, new_start-0.8, new_end+0.8, "")
reaper.SetMediaItemInfo_Value(header,"D_POSITION", new_start) --设置片头对象的位置
reaper.SetMediaItemInfo_Value(footer,"D_POSITION", this_end+offset) --设置片尾对象的位置
end
end