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.


Apa yang dilakukan aplay?
user151019

Lihat edit, tautan url.
Michal

Jawaban:



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. 


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.


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).)


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 -

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.