Command-Line

如何為 /dev/audio 指定特定的音調?

  • March 28, 2020
  • cat /dev/urandom生成所有可能“值”的隨機序列。
  • cat /dev/urandom | padsp tee /dev/audio > /dev/null將這些“值”定向到您的音頻設備,將它們變成“隨機雜訊”或“隨機音調”(請參閱:在 /dev/snd/ 中生成隨機雜訊以獲得樂趣

但是我怎麼能做同樣的事情,而不是隨機雜訊/音調,我從所有可能的值中選擇一個,並且cat 無限期地選擇音頻設備(創建相同值的序列而不是隨機值)?

這應該產生單一一致的音調。

界面

您可以手動嘗試不同的值,但一個假想的“界面”可以更容易地選擇/點擊您想要的值:

  • 頻率(Hz) 例如 440
  • 幅度(0 - 1) 例如 0.8

我寧願使用音頻文件,例如 file.wav、file.mp3、file.ogg 等。只是一個 bash 腳本和預設的 cli 應用程序(例如catpadsp等)。

您可以玩任何可以做數學的東西(sin尤其是),並將一個數字作為字元寫入標準輸出。例如:

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有效。您不希望在寫入標準輸出時對字元進行 UTF-8 編碼!

此外,根據您的系統,如果預設採樣率不同,您可能希望將 44100 替換為 48000 或不同的數字。

引用自:https://unix.stackexchange.com/questions/575372