Alternativa a APLAY para Mac OS X bash


11

¿Alguien conoce alguna alternativa de Mac para el programa APLAY de Linux? Me gustaría ejecutar 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

Lo que hace un gran efecto de sonido, pero no sé cómo, ya que Mac OS no tiene un sistema de sonido .

EDITAR:

Enlace a Wikipedia, que describe la funcionalidad de aplay.


¿Qué hace aplay?
user151019

Ver editar, url vinculada.
Michal

Respuestas:



7

Aquí está el mismo programa, como un perl one-liner, que funciona (probado) en Mac, Linux y 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 -

el comando "./play" es la utilidad "sox" ya mencionada en este artículo. 


2
aplay usa 8khz no 48 ... así que el comando debería ser más bienplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier

5


Sé que este tema es antiguo, pero he encontrado una solución de trabajo reciente. SOX ya no admite la entrada de stdout, por lo que ahora es una alternativa de trabajo mplayer. Tendrá que instalarlo usando Hombrew.sh con brew install mplayer.

Luego puede reemplazar aplaypor: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Solo asegúrese de cambiar rate=8000con su frecuencia personalizada.

Puede crear un alias ~/.bashrcpara que aplay canalice su chiptune PCM de esta manera:

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

Espero que esto haya ayudado, probado en macOs Sierra 10.12.5 hoy.


3

aplaynecesita ALSA, que solo está disponible en Linux. Podría intentar enviar ese bytestream a un archivo e intentar jugar afplayen OS X. (Es probable que necesite agregar encabezados AIFF adecuados para afplayaceptar el archivo, ya que no reproducirá un volcado PCM sin formato (o sin embargo, ese bytestream sale de ese eco debe ser interpretado).)


La parte divertida sobre el aplay y este pequeño algoritmo C es que cambia y genera diferentes sonidos con el tiempo, por lo que generarlo lo eliminaría :(
Michal

Véalo como un retraso de tiempo más largo para la reproducción de la memoria intermedia. :-) ¿Cómo se interpretan esos datos? Eso podría ayudar a encontrar una utilidad de línea de comandos adecuada que funcione en OS X para reproducir los datos generados por la utilidad. (Por ejemplo, eso podría funcionar con mpg123, aunque aún no lo he probado).
MacLemon

Entonces, que sugieres?
Michal

2

Usé mpv. Las opciones son similares a mplayer, pero el modificador --rawaudio ya no es compatible con mpv. Esto es lo que haces en su lugar:

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

Me confundí un poco con "gcc and crap", pero descubrí que solo te referías a los parámetros pasados ​​al compilador. Funciona muy bien, ¡salud!
Michal

1

Instale sox desde Homebrew, luego use en play -c1 -b8 -eunsigned -traw -r8k -lugar de auplay.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.