This page shows the source for this entry, with WebCore formatting language tags and attributes highlighted.


TuneSync 2.0


<abstract>A few years ago, I developed a utility for syncing ratings, play counts and last-played times between the same set of songs on two different iTunes installations. I haven't worked on it in years, but it's quite well-written and full-featured and has rich <a href="{data}/software/tunesync/docs/2.0/">documentation</a> with a tutorial. You can <a href="{data}/software/tunesync/downloads/">download</a> the Windows-only software for free.</abstract> I originally wrote this software because I was listening to a lot of music at work and rating it. When I got home, I didn't have these ratings anymore because they were only stored on my work laptop. Likewise, the ratings at home weren't making their way to my laptop. And it wasn't only ratings: play count and last-played date also help the digital DJ decide what to play. That was a problem when I decided to select a playlist from the machine in the living room: it had no ratings and couldn't decide very well which music to choose from its collection. And it's not just user data like ratings: there's also the matter of song data, like album and genre, which are often wrong or incomplete. If you fix it on one machine, your---or your friends or partner---might appreciate having the improved tag information for free. Since then, the world has moved on a bit, with the <i>Home Sharing</i> feature letting me play music from the office machine on the living room player and services like <i>GrooveShark</i> letting you keep your music collection in the cloud. However, I still have a couple of iTunes libraries around and still want to sync them now and again to have the most up-to-date information from which to launch a smart playlist or run the <i>Genius</i>. On top of that, a lot of people have Apple gadgets that work only with iTunes. There are a lot of iTunes libraries out there that could probably benefit from syncing. See "<a href="{data}/software/tunesync/docs/2.0/whoneedstunesync.html">Who Needs TuneSync?</a>" in the documentation to find out more. What TuneSync does is load two iTunes library files, compares them using various heuristics and lets you synchronize selected information between the two. You can then store the changes to both files and force iTunes to reload its metadata from this library. You are in full control over the information that is synchronized from one library to the other and vice versa and you can even edit information directly if neither side is 100% correct. Though the software was developed years ago, it still loads iTunes libraries for versions as recent as 10.2.x. The two libraries I compared had about 8000 and 7500 songs respectively (about 15-16MB XML files) and TuneSync was to load them both in less than 15 seconds. Memory usage was about 150MB and the application responded smoothly and quickly for all operations. TuneSync runs on any reasonably modern Windows operating system. The best place to go for questions is the <a href="{data}/software/tunesync/docs/2.0/">documentation</a>, but here's a brief overview of the functionality (with screenshots). <h>Loading Two iTunes Libraries</h> First you choose the two project files: <img src="{att_link}comparing_magni_and_ostara.png" href="{att_link}comparing_magni_and_ostara.png" align="center" class="frame" title="Choose project files"> Once the files are loaded, the libraries are compared with the default heuristic (which is relatively strict) and TuneSync presents you with a comparison view. The one shown below is "Matched Songs", but you can also see just the songs in each libary, all songs or unmatched songs too. See <a href="{data}/software/tunesync/docs/2.0/defaultviews.html">Default Views</a> in the documentation for more information. <img src="{att_link}initial_view_after_comparing_magni_with_ostara.png" href="{att_link}initial_view_after_comparing_magni_with_ostara.png" align="center" class="frame" title="Initial View After Comparison" scale="50%"> <ul> Exact matches are in black Matches where the song data differs are in red (e.g. same name, but different genre) Matches where the user data differs are in purple (e.g. different ratings) Changed data is in blue (occurs after a manual edit or a synchronization) See <a href="">Column Data Colors</a> in the help file for more information. </ul> <h>Filtering and Analyzing Comparison Data</h> As mentioned above, there are tabs for the common filters---all songs, songs in library one, library two, matched songs and unmatched songs---but in each view you can also search and filter by other criteria. <img src="{att_link}song_name_differs.png" href="{att_link}song_name_differs.png" align="center" class="frame" title="Filtering by match type" scale="50%"> You can filter by type of match or simply by typing in the filter box to restrict the songs shown in any view. The screenshot above shows only songs that have different song data for which there is only one match. The various fields are colored according to the schema outlined above. See <a href="">Songs in a Library</a> and <a href="">Column Data</a> in the documentation for more information. <img src="{att_link}song_differs_properties.png" href="{att_link}song_differs_properties.png" align="center" class="frame" title="Song Properties Differ" scale="50%"> The screenshot above shows the song properties that you can show by selecting one or more songs (if you select multiple songs, the details are collapsed and summarized as much as possible). See <a href="">Song Info Pane</a> and <a href="">Selecting Multiple Songs</a> in the documentation for more information. <h>Matching & Synchronizing</h> The default matching heuristic is quite strict and is best for libraries that have either been copied from one another or been synced before. Those matches are easy to synchronize (see below) without too much worry that there are invalid matches. <img src="{att_link}match_window.png" href="{att_link}match_window.png" align="center" class="frame" title="Match Window"> However, you can ask TuneSync to perform additional matches using custom heuristics, shown above. See <a href="">Match Options Window</a> in the documentation for the more information. <img src="{att_link}matched_phonetically.png" href="{att_link}matched_phonetically.png" align="center" class="frame" title="Matching Phonetically (more matches)" scale="50%"> Depending on the options chosen in the <i>Match Window</i>, you will see a lot more red here and will have to be more careful which matches you accept. See <a href="">Match Results Window</a> in the documentation for the more information. <img src="{att_link}synchronize.png" href="{att_link}synchronize.png" align="center" class="frame" title="Synchronizing Matched Songs" scale="50%"> Once you have all of the matches set up correctly, you can synchronize data between the libraries. You can either do this manually by using the <i>Song Info Pane</i> at the bottom of the window or by synchronizing multiple songs using certain criteria, as shown in the screenshot above. See <a href="">Synchronize Individual Data</a>, <a href="">Using the Info Pane</a> and <a href="">Synchronize Multiple Data</a> in the documentation for more information. Once you've matched and synchronized songs, you can use the filters to search for modified songs in either library to verify the changes before exporting them back to the source files. If you're running TuneSync on the same machine as the iTunes library that you're replacing, you can have it replace the library for you; otherwise, you have to copy it to the proper location manually. See <a href="">Tutorial: Checking Songs</a>, <a href="">Check Songs</a>, <a href="">Import from iTunes with TuneSync</a> and <a href="">Import from iTunes by Hand</a> in the documentation for more information.