Fixes a race were sound played is unloaded.

Solved this by moving last logics from the audio callback
handler to logic(). Also on reset(), force a cleanup call
to logic().