A Java MIDI Music Player with sophisticated design patterns: Model-view-controller, Extensible-Visitor, Command, etc.