ios - 为什么 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()
}
}
解决方案
我是通过随机偶然发现另一篇帖子中的评论来弄清楚的。音量小是因为需要在“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 音符编号将更改音频文件的频率!
推荐阅读
- c - 输出一个数是否可被 3 整除的 C 程序
- reactjs - axios 返回缓存数据
- rust - arduino 目标的货物测试失败,箱子中有重复的 lang 项
- javascript - 未定义 chrome 扩展 $ 中的 jQuery | 如何在 chrome 扩展中使用 jQuery?
- .htaccess - 将所有子域重定向到另一个文件
- html - 汉堡菜单的一个元素覆盖了一个子元素
- c# - Xamarion.iOS CoreBluetooth BLE 应用程序在 iPhone 10 上崩溃
- inno-setup - 根据 Inno Setup 中选择的语言创建命令行参数快捷方式
- reactjs - 列表 timeGridWeek 中的 FullCalendar React 事件堆栈
- flutter - Flutter 自定义小部件无法显示