Mac OS X bash的APLAY的替代产品


11

有人知道Linux的APLAY程序有Mac替代品吗?我想运行此脚本:

echo "main(i){for(i=0;;i++)putchar(((i*(i>>8|i>>9)&46&i>>8))^(i&i>>13|i>>6));}" | gcc -x c - && ./a.out | aplay

声音效果很棒,但是我不知道如何做,因为Mac OS没有play

编辑:

链接到Wikipedia,它描述了游戏的功能。


游戏是做什么的?
user151019

请参阅编辑,链接的URL。
Michal

Answers:



7

这是与perl一线式相同的程序,可在Mac,Linux和Windows上运行(测试)

perl -e 'for($i=0;;$i++){
    print pack("n", ((($i*($i>>8|$i>>9)&46&$i>>8))^($i&$i>>13|$i>>6))); 
}' | ./play -c 1 -b 8 -e unsigned -t raw -r 8k -

“ ./play”命令是本文中已经提到的“ sox”实用程序。 


2
aplay使用8khz而不是48 ...所以命令应为play -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier

5


我知道这个话题很老,但是我找到了一个最近可行的解决方案。SOX不再支持来自stdout的输入,因此现在可以使用mplayer。您需要使用Hombrew.sh和进行安装brew install mplayer

然后aplay,您可以替换为: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

只要确保更改rate=8000您的自定义频率即可。

您可以在一个游戏中创建一个别名,~/.bashrc以将您的PCM Chiptune传递给管道,如下所示:

alias aplay="mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -"

希望这对您有所帮助,并在今天的macOs Sierra 10.12.5上进行了测试。


3

aplay需要仅在Linux上可用的ALSA。您可以尝试将字节流输出到文件,然后尝试afplay在OS X上播放。(您可能需要添加适当的AIFF标头afplay以接受文件,因为它不会播放原始的PCM转储(或者从字节流出来)该回声应被解释)。)


关于游戏和这个小C算法的有趣之处在于,它会随着时间的变化而变化并产生不同的声音,因此输出它会带走这一点:(
Michal 2012年

将其视为缓冲播放的较长时间延迟。:-)如何解释这些数据?这可能有助于找到一个合适的命令行工具,该工具在OS X上可以播放由该工具生成的数据。(例如,虽然我还没有尝试过,但是它可能与mpg123一起工作。)
MacLemon 2012年

那你有什么建议呢?
Michal

2

我用过mpv。这些选项与mplayer类似,但是mpv中不再支持--rawaudio开关。这是您要做的:

echo 'c_program' | gcc and crap | mpv --cache=1024 --quiet \
    --demuxer=rawaudio \
    --demuxer-rawaudio-format=u8 \
    --demuxer-rawaudio-channels=1 \
    --demuxer-rawaudio-rate=8000 -

我对“ gcc和废话”有些困惑,但是我发现您只是在指传递给编译器的参数。效果很好,加油!
米歇尔

1

从Homebrew安装sox,然后使用play -c1 -b8 -eunsigned -traw -r8k -代替auplay

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.