m3u Tools
9 years ago I purchased a cheap MP3 player that I used most days. When I first
got it I thought that I’d be doing well to get 4 years out of it. Well 4 years
later and the SD card capacity to price ratio had improved enough that I could
start using my FLAC
files directly rather than the having to convert them to
MP3
. Or at least I could if my MP3 Player supported FLAC
files, which of
course it didn’t.
At this point I was starting to think that I was going to have to keep on
converting my files to MP3
to use them in my player, or get a new MP3 player,
but then I discovered RockBox. Which, once
installed on my MP3 player, would enable it to play FLAC
files.
Well a week ago my old player stopped working, which means that thanks to
RockBox it had lasted 5 years longer than I thought it would. Or course MP3
players would surely have improved over the last decade, right… Turns out
the answer is “slightly”. My new player does support FLAC
files, which is
good, but other than that nothing else seems to have changed.
I also hadn’t realised just how much I’d gotten used to RockBox’s audio interface, where it would read out the menu options to you. When using my old player I rarely looked at the screen, and given that I normally use my player when I’m out walking, keeping my eyes on where I’m heading rather on a little screen is very helpful.
Unfortunately the new player isn’t supported by RockBox (yet?). So I had to come up with a new way to operate that minimised the time I had to look at its screen. What I really wanted was a simple option that would play my albums in alphabetical order. Of course a simple Play All Albums option wasn’t something that the new player had, but it does support playlists (then again so did my old player, I just didn’t use it as RockBox’s audio interface worked so well for me).
The new player’s playlists are M3U
files, which really are just text files
containing an ordered list of paths to the files to be played. The player’s
manual says that you need to put the playlist in the same directory as the
files to be played, but a quick Google search confirmed that you don’t need to
do that as long as you make the paths in the playlist relative paths then you
can put your playlist in the player’s Playlists
directory and point to the
FLAC
files in the Music
directory structure - e.g.
../Music/Artist_1/Album_1/Track_1
../Music/Artist_1/Album_1/Track_2
../Music/Artist_1/Album_1/Track_3
../Music/Artist_1/Album_1/Track_4
../Music/Artist_1/Album_2/Track_1
../Music/Artist_1/Album_2/Track_2
../Music/Artist_1/Album_2/Track_3
../Music/Artist_1/Album_2/Track_4
So all I needed to do was to create a simple text file listing my FLAC
files
in album order. Luckily I store my music files in the following directory
structure:
<Artist>/<Album Title>/<Track Number> - <Track Title>
It’s a relatively sensible ordering and it has the unplanned benefit that a Perl script can build my playlist file just by walking the directory structure.
The resulting Perl script is available in the m3u-tools repository on GitLab.
The only major issue I encountered was with non-ASCII characters in the path, which resulted in the new player ignoring that entry. For this issue I took the easy path and simply had the script warn me about the file and I could go and fix up the file file path so that it just contains ASCII characters.
Now all I have to do is to remember to rebuild the playlist when I put new music on the player…