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?


jChris said...

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

J said...

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.

Dan Kantor said...

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.

christiand said...

There's an AppleScript here:
which should do the trick (unless that's the script you meant)

J said...

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:

Mark Collier said...

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


swinter said...

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."

swinter said...

I think this is the same thing as above:

(swinter = shawnb)

christian said...

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).

J said...

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)
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
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

Shane said...

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