Как озвучивать звук с помощью комбинации AKMIDISampler и AKSequencer при установке UIBackgroundModes в положение OFF - PullRequest
0 голосов
/ 21 февраля 2019

На днях меня попросили Apple отклонить заявку.

Содержание указания следующее.

Рекомендация 2.5.4 - Производительность - Требования к программному обеспечению Ваше приложение заявляет о поддержкедля аудио в ключе UIBackgroundModes в вашем Info.plist, но мы не смогли воспроизвести какой-либо слышимый контент, когда приложение работало в фоновом режиме.

Следующие шаги Звуковая клавиша предназначена для использования приложениями, которые обеспечивают слышимыйконтент для пользователя в фоновом режиме, такой как музыкальный проигрыватель или потоковые аудио-приложения.Пересмотрите свое приложение, чтобы предоставить пользователю слышимый контент, пока приложение находится в фоновом режиме, или удалите параметр «audio» из ключа UIBackgroundModes.

Я отключил его в соответствии с указаниями представителя Apple. 1 В результате звук, который звучит с помощью следующего кода, является синусоидальным, а звук сэмплирования, сэмплированный AKMIDISampler, не звучит.

import Foundation
import AudioKit

class AudioKitTest {

  let acousitcGuitar = AKMIDISampler()

  var guitarMix :AKMixer?

  var sequencer :AKSequencer?


  func play() {

    let exs24BasePath = "Sounds/Sampler Instruments/"

    let path = exs24BasePath + "20190218_01_hb"
    do {
      try acousitcGuitar.loadEXS24(path)
    } catch {
      print("Could not load EXS24")
    }
    self.guitarMix = AKMixer(acousitcGuitar)

    AudioKit.output = self.guitarMix

    do {
      try AudioKit.start()
    } catch {
      print("AudioKit.start() Error")
    }
    self.sequencer = AKSequencer()

    _ = self.sequencer!.newTrack()!
    self.sequencer!.setTempo(120.0)

    _ = self.sequencer!.newTrack()!
    let tMelody :AKMusicTrack = sequencer!.tracks[1]

    self.sequencer!.setLength(AKDuration(beats: 4))

    tMelody.setMIDIOutput(acousitcGuitar.midiIn)

    tMelody.clear()

    self.sequencer!.setLength(AKDuration(beats: 4))

    tMelody.add(noteNumber: MIDINoteNumber(60),
               velocity: 100,
               position: AKDuration(beats: 1),
               duration: AKDuration(beats: 1))

    tMelody.add(noteNumber: MIDINoteNumber(62),
               velocity: 100,
               position: AKDuration(beats: 2),
               duration: AKDuration(beats: 1))

    tMelody.add(noteNumber: MIDINoteNumber(64),
                velocity: 100,
                position: AKDuration(beats: 3),
                duration: AKDuration(beats: 1))

    tMelody.setMIDIOutput(acousitcGuitar.midiIn)

    self.sequencer!.play()

  }
}

Поскольку отсутствуетТребование играть в фоновом режиме в этом приложении, мы ищем способ звучания с комбинацией AKMIDISampler и AKSequencer при отключении UIBackgroundModes.

Пожалуйста, дайте мне ответ.

ВерсияАудиокит это 4.6.1.

...