ESP32 MP3 SD Player Errors

I am at my wits’ end. I was trying to do a simple project having the ESP32 Wroom play a MP3 file from a MicroSD card and playing it through a small speaker with the MAX98357A. I keep getting these errors that I don’t know how to fix.

Here’s my code

/*
  ESP32 SD I2S Music Player
  esp32-i2s-sd-player.ino
  Plays MP3 file from microSD card
  Uses MAX98357 I2S Amplifier Module
  Uses ESP32-audioI2S Library - https://github.com/schreibfaul1/ESP32-audioI2S
  * 
  DroneBot Workshop 2022
  https://dronebotworkshop.com
*/
 
// Include required libraries
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
 
// microSD Card Reader connections
#define SD_CS          5
#define SPI_MOSI      23 
#define SPI_MISO      18
#define SPI_SCK       19
 
// I2S Connections
#define I2S_DOUT      22
#define I2S_BCLK      26
#define I2S_LRC       25
 
 // Create Audio object
Audio audio;
 
void setup() {
    
    // Set microSD Card CS as OUTPUT and set HIGH
    pinMode(SD_CS, OUTPUT);      
    digitalWrite(SD_CS, HIGH); 
    
    // Initialize SPI bus for microSD Card
    SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
    
    // Start Serial Port
    Serial.begin(115200);
    
    // Start microSD Card
    if(!SD.begin(SD_CS))
    {
      Serial.println("Error accessing microSD card!");
      while(true); 
    }
    
    // Setup I2S 
    audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
    
    // Set Volume
    audio.setVolume(5);
    
    // Open music file
    audio.connecttoFS(SD,"/AnniversaryAlbum.mp3");
    
}
 
void loop()
{
    audio.loop();    
} 

And here are the errors

c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp: In member function 'void SPIClass::end()':
c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp:126:17: error: too many arguments to function 'bool spiDetachSCK(spi_t*)'
  126 |     spiDetachSCK(_spi, _sck);
      |     ~~~~~~~~~~~~^~~~~~~~~~~~
In file included from c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.h:29,
                 from c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp:22:
C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\cores\esp32/esp32-hal-spi.h:72:6: note: declared here
   72 | bool spiDetachSCK(spi_t *spi);
      |      ^~~~~~~~~~~~
c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp:128:22: error: too many arguments to function 'bool spiDetachMISO(spi_t*)'
  128 |         spiDetachMISO(_spi, _miso);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~
C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\cores\esp32/esp32-hal-spi.h:73:6: note: declared here
   73 | bool spiDetachMISO(spi_t *spi);
      |      ^~~~~~~~~~~~~
c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp:131:22: error: too many arguments to function 'bool spiDetachMOSI(spi_t*)'
  131 |         spiDetachMOSI(_spi, _mosi);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~
C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\cores\esp32/esp32-hal-spi.h:74:6: note: declared here
   74 | bool spiDetachMOSI(spi_t *spi);
      |      ^~~~~~~~~~~~~
c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp: In member function 'void SPIClass::setHwCs(bool)':
c:\Users\17733\Documents\Arduino\libraries\SPI\src\SPI.cpp:148:20: error: too many arguments to function 'bool spiDetachSS(spi_t*)'
  148 |         spiDetachSS(_spi, _ss);
      |         ~~~~~~~~~~~^~~~~~~~~~~
C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\cores\esp32/esp32-hal-spi.h:78:6: note: declared here
   78 | bool spiDetachSS(spi_t *spi);
      |      ^~~~~~~~~~~
Multiple libraries were found for "SD.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\SD
  Not used: C:\Users\17733\AppData\Local\Arduino15\libraries\SD
  Not used: C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\libraries\SD
Multiple libraries were found for "SPI.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\SPI
  Not used: C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\libraries\SPI
Multiple libraries were found for "SD_MMC.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\SD_MMC
  Not used: C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\libraries\SD_MMC
Multiple libraries were found for "Audio.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\ESP32-audioI2S-master
  Not used: C:\Users\17733\Documents\Arduino\libraries\Audio
Multiple libraries were found for "FS.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\FS
  Not used: C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\libraries\FS
Multiple libraries were found for "FFat.h"
  Used: C:\Users\17733\Documents\Arduino\libraries\FFat
  Not used: C:\Users\17733\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.0\libraries\FFat
exit status 1

Compilation error: exit status 1

Any help would be appreciated

Since you did not show us the entire verbose error log, I suspect a library/board mismatch. In other words, you are using a board that the library is not designed for However looking at the snall amount of info I don;t see anything obvious. Since this is one of Bill's (DBWS) sketches, aybe c heck at his YT/Blog/Forum.

You are using a 3.x ESP32 core platform.

You have a manually installed SPI library for the 2.x ESP32 core platform in your libraries subdirectory.

The IDE is seeing that rather than the SPI library in the 3.x ESP32 core platform.

Besides there being many breaking changes between the 2.x and 3.x ESP32 cores platforms, it is never ever a good idea to manually add a library that obscures the core platform specific libaries like Wire, SPI, SoftwareSerial and the like. They are specific to the core platform they are bundled with.

The solution to the problem you have created for yourself should be obvious.