Glad to hear you like it! For the unlocking condition, that's built in - there's an example in the code and the README also. It's the argument unlock_condition. You can set that to a string like unlock_condition="persistent.seen_chapter1" for example, and then set $ persistent.seen_chapter1 = True in your script when the song should be unlocked. A dictionary would work too, or a set; whatever you like! The condition just has to be in quotes and should be persistent (most likely) so players can see it on the main menu.
As for the second thing, you can add that to the add method in the music room backend. There's a line that looks like this:
super(ExtendedMusicRoom, self).add(track.path,
always_unlocked=track.unlock_condition=="True",
action=SetScreenVariable('current_track', track))
You can change it to:
super(ExtendedMusicRoom, self).add(track.path,
always_unlocked=track.unlock_condition=="True",
action=[SetScreenVariable('current_track', track),
Notify("Now playing: {0}".format(track.name))])
You can update that Notify message however you like. That way it'll still update the current_track but will also have a notification show up!