Tesla Tunes

An OS X Utility to copy your iTunes playlists and/or other music library, automatically converting Apple Lossless to Flac, to a destination for use with your Tesla Model S

View the Project on GitHub

A little Mac OS X utility I made for personal use, but thought a few others may also find it useful.

I wrote it to simplify a reoccurring need to get new music from my home music library into the external drive I use in my Model S. My library is mostly composed of Apple Lossless tracks, but also has a number of other formats as well, chiefly mp3, aac (m4a), and a few wave files. While it's easy enough to copy the whole library manually, there are a few issues that make that enough of a pain that I wanted something easier - thus this utility was created:

  1. Unfortunately the Model S doesn't (yet) handle the Apple Lossless format - though it does handle FLAC, another lossless audio format which Apple Lossless can be converted to.
  2. I don't want to convert all my Apple Lossless to FLAC in my home library, though I'd reconsider if Apple started directly supporting it.
  3. While other programs exist that can copy or sync directories, none of them worked automatically while also handling automatic conversion of just files that need to be converted, while leaving others alone.

So I built this. The app will scan a source and destination directory of your choosing (and remember it, so you don't have to choose it each time), and will copy or convert as appropriate all files in the source directory that don't exist in the destination directory (including in converted FLAC form, if the source is Apple Lossless).

My intent for this project, in addition to the obvious one of make life easier with the music library management, was to use it as a testbed for different implementations as well. I wanted to do largely the same small program in Swift, Objective C, and (to the extent I could) standard and portable as possible C++ (C++14 / 17 to be more specific). I also wanted to make Windows and Linux versions with as much common code as possible, as interest and time permits. That said, I wanted to go ahead and put this out there on the off chance it may help a few other people with the same library management goals as me.

While I want to work on this as a sample project for trying out different implementations, I'll try to keep that at the development playground level and not expose that stuff in any actual releases.

EXAMPLE: after copying a few small playlists