求教大佬,如何能够不建立新轨道,把3个甚至更多音频按照顺序,放在对应序号的区间开始处

问题详情

想不出来这样的代码,求教

做过的尝试

代码的思路主要是卡在什么地方?你本来想的执行流程是怎样的(代码)?

卡在怎么能把后面的对象依次,放在全面的区间开始处,我主要不知道有没有这样的代码,所以问问,思路是框选对象并获取对象的轨道和在轨道上的顺序,然后再获取它们位置前的区间信息,然后设置对象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