Как сделать звуковые эффекты тремоло или вибрато в приложении на iOS 8+?
Я работаю над созданием аудиоэффектов в приложении для iOS 8+ от AVFoundation, предоставленного Apple. И я создал некоторые эффекты AVAudioEngine, такие как смещение высоты тона, задержка (эхо), искажение. Но я не нашел AVAudioUnit, связанный с эффектами тремоло или вибрато.
Единственный документ, который я нашел, это Руководство по программированию аудиоустройства , но этот документ больше не обновляется, и Core Audio SDK, упомянутый в этом документе, исчез.
Меня не волнует использование высокоуровневых API, принадлежащих AVFoundation или низкоуровневых API, даже написанных на c / c ++, я просто хочу, чтобы какой-то метод создавал эффекты тремоло или вибрато, или вообще говоря, если нет капсулированных API, найдите один метод для создания пользовательских звуковых эффектов.
Кстати, вот мой пример кода для создания эффектов задержки (эхо)
(iOS 8+, Xcode 10.0):
...
if(!self.avAudioEngine.running) {
NSLog(@"AVAudioEngine is not running!");
return;
}
// reset all the nodes
[self.avAudioEngine reset];
// attach node
if(!self.avAudioUnitDelay) {
self.avAudioUnitDelay = [[AVAudioUnitDelay alloc] init];
}
[self.avAudioEngine attachNode:self.avAudioPlayerNode];
[self.avAudioEngine attachNode:self.avAudioUnitDelay];
// connect node
if(!self.avAudioMixerNode) {
self.avAudioMixerNode = [self.avAudioEngine mainMixerNode];
}
[self.avAudioEngine connect:self.avAudioPlayerNode to:self.avAudioUnitDelay format:nil];
[self.avAudioEngine connect:self.avAudioUnitDelay to:self.avAudioMixerNode format:nil];
// parameters
self.avAudioUnitDelay.delayTime = 0.02;
self.avAudioUnitDelay.feedback = 80;
self.avAudioUnitDelay.wetDryMix = 90;
// play
[self.avAudioPlayerNode scheduleFile:self.soundFile atTime:nil completionHandler:nil];
[self.avAudioPlayerNode play];
...