Hammerwatch used to make my ears bleed each time I was running it, that's how loud and clipping the music was. It would become less loud after clicking "Options" and then I would go to "Sound" and silence it a bit more. I also needed to change map opacity each time.
So finally I've decided to investigate and the reason turned out to be trivial.
Turns out numbers in config.xml are saved according to locale, with coma as decimal separator, but while reading it expects a dot. So I guess it was trying sound volume over 1 (the part after the coma), then clicking "Options" made it 1 somehow, then I broke it again by going to 0,5 or whatever.
The work-around was also easy. In RunHammerwatch,
LANG=C mono "$DIR/Hammerwatch.exe" $*
This is an archaic Mono 2.10.5, so maybe it's a Mono bug, not Hammerwatch itself - you test :)