缓冲区运行循环中的样本计时

时间:2014-05-18 19:19:25

标签: c++ timing vst

我有一个声音样本缓冲区,可以是任何大小,但让我们说它设置为4410个样本。

我有一个循环,每次循环时会增加一个4410的变量,并在缓冲区0到4409的时间内的音符之后搜索MIDI文件中的音符。在此循环中,我将设置音符对象增量时间样本缓冲区大小4410 - 音符在MIDI文件中开始时间,以便它在缓冲循环中0-4409之间的正确时刻开始。

此缓冲区运行并播放缓冲区循环0到4409的时间跨度内的第一个音符,然后重新开始。 (vST SDK中的processReplacing)

下次发生这种情况时,变量将为4410 * 2,并在下一个4410到8819个样本中运行下一组样本,但仍设置增量时间以匹配样本缓冲区循环,因为该循环将始终运行从0到4410,重新开始。

我一直在尝试自己并开始多次提出这个问题,但很难用言语表达。我不知道如何解决这个问题,因为结果不对,因为它没有节拍。这是因为关闭的最后一个MIDI音符和MIDI文件中的第一个音符与样本缓冲区循环0到4409(VST SDK中的sampleReplacing)不匹配

我试图制作一个VST乐器来读取MIDI文件并在流程中播放它但是很难将时序转换为processReplacing VST功能中的缓冲循环。我无法向您展示代码,因为它太多了,我只是希望有人认识到这个问题并给我一个关于这种时间的提示。

希望有人能看出我的意思,即使我的英语和口头用法可能还有一段距离。

0 个答案:

没有答案