It's important to keep in mind that MP3 (or, correctly speaking, mpeg-1 level 3) is a lossy compression algorithm that relies on the way your brain and ears work. A good encoder (like lame) can do a wonderful job and generate a decent mp3 file, whereas a poor one (like bladeenc or any of those xxx-jukebox that use a xing encoder) will cut out high frequencies and introduce artifacts, annoying the hell out of you.

The most common problems with mp3 files:

Some guidelines I use when I create my MP3s:

  • Use lame as the encoder.
  • Use cdparanoia as the ripper. This is for linux. I've heard there are some very good ones for windows too.
  • 128Kpbs: only when I want to send a preview of a song to someone.
  • 160Kbps: a little better on the high-frequencies.
  • 192Kbps: A good trade-off, if you have a little bit more space to waste.
  • 256Kbps: Almost archive quality. Big files, but also good quality
  • Variable bitrate: The best deal for me. I set the quality to 2 (1 is the best, 7 is the worst), minimum allowed bitrate to 64Kbps and maximum to 256Kbps. With these settings, the encoder will vary the bitrate dynamically between these two values (it's actually fun to watch the bitrate changing while the music plays). The nice thing about VBR is that most songs have periods of silence that can be safely encoded at lower bitrates, saving space. Allowing the encoder to go as high as 256Kbps guarantees quality in some parts of the song. On the average, songs will stay around 180Kbps, but bits will be allocated where they're actually needed.
  • Use CRC on your MP3 files (that allows you to detect file corruption).
  • Use tags. They help a lot when you want to classify you collection.
Some caveats:
  • Some players don't like CRC information (I believe there's an AIWA car player that won't play MP3s with CRCs)
  • Some players don't like VBR.

That's not the trend though. I don't believe you should trade VBR and CRC error correction for compatibility with some obscure players.