Overview -------------------- The program will play the same songs on everyone's computers at the same time. The program will check Nirnzon to see what songs are in the playlist. The songs in the playlist will be chosen by the users. When a user adds a song, they will choose from what is on their computer. The client will play those songs locally on that user's machine. Each client will then check to see if its user has the same song that has been added. If a user does have the same song on their computer, the program will play it locally as well. If a user does not have the song added on their own computer, their client will send a request to the adding user's client to upload the song. Once the song has been uploaded, the URL of the file will be sent back to the client that requested the upload. That client will then stream the song from the given URL, and also give an option to download the song. A user may remove songs they add to the playlist at any time. If a user wishes to remove a song another user has add, they can request that the song be removed. Their client will send that request to the user that added the song. The user that recieves the request can then choose to remove the song or not. Overall the program will act like internet radio. Users will not be able to seek, skip, or pause songs. Users can close the client at any time. Closing the client will only cause uploaded songs to be deleted, other than that the playlist will work the same for the users that are still connected. If a user joins a playlist that has already been established, their client will get the playlist's info, and wait until the currently playing song ends before it starts playing. The user has the same abilities as the current users right from the start, as well. Users can have multiple playlists. Obviously, they can only listen to one at a time, but the info of each will be shown, and they can switch at any time. This will allow for a different set of songs for users to listen to. If all of the members of a playlist have closed their client, the playlist will be deleted as well as all its info and uploaded songs. This is just so the server doesn't fill up. [ The Client ] - Will look similar to iTunes - Will have sidebar with a list of 'playlists' [ Playlists ] - Will be populated with songs chosen by members of the playlist - Will be similar to a chat group - Users will 'add a playlist' (join a group) - Users will modify the playlist in a democratic manner [ Songs ] - Will be added by members of the playlist - User will add song from their own computer - Users can remove songs they add at anytime - If a user wishes to remove a song that has been added by another user, they can request the song be removed. The request will be sent to the user that added the song. - If a user adds a song other users do not have, the client will upload the song to nirnzon - Songs uploaded will be streamed from nirnzon by other users - Users who do not have a song will be given the option of streaming or downloading - To save the server, uploaded songs will only remain on the server while the user who uploaded is still using the client program. - Users can rate songs - Songs will, by default, play in the order they are added - Users can suggest a play order. Suggestion will be put to vote. Everyone in the playlist will be able to vote. 2/3 vote passes. - Shuffle option will be availible. Users will vote on wether or not to use it. [ Server ] - The server will save playlist while at least one user is using the client. - The server will communicate between the clients - Users in the playlist - Requests and votes - Streaming URLs - Each playlist will have its own folder on the site. - Session will be contained within that folder. Alt Method -------------------- Flash is a possibility: Pros | Cons ---------------------------------|------------ - No need to download a program | - Less functionality - Better UI | - All songs would have to be on the server - Simpler sever interaction | - Uploading to the server would have to (for the program) | be done manually be the user. - Sync-ing would be easier | - Audio quality could suffer