Как играть MIDI на iPhone?

насколько я знаю, нет родной или сторонней библиотеки для воспроизведения MIDI на iPhone. Но, похоже, есть довольно много приложений, которые делают именно это. Что они используют? Есть зацепки?

5 ответов


Я написал учебник о том, как играть в MIDI с помощью CoreMIDI через AUGraph здесь.


FYI для тех, кто идет по этой дороге: AVMIDIPlayer был представлен в iOS 8. Кажется, хорошо работает на устройстве, sim не так много.


Проверьте класс MusicPlayer. В сочетании с аудиоблоком AUSampler, доступным с iOS 5.0, вы можете легко создать MIDI-плеер. (Ссылка OS X, но она применяется и для iOS)

https://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/CoreAudioOverview/ARoadmaptoCommonTasks/ARoadmaptoCommonTasks.html#//apple_ref/doc/uid/TP40003577-CH6-SW13

об аудиоблоке sampler см.: простой монтаж заподлицо MidiSynth для iOS?


это сработало для меня для воспроизведения midi-файла на iPhone:

import AVFoundation

class MidiPlayer: NSObject {
    static let shared = MidiPlayer()
    var musicPlayer: MusicPlayer?
    var sequence: MusicSequence?

    func play(file: String) {
        guard let midiFile = Bundle.main.url(forResource: file, withExtension: "mid") else {
            return
        }

        NewMusicPlayer(&musicPlayer)
        NewMusicSequence(&sequence)

        if let musicPlayer = musicPlayer, let sequence = sequence {
            MusicSequenceFileLoad(sequence, midiFile as CFURL, .midiType, MusicSequenceLoadFlags())
            MusicPlayerSetSequence(musicPlayer, sequence)
            MusicPlayerStart(musicPlayer)
        }
    }

    func stop() {
        if let musicPlayer = musicPlayer {
            MusicPlayerStop(musicPlayer)
        }
    }
}

а то MidiPlayer.shared.play(file: "midifile")


Я нашел эту библиотеку, которая доступна для лицензирования. Надеюсь, это поможет кому-то еще.

http://www.crimsontech.jp/eng/softsynth/