(If you don’t care about the background and just want to see the fix, click here.)
I’m one of that dying breed of people who doesn’t use streaming services to listen to music and instead prefers to actually own it, with digital files that live on my computer and whose availability isn’t at the whim of some record label or artist who might suddenly decide to take it down. And when I’m commuting to work, I also don’t want to have to depend on the vagaries of my phone signal to listen to music were I to set up some sort of streaming-from-home thing. As a result, I manually plug my iPhone in to my laptop and sync my entire music library to it, so I have a full copy of everything that doesn’t require an internet connection at all.
Back when Apple first started using AAC as its audio format of choice for the iTunes Store, I ripped all my CDs at 160Kbps to save space and improve audio quality over the MP3s I’d previous been using, but it turns out on good headphones (or good speakers) 160Kbps is actually not all that good quality, particularly around the highs. Around 2018 or so I decided to re-rip all of my CDs again this time in Apple Lossless format so they would be a fully archival-quality copy and if anything came along that improved on AAC I could just encode a copy of the original lossless in that new format.
In 2017 I had started buying music primarily from Bandcamp, and a couple of years after that I realised that they offered downloads in Apple Lossless format too, so I redownloaded everything as lossless and the size of my iTunes library quickly ballooned, to the point where I needed to enable the “Convert higher bit rate songs” option for syncing the music to my iPhone or it wasn’t all going to fit, even on a 256GB iPhone.
With all of those points above, I’d been doing all sorts of screwing around with the underlying music files to ensure that I could keep all of the Music.app playcounts and date added metadata and such but with the underlying file being the new lossless version. I don’t know if there’s a better way of doing it, but my process for the Bandcamp-sourced files involved quitting Music entirely, completely deleting the original crummy format files (as in moving them to the Trash then emptying it) and dropping the new lossless version in its place, then opening Music.app and doing a Get Info on the first song in the album. It pops up with a “The file could not be found, do you want to locate it?” message, then I’d navigate to the new lossless version and select that as the file for that song. Rinse and repeat for each song in the album.
And just to add some more screwing around to the mix, recently I’ve been checking out the self-hosted music server software Navidrome and getting my tagging in order with MusicBrainz Picard, since the MusicBrainz database is primarily what Navidrome uses to identify songs, which in turn involved getting Music.app to refresh its metadata from the underlying files.
Yesterday I decided to make a clean start with the music syncing to my iPhone and turned it off entirely so all the music would be deleted, then turned it back on again and kicked off a brand new sync. I’ve been syncing music like this since the days of the original iPod when there was no other option to get music onto your iDevice, but with the rise of Apple Music it appears that Apple has been paying very little attention to making sure the sync process works flawlessly and my sync wasn’t problem-free, out of a library of 8586 songs I ended up with 21 songs that failed to sync with a “<SONG> could not be copied to the iPhone because the file could not be converted” error, and another 44 that failed with “<SONG> could not be copied to the iPhone because the file could not be found”.
Fixing the failures
The files were all there in Music.app and could all be played perfectly fine on my computer, so it was clearly something weird going on with the sync process. I went through and checked the “File could not be converted” songs first, and it turned out to be about half the songs off just three of the albums I had ripped from CD as Apple Lossless, and one single song I had ripped from another CD. Looking at the underlying song files in the Finder, I noticed a strange detail: all of the ones that failed ended in ” 1.m4a”, so the song “Tear Down The Walls” was 01 Tear Down The Walls 1.m4a instead of what I’d have expected which was 01 Tear Down The Walls.m4a (the 01 coming from it being the first track on the album). I have Music.app set to automatically manage and name the underlying files based on the ID3 tags, so I did a Get Info on the whole album and added an exclamation mark to the end of the album name, which then triggered iTunes to update the folder and filenames to match the ID3 tags and removed the ” 1″ at the end of the filenames. I then did another Get Info and removed the exclamation mark, repeated the process for the other problem albums and then resynced, and all of them synced successfully.
Even more strangely, this also fixed all of the entirely separate set of songs that had failed with “File could not be found” errors! I got a new set of songs with that same error, but this time it was one single album that I’d just re-bought as lossless from Bandcamp and had forgotten to do the “relocate files” dance I described above and once I fixed that it worked fine too. I have no idea why that didn’t show up in the initial sync though.
So I guess in summary this is less of a “This is a 100% foolproof fix” and more of a “Trying fiddling with the metadata and maybe it’ll kick things into gear” suggestion. 😅
it’s incredibly disappointing to me that across android and iphone there is no solid solution for offline listening. i think in the big streaming age these companies have lost sight of the way people individually like to listen to music as opposed to funneling everyone into the same two apps. i tried on android and thought i found a good offline music app, it had 4.8 stars with thousands of reviews so i thought i was set. the second i tried to navigate to an album i got a fullscreen, TIMED ad. im hoping things can improve soon. the recency of this blog post gives me faith that people are still persevering and maybe there will be better solutions in the future
Yeah, I couldn’t agree more. I’ve started playing around with some iTunes alternatives to have an escape route just in case, Navidrome seems decent but you have to rely on third-party apps for mobile use, and they’re all a bit clunky compared to my preferred iOS music client Cs Music. Plus Navidrome is still primarily a personal streaming server, you can transcode for offline listening but I haven’t found a client that gives you any sort of simple “Give me all of the music offline in one tap” option.
…though having said that, while typing this out I just remember that Navidrome has smart playlists in development and while there’s no UI yet, I wonder if I could create a smart playlist that’s just all my music, then I might be able to tell play:sub to just download everything in that one playlist… 🤔 This will require some experimenting!
Oooh I think my idea worked! I dropped a file called
All Music.nspinto my iTunes Music folder with the following content:{ "all": [{ "gt": { "playCount": -1 } }], "sort": "artist,album,year" }Then Navidrome picked it up, and I’ve currently triggered a mass download of that whole playlist which from looking at the logs appears to be transcoding everything successfully.
I think next will be seeing if I can import all of my play counts from iTunes into Navidrome… I think I might sense another blog post coming on, haha.
Okay, I’ve gone ahead and done it and moved onto Navidrome. 😁