diff --git a/snd/music.lua b/snd/music.lua
index 523c512..4760cc2 100644
--- a/snd/music.lua
+++ b/snd/music.lua
@@ -27,7 +27,7 @@ function choose(str)
     choose_ambient()
 
   elseif str == "combat" then
-    choose_battle()
+    choose_combat()
 
   elseif str == "idle" and last ~= "idle" then
     -- We'll play the same as last unless it was takeoff.
@@ -174,8 +174,16 @@ function choose_ambient()
 end
 
 -- Battle songs.
-function choose_battle()
-  music.load("galacticbattle")
+function choose_combat()
+  -- Stop music first, but since it'll get saved it'll run this next.
+  if music.isPlaying() then
+    music.stop()
+    return
+  end
+
+  combat = { "galacticbattle" }
+
+  music.load(combat[rnd.int(1, #combat)])
   music.play()
 end
 
diff --git a/src/pilot.c b/src/pilot.c
index 8797d00..ad53088 100644
--- a/src/pilot.c
+++ b/src/pilot.c
@@ -20,6 +20,7 @@
 #include "map.h"
 #include "explosion.h"
 #include "escort.h"
+#include "music.h"
 #include "pilot.h"
 
 #define XML_ID    "Fleets"  /**< XML document identifier. */
@@ -223,6 +224,9 @@ double pilot_face(Pilot* p, const double dir) {
  */
 void pilot_setHostile(Pilot* p) {
   if(!pilot_isFlag(p, PILOT_HOSTILE)) {
+    /* Time to play combat music. */
+    if(player_enemies == 0)
+      music_choose("combat");
     player_enemies++;
     pilot_setFlag(p, PILOT_HOSTILE);
   }
@@ -233,9 +237,13 @@ void pilot_setHostile(Pilot* p) {
  *    @param p Pilot to mark as neutral.
  */
 void pilot_rmHostile(Pilot* p) {
-  if(pilot_isFlag(p, PILOT_HOSTILE)) {
+  if(pilot_isFlag(p, PILOT_HOSTILE)) {    
     player_enemies--;
     pilot_rmFlag(p, PILOT_HOSTILE);
+
+    /* Change music back to ambient if no more enemies. */
+    if(player_enemies == 0)
+      music_choose("ambient");
   }
 }