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.

Michal
la source
Que fait aplay?
user151019
Voir modifier, URL liée.
Michal

Réponses:

6

Je crois que l' utilitaire sox remplace aplay.

David Watzke
la source
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. 

japh
la source
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.

Samuel Prevost
la source
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é).)

MacLemon
la source
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 -
énigmatiquePhysicien
la source
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.

tbodt
la source