/// soundbanks are either dls or sf2. see http://www.sf2midi.com/ var soundbank:NSURL! var mp:AVMIDIPlayer! func playMIDIFile() { // Load a SoundFont or DLS file. self.soundbank = NSBundle.mainBundle().URLForResource("GeneralUser GS MuseScore v1.442", withExtension: "sf2") // a standard MIDI file. var contents:NSURL = NSBundle.mainBundle().URLForResource("ntbldmtn", withExtension: "mid") var error:NSError? self.mp = AVMIDIPlayer(contentsOfURL: contents, soundBankURL: soundbank, error: &error) if self.mp == nil { println("nil midi player") } if let e = error { println("Error \(e.localizedDescription)") } self.mp.prepareToPlay() self.mp.play(nil) // there is a crash when you use a completion //self.mp.play({ // println("midi done") //}) // or // var completion:AVMIDIPlayerCompletionHandler = {println("done")} // mp.play(completion) } func toggleMIDIPlayer() { if mp.playing { mp.stop() } else { self.mp.play(nil) } } func stopMIDIPLayer() { if mp.playing { mp.stop() } }