【问题标题】:BASS "Play" a streamBASS“播放”流
【发布时间】:2011-11-03 02:25:00
【问题描述】:

开发者朋友们好,

我有个问题,我在做一个射击游戏,但是我不知道当爆炸发生时如何实现,因为爆炸总是一样的声音结束并且可以在很短的时间内发生,即声音甚至没有结束,另一场爆炸发生了。我的问题是,如何在同一个流中多次“播放”?

谢谢!

【问题讨论】:

    标签: c++ audio stream bass


    【解决方案1】:

    假设我们谈论的是同一个Bass Audio API,然后导航到BASS\Channels\Bass_ChannelPlay() 的在线文档。调用 Bass_ChannelPlay() 传递您现有的爆炸句柄并将 restart 设置为 true - 请参阅文档了解更多信息。

    【讨论】:

      【解决方案2】:

      这是一个非常简单的例子:

      int device = -1; // Default Sounddevice
      int freq = 44100; // Sample rate (Hz)
      HSTREAM streamHandle; // Handle for open stream
      
      
      /* Initialize output device */
      BASS_Init(device, freq, 0, 0, NULL);
      
      
      /* Load your soundfile and play it */
      streamHandle = BASS_StreamCreateFile(FALSE, "your_file.mp3", 0, 0, 0);
      BASS_ChannelPlay(streamHandle, FALSE);
      
      
      /* As very last, close Bass */
      BASS_Free();
      

      虽然此示例仅播放一次声音文件,但您可以在每次需要声音时创建一个新句柄。 但是BASS_Init()BASS_Free() 只能运行一次。

      另一种解决方案是将声音作为样本播放:

      HSAMPLE streamHandle; // Handle for sample
      HCHANNEL channel; // Handle for open channel of the sample
      
      
      /* Initialize output device */
      BASS_Init(device, freq, 0, 0, NULL);
      
      
      /* Load sample and play it */
      streamHandle = BASS_SampleLoad(FALSE, "your_file.mp3", 0, 0, 0);
      channel = BASS_SampleGetChannel(streamHandle, FALSE);
      
      
      /* Once you are done with your sample you should free it */
      BASS_SampleFree(streamHandle);
      
      /* As very last, close Bass */
      BASS_Free();
      

      【讨论】:

        猜你喜欢
        • 2011-03-30
        • 2022-11-10
        • 2021-11-27
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2012-11-10
        • 2011-08-18
        相关资源
        最近更新 更多