Ios 同时使用AudioKit和SpriteKit audio
我正在制作一个游戏,它使用AudioKit框架来检测麦克风接收到的声音频率。我的设置如下:Ios 同时使用AudioKit和SpriteKit audio,ios,audio,sprite-kit,audiokit,Ios,Audio,Sprite Kit,Audiokit,我正在制作一个游戏,它使用AudioKit框架来检测麦克风接收到的声音频率。我的设置如下: import SpriteKit import AudioKit class GameScene: SKScene { var mic : AKMicrophone! var tracker : AKFrequencyTracker! var silence : AKBooster! let mixer = AKMixer() override func did
import SpriteKit
import AudioKit
class GameScene: SKScene {
var mic : AKMicrophone!
var tracker : AKFrequencyTracker!
var silence : AKBooster!
let mixer = AKMixer()
override func didMove(to view: SKView) {
mic = AKMicrophone()
tracker = AKFrequencyTracker.init(mic)
silence = AKBooster(tracker, gain: 0)
mixer.connect(silence)
AudioKit.output = mixer
AudioKit.start()
}
}
let session = AVAudioSession()
do {
try session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
} catch {
print("error setting output")
}
我也想使用SKAction.PlayAudioFileName来播放音效等,但使用它时,播放音量非常低。我假设它与场景的混合器节点和AKMixer有关?使用AudioKit播放声音文件比我需要的复杂得多
我需要对场景进行扩展吗?非常感谢您的帮助 Aurelius似乎是正确的,因为AudioSession输出路径被定向到耳机。我仍然不确定为什么会出现这种情况,但覆盖和设置输出的工作原理如下:
import SpriteKit
import AudioKit
class GameScene: SKScene {
var mic : AKMicrophone!
var tracker : AKFrequencyTracker!
var silence : AKBooster!
let mixer = AKMixer()
override func didMove(to view: SKView) {
mic = AKMicrophone()
tracker = AKFrequencyTracker.init(mic)
silence = AKBooster(tracker, gain: 0)
mixer.connect(silence)
AudioKit.output = mixer
AudioKit.start()
}
}
let session = AVAudioSession()
do {
try session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
} catch {
print("error setting output")
}
这需要在初始化AudioKit组件后完成。如果有更好的方法,请告诉我 事实上,我刚刚用耳机测试过,使用SKAction.playAudioFileName的音量是正常的。它一定与反馈保护或其他什么有关?也许音频被传送到了错误的扬声器?我不确定这一点,但有些人提到音频可以改为路由到铃声扬声器?也许AudioKit使主扬声器无法使用,所以sprite kit尽了最大努力?你说得对!真不敢相信,当耳机没有插上时,我没有注意到它是通过手机的听筒而不是扬声器传输的。有没有办法将SKScene的音频显式连接到AKMixer?我可能在看类似的东西,但我得到了错误:var sceneudio=AKNode;sceneAudio.avAudioNode=场景?.audioEngine.mainMixerNode;mixer.connectsceneAudioERROR:[0x1abca6c40]>avae>AVAudioEngine.mm:404:ConnectMultipleOutput:所需条件为false:[\u nodes containsObject:sourceNode]2017-01-06 11:49:20.456297 MicAnalysisGame[2096:470307]***由于未捕获的异常“com.apple.coreaudio.avfaudio”,终止应用程序,原因:“所需条件为false:[\u节点包含对象:sourceNode]'