ทางเลือกแทน APLAY สำหรับ Mac OS X bash


11

ใครรู้ทางเลือก Mac สำหรับโปรแกรม APLAY ของ Linux หรือไม่ ฉันต้องการเรียกใช้สคริปต์นี้:

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

แก้ไข:

ลิงก์ไปยัง Wikipedia ซึ่งอธิบายการทำงานของ aplay


aplay ทำอะไรได้บ้าง
user151019

ดูแก้ไข url ที่เชื่อมโยง
Michal

คำตอบ:



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.shbrew install mplayerกับ

จากนั้นคุณสามารถแทนที่aplayโดย: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

เพียง แต่ต้องแน่ใจว่าได้เปลี่ยนแปลงrate=8000ตามความถี่ที่กำหนดเองของคุณ

คุณสามารถสร้างนามแฝง~/.bashrcสำหรับ aplay เพื่อไพพ์ PCM chiptune ของคุณในลักษณะนี้:

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

หวังว่าสิ่งนี้จะช่วยทดสอบบน macOs Sierra 10.12.5 วันนี้


3

aplayต้องการALSAซึ่งมีอยู่ใน Linux เท่านั้น คุณสามารถลองแสดงผล bytestream ไปยังไฟล์และลองเล่นกับafplayOS X ได้ (คุณอาจต้องเพิ่มส่วนหัว AIFF ที่เหมาะสมafplayเพื่อรับไฟล์เนื่องจากมันจะไม่เล่น PCM ดิบ ๆ (หรืออย่างไรก็ตาม bytestream ออกมา เสียงสะท้อนนั้นควรตีความ))


ส่วนที่สนุกสนานเกี่ยวกับ aplay และอัลกอริธึม C เล็ก ๆ นี้คือมันเปลี่ยนและสร้างเสียงที่แตกต่างกันไปตามกาลเวลาดังนั้นการส่งออกจะนำสิ่งนั้นออกไป :(
Michal

เห็นว่ามันเป็นการหน่วงเวลานานขึ้นสำหรับการเล่นบัฟเฟอร์ :-) ข้อมูลนั้นจะตีความอย่างไร ที่อาจช่วยในการค้นหายูทิลิตีบรรทัดคำสั่งที่เหมาะสมซึ่งทำงานบน OS X เพื่อเล่นข้อมูลที่สร้างโดยยูทิลิตี้ (ตัวอย่างเช่นที่อาจใช้งานกับ mpg123 ได้ แต่ฉันยังไม่ได้ลอง)
MacLemon

ดังนั้นคุณจะแนะนำอะไร
Michal

2

ฉันใช้ mpv ตัวเลือกคล้ายกับ mplayer แต่สวิตช์ --rawaudio ไม่รองรับใน mpv อีกต่อไป นี่คือสิ่งที่คุณทำแทน:

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 และ crap" แต่ฉันคิดออกว่าคุณแค่อ้างถึง params ที่ส่งผ่านไปยังคอมไพเลอร์ ทำงานได้ดีจริงๆไชโย!
Michal

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.