Alternativa ao APLAY para Mac OS X bash

11

Alguém conhece alguma alternativa para Mac para o programa APLAY do Linux? Eu gostaria de executar este script:

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

O que produz um ótimo efeito sonoro, mas não sei como, já que o Mac OS não possui um jogo .

EDITAR:

Link para a Wikipedia, que descreve a funcionalidade do aplay.

Michal
fonte
O que o aplay faz?
user151019
Veja editar, URL vinculado.
21712

Respostas:

6

Acredito que o utilitário sox substitua o aplay.

David Watzke
fonte
7

Aqui está o mesmo programa, como um one-liner perl, que funciona (testado) no Mac, Linux e 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 -

o comando "./play" é o utilitário "sox" já mencionado neste artigo. 

japh
fonte
2
usos aplay 8kHz não 48 ... então o comando deve, antes, serplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier
5


Sei que esse tópico é antigo, mas encontrei uma solução de trabalho recente. O SOX não suporta mais a entrada do stdout; portanto, agora é uma alternativa funcional mplayer. Você precisará instalá-lo usando o Hombrew.sh com brew install mplayer.

Você pode substituir aplaypor: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Apenas certifique-se de alterar rate=8000com sua frequência personalizada.

Você pode criar um alias ~/.bashrcpara o aplay para canalizar seu chip PCM da seguinte maneira:

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

Espero que isso tenha ajudado, testado no macOs Sierra 10.12.5 hoje.

Samuel Prevost
fonte
3

aplayprecisa do ALSA, disponível apenas no Linux. Você pode tentar enviar esse bytestream para um arquivo e brincar com o afplayOS X. (Você provavelmente precisará adicionar cabeçalhos AIFF adequados afplaypara aceitar o arquivo, pois ele não reproduzirá um despejo bruto do PCM (ou, no entanto, esse bytestream saindo de esse eco deve ser interpretado).)

MacLemon
fonte
A parte divertida sobre o aplay e esse pequeno algoritmo C é que ele muda e gera sons diferentes ao longo do tempo, então a saída levaria isso embora :(
Michal
Veja isso como um atraso maior para a reprodução em buffer. :-) como esses dados devem ser interpretados? Isso pode ajudar a encontrar um utilitário de linha de comando adequado que funcione no OS X para reproduzir os dados gerados pelo utilitário. (Por exemplo que o trabalho poder com mpg123 embora eu não tentei isso ainda.)
MacLemon
Então, o que você sugeriria?
Michal
2

Eu usei mpv. As opções são semelhantes ao mplayer, mas a opção --rawaudio não é mais suportada no mpv. Isto é o que você faz:

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
fonte
Fiquei um pouco confuso com "gcc and crap", mas descobri que você estava apenas se referindo aos parâmetros passados ​​para o compilador. Funciona muito bem, saúde!
Michal
1

Instale o sox do Homebrew e use em play -c1 -b8 -eunsigned -traw -r8k -vez de auplay.

tbodt
fonte