Here is a quick summary of our second small group meeting with Jay and Noam:
Overall, it was a productive meeting! We came in with a lot of implementation-based questions about our application, particularly focused on the issues of bluetooth connection, streaming, and data storage. Jay and Noam gave us a lot of good ideas about our application's infrastructure and encouraged us to start programming as soon as possible!
Where and how should the music be stored?
Over the past week, we have been thinking through the many possible ways to store music, considering the tradeoffs between performance, licensing limitations, and "clunkiness" for the user.
We thought about storing the universal library of songs in the local storage on each phone, but we would probably run into music licensing issues with Apple by going this route. We also considered a system where we scrape through each person's library to identify the songs in their local storage and then actually stream a digital version of each song from Spotify/Rdio/etc. However, this would require each user to have a Spotify Premium account, and there are many songs that users could have in local storage that are not available on Spotify.
Jay recommended that we try a model in which all songs appear to be accessible on each device (i.e. everyone can see them in their universal library, add them to the queue, etc.) but in reality, the streaming of the current song just "points" to a song in the local storage of the device that it actually exists on.
A quick whiteboard sketch of this model:
This would require us to store metadata (title, artist name, etc.) for each song in a collective database. We are still deciding between using Rails or just SQLite for this purpose, but we are meeting with Noam tomorrow to discuss it further!
How do we bluetooth-stream songs from multiple phones while having only one phone paired to the bluetooth in the car?
Jay told us that this will probably be one of our biggest challenges in creating this application. At first, maybe we will need to hook up wires between the phones in the car. We may also have to make a lot of assumptions about what is available in the Audi cars - for example, Jay pointed us to the Zigbee specification. How we are going to resolve this issue is still a bit of a mystery though...
Other ideas that came up:
- Our Audi liason Jake Hercules encouraged us to think about giving the driver of the car special permissions (i.e. volume control, veto power for songs). Jay noted that because our application could very well fit outside the scope of cars, we should generalize this idea to have different permission settings for different listeners. For example, if a group of friends was throwing a party but wanted everyone's input on the music, this group could give themselves veto power but allow everyone to add songs and vote on them in the queue.
- Pre-caching of song data can be used extensively to create a more responsive, customized experience for the listeners. We should think more about the different contexts in which we can do this (i.e. if a certain group of friends drives around together a lot).
- We should consider integrating our application with the Last.fm API, which has a large collection of album cover art and is useful in many other ways.
Tomorrow we are going to start programming, and we have a list of goals that we hope to accomplish by next week (see our Trello here).
Next up, you'll see the next iteration of our prototype!

No comments:
Post a Comment