Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
The purpose of the Social Music Discovery (SMD) application is to make it easy, simple and interesting to discover music. This might be music you own but it might also be music provided through one of the online streaming services supported.
It's all about discovering and finding specific music you are searching for, or finding interesting music based on similarity, common characteristics or by recommendations from friends. To make this possible it's important to be able to integrate information from various sources, some people like to keep the tags in the music files very detailed while other prefer to use onlie sources like Musicbrainz, Discogs and LastFM. Either way, to take this to the next level it's important to be able to combine all this information and use it to discover music.
To make all this enjoyable for everyone, it's also important to not be tied to a specific user interface, operating system or hardware device. Some people will like to discover music while sitting behind a computer while other prefers to sit in the listening room with a touch screen device or even a IR remote. To handle this, SMD offers open third party integration interfaces which can be used to build your own custom user interface or integrate your own player hardware.
So the main intention with SMD is to make it easy and interesting to discover music, basically SMD is for you if you answer "Yes" on one of the following questions:
- Do you find that the standard browsing on your Squeezebox isn't flexible enough ?
- Do you consume music from both your local library and an online streaming service which allows you to play individual songs ?
- Do you use different applications or web sites when listening to music compared to when finding something to buy ?
- Do you want to be able to share recommendations with friends and people with similar musical taste ?
- Do you get recommendations from friends but don't have any easy way to play them on your normal music player ?
- Do you miss an easy way to explore new music based on what you are currently listening to ?
SMD is about solving and making all this easier. We aren't there yet but to goal is to get there eventually. We usually try to find and analyze user needs through the Logitech community forums but if you give us your thoughts already now you can make sure your ideas and needs are considered. The easiest way to give us your ideas is to post in the announcement thread in the Logitech community forums.
Short and long term goals
The initial focus will be to:
- Support Squeezebox hardware players
- Have a data management interface usable on all major operating systems
- Have browsing/discovery support using all major remotes available for Squeezebox today
- Have browsing/discovery support through existing Android and iOS apps already available
On longer terms, the vision is also to be able to support things like:
- Other UPnP based hardware players
- Native Android, iOS and Windows user interfaces
- Third party UPnP clients
- Smart playlists and advanced mixing
- User friendly playlist management
- Ability to share and get recommendations from other users with similar musical taste
Functionality available already today
It is important to note that even if we at the current stage consider SMD good enough to give you a peek into the future, there are still much work left before it has reached its full potential. Due to this we consider the current release to be an early alpha release, mainly because we want to add a lot more library management and music discovery related functionality before is ready for an official end user release. To reach this goal we need more contributors to the project, so let us know if you are interested.
However, already at its current stage, SMD will give you the following advantages:
- Extensible persistent data storage prepared to store both tags, manually entered information and information imported from online services.
- Improved scanning of tag data, which currently supports:
- All tags supported by Squeezebox Server
- Extra tags like: PERFORMER, WORK, MOOD, STYLE
- Improved browsing using your standard Squeezebox remote. In addition to standard Squeeezebox Server menus this will give you things like:
- Separate Composers, Conductors menus.
- Support for Styles and Moods menus if you have STYLE or MOOD tags in your music files.
- Context menus making it possible to browse related information on any item and not just on songs. For example, browse to an album and then select to browse among the composers which have composed material on that album.
There are a number of fundamental principles which makes SMD different than anything else currently out there:
- Extensible information model
The information model in SMD is based on one strict part which contains data considered as facts, this is typically the information included when you buy a CD, but it also contains a less strict part where it's possible to store subjective relations and characteristics, such as an indication that one artist is similar to another artist.
- Integration with multiple information sources
SMD is designed with the mindset that information will come from many different sources, there is no single master source.
- Secure the information
SMD is also designed with the mindset that the locally managed data is critical. It would be a catastrophe if you woke up one morning and all the tags in your music files were gone. For similar reasons it would be even worse if the locally stored SMD database suddenly wasn't available. To handle this the SMD application will offer backup/restore operations to a textual format. Besides making it possible to do backup of the data, this will also make it possible to get access to the data if the SMD project for some reason wouldn't be maintained sometime in the future.
- Integration of local and online music
Another important aspect is that when you discover music it's rarely important where the music file is stored. It should be possible to seamlessly browse through your library, even if some parts are offered by an online streaming service and other parts are stored on a local hard drive. Think about it as if you are discovering music instead of just discovering the local hard drive. As long as the desired quality version is played when you hit play, it doesn't matter if it's provided by a streaming service or from the music file on your local hard drive.
SMD is focused at satisfying users that like to explore and discover music. For some samples how SMD would be used by different users, take a look at the following page:
Downloads and Installation
See the installation instructions for further information.
Is it or will it replace Squeezebox Server ?
The answer to this question is that it's going to replace the parts that are "broken", mainly browse menus, but it will continue to use the existing excellent streaming and player control functionality by integrating with Squeezebox Server. Initially it will be installed in parallel with the existing Squeezebox Server browsing methods so you can continue to use the standard browsing for your everyday usage and only use the SMD browse menus when you are doing more advanced music discovery. When you are satisfied with the SMD browse menus, it's also possible to completely replace the standard browse menus in Squeezebox Server with the browse menus provided by SMD.
It's impossible to know what the future will look like, but at the moment it's not a goal to replace the streaming and player control functionality of Squeezebox Server.
Will it replace some existing third party plugins ?
Squeezebox Server currently have a number of third party plugins partly similar area as SMD is targeting, for example:
- Various plugins related to import for information and browse menus
- Various plugins related to smart playlists and statistics
- Various plugins that integrate with online services providing information, for example:
- Various plugins that integrate with online streaming services, for example:
The goal with SMD is to either provide a good integration with these plugins or to completely replace them. Custom Scan and Custom Browse plugins will definitely be replaced as SMD intends to provide similar functionality but in a more user friendly way.
We haven't decided exactly how to handle the rest but at least in the near future we are probably going to focus more on integrating existing plugins than replacing them. On longer terms some of them are going to be replaced with SMD as we want a solution which also can work with non Squeezebox players, but that's something to decide when we reach this stage of the project.
Can I access SMD using my current remote ?
The goal is that music discovery related functionality should already from the beginning be possible to access using all major remotes available for Squeezebox today. This includes, Squeezebox Controller, Squeezebox IR-remote and all existing major iPhone/iPad/Android apps.
On longer terms the SMD application will offer third party interfaces based on JSON and/or UPnP making it possible for third party developer to integrate their favorite remote or application.
Why not make a central database common to all users ?
The answer to this question is that even if it's possible for multiple users to agree on facts related to music, it's very hard for all users to agree on subjective characteristics such as a relation if one artist is similar to another artist or the rating of a specific track. The central information about facts is also already available in sources like Musicbrainz or Discogs so there is no reason to implement another central source. Finally it's important to realize that central sources such as Musicbrainz spend a lot of effort to make users even agree on the parts that are facts. So even though a central database initially might feel like a good idea it's important to realize that SMD is about discovery and not about manually registering and maintaining facts which are already available somewhere else.
What's the current state, is there a release plan ?
At the moment the project is in a very early stage, some simple browsing functionality is working and offers more than the standard Squeezebox Server browse menus, but we are continuously working on adding more features.
Since all project members involved are working on the project during their spare time, we currently don't have a release plan with exact dates ("we're not big fans of deadlines, we have enough of them at work" :-). But to give some kind of indication, it's not going to be ready for an official release within the next couple of months, it will hopefully have a lot more functionality 6 months in the future and if everything works as plan it's going to be continuously enhanced during many years.
Functionality currently worked on
This might change but at the moment we are working on:
- A rich user interface to make it possible to add and modify information in SMD library without the need to use an external tagging tool.
- Making it possible to import information from some online sources for example Musicbrainz, Discogs, LastFM or Spotify into the SMD library and make it possible to use that information when browsing. Some examples of ideas:
- Import extra information from discogs.com for a selected album.
- Import all albums for a selected artist from Spotify and add it as any other album in your SMD library.
- Import the LastFM tags for a specific album or track and make it possible to browse your SMD library by LastFM tags set by other LastFM users.
- Browse menu configuration to make it possible for each user to reconfigure the menu structure so it's optimized for their needs.
- UPnP interface to make it possible to browse SMD library using your favorite UPnP client.
Functionality on a longer perspective
On a longer perspective we don't have any detailed plan exactly what's going to be supported, we will adapt the plan according to user requests and the needs among the project contributors.
Some ideas of possible functionality which have been discussed has already been mentioned in other places on this page, so these should give you some kind of idea what we have in the plan.
Is there some way I can help to speed up the development ?
Yes, currently we need more developers, primarily with Java skills but people with perl experience from previous Squeezebox development is also of great interest. Most of SMD is currently developed in Java using modern technology and design patterns, for example things like
- JPA 2.0 (provided through Hibernate)
- Eclipse RCP
- JAX-RS (provided by Jersey)
- TestNG/DbUnit/Jenkins (used for unit testing and continuous integration).
As databases we currently have support for
- Apache Derby
We will be happy to support other databases as long as they are supported by Hibernate. Since we have a tight integration with Squeezebox Server, the SMD application also includes some perl parts. If you think you could contribute in this area, let us know.
Besides core developers, we also need people with user interface design and graphical skills, so if you are interested and have experience in this area, let us know. You don't have to be a developer, it's enough if you are able to draw graphics or provide ideas/feedback regarding user interface design.
We also need people who are interested in helping with testing. It's important to realize that the project is in a very early stage at the moment, so be prepared for some struggling if you want to help in this area.
Since a key aspect of SMD is integration with existing online services, we are also very interested in involving people with knowledge or interest in this area.
If you are interested, contact any of the current project members or the project owner.