cat /dev/urandom
生成所有可能“值”的随机序列。cat /dev/urandom | padsp tee /dev/audio > /dev/null
将这些“值”定向到您的音频设备,将它们转变为“随机噪声”或“随机音调”(请参阅:在 /dev/snd/ 中生成随机噪音以供娱乐)
但我怎样才能做同样的事情,而不是随机噪音/音调,我选择一个单身的所有可能值中的值以及cat
那无限期地发送到音频设备(创建相同值而不是随机值的序列)?
这应该产生单一一致的音调。
界面
您可以手动尝试不同的值,但一个虚构的“界面”可以使您更轻松地选择/点击您想要的值:
- 频率(赫兹)例如 440
- 振幅(0 - 1) 例如 0.8
我宁愿不是使用音频文件,例如 file.wav、file.mp3、file.ogg 等。只是一个 bash 脚本和默认的 cli 应用程序(例如cat
, file.mp3 padsp
、file.ogg 等)。
答案1
您可以尝试任何可以做数学(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
可以工作。您不希望字符在写入 stdout 时采用 UTF-8 编码!
此外,根据您的系统,如果默认采样率不同,您可能需要将 44100 替换为 48000 或其他数字。