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には再生機能がないため、方法はわかりません。

編集:

aplayの機能を説明するウィキペディアへのリンク


aplayは何をしますか?
マーク

編集、リンクされたURLを参照してください。
ミハル

回答:



7

これは、perl one-linerと同じプログラムで、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は48ではなく8khzを使用しているため、コマンドはplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier

5


このトピックが古いことは知っていますが、最近の実用的なソリューションを見つけました。SOXはstdoutからの入力をサポートしなくなったため、現在は代替機能がありmplayerます。あなたはそれを使用してインストールする必要がありますHombrew.shbrew install mplayer

その後、次のものに置き換えることができますaplaymplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

rate=8000カスタム周波数で変更してください。

~/.bashrcaplayのエイリアスを作成して、PCMチップチューンを次のようにパイプすることができます。

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

これが今日のmacOs Sierra 10.12.5でテストされ、役立つことを願っています。


3

aplayLinuxでのみ利用可能なALSAが必要です。そのバイトストリームをファイルに出力してafplay、OS X で試してみることができます(afplayファイルを受け入れるために適切なAIFFヘッダーを追加する必要があります。これは、生のPCMダンプを再生しないためです(ただし、そのエコーを解釈する必要があります)。


アプレイとこの小さなCアルゴリズムの楽しい部分は、時間の経過とともにさまざまな音が変化して生成されるため、出力するとそれがなくなるということです。(
Michal

再生をバッファリングするための長い時間遅延としてそれを参照してください。:-)そのデータはどのように解釈されるのですか?これは、OS Xで動作して、ユーティリティによって生成されたデータを再生する適切なコマンドラインユーティリティを見つけるのに役立つ場合があります。(たとえば、まだ試していませんが、mpg123で動作する可能性があります。)
MacLemon

それで、あなたは何を提案しますか?
ミハル

2

私はmpvを使用しました。オプションはmplayerに似ていますが、mprawでは--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 and crap」と少し混同されましたが、コンパイラーに渡されたパラメーターを参照しているだけであることがわかりました。乾杯!
ミハル

1

Homebrewからsoxをインストールし、play -c1 -b8 -eunsigned -traw -r8k -代わりにを使用しますauplay

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.