libSDL2-mixer:如何更改wav文件MixChunk中的样本?

我正在使用libSDL2的混音器播放我的项目中存储为wav文件的音频,但是我需要对音频数据进行一些信号处理,这需要我访问各个样本(即:作为双精度数组) )。

因此,我正在寻找一种从MixChunk检索样本或将双精度数组供入libSDL进行播放的方法。

这是我播放wav文件的代码示例:

#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
#include <iostream>

int playSound(char path[],int channel) {
  if (SDL_Init(SDL_INIT_AUDIO) < 0)
    return -1;

  // Initialize SDL_mixer
  if (Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,4096) == -1)
    return -1;

  Mix_Chunk *wave = NULL;
  wave = Mix_LoadWAV(path);

  if (wave == NULL) {
    std::cout << "Error: Could not load .wav file: " << path << std::endl;
    return -1;
  }

  if (Mix_PlayChannel(channel,wave,0) == -1) {
    std::cout << "Error: Could not play wav file (" << path << ") on channel "
              << channel << std::endl;
    return -1;
  }

  while (Mix_Playing(channel)) {
    printf("%i\n",wave->abuf);
  }
  Mix_FreeChunk(wave);
}


void initializeAudioDevice() {
  if (SDL_Init(SDL_INIT_AUDIO) < 0)
    printf("Error: Can't open audio device!\n");
  if (Mix_OpenAudio(22050,256) == -1)
    printf("Error: Failed to setup audio device!\n");
}

int main() {
  initializeAudioDevice();
  char path[] = "sound.wav";
  playSound(path,1);
  return 0;
}

如您所见,我试图打印出MixChunk-> abuf属性的内容,但这并没有给我示例。

谢谢您帮助我步入正轨。

ayangyy 回答:libSDL2-mixer:如何更改wav文件MixChunk中的样本?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2966697.html

大家都在问