如何在 Linux (Ubuntu) 中输出频率 1kHz 和功率/音量 = 60%?

Posted

技术标签:

【中文标题】如何在 Linux (Ubuntu) 中输出频率 1kHz 和功率/音量 = 60%?【英文标题】:How to output a frequency 1kHz and power/volume = 60% in Linux (Ubuntu)? 【发布时间】:2009-12-11 05:33:22 【问题描述】:

我需要 C/C++ 中的示例代码。谢谢!

【问题讨论】:

您使用哪个 API 来控制音频? 我从未尝试过,也不确定应该使用哪一个。请多多指教。谢谢! 【参考方案1】:

看看 portaudio 库。 http://www.portaudio.com/

它非常易于使用,跨平台,并带有许多小示例程序。除其他外,您会发现一种合成和播放正弦波的功能。

改变频率和音量是微不足道的。如果我没记错的话,这个例子只是一页代码,包括初始化和所有内容。

【讨论】:

+1 谢谢尼尔斯!哇,这个甚至是跨平台的。我正在调查。【参考方案2】:

以下是如何输出用户定义的频率(赫兹)和长度(毫秒)的哔声。如何设置音量,我不确定。请注意,这个 C 程序只是对 'echo -e' 进行 system() 调用,所以从技术上讲,您甚至不需要 C 来执行此操作,但您问了,所以我给了。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])

   long freq;
   long len;
   char cmd[60];

   if (argc != 3)
   
       printf("Usage: %s freq_hz length_ms\n", argv[0]);
       return 1;
   

   freq = strtol(argv[1],(char**)NULL,10);
   len = strtol(argv[2],(char**)NULL,10);

   sprintf(cmd,"echo -e \"\33[10;%ld]\33[11;%ld]\a\33[10]\33[11]\"",freq,len);
   system(cmd);

   return 0;

【讨论】:

+1 感谢 SiegeX!这看起来很酷。我需要它直接使用库。总之不错。 @Dor 尝试 infocmp -L1 | grep -F '=\E[10' 和 11 相同

以上是关于如何在 Linux (Ubuntu) 中输出频率 1kHz 和功率/音量 = 60%?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何查卡cpu的频率

linux下如何查卡cpu的频率

如何设置ubuntu系统的串口输出

cpu如何查看内存

Ubuntu中限制CPU频率方法(Limit CPU clock speed in Ubuntu system)

如何设置ubuntu系统的串口输出