【发布时间】:2018-03-02 16:41:09
【问题描述】:
我使用 SoX 来生成这种声音:
$ play -n synth 1 pluck E3 repeat 2
我设法在一个新的终端选项卡中同时播放另一个模式,比如$ play -n synth 1.5 pluck C3 repeat 2 in。有没有办法在同一个 bash 脚本中同时播放两种模式?
【问题讨论】:
-
您应该始终能够使用
&同时启动多个程序。但是您确定bash是最适合该任务的工具吗?我的意思是,即使像 Chuck 这样精心设计的语言和像 Alda 这样的包使用起来仍然有些麻烦,我不认为 bash 可以与那些竞争......你肯定looked through this list? -
@AndreyTyukin 是的,我确信我想为这个项目使用尽可能简单的声音发生器。我考虑过使用
beep,但它的级别太低了。当您建议使用&时,您的意思是play -n synth 4 pluck 200 & play -n synth 4 pluck 100吗?因为不幸的是它不能同时播放这两种声音。 -
你在那里缺少分号,它不应该分隔命令,而是附加到命令中。查看
&中使用的the last example 21-3 "Running parallel processes in subshells" here。但我不确定play命令对此有何反应:可能会证明play仅将命令排入单个本地服务器实例,并且不能并行工作。 -
@AndreyTyukin 我指的是你的第一句话“你在那里缺少分号,它不应该分隔命令,而是附加到命令中”。这是不正确的:没有缺少分号,
&可以像 rooofl 那样用于分隔命令,而 `&' 实际上将前面的命令置于后台,有效地与下一个命令并行启动。 -
@xhienne
(sleep 2 ; echo "right") & (sleep 1; echo "you are")