Alternatywa dla APLAY dla bash dla Mac OS X.

11

Czy ktoś zna alternatywę dla komputerów Mac dla programu APLAY w systemie Linux? Chciałbym uruchomić ten skrypt:

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

To świetny efekt dźwiękowy, ale nie wiem jak, ponieważ Mac OS nie ma odtwarzacza .

EDYTOWAĆ:

Link do Wikipedii, która opisuje funkcjonalność aplikacji.

Michał
źródło
Co robi aplikacja?
user151019,
Zobacz edycję, połączony adres URL.
Michał

Odpowiedzi:

6

Wierzę, że narzędzie sox oznacza grę.

David Watzke
źródło
7

Oto ten sam program, jako perl-one-liner, który działa (testowany) na komputerach Mac, Linux i 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 -

polecenie „./play” to narzędzie „sox” wspomniane już w tym artykule. 

japh
źródło
2
aplay używa 8kHz nie 48 ... więc polecenie powinno raczej byćplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier
5


Wiem, że ten temat jest stary, ale znalazłem ostatnio działające rozwiązanie. SOX nie obsługuje już danych wejściowych ze standardowego wyjścia, więc teraz dostępna jest działająca alternatywa mplayer. Musisz zainstalować go za pomocą Hombrew.sh z brew install mplayer.

Następnie możesz zastąpić aplay: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Pamiętaj tylko, aby zmienić rate=8000częstotliwość niestandardową.

Możesz utworzyć alias ~/.bashrcdla aplay, aby potokować swój chiptune PCM w następujący sposób:

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

Mam nadzieję, że to pomogło, przetestowane dzisiaj na macOs Sierra 10.12.5.

Samuel Prevost
źródło
3

aplaypotrzebuje ALSA, który jest dostępny tylko w systemie Linux. Możesz spróbować wypisać ten bajt do pliku i spróbować grać afplayw systemie OS X. (Prawdopodobnie musisz dodać odpowiednie nagłówki AIFF, afplayaby zaakceptować plik, ponieważ nie będzie on odtwarzał zrzutu zrzutu PCM (lub tego bajtu pochodzącego z to echo powinno być interpretowane).)

MacLemon
źródło
Zabawną częścią gry i tego małego algorytmu C jest to, że zmienia i generuje różne dźwięki w czasie, więc wysyłanie go zabrałoby to :(
Michal
Zobacz to jako dłuższe opóźnienie buforowania odtwarzania. :-) jak interpretować te dane? Może to pomóc w znalezieniu odpowiedniego narzędzia wiersza polecenia, które działa w systemie OS X do odtwarzania danych generowanych przez to narzędzie. (Na przykład może to działać z mpg123, chociaż jeszcze tego nie próbowałem.)
MacLemon
Co byś zasugerował?
Michał
2

Użyłem MPV. Opcje są podobne do mplayera, ale przełącznik --rawaudio nie jest już obsługiwany w mpv. To, co robisz zamiast tego:

echo 'c_program' | gcc and crap | mpv --cache=1024 --quiet \
    --demuxer=rawaudio \
    --demuxer-rawaudio-format=u8 \
    --demuxer-rawaudio-channels=1 \
    --demuxer-rawaudio-rate=8000 -
enigmatyczny fizyk
źródło
Trochę się pomyliłem z „gcc and crap”, ale zorientowałem się, że chodziło ci tylko o parametry przekazane kompilatorowi. Działa naprawdę dobrze, na zdrowie!
Michał
1

Zainstaluj sox z Homebrew, a następnie użyj play -c1 -b8 -eunsigned -traw -r8k -zamiast auplay.

tbodt
źródło