首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioKit:如何实现AKPlayer的调频

AudioKit:如何实现AKPlayer的调频
EN

Stack Overflow用户
提问于 2020-05-14 16:04:34
回答 1查看 425关注 0票数 2

我试图对来自AKPlayer的信号执行频率调制,作为回报,它会播放一个mp3文件。我尝试过使用AKOperationEffect,但它不像预期的那样工作:

代码语言:javascript
复制
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没有这么好的文档.有大量的例子,但它们都涉及合成声音,如正弦波、方波等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 22:08:45

我花时间创建了一个实用的例子来帮助您@Ulrich,如果您有游乐场环境可用,您可以放下和玩,或者只是作为参考,信任我它可以修改您的代码,这是不言自明的,但您可以阅读更多关于为什么我的版本工作后,代码TLDR;

[audio](https://drive.google.com/open?id=1YlqnR5njj89oROE7xTZHbS3dRd8Yjdp5)之前

[audio](https://drive.google.com/open?id=19lVUlzV1amQeh8XRidJBjt3S_fYNmkUm)

在编写本报告时,对最新的XCode和Swift进行了测试和运行,没有出现问题(XCode 11.4、SWIFT5.2和AudioKit 4.9.5):

代码语言:javascript
复制
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()

找到可以在下载页面( https://audiokit.io/downloads/ )中使用的操场

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

代码语言:javascript
复制
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

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

希望这对你和未来的读者有帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61801986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档