我在Windows上尝试使用Beep功能:
#include <windows.h>
...
Beep(frequency, duration);
然后计算机会以某种频率发出哔哔声一段时间。我如何在Linux计算机上执行此操作?
编辑:输出不同的频率很重要。
答案 0 :(得分:9)
查看Ubuntu(可能还有其他发行版)提供的蜂鸣声的源代码,或者查看另一个来源的http://www.johnath.com/beep/beep.c(我相信它是相同的代码)。
它允许您轻松控制频率,长度和重复(以及其他内容)。
答案 1 :(得分:4)
让我们来自音频扬声器的一些gabba
#!/usr/bin/ruby
$audio = File.open("/dev/audio", "w+")
def snd char
$audio.print char.chr
end
def evil z
0.step(100, 4.0 / z) { |i|
(i / z).to_i.times { snd 0 }
(i / z).to_i.times { snd 255 }
}
end
loop {
evil 1
evil 1
evil 1
evil 4
}
但更严重的是:
//g++ -o pa pa.cpp -lportaudio
#include <portaudio.h>
#include <cmath>
int callback(void*, void* outputBuffer, unsigned long framesPerBuffer, PaTimestamp, void*) {
float *out = (float*)outputBuffer;
static float phase;
for(int i = 0; i < framesPerBuffer; ++i) {
out[i] = std::sin(phase);
phase += 0.1f;
}
return 0;
}
int main() {
Pa_Initialize();
PaStream* stream;
Pa_OpenDefaultStream(&stream, 0, 1, paFloat32, 44100, 256, 1, callback, NULL);
Pa_StartStream(stream);
Pa_Sleep(4000);
}
答案 2 :(得分:0)
我不熟悉Linux,但输出ascii字符0x07似乎是通过快速谷歌搜索读取的。
答案 3 :(得分:0)
我建议您查看beep实用程序的来源。这正是你想要的。 (具体来说,它打开“/ dev / console”并使用ioctl请求发出蜂鸣声。注意这只能在连接的控制台上运行)
答案 4 :(得分:0)
总结:
将BEL字符输出到终端可能会发出蜂鸣声 - 具体取决于它是什么终端以及它的配置。然而,无法控制这一点。
您可以通过将音频数据输出到/ dev / dsp或其他声音设备来生成您喜欢的任何声音。这包括嘟嘟声,但发出声音包括播放实际样本。
控制台驱动程序(在某些配置中)为/ dev / console提供了一个ioctl,它以可配置的音高发出嘟嘟声(非常类似于NT)
答案 5 :(得分:-1)