PIANO IN C,sdl 声音问题
Posted
技术标签:
【中文标题】PIANO IN C,sdl 声音问题【英文标题】:PIANO IN C, issue with sdl sound 【发布时间】: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)会更好。
【问题讨论】:
【参考方案1】:即使您可能认为您的线程正在播放声音,但您不应该这样想。您的线程使 SDL 开始播放该声音,因此如果您终止线程,则没有任何东西可以停止播放该声音。
您实际上根本不需要线程:
按下一个键时,在下一个空闲频道开始播放声音。 跟踪这对(键、通道) 如果键被释放,查找 (key, channel) 对并使用该特定通道作为参数调用Mix_HaltChannel
。
【讨论】:
【参考方案2】:编辑:
已经找到了: Mix_Volume(频道,音量)
【讨论】:
以上是关于PIANO IN C,sdl 声音问题的主要内容,如果未能解决你的问题,请参考以下文章
如何像 SDL_Mixer 那样播放多种声音,但在 SDL2 中是原生的?