Need to exit this loop, to then be ready to start again.

You bet me too it ^^

But i think it's this next bit, where i've pointed using the // added again.

/*
   Initial Author: ryand1011 (https://github.com/ryand1011)

   Reads data written by a program such as "rfid_write_personal_data.ino"

   See: https://github.com/miguelbalboa/rfid/tree/master/examples/rfid_write_personal_data

   Uses MIFARE RFID card using RFID-RC522 reader
   Uses MFRC522 - Library
   -----------------------------------------------------------------------------------------
               MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
               Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
   Signal      Pin          Pin           Pin       Pin        Pin              Pin
   -----------------------------------------------------------------------------------------
   RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
   SPI SS      SDA(SS)      10            53        D10        10               10
   SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
   SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
   SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
*/

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9           // Configurable, see typical pin layout above
#define SS_PIN          10          // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance



//mp3 player
#include<SoftwareSerial.h>
int mp3Pin[2] = { 5, 4 };           //Rx/Rx

// For the checksum to the mp3
#define startByte 0x7E
#define endByte 0xEF
#define versionByte 0xFF
#define dataLength 0x06
#define infoReq 0x01

SoftwareSerial mp3(mp3Pin[0], mp3Pin[1]); // Rx, Tx




//*****************************************************************************************//
void setup() {
  Serial.begin(9600);                                           // Initialize serial communications with the PC
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();                                              // Init MFRC522 card


  //Mp3
  mp3.begin(9600);                        // Init mp3
  delay(1000);
  sendMP3Command(0x3F, 0, 0);             // Send request for initialization parameters
  sendMP3Command(0x06, 0, 20);            // Vol set to 30
  sendMP3Command(0x07, 0, 0);             // EQ = pop


}
void PrintHex(uint8_t *data, uint8_t length) // prints 8-bit data in hex with leading zeroes
{
  char tmp[16];
  for (int i = 0; i < length; i++) {
    sprintf(tmp, "0x%.2X", data[i]);
    Serial.print(tmp); Serial.print(" ");
  }
}
uint8_t buf[10] = {};
MFRC522::Uid id;
MFRC522::Uid id2;
bool is_card_present = false;
//*****************************************************************************************//

void cpid(MFRC522::Uid *id) {
  memset(id, 0, sizeof(MFRC522::Uid));
  memcpy(id->uidByte, mfrc522.uid.uidByte, mfrc522.uid.size);
  id->size = mfrc522.uid.size;
  id->sak = mfrc522.uid.sak;
}

bool cmpid(MFRC522::Uid *id1, MFRC522::Uid *id2) {
  return memcmp(id1, id2, sizeof(MFRC522::Uid));
}

void deregister_card() {
  is_card_present = false;
  memset(&id, 0, sizeof(id));
}
uint8_t control = 0x00;


void loop() {

  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
  MFRC522::StatusCode status;

  //-------------------------------------------

  // Look for new cards
  if ( !mfrc522.PICC_IsNewCardPresent()) {
    fadeOutMP3();
  }
  else {
    if ( !mfrc522.PICC_ReadCardSerial()) {
      // do nothing;
    }
    else {
      playMP3();
    }
  }
  Serial.println("CardRemoved");
  delay(500); //change value if you want to read cards faster

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//a

void playMP3() {

  //Added
  //////////////////////////////////////////////////////////
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  if (content.substring(1) == "0A 97 F3 16") //change here the UID of the card/cards that you want to give access
  {
    //Serial.println("hello World");
    Serial.println("0002.mp3");
    sendMP3Command(0x03, 0, 0002);  // Play track 0002.mp3
    //sendMP3Command(0x19, 0, 0);     // Loop track playing
    delay(30);

    //////////////////////////////////////////////////////////
    //PrintHex(id.uidByte, id.size);
    //Serial.println("hello");
    bool result = true;
    uint8_t buf_len = 4;
    cpid(&id);
    Serial.print("NewCard ");
    PrintHex(id.uidByte, id.size);
    Serial.println("");
    while (true) {
      control = 0;
      for (int i = 0; i < 3; i++) {
        if (!mfrc522.PICC_IsNewCardPresent()) {
          if (mfrc522.PICC_ReadCardSerial()) {
            //Serial.print('a');
            control |= 0x16;
          }
          if (mfrc522.PICC_ReadCardSerial()) {
            //Serial.print('b');
            control |= 0x16;
          }
          //Serial.print('c');
          control += 0x1;
        }
        //Serial.print('d');
        control += 0x4;
      }

      //Serial.println(control);
      if (control == 13 || control == 14) {
        //card is still there
      }
      else {
        break;
      }
    }
  }
}

//==========

void fadeOutMP3() {
  // don't know what should go here
  Serial.println("fadeoutMP3");
  delay(500); //change value if you want to read cards faster
  sendMP3Command(0x06, 0, 28); // Reduce vol by 2 and fade out
  delay(30);
  sendMP3Command(0x06, 0, 26);
  delay(30);
  sendMP3Command(0x06, 0, 24);
  delay(30);
  sendMP3Command(0x06, 0, 22);
  delay(30);
  sendMP3Command(0x06, 0, 20);
  delay(30);
  sendMP3Command(0x06, 0, 18);
  delay(30);
  sendMP3Command(0x06, 0, 16);
  delay(30);
  sendMP3Command(0x06, 0, 14);
  delay(30);
  sendMP3Command(0x06, 0, 12);
  delay(30);
  sendMP3Command(0x06, 0, 10);
  delay(30);
  sendMP3Command(0x06, 0, 8);
  delay(30);
  sendMP3Command(0x06, 0, 6);
  delay(30);
  sendMP3Command(0x06, 0, 4);
  delay(30);
  sendMP3Command(0x06, 0, 2);
  delay(30);
  sendMP3Command(0x06, 0, 0);
  sendMP3Command(0x16, 0, 0); // Stop
  delay(500);                 // Change value if you want to read cards faster
}

// -------------------------------------------------------------------------------------
// MP3 COMMAND AND DATA     MP3 COMMAND AND DATA     MP3 COMMAND AND DATA     MP3 COMMAN
// -------------------------------------------------------------------------------------

void sendMP3Command(byte Command, byte Param1, byte Param2) {

  // Calculate the checksum
  unsigned int checkSum = -(versionByte + dataLength + Command + infoReq + Param1 + Param2);

  // Construct the command line
  byte commandBuffer[10] = { startByte, versionByte, dataLength, Command, infoReq, Param1, Param2, highByte(checkSum),
                             lowByte(checkSum), endByte
                           };

  for (int cnt = 0; cnt < 10; cnt++) {
    mp3.write(commandBuffer[cnt]);
  }

  // Delay needed between successive commands
  delay(30);
}

my outcome is this

CardRemoved
fadeoutMP3
CardRemoved
0002.mp3                                      // placed card no sound is played
NewCard 0x0A 0x97 0xF3 0x16 
CardRemoved
fadeoutMP3                                    // fadeout function works sound fades out. 
CardRemoved
0002.mp3                                      
NewCard 0x0A 0x97 0xF3 0x16 
CardRemoved
fadeoutMP3
CardRemoved
fadeoutMP3
CardRemoved
fadeoutMP3
CardRemoved

I will be adding other cards too, but only another two ^^
Regards