【Mr大狼出品】第一次做的脚本,大家多给意见。{Mr大狼_自动创建区间.lua}

第一次做脚本。一定有很多的不足。大家多给提意见。
这里要说明一下
执行脚本后,第一个弹窗有文字提示内容。选择“是”会从工程开头开始创建区间。选择“否”会从工程最后一个区间开始创建。
要特别说的是,经过了几个小时,我都没有解决定位工程最后一个区间最右侧边缘为开始执行位置的问题。为了使用上没有大的问题。选择“否”之后的对话框的“开始时间”是要计算一下的。
举个例子,工程中最后一个区间的时长是10分钟,区间相隔时间需要是1分钟。那这里就填入11分钟。如果最后一个区间是12分钟,区间相隔时间需要3分钟,那这里就填入15分钟。大概就是这个意思了。

——————————————风骚的分割线————————————————
经过noiZ大神和骑摩托逛古城兄弟的指导。终于将所有设想的功能全部完美实现了。
下面将最终的版本上传上来。
提示框有广告哈。也是为了自我推广一下。大家介意的话可以自己去脚本里面删掉哈。

Mr大狼_自动创建区间_V1.3.lua (3.8 KB)

1 Like

说说你没解决的地方
原来的代码

    local numMarkers = reaper.CountProjectMarkers(project, 0)
    if numMarkers > 0 then
        -- 获取工程中最后一个区间的位置
        _, lastRegionStart, lastRegionEnd = reaper.EnumProjectMarkers3(project, numMarkers - 1)
    end

首先这行的返回值就有问题

_, lastRegionStart, lastRegionEnd = reaper.EnumProjectMarkers3(project, numMarkers - 1)

你看漏了前面的一个返回值,第二个返回值是判断这是否region,因此你这两个start end变量就已经是错的,正确写法应该是

_, isRegion, lastRegionStart, lastRegionEnd = reaper.EnumProjectMarkers3(project, numMarkers - 1)

然后你这个写法只有工程里全是region才成立,否则如果最右边是一个marker而不是region的话那就又会出错。所以这里不应该直接简单地获取第numMarkers - 1个结果,而应该是遍历所有marker和region,只有当 isRegion 为 true时才记录lastRegionEnd, 或者当lastRegionEnd>0时才记录(marker时这个值为0)。具体写法请自己查询资料

另外我写过一个类似的脚本,没有你这些复杂的条件,就是简单地批量建立region,供参考
DSY_初始region.lua (821 字节)

2 Likes

哇!真的没想到第一个给我留言的居然是我一直仰慕的大神!哈哈。您好您好。
我一直在用您的DSY对轨用脚本呢。非常感谢您创作的脚本。对大家简直太有帮助了!
我也是刚刚开始入手写脚本这个事情。二十多年前学过一些这方面的知识,现在全都还给老师了。哈哈
就这我还是借助了ChatGPT的帮助呢。
后面我会慢慢赶紧的。也希望多和您交流学习。
先谢过啦!

1 Like

特别特别的感谢大神!用您指导的代码,之前最难解决的问题已经完全解决了!我这个脚本的使用基本上没有问题了。真的不知道怎么来形容我的感谢之情!
如果您方便的话,能不能再帮我看一下第二段代码。
现在只有一个问题。我已经来回来去修复了一下午了。
就是我设定的“相隔时间”这个参数。第一段代码执行没有问题。
但是第二段代码不管在对话框中,把相隔时间数值填入多少。都会按照默认值1分钟来执行。。。我感觉我自己的cpu要短路了。。。。。
Mr大狼_自动创建区间_V1.2.lua (4.0 KB)

defaultGapInterval 代码中,这个值,是你的间隔时间,但是你这个值,在下面的代码中就没有使用。你直接给了一个local gapInterval = params[5] or 1,local gapIntervalSeconds = gapInterval * 60然后把分钟变成秒。 这里params[5]是一个空值,然后就等于了1,所以,你无论输入什么,间隔都是60秒。

是的是的。就在刚刚我也琢磨明白了。刚刚修改好。哈哈哈。这一次我所有设想的功能都完全实现了!!!
在此感谢骑摩托逛古城兄弟,和noiZ大神的指导!
Mr大狼_自动创建区间_V1.3.lua (3.8 KB)

能正常创建了,只不过有点繁琐。让我觉得。创建代码就从光标位置创建是最简单方便的,写代码,就是为了方便,Z佬的代码,只用了10行都不到,就能完成你现在80行的代码。 :rofl:

你一共就4个输入参数,但是判断的时候却判断了5个,间隔那个刚好就是多出来的第五个,所以就恒为默认值

可不是么。后来我仔细检查一遍。也发现就是这个问题了。
总结来说就是眼瞎。缺的是认真仔细这个事。哈哈
多谢大神!

可说就是呢。唉….且有的提高呢。我这也是前天刚开始学着倒腾脚本。这是第一个搞出来的。以后慢慢改进。哈哈😄

大神,我能不能加你个QQ
或者微信,我有个不太大的小问题,但是自己搞不好,,,想寻求一下帮助,,,其实也简单,就是,,原本有一个脚本,,,移动后方对象到编辑光标,,,,,我想要一个 移动后方对象到编辑光标后0.8秒,但是那个时间我一改就出错,请帮忙~

大神,我QQ微信都是14543965

我有个qq交流群180945278。可以加进来。另外我有发过两个移动对象到编辑位置的脚本。


大哥,群主是谁,,,

是我啊。Mr大狼