web-dev-qa-db-ja.com

特定のトーンを/ dev / audioにキャットする方法は?

  • cat /dev/urandomすべての可能な「値」のランダムシーケンスを生成します。
  • cat /dev/urandom | padsp tee /dev/audio > /dev/nullこれらの「値」をオーディオデバイスに送信し、「ランダムノイズ」または「ランダムトーン」に変換します(参照: / dev/snd /で楽しみのためにランダムノイズを生成する

しかし、どうすれば同じことができますが、ランダムなノイズ/トーンの代わりに、すべての可能な値からsingle値を選択し、オーディオデバイスにcatthatを選択します無期限に(ランダムな値ではなく同じ値のシーケンスを作成する)?

これにより、単一の一貫したトーンが生成されます。

インターフェース

さまざまな値を手動で試すことができますが、必要な値を簡単に選択/ヒットできるようにするための1つの架空の「インターフェイス」は次のようになります。

  • 周波数(Hz)例: 440
  • 振幅(0-1)例: 0.8

私はむしろnotオーディオを使用したいfile、例えばfile.wav、file.mp3、file.oggなど。bashスクリプトとデフォルトのCLIアプリケーション(例:catpadspなど)。

2
01AutoMonkey

数学ができるものなら何でも遊んで(特にsin)、stdoutの文字として数字を書くことができます。例えば:

awk --characters-as-bytes 'BEGIN { freq=2200; amp=0.3; for (i=0; i>=0; i++) { printf "%c", 127+ amp*(127.0*sin(2*3.14159265/44100*i*freq)); } }' | padsp tee /dev/audio > /dev/null

freqの設定方法によっては、サイレンのように聞こえます...ユースケースによっては、おそらくそれで遊ぶことができます。

振幅はamp、最大1.0で調整されます。

GNU awkを使用しているため、--characters-as-bytesが機能することに注意してください。stdoutに書き込むときに文字をUTF-8でエンコードする必要はありません。

また、システムによっては、デフォルトのサンプルレートが異なる場合は、44100を48000または別の番号に置き換えることをお勧めします。

3
Ned64