gpt4 book ai didi

c++ - 如何使用 Juce 加载脉冲响应的音频文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:13 25 4
gpt4 key购买 nike

我目前正在为大学创建一个卷积混响插件,我已经下载了一个已经制作好的卷积器库以供在插件中使用。我有一些生成脉冲响应的代码,但是我不太确定如何将实际的音频文件加载到进程中。

这是卷积器类:

class FFTConvolver
{
public:
FFTConvolver();
virtual ~FFTConvolver();

/**
* @brief Initializes the convolver
* @param blockSize Block size internally used by the convolver (partition size)
* @param ir The impulse response
* @param irLen Length of the impulse response
* @return true: Success - false: Failed
*/
bool init(size_t blockSize, const Sample* ir, size_t irLen);

/**
* @brief Convolves the the given input samples and immediately outputs the result
* @param input The input samples
* @param output The convolution result
* @param len Number of input/output samples
*/
void process(const Sample* input, Sample* output, size_t len);

/**
* @brief Resets the convolver and discards the set impulse response
*/
void reset();

private:
size_t _blockSize;
size_t _segSize;
size_t _segCount;
size_t _fftComplexSize;
std::vector<SplitComplex*> _segments;
std::vector<SplitComplex*> _segmentsIR;
SampleBuffer _fftBuffer;
audiofft::AudioFFT _fft;
SplitComplex _preMultiplied;
SplitComplex _conv;
SampleBuffer _overlap;
size_t _current;
SampleBuffer _inputBuffer;
size_t _inputBufferFill;

// Prevent uncontrolled usage
FFTConvolver(const FFTConvolver&);
FFTConvolver& operator=(const FFTConvolver&);
};

这是我用来实现脉冲响应的代码(但不是音频文件):

//convolver
ir.ensureStorageAllocated (512);
zeromem (ir.getRawDataPointer(), 512 * sizeof(float));
ir.set (0, 1.0f);


for (int i = 0; i < 10; ++i)
{
ir.set (Random::getSystemRandom().nextInt (512),
Random::getSystemRandom().nextFloat() * 2.f - 1.f);
}

convolver.init (128, ir.getRawDataPointer(), 512);

并且在进程 block 中...

convolver.process (inputData, channelData, buffer.getNumSamples());

谁能告诉我如何使用脉冲响应的实际音频文件?

最佳答案

JUCE 可以在这里帮助您,文档中最相关的部分似乎是:

关于c++ - 如何使用 Juce 加载脉冲响应的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33280124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com