当存在初始化的 AKMicrophone 时,我在项目中使用 AKMIDISampler 时遇到问题。在采样器上调用“播放”时,除了正确播放木版样本外,第一次“播放”被称为恒定正弦波开始播放 - 它永远不会停止。
我用下面最少的代码复制了这个问题。当初始化类然后调用 playTestSample() 时,就会出现问题。
请注意,如果 AKMicrophone 相关代码全部静音,则 AKMIDISampler 可以正常播放,并且当前困扰我梦想的正弦波不会发生。
(我尝试改用 AKSampler() 只是为了看看问题是否存在,但我无法从中得到任何声音)。
仅供参考:我在 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)
}
}
呼呼。我相信我已经找到了解决方案。也许它会帮助别人?
看来在 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")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)