当有一个初始化的AKMIDISampler时,我在我的项目中使用AKMicrophone时遇到了问题。当在采样器上调用“play”时,除了正确播放木版样本之外,第一次“播放”被称为恒定的正弦波开始播放--它永远不会停止。
我在下面最小数量的代码中复制了这个问题。初始化类时会发生问题,然后调用playTestSample()。
请注意,如果与AKMicrophone相关的代码都是静音的,那么AKMIDISampler就会很好地发挥作用,而目前困扰我梦想的正弦波也不会发生。
(我尝试使用AKSampler(),只是为了看看那里是否存在问题,但我一直无法从中得到任何声音)。
Fyi:我有“应用程序播放音频或流音频/视频使用AirPlay”在info.plist中的“必需的背景模式”-这是已知的解决另一个正弦波问题。
非常感谢您的帮助。
顺便说一句: 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)
}
}发布于 2018-12-01 00:01:47
惠尤。我相信我找到了解决办法。也许它能帮到别人?
似乎在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")
}https://stackoverflow.com/questions/53563255
复制相似问题