Middleman Syncs Virtually Any Device With iTunes On A Mac

Middleman Syncs Virtually Any Device With iTunes On A Mac

Mac only: With platforms like Google Android becoming more popular, lots of Mac owners have opted for non-Apple mobile devices leaving them without a good way to sync their music. Middleman is a free app that syncs any USB mass-storage with iTunes.

Nexus One portion of icon by Mihail Nikitin.

CD portion of icon by Mazeni77.

We’ve featured a few apps that sync non-iPod devices with iTunes on Windows, but the Mac scene is pretty bare. Lots of users don’t particularly like doubleTwist, Songbird is still as buggy as a warm June evening, Salling Sync costs a whopping $US20, and iTuneMyWalkman, arguably the best of the lot, takes 30+ minutes to sync every time (and has pretty much ceased development). Middleman hopes to add another free option to the slim selection out there. It may not be nearly as feature-filled or customisable as iTuneMyWalkman, but it’s much faster, and will certainly get the job done without too much hassle.

Middleman: Sync Any USB Mass-Storage Device with iTunes

Version: 0.1

Released: March 31, 2010

Creator: Whitson Gordon

[image url="https://lifehacker.com/assets/resources/2007/05/dl-icon.png" size="legacy" align="left"] Licence: GNU Public Licence

What it does: Lets you select any playlist from iTunes and sync the tracks contained within to any desired folder on your USB mass-storage device.

Installation: Middleman is a Service that can be launched straight from iTunes. To install, just mount the DMG and double-click the installer package.

Usage: Middleman requires a bit of initial setup. Due to the nature of iTunes and Middleman, you can only sync one playlist to your device at any given time. Syncing one playlist and then another will delete the songs from the first playlist and replace them with the second — thus, you need to put all the tracks you want to sync into one "master" playlist (note that if you prefer to sync your entire library, you can skip this step). My preferred way of creating the master playlist is to create a smart playlist that includes all the playlists I want to sync, but you can do this any way you want.

[image url="https://cache.gawkerassets.com/assets/images/17/2010/03/500x_middlemanservice_01.jpg" size="legacy" align="center"]

To sync, mount your device and select your master playlist in iTunes (or, if you're syncing your whole library, just select "Music"). In the menu bar, go to iTunes -> Services -> Sync Selected Playlist with Middleman. Middleman will prompt you for the folder on your device in which you want to sync your music. You can select any folder you want, including the root folder of your device — it will not delete the contents of the folder you choose; it will put the music in another folder named "Middleman" inside of it (your music will also be organised by folder the same way it is on your hard drive for the last two folders — if you have iTunes set to keep your music organised, this will be by artist and album. If not, it will just copy the last two folder names — this is just to ensure that duplicates aren't overwritten).

Middleman will show a dialog that says it is gathering information, which may take a few minutes depending on the size of the playlist you're syncing (the spinning gear in the menu bar shows that it's working). When it's done, your device will begin syncing (you'll see it all happening in a Terminal window), showing you the progress track-by-track. As always, the first sync takes a while, but subsequent syncs will only transfer new or changed songs (and will remove from the device songs no longer on the master playlist). When it finishes syncing, you may close or quit Terminal and unmount your device.

Note that Middleman doesn't sync any playlists in .M3U format or anything, just the tracks contained within — I couldn't find an easy way, with my knowledge and skill set, to sync the playlists themselves too. For now, you're best off using something like iTunes Export, which will convert any number of playlists from iTunes to .M3U format and put them on your device if you so choose. Keep in mind you'll need the tracks on those playlists synced to your device for them to work.

Middleman is a free download, Mac only. Due to the overhaul of Services in Snow Leopard, and the fact that I do not have a pre-SL machine to test on, I do not know if and how it works on earlier versions of OS X, so if you know/test it out, let us know in the comments. Middleman was made in Automator, using a number of Applescripts, and relies heavily on rsync, which is built into OS X. If you would like to view or edit the workflow in Automator, just navigate to ~/Library/Services and double click on the Sync Selected Playlist with Middleman workflow.

Bug reports and feature requests: I've thoroughly tested Middleman on my machine and a few others, but it's had little exercise outside of that. If you find a bug, have a got a good idea for a new feature, or know a little about Applescript and Automator and have a suggestion/improvement to offer, leave a comment.

Download Middleman


  • This worked for me the other day but I am receiving an error today. I’m not sure, but it may have worked before I upgraded to the newest iTunes (9.1)

  • Hi this worked really well until recently. There seems to be an error in the applescript:
    on run {input, parameters}
    repeat with i from 1 to count of input

    set songi to (item i of input)
    set posix_path to POSIX path of songi
    set AppleScript’s text item delimiters to {“/”}
    set albumfolder to quoted form of text item -2 of posix_path
    set artistfolder to quoted form of text item -3 of posix_path
    do shell script “mkdir -p ” & “/Library/Middleman_temp/Middleman/” & artistfolder & “/” & albumfolder
    do shell script “ln -s ” & quoted form of posix_path & ” ” & “/Library/Middleman_temp/Middleman/” & artistfolder & “/” & albumfolder
    end repeat
    end run

    where it tells me ‘songi’ is not defined. But I can’t for the life of me figure out why not as it appears to be defined as ‘item i of input’.

    Any suggestions?

Show more comments

Log in to comment on this story!