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

Редагувати:

Посилання на Вікіпедію, де описано функціональність програми.


Що робить аплайс?
користувач151019

Див. Редагування, пов’язаний URL.
Міхал

Відповіді:



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.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. Ви можете спробувати вивести цей bytestream у файл та спробувати відтворити його afplayна OS X. (Ви, мабуть, потрібно додати належні заголовки AIFF, afplayщоб прийняти файл, оскільки він не буде відтворювати неочищений дамп PCM (або, однак, що bytestream виходить з що відлуння слід інтерпретувати).)


Найцікавішою частиною аплаю та цього маленького алгоритму С є те, що він змінюється та видає різні звуки з часом, тому виведення цього забирає це :(
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.