Windows Beep()等效于Linux

时间:2009-01-05 10:56:45

标签: c linux audio

我在Windows上尝试使用Beep功能:

#include <windows.h>
...
Beep(frequency, duration);

然后计算机会以某种频率发出哔哔声一段时间。我如何在Linux计算机上执行此操作?

编辑:输出不同的频率很重要。

6 个答案:

答案 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)

总结:

  1. 将BEL字符输出到终端可能会发出蜂鸣声 - 具体取决于它是什么终端以及它的配置。然而,无法控制这一点。

  2. 您可以通过将音频数据输出到/ dev / dsp或其他声音设备来生成您喜欢的任何声音。这包括嘟嘟声,但发出声音包括播放实际样本。

  3. 控制台驱动程序(在某些配置中)为/ dev / console提供了一个ioctl,它以可配置的音高发出嘟嘟声(非常类似于NT)

答案 5 :(得分:-1)

this site显示了两种方式:

char beep[] = {7, ”};
printf(“%c”, beep);

Beep(587,500);