У меня проблема с использованием AKMIDISampler в моем проекте, когда есть инициализированный AKMicrophone.Наряду с правильным воспроизведением сэмпла деревянных блоков, когда на сэмплере вызывается «play», в первый раз, когда «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)
}
}