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

Change buffer size and sample rate on the fly in REAPER.

Posted by Tee on November 05,2021

起因

我使用的是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

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

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

若能,期待分享给我。


本作品采用知识共享署名 4.0 国际许可协议进行许可。