make happytone even when buttons are used, clean up main loop