【问题标题】:How to make alarm sound using C?如何使用C发出警报声?
【发布时间】:2020-01-18 06:49:57
【问题描述】:

我想制作一个可以作为我的番茄钟工作的 C 程序。我得到了计时器部分,它就在这里

#include<stdio.h>
#include<unistd.h>

int main(){
    int sec;
    printf("\n Enter the no of minutes you need to wait :");
    scanf("%d",&sec);
    sec *= 60;
    do {
        printf("\r%d ",sec);
        sec--;
        fflush(stdout);
        sleep(1);
    }while(sec>0);

    printf("\n Time Elapsed");
    return 0;
}

我只是在尝试代码,它工作得很好,你可以在一个周期内交替使用 25 个和 5 个,但这会在以后出现。我认为如果我能够播放某种声音或传递通知会很好,但我认为我不知道怎么做,当我们说话时我正在互联网上搜索答案,但到目前为止我还没有能够找到合适的答案。如果我找到解决方案,我保证会更新这个。如果我应该查看任何特定的库,请将其放在 cmets 中。提前致谢!

【问题讨论】:

  • 打印一个铃铛字符只会让它像哔哔声一样只响一次。如果你想播放像闹钟这样的声音,那么你需要使用一些音频库并使用一些 mp3 或 wav 文件。您需要使用音频库,例如pulseaudio 让它播放你的 mp3 或 wav 文件,但你也不能简单地直接播放 mp3 或 wav,你需要将它们转换为 .*h 文件以便 C 程序播放它们。 如果你愿意,我可以为你提供一个例子。

标签: c audio timer notifications libraries


【解决方案1】:

Windows 平台:PlaySound

PlaySound("Filename.wav", NULL, SND_FILENAME); 

【讨论】:

  • 不错。考虑到#include &lt;unistd.h&gt;,可能与 OP 无关,但请点赞!
  • 谢谢@jxh:只是没有检查 POSIX 头文件。为 Linux 平台添加了答案。
【解决方案2】:

\a 在字符常量或字符串中表示响铃。
C Reference

但是,您可能需要打印一堆才能真正听到它。


正如 cmets 中所指出的,您的终端/控制台实际上必须支持使用铃声进行操作。我仍然在 X11 上使用xterm,它提供了这个选项:

启用可视铃 (visualbell)
启用(或禁用)可视铃声(即闪烁)而不是可听铃声。
这对应于-vb 选项和visualBell 资源。

【讨论】:

  • 问题是终端程序必须支持。
  • @P__J__:没有争议。但由于它是在 C 标准中专门调用的,因此非常便携。
  • Windows 确实如此 - 刚刚检查了 VS19 控制台项目。
【解决方案3】:

Linux 平台:PulseAudioSDL AudioALSA

上面的 API 可以处理 PCM 或 WAV 文件来播放不同类型的警报音。

注意:如果你想在某些情况下播放 .wav 文件,你需要单独处理 Wav 头。

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多