PIANO IN C,发出sdl声音

时间:2017-06-09 07:25:12

标签: c audio sdl

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

所以我想要的是:
一个声音功能一次最多可以播放8个声音,“正在播放”(不要将完整的文件加载到thr缓冲区并开始播放),可以初始化为globaly

对不起我的语言:(

Programm适用于Arch Linux系统,但是所有平台(Unix,OSX,Ms Windows)都会更好。

2 个答案:

答案 0 :(得分:3)

即使你可能认为你的线程正在播放声音,你也不应该这么想。你的线程让SDL开始播放那个声音,所以如果你杀了你的线程,就没有什么可以停止播放那个声音了。

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

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

答案 1 :(得分:0)

编辑:

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