如何在 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%?的主要内容,如果未能解决你的问题,请参考以下文章