首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对synth命令序列进行sox操作

如何对synth命令序列进行sox操作
EN

Stack Overflow用户
提问于 2017-09-05 22:10:09
回答 1查看 746关注 0票数 1

目前,我已经创建了一个简单的脚本,它可以生成几个带有同步线的蜂鸣声,然后将它们连接起来,以获得更复杂的声音。我使用了一个bash脚本来做到这一点,因为我不能理解如何使用简单的sox……我的play脚本类似于

代码语言:javascript
复制
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

生产出一辆意大利急救车。当然,这不是目的,但想法是...我如何用一个命令产生几个连续的正弦,而不需要不同的命令?

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 11:04:20

有一种方法可以做到这一点,尽管文档中并不是很清楚,也不是很容易发现,尽管声称相反。在手册页中查找其他内容时,我偶然发现了这种方法。您可以使用':‘字符来分隔效果链,如下所示:

代码语言:javascript
复制
play -n synth 1 sin C : synth .5 sin D

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

代码语言:javascript
复制
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%。

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

代码语言:javascript
复制
play -n synth 1 pl C pl D pl E delay 0 1 2 remix -

不过,这样做的问题是笔记的长度都是一样的。

当你需要可变长度的笔记并且周围有空格时,比如在摩尔斯电码中,那么你可以使用这些命令:

如果不保存临时文件:

代码语言:javascript
复制
play -n synth 0.3 sin E6 : trim 0.0 .1 : synth 0.1 sin E6 : trim 0.0 .1 : synth 0.3 sin E6;

使用保存临时文件:

代码语言:javascript
复制
sox -n morse_text.ogg synth 0.1 sin E6 : trim 0.0 .1 : synth 0.3 sin E6 : trim 0.0 .1 : synth 0.1 sin E6; 
play morse_text.ogg; 

一个更快的解决方案是在共享内存中使用临时文件,如果系统中可能的话:

代码语言:javascript
复制
/dev/shm/morse_text.ogg 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46057100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档