用于 Linux 的立体声“音调发生器”?

Baa*_*rud 20 libraries audio

是否有类似于 Linux 的立体声(单独的左右声道)音调发生器?您可以在其中为每个通道设置音量和音调/音高,最好还设置波形(正弦、方波、锯齿等)并反转一个通道(与另一个通道相反)。

如果没有,有没有关于一个好的地方开始制作的想法?我想最简单的方法是适应现有的程序,如合成器……但如果效果不佳,是否有任何库(如 SDL?)可以用作此类程序的基础?

j88*_*376 21

听起来您正在寻找Audacity,它是一个跨平台的开源音频编辑器。它的功能之一是允许您生成音调。它是一个多轨音频编辑器,因此您可以轻松创建立体声。

Generate菜单下,您可以创建任意频率、幅度和长度的正弦波、锯齿波和方波音调,而无需记录或需要额外的输入文件。


Cir*_*郝海东 13

ffmpeg

ffmpeg 可以做到,像往常一样。

创建一个 5 秒的单声道 1000Hz 正弦out.wav声音文件:

sudo apt-get install ffmpeg
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" out.wav
Run Code Online (Sandbox Code Playgroud)

立体声代替-ac 2

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ac 2 out.wav
Run Code Online (Sandbox Code Playgroud)

该文件将是 2 倍大,并且ffprobe会说它有2 channels而不是1 channel.

在不创建文件的情况下播放音频 5 秒钟:

ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp
Run Code Online (Sandbox Code Playgroud)

永远玩,直到你发疯:

ffplay -f lavfi -i "sine=frequency=1000" -nodisp
Run Code Online (Sandbox Code Playgroud)

文档:

另一部分 sunder音频源记录了除 之外的其他有用的声音生成算法sine,例如:

  • anoisesrc:几种颜色的噪音,例如白色、粉红色、棕色
  • aevalsrc 采用任意数学表达式,因此应该能够产生三角波形(TODO 表达式)

参考书目:

在 Ubuntu 18.04、ffmpeg 3.4.6 中测试。

没有额外库的最小 C 音频生成示例

只是为了好玩:https : //stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894


Bru*_*ger 10

您可能会查看speaker-test我在 alsa-utils 包中找到的(在 Arch 机器上)。

speaker-test -c2 -t sine从 xterm 运行,给我一个 440 Hz 的正弦波,每个大约 6 秒,左右扬声器交替。在 xterm 中,它提供了一些关于它认为正在使用的扬声器的信息。

根据手册页,它可以做任意频率和粉红噪声的正弦波。

  • `speaker-test -c2 -t sine -f 440` 将通过提供频率参数来补充您的示例。感谢你。 (2认同)

Nat*_*ver 6

siggen程序应该可以解决问题。

siggen 的屏幕截图

它有两个具有独立信号的通道以及它们之间的相位。每个通道可以执行以下信号类型:

  • 正弦
  • 余弦
  • 正方形
  • 三角形
  • 锯齿状
  • 脉冲
  • 噪音

您可以像这样在立体声模式下运行它:

siggen -2
Run Code Online (Sandbox Code Playgroud)

请注意,这依赖于OSS/dev/dsp提供的内容 。OSS 已被ALSA取代,并于 2006 年左右被弃用,因此您可能需要安装兼容性库。在基于 Debian 的发行版上,安装该软件包并按如下方式运行:alsa-oss

aoss siggen -2
Run Code Online (Sandbox Code Playgroud)

您还可以使用软件包中提供的 PulseAudio OSS Wrapper 进行尝试pulseaudio-utils

padsp siggen -2
Run Code Online (Sandbox Code Playgroud)