Swiftで次のことを成功させました:
- MIKMIDIシーケンサーを作成しました
- シーケンサーにトラックを追加しました
- そのトラックの組み込みシンセサイザーにサウンドフォントをロードしました
- トラックに MIDI イベントを追加
- シーケンサーでのトリガー再生
マルチティンバーサウンドフォントでプリセットを選択することはできますか? シーケンサー トラックによって参照される MIKMIDISynthesizer インスタンスの availableInstruments プロパティを調べると、空の配列がログ コンソールに報告されます。コードは次のとおりです。
let _ = try sequence.addTrack()
let track = sequence.tracks[0]
let trackSynth = sequencer.builtinSynthesizerForTrack(track)
if let soundfont = NSBundle.mainBundle().URLForResource("fluid_gm", withExtension: "sf2") {
do {
try trackSynth?.loadSoundfontFromFileAtURL(soundfont)
print(trackSynth!.availableInstruments)
} catch {
}
}
let note1 = MIKMIDINoteEvent(timeStamp:0.0,note:60,velocity:100,duration:5,channel:0)
let note2 = MIKMIDINoteEvent(timeStamp:0.0,note:63,velocity:100,duration:5,channel:0)
let note3 = MIKMIDINoteEvent(timeStamp:1.0,note:60,velocity:0,duration:5,channel:0)
let note4 = MIKMIDINoteEvent(timeStamp:1.0,note:63,velocity:0,duration:5,channel:0)
track.addEvents([note1!,note2!,note3!,note4!])
sequencer.sequence = sequence
sequencer.startPlayback()