如何使用SDL_mixer指定设备

时间:2015-01-28 00:27:16

标签: c++ windows-7 sdl sdl-mixer

我有一个使用SDL_mixer库(http://www.libsdl.org/projects/SDL_mixer/)播放声音的程序。当我只使用Mix_OpenAudio打开与默认设备的连接时,它运行良好。但是,我需要定位特定的音频设备。我看到SDL库本身有一个名为SDL_OpenAudioDevice的方法可以满足我的需要,但是我必须编写自己的混音器和所有这些东西。

任何人都知道如何使用SDL_mixer打开特定的音频设备,或者使用支持此功能的SDL的其他调音台?我真的不想写自己的调音台。我正在使用C ++在Windows 7上开发Win32应用程序。

2 个答案:

答案 0 :(得分:1)

我知道这个主题是4.5岁,但是对于那些来这里看看的人来说: SDL_mixer 2.0.2现在具有以下功能:

interface Employee<T> {
  Optional<T> accept(Visitor visitor);
}

class Assistant implements Employee<Integer> {
  @Override
  public Optional<Integer> accept(Visitor visitor) {
    return Optional.of(100);
  }
}

class Manager implements Employee<Void> {
  @Override
  public Optional<Void> accept(Visitor visitor) {
    return Optional.empty();
  }
}

答案 1 :(得分:0)

您似乎无法使用SDL_mixer指定设备。 SDL_mixer使用旧的SDL方法SDL_OpenAudio,因此无法专门定位设备。我也研究过SFML,但它有同样的局限性。然后我检查了PortAudio,但它也没有为你混合东西,所以它看起来好像它与SDL处于同一水平。然而,事实证明,编写一个简单的混音器以按名称播放以音频设备为目标的循环声音并不难。

有关方法SDL_OpenAudioDevice和SDL_MixAudioFormat,请参阅SDL站点上的文档。我还发现这些代码示例有助于学习如何正确加载我的wav文件以及如何循环示例:

http://www.libsdl.org/tmp/SDL/test/loopwave.c http://www.libsdl.org/release/SDL-1.2.15/docs/html/sdlconvertaudio.html