2017-10-04 14 views
2

wavオーディオを再生しているときにMIDIファイルを再生しようとしています。MIDIファイルをwavと一緒に再生するAudioKit

私は

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

で試してみた。しかしそれだけで最初のノートと他には何を果たしています。また、私はのようにロードされていますことをwavファイルとそれを混合するためにミキサーを使用することができないよ: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() 

が、MIDIだけで最初のノート。

どのようなヘルプも大歓迎です!

+0

私はこの質問に答えることができればと思っていますが、私はそれを十分に理解できず、十分な情報が与えられています。たとえば、melody.midに何が含まれているのかわからず、 "akMidiSampler"という名前の変数が参照されていますが、その宣言が表示されていません。 –

+0

@AureliusProchazka akMidiSamplerの定義を追加しました。 melody.midは、それがプロジェクトに追加されたちょうど中間ファイルです。ここには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) 

最終的には、シーケンサーのさまざまなトラックに異なるサンプラーを使用することができますが、このグローバルな方法が今あなたにとって最適なものだと思います。 MIDIが動作するには、iOS上でオーディオバックグラウンドモードを有効にする必要があるかもしれないことに注意してください。 HTH!

+0

だから、私はそのコードを試して、まだ動作していませんでした。しかし、主な問題は、ローカル変数を使用していたので、数ミリ秒後に音が止まるということでした。修正はここに記載されている通りです:http://audiokit.io/playgrounds/Basics/Playgrounds%20to%20Production/ ありがとうございます! –

+0

これは私が使用したコードです:https://stackoverflow.com/questions/46777602/save-aksequencer-output-to-local-file –

関連する問題