iOS SDKReleases

iOS SDK v2.1.1

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

  • Fix for crash when handling playback and access token retrieval errors

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

∞  June 26, 2014 — 3:07PM

Posted by Rebecca Stecker at 3:07PM in iOS SDK, Releases |


Recap: Music Hack Day Barcelona 2014

The 5th Barcelona Music Hack Day took place last week, part of the Sónar+D music and technology festival. The event was well attened by people from all over the world and well documented- photos were taken by festival representatives as well as a number festival goers who were able to observe the hackers hard at work during festival hours.


And what a sight all the hacks in progress were! A lot of hardware was used to produce a number of sounds, songs, noises, and performances never before expereienced. Legos, Patchblocks, Enobio brain sensors, an Oculus Rift, Xth Sense sensors, Estrella Damm beer cans, monomes, LED wired shoes, and more were worked into the projects.


In the mix of it all, there were still a couple hacks that used the Rdio APIs to great effect.

  • crowdj
    Collaborative playlist creation and democratic tracks ordering for use at parties, playing music from Rdio. Winner, best use of Rdio API

  • webmlr - Site, GitHub
    A web monome to control and play audio samples from the server, your local machine or a track from Rdio. Also handles a real monome device input & output.

It helped that the Music Technology Group was right next door- a number of students attended, bringing a lot of deep technical knowledge of sound and music.


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

∞  June 20, 2014 — 11:48AM

Posted by Rebecca Stecker at 11:48AM in Events |

iOS SDKReleases

iOS SDK v2.1.0

Version 2.1.0 of the Rdio iOS SDK includes the following improvements:

  • Improve the stability of seeking
  • seekToPosition: now calls delegate when changing playback state
  • Two new RDPlayerDelegate methods: rdioPlayerSetAudioCategory and rdioPlayerSetAudioSessionActive: for controlling the audio session
  • Reduce log level from warning to info for "Got NSNull for result" message

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

∞  June 10, 2014 — 10:41AM

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


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 |