AudioKit:如何对AKPlayer进行调频
AudioKit: how to perform frequency modulation for AKPlayer
我正在尝试对来自 AKPlayer 的信号执行频率调制,AKPlayer 在 return 中播放 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,如果你有可用的游乐场环境,你可以放下来玩,或者只是将它用作参考相信我它可以修改你的代码,这是不言自明的,但您可以在代码 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
并传递给 AKPlayer
实例时声明 mp3 文件的路径外,您还需要在一个实例中执行三个步骤特定顺序:
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
理解为什么会这样的最好方法是暂时忘记代码,想象在现实世界中修补东西;最后,试着想象一下音频流。
希望这对您和未来的读者有所帮助!
我正在尝试对来自 AKPlayer 的信号执行频率调制,AKPlayer 在 return 中播放 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,如果你有可用的游乐场环境,你可以放下来玩,或者只是将它用作参考相信我它可以修改你的代码,这是不言自明的,但您可以在代码 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
并传递给 AKPlayer
实例时声明 mp3 文件的路径外,您还需要在一个实例中执行三个步骤特定顺序:
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
理解为什么会这样的最好方法是暂时忘记代码,想象在现实世界中修补东西;最后,试着想象一下音频流。
希望这对您和未来的读者有所帮助!