Wenn ich das richtig sehe, startest Du den Sound immer wieder neu. Mach Dir mal ein Flag, mit dem Du abprüfst, ob er schon abgespielt wird.
Code:
if ((val - DecisionHeight < 150) && (vs_var.var_value.n <0) && !dhwarnflag)
{
MFSSoundFilePlay(dhwarn, FALSE);
dhwarnflag = true;
}