Mac App v2.30: AppleScript Improvements

The v2.30 release of the Rdio Mac application contains several AppleScript improvements:

  • Player position should use seconds, not percentage (#80)
  • Ability to control repeat state (#47, #80)

Checkout the full AppleScript reference and download the Mac Desktop app. Continue reading for how to use the new functionality.


To seek to the 30-second mark:

tell application "Rdio"
    set player position to 30
end tell

To retrieve the current position in seconds:

tell application "Rdio"
    set playerPosition to player position
end tell

To control the repeat state:

tell application "Rdio"
    set repeat state to STATE
end tell

Where STATE can be: one (current track), all (current album or playlist), none.

∞  June 09, 2014 — 10:48AM

Posted by Devin Sevilla at 10:48AM in Releases |


Recap: HackUCI

Entrance to HackUCI

HackUCI took place Memorial Day weekend and featured over four hundred students from UC Irvine and other local universities. Orange County's tech hub, PeopleSpace, was the perfect environment for the hack day. They provide a place for learning to program, launching your startup, and finding other developers to connect with.

To kick off the weekend Stuart McClure, author and founder of Cylance, gave an inspiring talk about his journey as a developer. He offered advice to young developers to never give up and take failure as a learning experience.

Stuart McClure speaking at HackUCI

The organizers kept the hackers will fed with snacks and food trucks throughout the event. Friday night had bubble tea which proved to be very popular (this was the first time we've seen bubble tea at a hack day). Saturday night had delicious pastries from 85°C Bakery Cafe. Including an interesting hot dog and cheese pastry as well as cheese danishes.

Here are the projects that used the Rdio API:

  • Mood Music
    Transforming every web page to music for your ears. A Firefox extension that analyzes the content of the page and plays music that matches it's mood. Winner, best use of the Rdio API.

  • Fiestafy
    Music by everyone, for everyone. Text or email your suggestion to this collaborative DJ application. This solo hacker built a web app as well as an Android application.

  • Playlist manager for RdioSource
    Easily add tracks to a playlist via email or text message. Great for capturing music on the go.

Check out the full list of projects on ChallengePost.

Team Mood Music at HackUCI

Oculus Rift Skateboard at HackUCI

PeopleSpace Logo

∞  June 02, 2014 — 1:42PM

Posted by Devin Sevilla at 1:42PM in Events |


Recap: Music Hack Day San Francisco 2014

Despite there being a number of other tempting or equally intellectual events this weekend in the Bay Area, the turnout for Music Hack Day SF was spectacular.

Devin points out something about the API : photo by Gracenote

The event kicked off at GitHub HQ at 10AM with sponsors filling a huge table with shirts, stickers, and other swag. After breakfast and plenty of API presentations, developers went straight into hacking. The GitHub office had plenty of non-coding activities (including pool and ping pong) that allowed hackers to take a break and socialize. As the sun set, the bar opened and a bartender started mixing cocktails.

Many hackers took the provided bus to the Spotify office for overnight hacking. By 9:30AM Sunday most developers were back at GitHub HQ putting the finishing touches on their project. Here are the projects that used the Rdio API:

  • PaRdio - GitHub, Site
    PaRdio was an interesting take on the classic party DJ app- this time letting users text in requests and the host control playback via the Pebble watch Winner, best use of Rdio API

  • FestiFind
    A beautifully designed and executed app that collected local festival information and dynamically created sample playlists for the events based on the lineup.

  • GeoMisique - GitHub, Site
    Lets you record where you listen to music using Google Maps and tag it.

  • CheckBoxx - Site
    A tool that lets bars play music to best satisfy the present patrons' tastes.

  • Vocalize
    Lets you look up lyrics based on a phrase and embed a track in the phrase to send to friends.

Team PaRdio presents : photo by Gracenote2

May thanks to Github for hosting the event and providing a number of delicious meals for the hackers. Also, thanks to Ching-Wei of Gracenote for letting us use a couple of the lovely photos taken at the event for our blog post.

A list of all of the hacks is up at Hacker League.

∞  May 21, 2014 — 10:29AM

Posted by Rebecca Stecker at 10:29AM in Events |

iOS SDKReleases

iOS SDK v2.0.1

Version 2.0.1 of the Rdio iOS SDK includes the following improvement:

  • Rename initPlayerWithDelegate: to preparePlayerWithDelegate: to prevent issues with ARC

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  May 15, 2014 — 5:08PM

Posted by Devin Sevilla at 5:08PM in iOS SDK, Releases |

iOS SDKReleasesTips & Tricks

iOS SDK 2.0.0 Release and Migration Guide

Today we're releasing version 2.0.0 of the iOS SDK. As you might've guessed from the bump in major version number, this release contains some API changes that prevent it from being a total drop-in replacement. So, after we cover the changelog, we'll show you how to migrate your existing app over to the new version.

  • Support for 64-bit builds. #98
  • duration on RDPlayer is now KVO-compliant. #106
  • Fix seekToPosition: to defer seeks that occur before the buffer is ready. #65
  • Fix an infinite-retry bug that occurred when the last queued track was unstreamable in the user's region.
  • Completely remove deprecated authorizeUsingAccessToken:fromController: method.
  • Separate RDPlayer initialization from Rdio initialization. This means the player must be initialized explicitly, which prevents apps from automatically making Rdio API calls on app load.
  • Use NSError in delegate methods that involve errors. The errors returned will usually be from RDErrorDomain, and contain a code value from RDErrorCode.
  • Introduce two new methods to RDPlayer for observing playback position and SPL for the current track. These signatures are based on AVPlayer's method with a similar name:
    • -(id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block
      The passed in block is invoked periodically every interval on the queue specified. The passed in time parameter is the player's position in the current playing track.
    • -(id)addPeriodicLevelObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(Float32 left, Float32 right))block
      The passed in block is invoked periodically every interval on the queue specified. The passed in left and right parameters contain the channel's volume in decibels.
    • Support removing periodic observers with:
    • -(void)removeTimeObserver:(id)timeObserver
    • -(void)removeLevelObserver:(id)levelObserver

Migration Guide

Since every app is different, this migration guide won't cover every use case, but it should cover the basics.

Replace Rdio.framework with the new version

We start off with baby steps. Replacing the Rdio framework in your Xcode project should be straight forward — it's what you've had to do with 1.x updates anyways.

Add CoreMedia framework

The new version of the SDK introduces a dependency on CoreMedia.framework. To add it, select your app target and scroll down to the Linked Frameworks and Libraries section, and click the +. Type 'coremedia' into the search bar, and select CoreMedia.framework from the list. Xcode 5 should automatically add CoreMedia to the "Link With Binary Libraries" step in "Build Phases", but if you feel like double checking, head over there and do that.

At this point you should be able to build your app without hitting any linker errors, but you might still have some warnings around your delegates.

Update your RdioDelegate and RDPlayerDelegate objects

The signatures for -(void)rdioAuthorizationFailed:(NSError *)error and -(BOOL)rdioPlayerFailedDuringTrack:(NSString *)trackKey withError:(NSError *)error have changed to expect NSError objects instead of NSStrings. Find your implementations of these, update the method signatures, and have a look at the [RDErrorCode](LINK) enum to figure out which errors you should be checking for.

If your app does not incorporate playback, then congratulations! You're done! Otherwise, there's one more crucial step.

Initialize the Rdio Player

As we mentioned in the changelog, the RDPlayer object now requires explicit initialization. When and where you do this will depend on what your app is and how you expect your users to play music. We've done this in the Hello app after the main view controller loads, but if music playback isn't the main focus of your app, you may want to wait until the user has taken some action to indicate that they'll be listening soon.

The line you'll need to add is: [yourRdioInstance initPlayerWithDelegate:someRdioDelegate];

Note that your app should re-initialize the player after login to insure that the player doesn't accidentally contain any stray buffers of 30 second samples. Also note that re-initializing the player will create a new RDPlayer object, so you may need to update any local references to rdioInstance.player.

∞  May 14, 2014 — 11:15AM

Posted by Kevin Nelson at 11:15AM in iOS SDK, Releases, Tips & Tricks |

iOS SDKReleases

iOS SDK v1.3.7

Version 1.3.7 of the Rdio iOS SDK includes the following improvement:

  • Fix a crash when canceling RDAuthViewController #118

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  May 06, 2014 — 10:59AM

Posted by Devin Sevilla at 10:59AM in iOS SDK, Releases |



What: Hack UC Irvine
When: May 23 – 25, 2013
Where: Bren Events Center @ UC Irvine100 Mesa Rd., Irvine, CA 92697

Looking for something to do Memorial Day weekend? Look no further than HackUCI. Hundreds of college students from around Southern California will get together at the Bren Events Center at UC Irvine. Hacking starts Friday evening and ends Sunday, leaving the Monday holiday to catch-up on sleep.

Event location map

∞  May 01, 2014 — 5:09PM

Posted by Devin Sevilla at 5:09PM in Events |

Android SDKReleases

Android SDK v2.0.1

Version 2.0.1 of the Rdio Android SDK includes the following improvement:

  • Fixed issue where music ceases to play after receiving a 404 when retrieving a track

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  April 30, 2014 — 1:20PM

Posted by Rebecca Stecker at 1:20PM in Android SDK, Releases |


Music Hack Day Barcelona 2014

What: Music Hack Day Barcelona 2014
When: June 12 – 13, 2014
Where: Fira Montjuïc @ Sónar 2014Av. Reina Maria Cristina, 08004 Barcelona, Spain

Music Hack Day Barcelona returns for Sónar 2014. Register today before the event fills-up and make sure to join us for a pre-hack day meetup the afternoon of June 11th. Sónar 2014 has an amazing line-up and Music Hack Day Barcelona is looking to be the best yet. See you there!

Event location map

∞  April 24, 2014 — 11:05AM

Posted by Devin Sevilla at 11:05AM in Events |


Recap: HackIllinois


Along with LA Hacks, we had the pleasure of attending the first (hopefully annual!) HackIllinois at the University of Illinois at Urbana-Champaign this last weekend. The event was entirely student run, spanned two buildings, and was attended by over 700 students. In-between waves of Nerf gun battles, delicious food, and a lot of Let It Go (or Let Me Code if you're brave) a ton of hacking was had.

  • Shoutout - Github
    Shoutout was a fun little app that acted like the Marauder's Map from Harry Potter. Pan around a map with your iPhone to see real time movement of your friends and little thought bubbles for what they're up to. If someone shouted that they were listening to something, you could hear that track via Rdio. Winner, best use of Rdio API

  • listen local - site, GitHub
    A beautiful looking page to explore local artists for a given location. Overlays a sampling of artists on a Google map of the location.

  • Lusication
    A custom player that finds listeners near by and showed you what they were listening to, while letting you vote on what you approved of.

    Provides a pick-me-up & motivation for your specific situation using quotes, images, and music.

  • radeocure An ongoing project that's a custom music exploration tool that has it's own recommendation algorithm- now backed with Rdio music!


There were a number of great hardware hacks as well, from modded microwaves to fancy light switches. This post's leading image is from team ILLights (Raj V. & Thomas D.) and a special shoutout goes to team Predacons (Mike B., Ismael R., Jake D. and Jimmy P.) who worked late into the night trying to hook an Rdio web player up to an Arduino input.

A list of all of the hacks is up at ChallengePost.

∞  April 18, 2014 — 8:00AM

Posted by Rebecca Stecker at 8:00AM in Events |