bgm関係はそこまで弄ってないからわからんけど、
並列実行でHP40以下の場合って条件のみでbgm変更してるんじゃね?

現在のbgmが何のbgmかを保存しておく変数Aを作って(例えばHP40超は0, HP40以下は1とか)

HP40以下 且つ 変数Aが0 の場合に
HP40以下のbgmを流して、変数Aを1にする処理にすればいい