Альтернатива 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 .

РЕДАКТИРОВАТЬ:

Ссылка на Википедию, в которой описана функциональность aplay.


Что делает aplay?
user151019 12.12.12

См редактировать, связанный 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 использует 8 кГц, а не 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для aplay для передачи вашей микросхемы PCM следующим образом:

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

Надеюсь, что это помогло, протестировано на MacOs Sierra 10.12.5 сегодня.


3

aplayнужна ALSA, которая доступна только в Linux. Вы можете попробовать вывести этот байтовый поток в файл и попробовать поиграть afplayна OS X. (Вероятно, вам нужно добавить надлежащие заголовки AIFF, afplayчтобы принять файл, поскольку он не будет воспроизводить сырой дамп PCM (или, тем не менее, этот байтовый поток выходит из это эхо должно быть истолковано).)


Самое интересное в aplay и этом маленьком алгоритме C состоит в том, что он меняется и генерирует различные звуки с течением времени, поэтому его вывод уберет это :(
Michal

Рассматривайте это как более длительную задержку для буферизации воспроизведения. :-) как эти данные интерпретировать? Это может помочь найти подходящую утилиту командной строки, которая работает на OS X для воспроизведения данных, сгенерированных утилитой. (Например, это может работать с mpg123, хотя я еще не пробовал.)
MacLemon

Так что бы вы предложили?
Михал

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 and crap», но понял, что вы просто ссылались на параметры, передаваемые компилятору. Работает очень хорошо, ура!
Михал

1

Установите sox из Homebrew, затем используйте play -c1 -b8 -eunsigned -traw -r8k -вместо auplay.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.