起因
我使用的是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'
脚本效果
其他操作系统可以做到吗?
我也不知道。原理很简单,不容易的是思维方式固化。
若能,期待分享给我。
本作品采用知识共享署名 4.0 国际许可协议进行许可。