1 Audacity插件开发:立体声音量独立控制基础
1.1 立体声音量独立控制基础
本页面介绍如何使用Nyquist独立更改左右立体声音道的音量。
如前所述,Audacity音轨的音频数据 <sound>
会通过变量 *track*
传递给Nyquist。如果音轨是单声道(只有一个声道),那么 <sound>
就是变量 *track*
的值。然而,对于立体声音轨,有两个声音,它们作为数组的两个元素传递给Nyquist,数组名是 *track*
。
要访问数组的特定元素,我们使用 (aref)
命令。
由于立体声音轨有2个声道,数组 *track*
有两个编号为0和1的元素。第0个元素是左声道的音频数据,另一个元素包含右声道的音频数据。
要访问左声道的音频数据,可以使用:
(aref *track* 0)
要访问右声道的音频数据,可以使用:
(aref *track* 1)
如前一教程所述,我们可以使用 (scale)
函数放大声音。对于单声道音轨,如果我们想将声音的振幅减半,只需输入:
(scale 0.5 *track*)
如果我们在立体声音轨上使用此指令,该函数会依次应用于 *track*
的每个元素,所以两个声道的振幅都会变为原来的一半。然而,如果我们想单独访问声道,还需要知道如何将两个不同的声音发送回Audacity中的同一条音轨。
要将两个不同的声音发送到Audacity中的立体声音轨,我们必须创建一个包含两个元素的数组。第一个元素将包含左声道的 <sound>
,第二个元素将包含右声道的声音。最简单的方法是使用 vector
函数:
(vector <left channel> <right channel>)
<left channel>
和 <right channel>
将是我们从Nyquist发送的声音。
为了进行实践,我们将仅放大立体声音轨的左声道。
- 打开一个短的立体声音轨。
- 从“效果”菜单中选择“Nyquist Prompt”,并输入以下代码:
(vector
(scale 2.0 (aref *track* 0))
(aref *track* 1)
)
注意数组的两个元素在 vector
函数的括号内。
此数组的第0个元素是原始左声道 (aref *track* 0)
,其振幅已按比例放大2倍,这将成为新的左声道。此数组的下一个元素是原始右声道 (aref *track* 1)
,它将作为新的右声道原封不动地发送回去。
除了使用 (scale)
函数,我们还可以使用 mult
函数。这与使用 scale
函数几乎相同,只是我们不需要先指定乘法因子。(mult 2.0 *track*)
与 (mult *track* 2.0)
是相同的。
我们的第二个示例是将左声道的振幅放大到原来的一半,将右声道的振幅放大到原来的两倍:
(vector
(mult (aref *track* 0) 0.5)
(mult (aref *track* 1) 2.0)
)
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.