How to play MIDI on the iPhone?
Solution 1
I found this library that is available for licensing. Hope it helps someone else.
http://www.crimsontech.jp/eng/softsynth/
Solution 2
I've written a tutorial on how to play MIDI using CoreMIDI through an AUGraph here.
Solution 3
FYI for those going down this road: AVMIDIPlayer was introduced in iOS 8. Seems to work well on device, sim not so much.
Solution 4
This worked for me for playing midi file on 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)
}
}
}
and then MidiPlayer.shared.play(file: "midifile")
Solution 5
Check out the MusicPlayer class. Combined with the AUSampler audio unit available since iOS 5.0 you can build a MIDI player quite easily. (The link is OS X, but it applies for iOS as well)
About the sampler audio unit see: Simple embeddable MidiSynth for iOS?
Plumenator
I'm a programmer working in Singapore, currently in Scala, formerly in Rust, C++, Haskell.
Updated on July 20, 2022Comments
-
Plumenator almost 2 years
As far as I know, there is not native or third party library available to play MIDI on the iPhone. But there seem to be quite a few apps that do exactly that. What are they using? Any clues?