我试图对来自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没有这么好的文档.有大量的例子,但它们都涉及合成声音,如正弦波、方波等。
发布于 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):
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文件的路径之外,还需要按照一定的顺序执行三个步骤:
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理解这一点的最好方法是暂时忘记代码,想象在现实世界中修补东西;最后,尝试想象音频流。
希望这对你和未来的读者有帮助!
https://stackoverflow.com/questions/61801986
复制相似问题