Tuesday, January 10, 2012

Project Remote: Summary


What was Project Remote?
Project Remote was part of the Stoffi Hackathon 2011 and was the realization of a remote control app for stoffi desktop players.

The app used the REST-ful interface of Project Genesis to push changes in a users configuration to the server, which then pushed the changes to the client being controlled.



Authentication
The first part of the project was to securely connect to the cloud services of Stoffi. GTMOAuth, an open source OAuth library for iOS, was used to a accomplish this. To sign in, the user is presented with an embedded browser with the login page. This way, the user can also login using Facebook, twitter, linked in or other social networks thanks to the existing login system.



The second time you start the app, you will notice that no credentials are needed to login. The app automatically stores the authentication token and session information to restore a secure connection each startup. This information is, of course, erased if you choose to sign out of the app manually.



The remote
A one-view interface was created containing the various playback controls required. Several designs were tried and discarded and I ended up with a quite simple design that focuses on the most basic playback controls: current track, play/pause, previous/next and volume.


The design was created to give the feel of a remote control rather than a music player. This was achieved by removing direct playback control: The user cannot view his music library from the app. Instead, the app contains only the most basic interface elements required to remotely control a music player, similar to a stereo hardware remote.


Localization

The app was created with english as its default language and was localized for swedish using the native localization tools for iOS. The app will change the language automatically if you change the system language of your device.

The language files have a very simple format that can be directly sent to translators without any need of programming experience. The localization file currently consists of as little as 11 entries, making the translation work even easier.

Snap Play
To give the app uniqueness and "Wow"-effect, the Snap Play feature was added.


Snap Play allows you to hit "Play" without actually touching your device: When activated, the current track is paused and the app enters a listening mode that detects sudden peaks in volume. Once you snap your fingers, the current song starts playing.


The future of Stoffi Remote
The remote has a lot of room for improvement. Once Stoffi cloud services supports track history, queue and playlists, a lot of new functionality can be added. As the server is quite slow at the moment, all playback changes are quite delayed. Future versions of the app should display this to the user to give you a better feel of what's happening.

The current audio analysis of Snap Play is very simple and only registers changes in decibel. As a result, speaking can unintentionally trigger the feature. This can unfortunately only be fixed by adding pitch analysis, as speaking gives a very loud peak in volume. As a temporary safety measure, the feature is disabled if it detects too much background noise. Adding a better audio analysis function for this feature would greatly improve its "Wow"-effect and make it a much more impressive feature.

The app will be available for testing soon!