IntroductionAMUZI goals are:
- Being free in every way;
- Users can interact with the system, managing their songs, without stop what is currently playing;
- Users can download the songs without ceremony;
- Have a minimalistic and powerful API to enable access to all it's public content;
For instance, on Youtube, if you are watching a video and wants to search other stuff, the currently playing video will be interrupted. It can't happen with music. Users must be able to interact with the system without messing up what is currently playing. Despite it may represent big changes on the software architecture it is a fundamental characteristic.
Users can download the songs in MP3 without going through headache of wait X seconds or being tormented by zillions advertisement messages with big blinking download button that are there to distract them. As download the MP3 is a desirable thing, at AMUZI this feature must be at disposal.
Not only users can access the system's content through the user interface provided, they can also build software to interact with AMUZI.
Not all the features described on this document are implemented. This document aims to keep clear AMUZI's goals and peculiarities. The following sections explains how the main features works.
Music ObjectsThere is 4 different music objects:
- User's playlist
Is the simplest of all objects. Is basically composed by an URL that points to the media itself (mp3, ogg and so on). The track can also have a title, a cover image and information about it's duration.
A music is like a track but more abstract. While the track is just the media file, the music relates to the artist name and the music title that it represents. The music object is represented by a track.
An album is a collection of music objects. For each music disc recorded there is a corresponding album object.
While album is a set of music objects, the playlist is a set of tracks. Once a user have added a music to his/her playlist, what is trully added is the track that represents that music. Afterwards, if the music object have a new track to represent it, it won't affect the user's playlist.
MusicThe music itself is the simplest object....
In order to enable music objects to be shared it is a good decision to use the fragment part of the url to keep carry that information.
As the commands will be embedded on links outside AMUZI, it must be done so that AMUZI will recognize the wish to add an object.
Clicking on the share links have different effects depending if the user is or not new to AMUZI. For new users it will just show the shared object and allow him to play it. For returning users it will automatically add the object on the user's collection.
To have a better control over the command structure, it will be used IDs instead of the music objects names. This will keep the URLs short. The indicate the beginning of the commands, the char "!" will be used. Each music object type will be represented by a different letter:
- t - Track;
- p - Playlist.
The ID of each object is an integer. So, the string "p217" would represent the playlist that have ID equals 217. The user who click on a link like http://amuzi.net/#!p217 will only be able to view it's content if the playlist 217 is set to public.