延迟 AudioSampleBuffer 在 Juce 中的播放
Delay playback of AudioSampleBuffer in Juce
我正在编写一个卷积混响插件,并想添加一个预延迟滑块。我将"干"信号和"湿"信号放在两个单独的缓冲区中用于播放,如下面的代码所示:
// copy the original signal into a "dry signal" buffer that we'll use later
AudioSampleBuffer dryBuffer(buffer.getNumChannels(), buffer.getNumSamples());
// now apply convolution to the buffer
for (int i = 0; i < buffer.getNumChannels(); ++i)
{
float* writePointer = buffer.getWritePointer (i % getNumOutputChannels());
const float* readPointer = buffer.getReadPointer (i % getNumInputChannels());
dryBuffer.copyFrom(
i, // destChannel
0, //destStartSample
buffer, // sourceBuffer
i, // sourceChannel
0, // sourceStartSample,
buffer.getNumSamples()
);
convolvers.getUnchecked(i % convolvers.size())->process (readPointer, writePointer, buffer.getNumSamples());
//WET MIX
buffer.applyGain(i, // channel
0, // startSample
buffer.getNumSamples(),
wetLevel->getValue() // gain
);
//DRY MIX
dryBuffer.applyGain(i,
0,
dryBuffer.getNumSamples(),
dryLevel->getValue()
);
buffer.addFrom(
i, // destChannel
0, // destStartSample
dryBuffer, // sourceBuffer
i, // sourceChannel
0, // soucreStartSample,
buffer.getNumSamples(),
1.0 // gain
);
}
dryBuffer 是干的 AudioSampleBuffer,缓冲区是应用卷积的湿信号。如何延迟湿缓冲区的播放?
您可以通过移动湿缓冲区的样本来延迟其。例如,如果您想要 2 秒的延迟,则需要将湿缓冲液增加 2*sample_rate
并将所有样品移动sample_rate*2*delay_amt
样品。您必须在convolvers->process
方法中应用这些更改
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- SFML纹理像播放器
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 如何收听Windows当前正在播放的声音?
- GStreamer在开始任何播放之前进行搜索
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何使用libav编写.mov文件,如果文件未正确完成,则可以播放
- C++新手,想知道如何使用VS code 2019播放音频文件
- 在C++不适用于猜数字游戏的情况下再次播放选项
- 没有运算符"="与这些操作数匹配,JUCE 窗口演示应用程序
- 按列随机播放 2D 矢量
- 如何以编程方式将音频从任何录制设备路由到任何播放设备
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 如何在C++中播放声音?
- 旋转播放器模型以指向一个点
- 大声音频无法播放
- 怎么可能只让设备使用 pjsua2 捕获或播放
- 播放器未在程序中的"X"和"O"之间切换
- 延迟 AudioSampleBuffer 在 Juce 中的播放