在REAPER里一键改变buffer size和采样率

起因

我使用的是Linux系统,最近音频驱动改用了pipewire-jack。因使用方式有差异,不了解如何更改buffer size和采样率,便参考Ardour的功能提了Feature Requests。后发现无人问津,便直接到到官方论坛咨询其他的方案。

意外收获

除了得到pipewire修改buffer size的帮助之外,还有用户分享了用脚本的方式实时修改buffer size的方案。

脚本很简单,思维方式很有意思。

我是从Windows操作习惯过来的。因Windows下的思维方式是点开声卡驱动设置 → 更改,即使知道可以用命令来更改buffer size和采样率,我在用JACK的时候一直依赖类似QjackCtl的GUI工具去做。

脚本示范

local cmd = 'pw-metadata -n settings 0 clock.force-quantum 128; pw-metadata -n settings 0 clock.force-rate 48000'

-- Execute command through reaper
reaper.ExecProcess(('/bin/sh -c "%s"'):format(cmd), 1000)

-- Open Audio device configuration...
reaper.Main_OnCommand(40099, 0)

-- Press return key programmatically
local prefs_title = reaper.JS_Localize('REAPER Preferences', 'common')
local prefs_hwnd = reaper.JS_Window_Find(title, true)
reaper.JS_WindowMessage_Post(prefs_hwnd, 'WM_KEYDOWN', 13, 0, 0, 0)

如果不是用pipewire-jack,是用原版的JACK。local cmd应为

local cmd = 'jack_control stop; jack_control dps period 32; jack_control start'

脚本效果

Change buffer size on the fly

其他操作系统可以做到吗?

我也不知道。原理很简单,不容易的是思维方式固化。

若能,期待分享给我。

1 Like

image
我做过一个类似的,一键改变声卡驱动,用来快速选中这个列表下的选项。把脚本名字里最后一个数字改为你要的选项的序号,比如上图里这个是第4个,就把脚本名字改为 DSY_选择声卡驱动_4,然后导入。那这个脚本的作用就是一键选中驱动列表里的第4项。需要别的驱动,就复制一份脚本,再改成需要的数字,再导入,如此类推。跟楼主的一样,需要先装上 JS API 插件
DSY_选择声卡驱动_4.lua (1.0 KB)

2 Likes