Lately I’ve been finding some MP3 files that play in iTunes and on my iPhone 4, but won’t play on my 6th gen. nano. The songs fail in different ways depending on how I try to play the song (shuffle to it, pick it manually from an album, pick it from the song list, etc…). Sometimes the nano just sits there quietly, or sometimes it’ll play another, unrelated song.
Most of these are songs I’ve downloaded from various sources on teh Intertubes. I’m using iTunes on Windows 7. My apps and my iPod firmware are all up-to-date.
It turns out that the MP3 files are corrupt, not enough to fail totally, but enough to fail on the nano. iVolume, an app I use to supplement SoundCheck and even out the playback level for all my songs, provided the clue.
When I run iVolume against my iTunes library, it adds an “Adjusted by iVolume” stamp to the Comments field for each song. When I examined the problematic songs, I noticed that the iVolume stamp was missing for all of them, even though iVolume itself said it had successfully processed each song.
The easiest way to “fix” these corrupt files was to run iTunes’ “Create MP3 Version” tool on them.
- Run iVolume against the library.
- Sort the songs by the Comments field to find the bad files, the ones missing the iVolume stamp.
- Highlight all the bad songs, right-click on them, and select “Create MP3 version”. iTunes starts churning, and creates a new MP3 file for each song.
- When iTunes finishes, the bad songs are still there, highlighted. Delete them, making sure you send them to the Recycle Bin in addition to removing them from iTunes.
- Run iVolume again.
- Sync the repaired songs to my nano and other iPods.
All set!
There are a couple of downsides to the process. There might have been errors in the files that were glossed over, but not really fixed. I might find some blips in the songs when I listen to them, though I haven’t yet. Also, taking a lossy MP3 file and converting it to another lossy MP3 file might conceivably reduce the fidelity of the music even further. That hasn’t been an issue for me, but I’m sure there are pretentious audiophiles out there who’ll think they can hear the difference. And the “Date added” timestamp is updated when I fix the files, which is annoying but no big deal.
There are alternative tools you can use to validate and fix the MP3 files. I found a free one for Windows users. When I ran it against three different sample bad files, each one showed, “WARNING: “C:UsersOwnerDesktop4 Bring It On.mp3” (offset 0x1200): MPEG stream error, resynchronized successfully”. MPEG stream errors can be caused by garbage in the middle of the file (e.g. the file was split into several parts, the tags were appended, and then these parts were improperly merged) or by a data loss during transfer or storage. Damned if I know if all the files I fixed had the same issue.
After fixing the bad files discovered via iVolume, I ran the validator against my library and found hundreds more songs with problems of one kind or another. Some of the files have the same “(offset 0x1200): MPEG stream error”, but they all seem to play properly on the nano, so that error may not be the real problem. Apparently, iVolume is better at diagnosing this particular issue.
The validator tool has a “Repair” option, but I think using iTunes to fix the files was the right choice. The validator saves the repaired MP3 as a separate file. It would have been annoying to get the good files into iTunes and get the bad files out, and I would have lost lots of metadata. iTunes is flakey enough. I figured I was better off using iTunes for the fix rather than taking the risk that the external validator might screw up my library. Running the validator against downloaded MP3s before I import them into iTunes might be useful.
I’ve filed a bug report with Apple. Ideally, iTunes should validate MP3 files and fix them if necessary. Failing that, Apple should at least make playback on the nano as resilient as it is on their other devices.
I use iVolume because SoundCheck wasn’t working well enough for me. I wonder if the real problem was with the MP3s? Still, without iVolume, I might never have found a simple solution, so it’s all good.