-
-
Save jayluxferro/d7a204798b588333986ac41180751709 to your computer and use it in GitHub Desktop.
Swift AVMIDIPlayer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// 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() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment