【问题标题】:PIANO IN C, issue with sdl soundPIANO IN C,sdl 声音问题
【发布时间】:2017-06-09 07:25:11
【问题描述】:

我不想在 C(1999) 中构建自己的钢琴,但是(声音)输出存在一些问题。
该程序检测预置键,以及它们被按下的时间...... 如果按下某个键,它会启动一个新的thread(phthread),它应该播放指定的 wav 文件,如果不再按下该键,线程将被终止。
SDL 在 main() 中加载,音频设备在 main to 中打开(作为全局)。
但问题是,即使声音线程终止,SDL 也会继续播放。

所以我想要什么:
一次最多可以播放 8 个声音的声音函数,“正在播放”(不要将完整的文件加载到 thr 缓冲区并开始播放),可以全局初始化

对不起我的语言:(

Programm 适用于 Arch Linux 系统,但全平台(Unix、OSX、Ms Windows)会更好。

【问题讨论】:

    标签: c audio sdl


    【解决方案1】:

    即使您可能认为您的线程正在播放声音,但您不应该这样想。您的线程使 SDL 开始播放该声音,因此如果您终止线程,则没有任何东西可以停止播放该声音。

    您实际上根本不需要线程:

    • 按下一个键时,在下一个空闲频道开始播放声音。
    • 跟踪这对(键、通道)
    • 如果键被释放,查找 (key, channel) 对并使用该特定通道作为参数调用 Mix_HaltChannel

    【讨论】:

      【解决方案2】:

      编辑:

      已经找到了: Mix_Volume(频道,音量)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 2012-08-24
        • 1970-01-01
        相关资源
        最近更新 更多