ios - AudioKit:如何对AKPlayer进行调频

标签 ios swift frequency audiokit modulation

我正在尝试对来自 AKPlayer 的信号执行频率调制,从而播放 mp3 文件。 我尝试使用 AKOperationEffect,但它没有按预期工作:

let modulatedPlayer = AKOperationEffect(player) { player, _ in

                let oscillator = AKOperation.fmOscillator(baseFrequency: modulationFrequency,
                                                          carrierMultiplier: player.toMono(),
                               modulatingMultiplier: 100,
                               modulationIndex: 0,
                               amplitude: 1)
              return oscillator
            }

有人知道如何调制 mp3 吗? 不幸的是,AudioKit API 的文档并不完善……有大量示例,但它们都处理合成声音,例如正弦波、方波等。

最佳答案

我花时间创建了一个实用的示例来帮助您@Ulrich,如果您有可用的 Playground 环境,您可以放下并玩,或者只是将其用作引用,相信我,它可以修改您的代码,它是 self 的-解释性的,但您可以在代码 TLDR 之后阅读更多关于为什么我的版本有效的信息;

之前<audio >

<audio之后>

在撰写本文时,以下内容已在最新的 XCode 和 Swift(XCode 11.4、Swift 5.2 和 AudioKit 4.9.5)中测试并运行,没有出现任何问题:

import AudioKitPlaygrounds
import AudioKit

let audiofile = try! AKAudioFile(readFileName: "demo.mp3")
let player = AKPlayer(audioFile: audiofile)
let generator = AKOperationEffect(player) { player, _ in
    let oscillator = AKOperation.fmOscillator(baseFrequency: 400,
    carrierMultiplier: player.toMono(),
    modulatingMultiplier: 100,
    modulationIndex: 0,
    amplitude: 1)
    return oscillator
}

AudioKit.output = generator
try! AudioKit.start()

player.play()
generator.start()

在下载页面找到可供使用的 Playground ( https://audiokit.io/downloads/ )

如您所见,除了在初始化新的 AKAudioFile 时声明 mp3 文件的路径并传递给 AKPlayer 实例之外,您还需要执行三个步骤以一定的顺序发生:

1) Assign an `AKNode` to the AudioKit output
2) Start the AudioKit engine
3) Start the `player` to generate output
4) Start the generator to moderate your sound

理解为什么会这样的最好方法是暂时忘记代码并想象在现实世界中修补东西;最后,尝试想象音频流。

希望这对您和 future 的读者有所帮助!

关于ios - AudioKit:如何对AKPlayer进行调频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61801986/

相关文章:

objective-c - Eventkit 无法访问日历

ios - User 多久前创建了一个帖子,NSDate(),操作创建的 "time of post"的格式

java - Android 计时器的运行速度能否超过 1 毫秒

frequency - TF-IDF:这种方法正确吗?

ios - 如何在 SpriteKit 中为 physicsWorld 设置 contactDelegate?

iphone - 释放 NSURLConnection 对象

ios - 在 if 语句中使用多个 contains 函数 (Swift)

ios - 3D Touch、peek 和 pop 崩溃并出现 fatal error : unexpectedly found nil while unwrapping an Optional value

c# - 有什么方法可以配置 rebus DueMessageSender 频率吗?

ios - 使用 AVAudioSession 播放音频