有没有办法在Mac OS上播放系统蜂鸣声?

时间:2011-09-13 21:30:23

标签: c++ audio beep

有没有办法在Mac OS上使用C ++和Xcode播放系统蜂鸣声?我明白我需要使用一个库。是否有适用于Mac和Windows平台的库?

3 个答案:

答案 0 :(得分:6)

我想您可能想要使用NSBeep


<强> NSBeep

播放系统蜂鸣声。

#include <AppKit/AppKit.h>

void NSBeep (void);

这似乎适用于命令行工具:

#include <AppKit/AppKit.h>
#include <iostream>

using namespace std;

int main(void)
{
    cout << "Hello world !" << endl;
    NSBeep ();
    return 0;
}

$ g++ -Wall -framework AppKit beep.cpp -o beep
$ ./beep

答案 1 :(得分:2)

发出哔哔声的跨平台方式是std::cout << "\007";。我一直试图通过传递一个字符然后递减直到7来播放它。这不起作用。显然输出代码确实有效。

答案 2 :(得分:0)

这是一种替代方法,可在 2021 年在当前的 macOS (Big Sur) 上使用(与我之前的 NSBeep 解决方案不同,后者现在仅适用于 Objective-C++,而不适用于 vanilla C++)。我反汇编了 NSBeep,发现它只是使用参数值 0x1000 (AudioServicesPlayAlertSound) 调用 kSystemSoundID_UserPreferredAlertAudioServicesPlayAlertSound 是 AudioToolbpx 框架的一部分,幸运的是它仍然适用于 C++(与 AppKit 不同)。

#include <AudioToolbox/AudioServices.h>
#include <iostream>

using namespace std;

int main(void)
{
    cout << "Hello world !" << endl;
    AudioServicesPlayAlertSound(kSystemSoundID_UserPreferredAlert);
    sleep(1);
    return 0;
}

编译运行:

$ g++ -Wall -framework AudioToolbox beep.cpp -o beep
$ ./beep