The dmusic_common.c thing is wrong, you can't use the same source file in multiple dlls, this won't build properly. Also you should not include private header files from other dlls, if definitions really have to be shared they should be in a common header somewhere in include/ or include/wine, though in most cases you should be able to avoid that.
I can't see how sharing dmusic_common.c would mess up building (it builds and works fine for me), but then again you have more experiences on this matter. Do you have any suggestions what should I do about it?
And I believe shared private header you had in mind was dmusic_common.h; I didn't know it was forbidden to do it since you didn't say anything when I included dmusic_private.h in dmime_private.h last time.
Anyway, dmusic_common.c and dmusic_common.h are there primarily for generic IDirectMusicObject functions; it's really easier to implement it that way and it simplifies code maintenaince.