缓冲波形文件/样本管理

Buffering wave files / sample management

本文关键字:样本 管理 文件 波形 缓冲      更新时间:2023-10-16

简而言之:我想在堆中缓冲整个音频文件(wave)。因此,基本上,我会为每个通道使用一个数组,其中包含最大10 min * 60 sec * 44100样本。(我只是将长度限制为10分钟,必要时转换为44100个样本/秒。)

因此,我必须使用两个最大长度为26460000元素的数组。关于大小,这些数组将包含16位整数,每个文件最多可添加约100字节。(应用程序应该被允许一次打开4个文件,因此使用的内存加起来将达到约400兆字节)

问题是,这是否适用于windows(32位)系统,或者我是否应该使用更动态的样本管理?我想,将缓冲区int块(例如)减少1024个样本会有所帮助,这样我就不必使用一个巨大的数组,而是使用一堆较小的数组。

如果这不是一个好主意,我该如何实现一个可以处理突然跳到文件中特定位置或重复一些示例的示例管理。(因此,覆盖旧的/使用过的样本的"简单"圆形缓冲区并没有真正的帮助…)

即使在Win32上也没什么大不了的。一定要使用std::vector::reserve,你事先就知道有多少样品。