我的项目中使用初始化的AKMicrophone时,在使用AKMIDISampler时遇到问题。在采样器上调用“ play”时,除了正确播放木刻样本外,首次调用“ play”时,恒定正弦波开始播放-它永远不会停止。
我用下面最少的代码重复了这个问题。初始化类然后调用playTestSample()时会发生问题。
请注意,如果所有与AKMicrophone相关的代码均已静音,则AKMIDISampler可以正常播放,并且不会困扰当前困扰我的梦想的正弦波。
(我试图切换到使用AKSampler()只是为了查看问题是否在那里,但我无法从中听到任何声音)。
Fyi:我在info.plist的“必需的背景模式”中有“应用程序使用AirPlay播放音频或流音频/视频”的信息-可以解决另一个正弦波问题。
非常感谢您的协助。
顺便说一句:AudioKit摇摇欲坠,并为该项目提供了巨大帮助! :^)
AK 4.5.4 Xcode 10.1
import Foundation
import AudioKit
class AudioKitTESTManager {
var mixer = AKMixer()
var sampler = AKMIDISampler()
var mic = AKMicrophone()
var micMixer = AKMixer()
var micBooster = AKBooster()
init() {
mixer = AKMixer(sampler, micBooster)
do {
let woodblock = try AKAudioFile(readFileName: RhythmGameConfig.woodblockSoundName)
try sampler.loadAudioFiles([woodblock])
} catch {
print("Error loading audio files into sampler")
}
micMixer = AKMixer(mic)
micBooster = AKBooster(micMixer)
micBooster.gain = 0.0
AudioKit.output = mixer
AKSettings.playbackWhileMuted = true
AKSettings.defaultToSpeaker = true
AKSettings.sampleRate = 44100
do {
print("Attempting to start AudioKit")
try AudioKit.start()
} catch {
AKLog("AudioKit did not start!")
}
}
func playTestSample() {
// You hear the sample and a continuous sine wave starts playing through the samplerMixer
try? sampler.play(noteNumber: 60, velocity: 90, channel: 1)
}
}
答案 0 :(得分:1)
哎呀。我相信我已经找到了解决方案。也许会帮助别人吗?
在AudioKit.start()之后将文件加载到采样器中似乎可以解决“正弦波恐怖”问题!
//..
do {
print("Attempting to start AudioKit")
try AudioKit.start()
} catch {
AKLog("AudioKit did not start!")
}
do {
let woodblock = try AKAudioFile(readFileName: RhythmGameConfig.woodblockSoundName)
try sampler.loadAudioFiles([woodblock])
} catch {
print("Error loading audio files into sampler")
}