How to use PWM with an Arduino
PWM is not useful for music.  Varying the PWM frequency gets you a tone generator, but for mp3 playback you need at least 16000 samples per second, more probably 22.1k or 44.1k, each with a different, well-controlled amplitude.  To create that with PWM, that means the PWM settings are changing 16000 times per second.  The PWM frequency itself needs to be 256 times higher to approach 8-bit control over amplitude, so we are talking PWM frequency of 2 MHz, minimum, and that's rather poor audio quality.  For "CD quality" 16-bit samples, you'd have 44100 * 65536 = PWM frequency of 2.9 GHz.  And that's with a "perfect" analog reconstruction filter that doesn't have any intersymbol interference.  That just isn't happening, and it is why audio DACs don't use PWM for waveform synthesis.

Get yourself a better DAC that supports at least 12-bit output (you could use dithering/oversampling and an 8-bit DAC, but the increased sample frequency is going to be more difficult for you).  This is basically the same idea as switching from a delta-sigma ADC to successive approximation to direct-conversion, except on the DAC side.

Such a DAC will typically connect via SPI to your processor although I2C is sometimes seen also (both Raspberry Pi and Arduino have these ports available on the expansion connector).  Purpose-built Audio DACs frequently use I2S instead (IIRC, the Raspberry Pi processor has this but it is prewired to the onboard audio circuitry)