2017-10-04 122 views
2

我试图播放midi文件作为wav音频播放。与wav一起播放MIDI文件AudioKit

我试着

let akSequencer = AKSequencer(filename: "melody") 
akSequencer.enableLooping() 
akSequencer.play() 

但它只能播放第一个音符而已。同样,它被加载就像我不能够使用搅拌机将其与wav文件混合:

let akMidiSampler = AKMIDISampler() 
let akSampler = AKSampler() 
let wavFile = try AKAudioFile(forReading: wavUrl!) 
try akSampler.loadAudioFile(wavFile) 

let mixer = AKMixer(akSampler, akMidiSampler) 
mixer.volume = 1 

AudioKit.output = mixer 
AudioKit.start() 
akSampler.play() 

的WAV音频正在播放,但只是MIDI第一个音符。

任何帮助非常欢迎!

+0

我希望能够回答这个问题,但我不太了解它,现在已经提供了足够的信息。例如,我们不知道melody.mid中包含了什么,并且引用了一个名为“akMidiSampler”的变量,但其声明未显示。 –

+0

@AureliusProchazka 我刚刚编辑添加akMidiSampler的定义。 melody.mid只是一个midi文件,它被添加到项目中。您可以在此链接https://drive.google.com/file/d/0B0-hfmdUuApIUGp2cmQwUm5SWWM/view?usp=sharing。 但基本上,我不知道我使用的方法是否正确,或者我是否完全错误。 –

回答

2

我相信你没有正确地把你的音序器连接到你的MIDI采样器。如果你看一些AudioKit例如游乐场的位置:

http://audiokit.io/playgrounds/Playback/Sequencer/

http://audiokit.io/playgrounds/Playback/Drum%20Sequencer/

你会发现有该测序仪连接到采样这样一行:

sequencer.setGlobalMIDIOutput(piano.midiIn) 

sequencer.setGlobalMIDIOutput(drums.midiIn) 

最终,您可以为音序器的不同音轨设置不同的采样器,但我认为这种全局方法现在对您最适合。请记住,您可能必须在iOS上启用音频背景模式才能使用MIDI。 HTH!

+0

所以,我尝试了这个代码,仍然没有工作。但主要问题是因为我在几毫秒之后使用局部变量,所以声音停止。修正是因为它在这里陈述:http://audiokit.io/playgrounds/Basics/Playgrounds%20to%20Production/ 谢谢奥雷利斯! –

+0

这是我使用的代码:https://stackoverflow.com/questions/46777602/save-aksequencer-output-to-local-file –