首页 > 解决方案 > 为什么 AudioKit 中的音序器不能播放我的鼓声,为什么音量这么低?

问题描述

首先,一个伟大的框架。这是单枪匹马地让我从我的硕士课程毕业。还有,我是赞助商!任何帮助都会非常感激。我还可以推送我的存储库并在 GitHub 上共享以进行仔细查看。

无论如何,这是我的代码

import Foundation
import AudioKit

class DrumSounds {

    let drums = AKMIDISampler()
    var currentBPM = 60
    var rideCymbalFile: AKAudioFile?
    var snareDrumFile: AKAudioFile?
    var bassDrumFile: AKAudioFile?
    var hiHatFile: AKAudioFile?
    let sequencer = AKAppleSequencer(filename: "4tracks")
    var booster = AKBooster()
    init() {

        do{

        try rideCymbalFile = AKAudioFile(readFileName: "rideCymbalSound.wav")
        try snareDrumFile = AKAudioFile(readFileName: "snareDrumSound.wav")
        try bassDrumFile = AKAudioFile(readFileName: "bassDrumSound.wav")
        try hiHatFile = AKAudioFile(readFileName: "hiHatSound.mp3")
        try drums.loadAudioFiles([rideCymbalFile!,
                                   snareDrumFile!,
                                   bassDrumFile!,
                                   hiHatFile!])

        } catch {
            print("error loading samples to drum object")
        }

        drums.volume = 1
        booster = AKBooster(drums)
        AudioKit.output = drums
        sequencer.clearRange(start: AKDuration(beats: 0), duration: AKDuration(beats: 100))
        sequencer.debug()
        sequencer.setGlobalMIDIOutput(drums.midiIn)
        sequencer.enableLooping(AKDuration(beats: 4))
        sequencer.setTempo(Double(currentBPM))

    }

    func playDrumSounds () {

        do {
            try AKSettings.setSession(category: .playAndRecord, with:  AVAudioSession.CategoryOptions.defaultToSpeaker)

            let session = AVAudioSession.sharedInstance()
            try session.setCategory(AVAudioSession.Category.playAndRecord)

            if !AKSettings.headPhonesPlugged {
                try session.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
         }
        }catch {
            print("error in settings.setSession")
        }

        sequencer.tracks[0].add(noteNumber: 0, velocity: 127, position: AKDuration(beats: 0), duration: AKDuration(beats: 1.0))
        sequencer.tracks[0].add(noteNumber: 0, velocity: 127, position: AKDuration(beats: 1), duration: AKDuration(beats: 1.0))
        sequencer.tracks[0].add(noteNumber: 0, velocity: 127, position: AKDuration(beats: 2), duration: AKDuration(beats: 1.0))
        sequencer.tracks[0].add(noteNumber: 0, velocity: 127, position: AKDuration(beats: 3), duration: AKDuration(beats: 1.0))
        sequencer.play()

    }   
}

标签: iosswiftxcodevolumeaudiokit

解决方案


我是通过随机偶然发现另一篇帖子中的评论来弄清楚的。音量小是因为需要在“Signing & Capabilities”下的“Background Modes”中启用“Audio, AirPlay, and Picture in Picture”。单击左上角的“+”按钮添加功能: 在此处输入图像描述

至于演奏正确的鼓声:事实上,正确的鼓声正在被演奏。但是我将 MIDI 音符编号设置得太低,所以听起来像是刺耳的静电。如果您遇到此问题并且从未使用过 MIDI(像我一样),这里是 MIDI 音符编号描述的链接:https ://www.inspiredacoustics.com/en/MIDI_note_numbers_and_center_frequencies 。数字越大,频率越高。更改 MIDI 音符编号将更改音频文件的频率!


推荐阅读