Java MIDI music player with multi design patterns implemented