How to make the NewTimePitchModule work?
I have use the other modules like that :
private var reverbModule: AEReverbModule!
private var delayModule: AEDelayModule!
init(renderer: AERenderer, forModule module:AudioOutputModule, forTrack track: Track) {
if let reverb = AEReverbModule(renderer: renderer) {
reverb.dryWetMix = 20
reverb.gain = 0
reverb.minDelayTime = 0.03
reverb.maxDelayTime = 0.2
reverb.decayTimeAt0Hz = 9
reverb.decayTimeAtNyquist = 3
reverb.randomizeReflections = 200
let effectModule = module.addEffect(reverb)
effectModule.applingFor(.AmRecording, withCondition: .ThroughtAny, activate: true)
self.reverbModule = reverb
}
if let delay = AEDelayModule(renderer: renderer) {
delay.wetDryMix = 0
delay.delayTime = 0.6
delay.feedback = 50
delay.lopassCutoff = 15000
let effectModule = module.addEffect(delay)
effectModule.applingFor(.AmRecording, withCondition: .ThroughtAny, activate: true)
self.delayModule = delay
}
}
override func adjustParams(value: CGFloat) {
super.adjustParams(value)
var value = value/100
value = value < -1.0 ? -1.0 : value
value = value > 1.0 ? 1.0 : value
var dryWetMixReverb = Double((25.0 * value) + 15.0)
if dryWetMixReverb > 40 {
dryWetMixReverb = 40
}
print(dryWetMixReverb)
self.reverbModule.dryWetMix = dryWetMixReverb
}
It works fine , but when I want to use the AENewTimePitech :
And for AETimePitchModule :
private var timePitcherModule: AENewTimePitchModule!
private var reverbModule: AEReverbModule!
init(renderer: AERenderer, forModule module:AudioOutputModule, forTrack track: Track) {
if let newTimePitch = AENewTimePitchModule(renderer: renderer) {
newTimePitch.rate = 16.0
newTimePitch.pitch = -1800.0
newTimePitch.overlap = 8.0
newTimePitch.enablePeakLocking = 1.0
let effectModule = module.addEffect(newTimePitch)
effectModule.applingFor(.AmRecording, withCondition: .ThroughtAny, activate: true)
self.timePitcherModule = newTimePitch
}
if let reverb = AEReverbModule(renderer: renderer) {
reverb.dryWetMix = 0.08
reverb.gain = 0
reverb.minDelayTime = 0.001
reverb.maxDelayTime = 0.008
reverb.decayTimeAt0Hz = 1
reverb.decayTimeAtNyquist = 0.8
reverb.randomizeReflections = 600
let effectModule = module.addEffect(reverb)
effectModule.applingFor(.AmRecording, withCondition: .ThroughtAny, activate: true)
self.reverbModule = reverb
}
}
override func adjustParams(value: CGFloat) {
super.adjustParams(value)
var value = value
value = value < -1.0 ? -1.0 : value
value = value > 1.0 ? 1.0 : value
let pitch = Double(-1800 + (value * 400))
let dryWetMixReverb = Double((value * 0.07) + 0.08)
self.reverbModule.dryWetMix = dryWetMixReverb
self.timePitcherModule.pitch = pitch
}
It seems not work at all , anyone can help .Thx in advance !
Comments
@Maxime,
I haven't tested this, but try to replicate the varispeed code placement that's in the "TAAESample" project that comes with TAAE2 GitHub repo, (starting on line #129 in AEAudioController.m):
Try replacing the varispeed effect with newtimepitch. It seems like these two effects need their own subrenderer to be performed on the audio thread.
Please let us know if it works for you!
Take care,
Mark
@markjeschke
For now , I look into the TAAE samples , and I realized that , I need a new subRenderer , the frames ,the abl , the timeStamp ,timestamp.mSampleTime,timeStamp.mFlags, what are they exactly ?
as above in the code , if I use one renderer both for renderer and sburenderer , is that okay ?