Alternative à APLAY pour Mac OS X bash


11

Quelqu'un connaît une alternative Mac pour le programme APLAY de Linux? Je voudrais exécuter ce 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

Ce qui fait un excellent effet sonore, mais je ne sais pas comment, car Mac OS n'a pas de jeu .

ÉDITER:

Lien vers Wikipedia, qui décrit les fonctionnalités de aplay.


Que fait aplay?
user151019

Voir modifier, URL liée.
Michal

Réponses:



7

Voici le même programme, comme un one-liner perl, qui fonctionne (testé) sur Mac, Linux et 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 -

la commande "./play" est l'utilitaire "sox" déjà mentionné dans cet article. 


2
aplay utilise 8khz et non 48 ... donc la commande devrait plutôt êtreplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier

5


Je sais que ce sujet est ancien, mais j'ai trouvé une solution de travail récente. SOX ne prend plus en charge les entrées de stdout, donc une alternative de travail est maintenant mplayer. Vous devrez l'installer en utilisant Hombrew.sh avec brew install mplayer.

Vous pouvez ensuite remplacer aplaypar: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Assurez-vous simplement de changer rate=8000avec votre fréquence personnalisée.

Vous pouvez créer un alias dans ~/.bashrcaplay pour diriger votre chiptune PCM comme ceci:

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

J'espère que cela a aidé, testé sur macOs Sierra 10.12.5 aujourd'hui.


3

aplaynécessite ALSA qui n'est disponible que sur Linux. Vous pouvez essayer d'exporter ce bytestream dans un fichier et essayer de jouer avec afplaysur OS X. (Vous devrez probablement ajouter des en-têtes AIFF appropriés pour afplayaccepter le fichier car il ne jouera pas un vidage PCM brut (ou cependant ce bytestream sortant de cet écho doit être interprété).)


La partie amusante à propos de l'aplay et de ce petit algorithme C est qu'il change et génère différents sons au fil du temps, donc le sortir enlèverait cela :(
Michal

Considérez-le comme un délai plus long pour la mise en mémoire tampon de la lecture. :-) comment interpréter ces données? Cela pourrait aider à trouver un utilitaire de ligne de commande approprié qui fonctionne sur OS X pour lire les données générées par l'utilitaire. (Par exemple, cela pourrait fonctionner avec mpg123 même si je n'ai pas encore essayé.)
MacLemon

Alors, qu'est-ce que vous suggérez?
Michal

2

J'ai utilisé mpv. Les options sont similaires à mplayer, mais le commutateur --rawaudio n'est plus pris en charge dans mpv. Voici ce que vous faites à la place:

echo 'c_program' | gcc and crap | mpv --cache=1024 --quiet \
    --demuxer=rawaudio \
    --demuxer-rawaudio-format=u8 \
    --demuxer-rawaudio-channels=1 \
    --demuxer-rawaudio-rate=8000 -

Je me suis un peu confondu avec "gcc and crap", mais j'ai compris que vous faisiez simplement référence aux paramètres passés au compilateur. Fonctionne vraiment bien, bravo!
Michal

1

Installez sox depuis Homebrew, puis utilisez à la play -c1 -b8 -eunsigned -traw -r8k -place de auplay.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.