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

Michal
источник
Что делает aplay?
user151019 12.12.12
См редактировать, связанный URL.
Михал

Ответы:

6

Я полагаю, что утилита sox заменяет aplay.

Дэвид Ватцке
источник
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", уже упомянутая в этой статье. 

JAPH
источник
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 (или, тем не менее, этот байтовый поток выходит из это эхо должно быть истолковано).)

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

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

tbodt
источник