Friday, August 17, 2007

iTunes Annoyance of the Day

All I want is a simple "enqueue" function. I don't want to build a playlist... I just want to be able to find a song and either "play next" or "put at end of current queue". Winamp is great at this, but alas... I'm on a Mac and I'm not going to run Parallel's just for this purpose. I think Songbird probably does this, but I've got an iPhone and Apple has been smart/underhanded enough to use iTunes as the sync agent for not only your music but also as the conduit into you calendar and contacts.

So... yes, Apple has once again used a proprietary system to lock me into a sub-optimized experience in my opinion. Fool me twice...

Anyone know of any hacks or tricks to get iTunes to queue up songs?

11 comments:

  1. Have you tried Party Shuffle? It's not perfect but you can bend it to behave like you're describing.

    ReplyDelete
  2. Yeah, but it's not the same. While I'm listening to a song I will think of another song that I want to hear. Which then triggers another idea for another song. As I think of them I want to dump them all into the queue and then be able to rearrange their order on any whim. Basically, I want it to work just like Winamp. But to no avail....

    I did find an AppleScript that will let me do a single shot "play this song" next, but it won't let me stack more than one behind that.

    ReplyDelete
  3. The only hack I know of is to load your collection into Streampad and queue it up there!

    Seriously though, lots of ppl come from iTunes and are a little confused with Streampad's Now Playing list. But I refuse to compromise. iTunes experience sucks.

    ReplyDelete
  4. There's an AppleScript here:
    http://www.macosxhints.com/article.php?story=20070419104324966
    which should do the trick (unless that's the script you meant)

    ReplyDelete
  5. christiand -

    Thanks, I tried pasting that into the ScriptEditor but it throws an error. Did you get that one to work?

    The one I'm now using is:

    http://dougscripts.com/itunes/scripts/scripts02.php?page=3#playselectednext

    ReplyDelete
  6. Anonymous2:25 PM

    I just started trying out itunes myself last week, and am running into this same limitation. Frankly, I find the application unusable without it!

    Maddening.

    ReplyDelete
  7. I found this blurb out on the internets, though I'm not sure if it's what you're wanting, or if you've already decided against this option:

    "Why not assign an empty playlist to party shuffle? Then iTunes will never shuffle in anything. I can queue up music to my hearts content knowing that iTunes will purge the played songs out. It's exactly the behavior I've been wanting - a low maintenance guided stream of songs."

    ReplyDelete
  8. I think this is the same thing as above:

    http://macslash.org/comments.pl?sid=4473&cid=71759

    (swinter = shawnb)

    ReplyDelete
  9. j -
    sorry, I forgot to mention there are two scripts there. The one that worked for me was the latter, posted by "jediknil".
    Save it from the script editor to ~/Library/iTunes/Scripts (create that directory if you don't have it). Next time you start iTunes the script will be accessible from the little script icon on the menu bar (next to Help).

    ReplyDelete
  10. christiand -

    Thanks! That second one is exactly what I was looking for. The minor skip of the currently playing song is a little annoying, but worth it for this added functionality. Now, I assume I can assign a hotkey to this script somehow? I'll see if I can figure it out, I don't think it is hard.

    For those looking for the script, if you are on a Mac, you past the following into the ScriptEditor program and then save it into your Library > iTunes > Scripts folder (you many have to create the "scripts" folder if you don't already have one.

    tell application "iTunes"
    set currentSource to container of view of front browser window
    if not (exists playlist " Queue" of currentSource) then
    set queuePlaylist to (make new user playlist ¬
    with properties {name:" Queue", shuffle:false} at currentSource)
    else
    set queuePlaylist to playlist " Queue" of currentSource
    end if
    set curtrack to {}
    if player state is not stopped then
    if current playlist is not queuePlaylist then
    delete tracks of queuePlaylist
    set curtrack to (duplicate current track to queuePlaylist)
    end if
    else
    delete tracks of queuePlaylist
    end if
    if selection is not {} then
    set sel to a reference to selection
    duplicate sel to queuePlaylist
    end if
    if curtrack is not {} then
    set playPosition to player position
    set curState to player state
    play curtrack
    set player position to playPosition
    if curState is paused then pause
    else if tracks of queuePlaylist is not {} and (player state is stopped or current playlist is not queuePlaylist) then
    play first track of queuePlaylist
    end if
    end tell

    ReplyDelete
  11. Did anyone ever figure out how to set up a keyboard shortcut for this?

    ReplyDelete