Peer to speaker is an open p2p application that enables you to listen to music on demand. No more need to mantain an mp3 collection, your collection now is virtually all existent music, and you can access it from any computer connected to internet.
With p2s you can search for an artist, select one from the list, click in one of his albums and start listening to it! is that easy.
It has also some minor cons, basically program dependencies (Java and flash player), webservices dependencies (musicbrainz and musicdns), and other requeriments intrinsical to p2p networks.
- Audio on Demand: No need to wait for the download to finish, select an album and begin listening to it!
- Open source: If you are a programmer you can inspect the source code and even modify it
- Peer to Peer: There is not a central server on the network, so it's almost impossible to shut down p2s. There is no need to spend thousands of dollars to create a big network filled with content, as the resources are contributed by every user. Moreover, the network is fault tolerant as it's completely distributed so there isn't a central point of failure.
- Multiplatform: Since the program is written in the Java programming language it runs on almost every platform (operative system and cpu architecture), including the major ones (windows, linux, mac OS and solaris).
- Core/View separation: There is a clean separation between the core of the program and his view. You can even have the two parts of the program running on different machines. For instance you can run the core in a central machine and run the interfaces in other machines. This also permits to write different interfaces without touching the core.
- Audio fingerprints: P2s uses audio fingerprints to identify tracks using the musicdns service. If a song is encoded using diferent codecs, the resulting mp3 file will be different, but the audio fingerprint won't. Moreover, the web interface uses the musicbrainz database in order to let you select an album in a very clean way.
- Need to download a program: The p2p nature of the program forces every user to be running a program. There exist some websites that lets you to listen to music on demand without any software, but those websites won't take advantage of the p2p features (they are at risk to be shut down, need a bandwith and resources proportional to the number of users, need to host all the music, ...)
- Open ports: P2p programs acts as little servers are listening to a specific port. It's very common to share an internet connection with multiple computers behind a NAT router. If this is your case, you will need to map the port 8090 of the router to your computer. If you can't do it, you will still be able to use the network but you won't be able to connect to other NATed peers so you will have less content available.
- Depends on the JRE: We have chosen the Java programming language to create the program, so it requires the Java Virtual Machine. When the program has reached the 1.0 version, we will do a port written in C++ that will avoid this dependency.
- Depends on the flash player: Depends on the macromedia flash player.
- Depends on Musicbrainz and Musicdns: It depends on the musicbrainz database and the musicdns service. If any of this services goes down the program won't work properly.
There are several objectives planned in this project. The main one is to create a clean music player that hides all the complexities that still now have to be done to listen to an album. All this tasks can be completelly automated (search for the mp3 files on p2p networks or servers (or search into our filesystem in case we already download them), filter the results, download the most likely files, wait for the downloads to finish, check if the files are what we was looking for, add them to a music player and recreate the playlist of the original album, etc...). This tasks are better done by a computer program, and this is what p2s does, the only human task to be done is to tell p2s which album do you want to listen.
The streaming of videos and movies is also planned to be supported in the network. The result will be a p2p version of the popular youtube website.
P2s is creating his own p2p network, but a good user base is needed for it. P2p networks have a lot of advantages, but also a big inconvenient, they are really hard to deploy. When the P2s project reaches a more mature state it will be separated into two projects: a p2p library, and the p2s project that will use it. After that, every programmer will be able to use the library and consequentially the already deployed p2p network. Our hope is to promote the use of p2p networks.
The program itself has no graphical user interface, but you can interact with it with a web interface. Here is an example of how it looks like in the firefox browser.
You can get the software here. If you want to run the program without installing it, select the p2s-VERSION.jar file. If you want to install it, then download p2s-VERSION.exe. If you don't have the java virtual machine installed, you can download the version with a bundled JRE, named p2s-VERSION-jre1.6.exe.
If you are using windows I recommend to use the installer to install the program . Just download it, run it, follow the steps, and you are done. If you are a linux or macos user, download the multiplataform version (not yet available).
I'm not sure if this section is really necessary as the program is damn easy to use. Since you are reading this I assume you can use a web browser, right? Ok, then you can use p2s as well !
If you have the program installed, just start it through the windows start menu, a web page will appear. If for any reason it doesn't just go to http://127.0.0.1:8091/ (the program must be running).
If you have the welcome page of p2s visible you are almost done, just search for an artist, select one from the results, select an album and begin listening to it!
What does p2s stand for?
Peer to Speaker. Is a combination of the concepts Peer to Peer and the fact that the content delivered is inmediately reproduced on the speaker.
If you want to contribute in some way to the project you are welcome, please contact me. Here is a list of things you can do to help.
- Use the program: Using the program is a very good way to help as it will make the network bigger, with more content and resources.
- Buy Albums: If you like very much some specific artist, you can help him by buying his albums. If you buy it using the amazon link provided by the program you will also be helping the p2s project.
- Create an interface: The official version is shipped with the web interface, but if you want you can write your own (graphical, text mode, ...) and publish it. The language choosen is up to you as the communication between the two processes is done through sockets so there is no need to link toghether the two parts.
- Web design: I'm not very good at design so I prefer to leave this task to someone else. You can propose different layouts for the web interface of the program or even for this web site.
- Logo: We need a logo! The one you can see on top of this page is just a placeholder. Thanks Paula!
- Translate: A low priority task is to translate the program and the web site into different languages. I can translate into Spanish and Catalan, any voluntary out there to translate it to other languages?
You can send any bug reports, questions, suggestions, blames, insults or whatever you want to say to this address:
Note: you won't be able to copy and paste the e-mail address because it's an image that prevents to be gathered by spammers using web spiders.