web-dev-qa-db-ja.com

オーディオ出力に何かをパイプする方法は?

オーディオ出力にデータをパイプするにはどうすればよいですか?たとえば、ファイル、アーカイブ、ドライブのバックアップ、プログラムを聞きたいと思っています。または、HDDを聴きたい-7年ほど前に可能だったことについて漠然と読んだことを覚えているが、今は何も見つからない。

つまり、ファイル、ディスクの読み取り、さらにはネットワーク接続まで、何でも聞くことができるようにしたいのです。 Linuxではそれが間違いなく可能であることを知っています。どうすればできますか? Lubuntu 20.04の使用

aplayへのパイプ処理はうまく機能することがわかりました。

_journalctl | aplay_はきれいに聞こえませんが、驚くほどうまく機能します。

aplay(1) の例を次に示します。

_aplay -c 1 -t raw -r 22050 -f mu_law foobar
              will play the raw file "foobar" as a 22050-Hz, mono, 8-bit, Mu-Law .au file.
_

これは、debian/ubuntuの_alsa-utils_パッケージの一部として見つけることができます。

これは、小さなCプログラムをgccにエコーし、コンパイルされたバージョンを実行してaplayにパイプする、好きな1ライナーです。その結果、驚くほど素敵な15分の繰り返しの曲になります。

_echo "g(i,x,t,o){return((3&x&(i*((3&i>>16?\"BY}6YB6$\":\"Qj}6jQ6%\")[t%8]+51)>>o))<<4);};main(i,n,s){for(i=0;;i++)putchar(g(i,1,n=i>>14,12)+g(i,s=i>>17,n^i>>13,10)+g(i,s/3,n+((i>>11)%3),10)+g(i,s/5,8+n-((i>>10)%3),9));}"|gcc -xc -&&./a.out|aplay
_
11
Stewart

これは、OSSの一部である/dev/dspで可能でした。OSSは、Linuxカーネルの一部ではありませんでした。以前はcat some_file >/dev/dspまたはsome_program >/dev/dspと同じくらい簡単でした。

PulseAudioはpadspを提供します。

padspは、指定されたプログラムを起動し、OSS互換オーディオデバイス(/dev/dspおよび補助デバイス)へのアクセスをPulseAudioサウンドサーバーにリダイレクトします。

ソース


例:

  • ランダムデータ

    </dev/urandom padsp tee /dev/dsp >/dev/null
    
  • 通常ファイル

    </etc/fstab padsp tee /dev/dsp >/dev/null
    
  • ネットワーク活動

    Sudo tcpdump | padsp tee /dev/dsp >/dev/null
    
  • ブロックデバイス

    Sudo cat /dev/sda | padsp tee /dev/dsp >/dev/null
    

私のUbuntu 18.04.4 LTSでは、padsppulseaudio-utilsパッケージからのものです。

9