如何在iPhone上播放MIDI?

时间:2010-03-31 08:56:58

标签: iphone midi

据我所知,iPhone上没有可播放MIDI的原生或第三方库。但似乎有相当多的应用程序正是这样做的。他们在用什么?有线索吗?

5 个答案:

答案 0 :(得分:9)

我已经编写了一个关于如何通过AUGraph here使用CoreMIDI播放MIDI的教程。

答案 1 :(得分:6)

对于那些沿着这条路走下去的人来说:AVMIDIPlayer是在iOS 8中引入的。似乎在设备上运行良好,而不是那么多。

答案 2 :(得分:2)

这适合我在iPhone上播放midi文件:

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")

答案 3 :(得分:1)

查看MusicPlayer类。结合iOS 5.0以后的AUSampler音频单元,您可以非常轻松地构建MIDI播放器。 (链接是OS X,但它也适用于iOS)

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

关于采样器音频单元,请参阅: Simple embeddable MidiSynth for iOS?

答案 4 :(得分:-2)

我发现这个库可以获得许可。希望它可以帮助别人。

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