Alternativa ad APLAY per Mac OS X bash


11

Qualcuno conosce qualche alternativa Mac per il programma APLAY di Linux? Vorrei eseguire questo 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

Il che rende un grande effetto sonoro, ma non so come, dal momento che Mac OS non ha aplay .

MODIFICARE:

Link a Wikipedia, che descrive la funzionalità di aplay.


Cosa fa aplay?
user151019

Vedi modifica, URL collegato.
Michal,

Risposte:



7

Ecco lo stesso programma, come perl-one-liner, che funziona (testato) su Mac, Linux e 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 -

il comando "./play" è l'utilità "sox" già menzionata in questo articolo. 


2
aplay usa 8 khz non 48 ... quindi il comando dovrebbe essere piuttostoplay -c 1 -b 8 -e unsigned -t raw -r 8k -
hashier

5


So che questo argomento è vecchio, ma ho trovato una soluzione funzionante recente. SOX non supporta più l'input da stdout, quindi ora è un'alternativa funzionante mplayer. Dovrai installarlo usando Hombrew.sh con brew install mplayer.

È quindi possibile sostituire aplaycon: mplayer -cache 1024 -quiet -rawaudio samplesize=1:channels=1:rate=8000 -demuxer rawaudio -

Assicurati di cambiare rate=8000con la tua frequenza personalizzata.

Puoi creare un alias ~/.bashrcper aplay per reindirizzare il tuo chiptune PCM in questo modo:

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

Spero che questo abbia aiutato, testato su macOs Sierra 10.12.5 oggi.


3

aplayha bisogno di ALSA che è disponibile solo su Linux. Potresti provare a inviare quel bytestream a un file e provare a giocare con afplaysu OS X. (Probabilmente dovrai aggiungere le intestazioni AIFF appropriate per afplayaccettare il file poiché non riprodurrà un dump PCM grezzo (o comunque quel bytestream che esce da quell'eco dovrebbe essere interpretata).)


La parte divertente dell'aplay e di questo piccolo algoritmo C è che cambia e genera suoni diversi nel tempo, quindi la sua uscita lo porterebbe via :(
Michal

Vedilo come un ritardo maggiore per la riproduzione in buffer. :-) come devono essere interpretati quei dati? Ciò potrebbe aiutare a trovare un'utilità della riga di comando adatta che funzioni su OS X per riprodurre i dati generati dall'utilità. (Ad esempio, potrebbe funzionare con mpg123 anche se non l'ho ancora provato.)
MacLemon

Quindi cosa suggeriresti?
Michal,

2

Ho usato mpv. Le opzioni sono simili a mplayer, ma l'opzione --rawaudio non è più supportata in mpv. Questo è ciò che fai invece:

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

Mi sono un po 'confuso con "gcc and crap", ma ho capito che ti stavi solo riferendo ai parametri passati al compilatore. Funziona davvero bene, evviva!
Michal,

1

Installa sox da Homebrew, quindi usa play -c1 -b8 -eunsigned -traw -r8k -invece di auplay.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.