如何解决实例化效果时,AudioKit内存泄漏
我已经建立了一个方便包装器,用于定义/创建AudioKit效果:
public struct SQEffect {
public var type: EffectType = .delay
public var node: AKNode!
public var usesSync: Bool = false
public var dryWetMixer: AKDryWetMixer? = nil
public var parameters: [String] = []
public init(input: AKNode,type: EffectType,useSync: Bool) {
self.type = type
switch type {
case .autopan:
node = AKOperationEffect(input) { input,parameters in
let oscillator = AKOperation.sineWave(frequency: parameters[speedIndex],amplitude: parameters[depthIndex])
return input.pan(oscillator)
}
parameters = ["speed","depth"]
case .delay:
var delTime = 0.33
if useSync == true {
let tempo = SequencerController.sharedInstance.currentTempo
let beatDur = (60000 / tempo) / 1000
// we'll make the default a dotted-eighth
delTime = 0.75 * beatDur
}
node = AKOperationEffect(input) { input,params in
return input.smoothDelay(time: params[0],feedback: params[1],samples: 1_024,maximumDelayTime: 10.0)
}
(node as! AKOperationEffect).parameters = [delTime,0.1]
dryWetMixer = AKDryWetMixer(input,node)
parameters = ["time","feedback","dryWet_balance"]
case .notchPeak:
node = AKEqualizerFilter(input,centerFrequency: 250,bandwidth: 200.0,gain: 5.0)
parameters = ["centreFreq","bandwidth","gain"]
case .lowPass:
node = AKLowPassFilter(input,cutoffFrequency: 600.0,resonance: -20.0)
parameters = ["cutoffFreq","resonance"]
case .chorus:
node = AKChorus(input,frequency: 50.0,depth: 0.3,feedback: 0.0,dryWetMix: 0.0)
parameters = ["freq","depth","dryWetMix"]
case .flanger:
node = AKFlanger(input,feedback: 0.2,"dryWetMix"]
case .reverb:
// NOTE: We could replace this with another reverb (AKReverb2) at some point,for greater control.
node = AKReverb(input,dryWetMix: 0.0)
(node as! AKReverb).loadFactoryPreset(.cathedral)
parameters = ["factoryPreset","dryWetMix"]
}
self.usesSync = useSync
}
// do other stuff...
}
自定义init()正在泄漏内存,具体由Instruments在AKOperationEffect和AKEqualizerFilter中报告。有什么明显的地方我做错了吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。