如何sox合成命令序列

时间:2017-09-05 14:10:09

标签: bash sox

此刻,我创建了一个简单的脚本,它会产生几个带有synusoids的蜂鸣声,并且在连接它们之后会产生更复杂的声音。 我使用了一个bash脚本来做到这一点,因为我无法理解如何使用sox来做到这一点...... 我玩游戏的脚本就像

count=0
while [ 1 ]
do
play -n synth 1 sine C
play -n synth 0.2 sine E
play -n synth 0.2 sine C
play -n synth 0.2 sine E
if [ $count -eq 5 ]
then
sleep 1
count=0
fi
count=$(($count+1))
done

产生类似意大利救护车的东西。这当然不是目的,但这个想法是......我怎么能用一个命令产生几个连续的正弦而不需要不同的命令呢?

1 个答案:

答案 0 :(得分:0)

尽管有相反的说法,尽管在文档中不是很清楚或找不到,但是有一种方法可以做到这一点。我在手册页中寻找其他内容时偶然遇到了这种方法。您可以使用':'字符来分隔效果链,如下所示:

play -n synth 1 sin C : synth .5 sin D

在两个不同长度的正弦波形上播放C,D。您还可以为每个音符创建单独的效果链:

play -n synth .5 sin C3 : synth 1 tri D3 chorus .7 .5 20 1 1 2 -t : synth 2 pl E3

这将使用音符,波形和效果的不同长度播放C3 D3和E3。

显然,您也可以使用换行符,但这是因为您使用的是--effects-file选项,这是我对':'字符的了解。手册页中的“多重效果链”中对此进行了描述,占较长手册页的25%。

将音符组合到单个样本中的另一种方法是使用延迟和重新混合效果,如下所示:

play -n synth 1 pl C pl D pl E delay 0 1 2 remix -

尽管如此,但问题是音符的长度都相同。