Alternatif untuk APLAY untuk Mac OS X bash

11

Adakah yang tahu alternatif Mac untuk program APLAY Linux? Saya ingin menjalankan skrip ini:

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

Yang membuat efek suara hebat, tapi saya tidak tahu bagaimana, karena Mac OS tidak memiliki aplay .

EDIT:

Tautan ke Wikipedia, yang menjelaskan fungsionalitas aplay.

Michal
sumber
Apa yang dilakukan aplay?
user151019
Lihat edit, tautan url.
Michal

Jawaban:

6

Saya percaya utilitas sox berdiri untuk aplay.

David Watzke
sumber
7

Berikut adalah program yang sama, sebagai perl one-liner, yang berfungsi (diuji) pada Mac, Linux, dan 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 -

perintah "./play" adalah utilitas "sox" yang telah disebutkan dalam artikel ini. 

japh
sumber
2
aplay menggunakan 8khz bukan 48 ... jadi perintahnya seharusnyaplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier
5


Saya tahu bahwa topik ini sudah lama, tetapi saya telah menemukan solusi yang berfungsi baru-baru ini. SOX tidak mendukung input dari stdout lagi jadi sekarang alternatif yang berfungsi adalah mplayer. Anda harus menginstalnya menggunakan Hombrew.sh with brew install mplayer.

Anda kemudian dapat menggantinya aplaydengan: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Pastikan untuk mengubah rate=8000dengan frekuensi khusus Anda.

Anda dapat membuat alias dalam ~/.bashrcuntuk aplay untuk memipip PCM chiptune Anda seperti ini:

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

Semoga ini bisa membantu, diuji pada macOs Sierra 10.12.5 hari ini.

Samuel Prevost
sumber
3

aplaymembutuhkan ALSA yang hanya tersedia di Linux. Anda dapat mencoba mengeluarkan bytestream itu ke file dan mencoba untuk bermain dengan afplaydi OS X. (Anda mungkin perlu menambahkan header AIFF yang tepat untuk afplaymenerima file karena tidak akan memainkan dump PCM mentah (atau bagaimanapun bytestream itu keluar dari gema itu harus ditafsirkan).)

MacLemon
sumber
Bagian yang menyenangkan tentang aplay dan algoritma C kecil ini adalah bahwa ia mengubah dan menghasilkan suara yang berbeda dari waktu ke waktu, jadi mengeluarkannya akan menghilangkannya :(
Michal
Melihatnya sebagai penundaan waktu yang lebih lama untuk buffering playback. :-) bagaimana data itu ditafsirkan? Itu mungkin membantu untuk menemukan utilitas baris perintah yang cocok yang berfungsi pada OS X untuk memutar data yang dihasilkan oleh utilitas. (Misalnya yang mungkin bekerja dengan mpg123 meskipun saya belum mencobanya.)
MacLemon
Jadi apa yang akan Anda sarankan?
Michal
2

Saya menggunakan mpv. Opsinya mirip dengan mplayer, tetapi sakelar --rawaudio tidak lagi didukung di mpv. Inilah yang Anda lakukan sebagai gantinya:

echo 'c_program' | gcc and crap | mpv --cache=1024 --quiet \
    --demuxer=rawaudio \
    --demuxer-rawaudio-format=u8 \
    --demuxer-rawaudio-channels=1 \
    --demuxer-rawaudio-rate=8000 -
Ahli Fisika enigmatic
sumber
Saya agak bingung dengan "gcc dan omong kosong", tetapi saya menemukan bahwa Anda hanya merujuk pada params yang diteruskan ke kompiler. Bekerja dengan sangat baik, tepuk tangan!
Michal
1

Instal sox dari Homebrew, lalu gunakan play -c1 -b8 -eunsigned -traw -r8k -sebagai ganti auplay.

tbodt
sumber