我不知道是我还是我发现AKWaveTable存在某种问题。
基本上,当我加载一个音频文件(一个短文件,大约7秒钟)并将其分配给AKWaveTable进行采样,然后稍后我尝试将其替换为另一个文件时,将加载新文件,但是分配的内存不断增长
这是伪代码:
class Element {
var player:AKWaveTable?
//other stuff
init(_ path:String){
let temp_file = try AKAudioFile(readFileName: path)
self.player = AKWaveTable(audioFile: temp_file)
}
}
在我的代码中的某个时刻:
//declare array of class Element
var sample:[Element] = []
//and put something into it's elements
sample[n] = Element("path/to/file.wav")
//do some stuff
//then replace that sample with another file
sample[n] = Element("path/to/another/file.wav")
使用AKPlayer进行的相同过程效果很好,但是我确实需要AKWaveTable以获得更好的性能。
连续替换音频样本后,分配的内存会迅速增长到900MB!
我在做什么错? 任何帮助,将不胜感激, 谢谢!
该应用程序适用于MacOS。
Swift 4.2
AudioKit 4.5.2
Xcode 10.0
MacOS High Sierra 10.13.6
答案 0 :(得分:1)
要指出的另一件事,继续创建新的AKWavetables可能不是一个好主意。例如,在运行音频引擎的情况下,您无论如何都无法做到这一点。
如果可以,请将最大大小设置为最长的样本,然后在需要时使用load(file:AKAudioFile)加载新文件。
漏洞已得到修复,将在下一版本的AK中消失。
谢谢你们