Alternative zu APLAY für Mac OS X Bash

11

Kennt jemand eine Mac-Alternative für das APLAY-Programm von Linux? Ich möchte dieses Skript ausführen:

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

Das macht einen großartigen Soundeffekt, aber ich weiß nicht wie, da Mac OS kein Play hat .

BEARBEITEN:

Link zu Wikipedia, der die Funktionalität von aplay beschreibt.

Michal
quelle
Was macht aplay?
user151019
Siehe Bearbeiten, verknüpfte URL.
Michal

Antworten:

6

Ich glaube, das Sox- Dienstprogramm steht für aplay.

David Watzke
quelle
7

Hier ist das gleiche Programm wie ein Perl-Einzeiler, das unter Mac, Linux und Windows funktioniert (getestet)

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 -

Der Befehl "./play" ist das in diesem Artikel bereits erwähnte Dienstprogramm "sox". 

japh
quelle
2
aplay verwendet 8khz nicht 48 ... also sollte der Befehl eher seinplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier
5


Ich weiß, dass dieses Thema alt ist, aber ich habe eine aktuelle funktionierende Lösung gefunden. SOX unterstützt keine Eingaben von stdout mehr, daher ist jetzt eine funktionierende Alternative mplayer. Sie müssen es mit Hombrew.sh mit installieren brew install mplayer.

Sie können dann ersetzen aplaydurch: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Stellen Sie einfach sicher, dass Sie rate=8000mit Ihrer benutzerdefinierten Frequenz ändern .

Sie können einen Alias ~/.bashrcfür aplay erstellen, um Ihren PCM-Chiptune wie folgt einzuschalten:

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

Hoffe das hat geholfen, heute auf macOs Sierra 10.12.5 getestet.

Samuel Prevost
quelle
3

aplaybenötigt ALSA, das nur unter Linux verfügbar ist. Sie können versuchen, diesen Bytestream in eine Datei auszugeben und unter afplayOS X zu spielen. (Sie müssen wahrscheinlich die richtigen AIFF-Header hinzufügen afplay, um die Datei zu akzeptieren, da kein roher PCM-Dump abgespielt wird (oder jedoch der Bytestream, aus dem er stammt) dieses Echo sollte interpretiert werden).)

MacLemon
quelle
Der lustige Teil des Spiels und dieses kleinen C-Algorithmus ist, dass es sich im Laufe der Zeit ändert und unterschiedliche Klänge erzeugt, so dass die Ausgabe dies wegnehmen würde :(
Michal
Sehen Sie es als längere Zeitverzögerung für die Pufferung der Wiedergabe. :-) Wie sind diese Daten zu interpretieren? Dies kann hilfreich sein, um ein geeignetes Befehlszeilenprogramm zu finden, das unter OS X zum Abspielen der vom Dienstprogramm generierten Daten funktioniert. (Zum Beispiel könnte das mit mpg123 funktionieren, obwohl ich das noch nicht ausprobiert habe.)
MacLemon
Was würden Sie vorschlagen?
Michal
2

Ich habe mpv verwendet. Die Optionen ähneln denen von mplayer, aber der Schalter --rawaudio wird in mpv nicht mehr unterstützt. Dies ist, was Sie stattdessen tun:

echo 'c_program' | gcc and crap | mpv --cache=1024 --quiet \
    --demuxer=rawaudio \
    --demuxer-rawaudio-format=u8 \
    --demuxer-rawaudio-channels=1 \
    --demuxer-rawaudio-rate=8000 -
rätselhafter Physiker
quelle
Ich war ein bisschen verwirrt mit "gcc and crap", aber ich habe herausgefunden, dass Sie sich nur auf die Parameter beziehen, die an den Compiler übergeben wurden. Funktioniert wirklich gut, Prost!
Michal
1

Installieren Sie Sox von Homebrew und verwenden Sie es play -c1 -b8 -eunsigned -traw -r8k -stattdessen anstelle von auplay.

tbodt
quelle