Introducing DSound: a decentralized sound platform using STEEM and IPFS

in #music7 years ago

Dear STEEM community,

I am new around here, but since I started to know more about the community I understood that this was the place I wanted to be. Then later I saw DTube being announced and my head was going around in waves about this mix of technologies that made it possible… I met @heimindanger and chatted about his project and absorbed some of the details and ideology, of which I share the same vision. And it got my engine running, so I dived in and started implementing my own vision of what I wanted as a platform for publishing music and sounds in general. And now I am proud to introduce you all to...

logo-big.png

DSOUND.AUDIO

What is DSound?

DSound is a web application that I developed in Javascript, that allows us to upload, listen and discover music and other sounds stored on top of the IPFS Network. It uses STEEM blockchain as a decentralized database, which allows authors to earn rewards in STEEM Dollars cryptocurrency, which can be exchanged directly to US Dollars or any other currency, when other users like or repost our content, in the same way as Steemit.com for blog posts.

I decided to follow the same approach as @heimindanger and develop first and talk after. And I worked almost non-stop until I have this first alpha version to share with you! It is only a minimum viable product of what can become the platform of reference for musicians to publish their songs, promos and recordings and be rewarded for their work immediately, without any publishing and/or distribution involved.

As a musician and DJ as well I deeply understand the music industry and my only aim is to create a platform where I would love to publish my own works, to receive the feedback from the community and earn few bucks with it… And if you also are in the industry, you know how difficult it is to make any money with our creations in the music business these days!

There are some platforms that allow it, if you are signed with a big label, like SoundCloud, YouTube, Apple Music or Spotify, but if you are an indie like myself, you get lucky if you can publish any of your own creations on these channels without being taken down! I had my own creations (without any sampled materials) being taken down for copyright infringement, just because they can.

Even worse for other kinds of creations, which constitute fair use of the copyrighted materials, like remixes, mashups or DJ sets. If you want to share any of these with your fans, nowadays you can’t! If you upload these works to YouTube or SoundCloud in a matter of seconds they are taken down for copyright infringement. This is not acceptable. These are derivative works of the original ones, which serve to promote the authors or give them a different use, like a remix makes people dance to an undanceable song, or a DJ set which mixes and blends together several tracks to produce a completely different sound vibe. These creations deserve to be published and their authors deserve to earn their bucks if people like it!

So, the copyright law is broken and needs fixing. But in these last cases, besides being fair use, the industry is abusing the small creators with their super-powers making it impossible for them to survive without working other jobs to put food to their tables, instead of focusing on creating and spreading love! But this is about to change with DSound!!! :)

How to use DSound

  1. Logging in
    Create a STEEM account on Steemit.com, if you don’t have one already, then enter your STEEM username:
    LoginBox.png

  2. Enter your Private Posting Key, you can find it here:
    GetPrivKey.png

Multi-user login

MultiUser.png

If you are an artist as well, it is common to have your artistic names, which leads to having multiple accounts on the social networks and usually makes it a real pain to always being logging-out and logging-in to use your different pseudonyms. Youtube and Facebook have this feature allowing you to switch between them easily. So, I followed the same idea as @heimindanger and implemented it on DSound as well, letting users log in with as many accounts as they want, and switch between them.

IPFS Settings

IPFSoffline.png

DSound manages all IPFS settings for you right now. Maybe in the future it will have a way to fine tune them, but for now it is all taken care. It shows if you are running a local IPFS node or not, and if you do DSound will happily use it, otherwise it will connect to other IPFS nodes on the network to upload and store your content.

IPFSonline.png

Uploading

Upload.png

First, you need to be logged-in to be able to access the upload page.
Then just simply upload the audio file, the cover art (not required but much appreciated by your listeners, like a part of your sound that fills the eyes), and finally fill the texts for the blockchain and publish!

If all goes well, you should be taken to the new sounds feed where your sound should be sitting, waiting to be played by your fans. The process can take between 0 and 30 seconds, depending on the IPFS network status and your connection speed. This is where having a local IPFS node installed helps a lot, and if you upload regularly you should definitely think about it.

I will be developing a desktop app, together with @heimindanger from DTube, to allow non tech users to install the IPFS and configure it correctly for use with both DTube and DSound, but until then you can always try it out with the instructions found on the IPFS website (not very easy for non tech savvy people…)

Browsing and Discovering Sounds

Here I tried to replicate the way Steemit.com works, with the exception of the home page where you view the feed of sounds that had any recent interactions, like comments or upvotes. Then you have the regular Trending, Hot and New main sections. They work the same as in Steemit.

Browsing.png

If you click on a sound (title or cover) you will get to the sound page:

SoundPage.png

If you click on a ‘#tag’ on any page, you can discover sounds only on that category, even if you select the new, hot or trending sections you will be seeing that category on the chosen section. By clicking on the logo to go to your feed or exiting the browsing to any other page you will exit the category mode. When browsing in category mode you’ll see the category ‘#tag’ at the top:

TagPage.png

Anywhere on the application you can click on an ‘@user’ to view that user’s publications alone at the user page:

UserPage.png

Yes, you can see the new profile cover picture of Steemit at the cover of DSound user profile page! :)

And anywhere you see a track player with the play button and a waveform of the sound, you can play that sound and navigate in it by clicking on the waveform as you do on SoundCloud.

Also, throughout the app you see the player at the lower part of your screen and that player plays music even when you navigate through the application, knowing your last feed selection of songs and playing them in sequence or shuffle them for you!

This is all based on STEEM blockchain, so naturally you can like sounds by clicking on the ‘heart’ icon, republish them on the ‘repost’ icon, download the sounds on the Download button (if enabled by the author) or otherwise the author may activate a Buy button with a link directly to that sound on any music store of his choice or even his website.

By disabling the download link, the author is only not giving his permission for you to download the sound directly on DSound, but through IPFS network, everything in it is naturally available to download, so don’t think your content will not be downloadable if you disable the download button when uploading! As with SoundCloud, YouTube, Spotify or any other content sharing, if you can stream it you can download it, one way or the other…

The following parts of this article are mostly technical and maybe not so interesting to some people not on the tech side, but if you are curious about the internals of DSound you can continue, as I’ll try to explain how it works with simple common words, when possible... ;)

How DSound works

STEEM Blockchain as database

steem.png

What makes DSound so special is its decentralized nature. Using a blockchain for it was my idea for ages. STEEM has many advantages over other blockchains. It is fast (3 sec blocks). It is free, anyone can use it without having to deposit some form of currency, and transactions have no fees.

Other projects are already there that implement some kind of Music Currency, that you can use to buy access to music content, like Musicoin or Resonate. I wanted to build something that works the other way around, and to reward music creation by the community, in the same way that STEEM blockchain already implements its reward-earning mechanism for blog posts.

Similar to DTube, any sound uploaded on DSound becomes a STEEM content, that can earn rewards for 7 days. DSound doesn't use either the title or the body of the STEEM post to store information, therefore if you don't want your sound to appear in your Steemit feed, you can edit or delete it. The sound will stay intact on DSound while it will be invisible on other applications like steemit.com or busy.org. I believe the current behavior to be correct and that it contributes to platform growth and users rewards increase.

IPFS as static file storage

ipfs.png

This was actually the final ingredient that I got from DTube and @heimindanger… When I saw the initial DTube post I was thrilled! I had found the missing piece that I needed to finally build DSound!

In his article @heimindanger describes perfectly the IPFS protocol at a high level, so I include the following paragraph from his post that generically describes it all:

“IPFS is a protocol that enables decentralized file storage. The principle behind it is called Distributed Hash Tables (DHT). The same principle also powers the BitTorrent network. Just like how cryptocurrency uses asymmetric cryptography, DHT networks will hash contents in order to be able to identify a file. The hash becomes the identifier of a file, and it's as easy as re-hashing a file and making sure the hashes match to ensure the file that was sent to us is the original.”

IPFS is young, open-source, and actively being developed, with many bright minds working on the project. I believe it has a great future ahead. Using it as the main means of storage for this project was incredibly easy, even with such a young project.

IPFS Storage Cost

Here I faced the same difficulties as DTube. There is no magic, someone needs to seed the files, and the browser is unable to permanently store large files (local storage is limited to 50MB on most browsers), so in-browser seeding is not a solution.

My first idea was to require users to run their IPFS node locally in their computer, but it became clear after a few chats and brainstormings that this wouldn’t be a solution, as IPFS is still not easy to set up for a regular user, and there are a few open source apps that attempt to provide an easier path but they are too unstable even for testing purposes…

I still believe this solution to be the right one for DSound, and possibly DTube as well, but I would clearly need to build a desktop application, for Windows, OSX and Linux, to ease this setup process to the point that even my grandma would do it, so that it will be a plausible solution to the storage part of the equation.

But for now I needed a way for DSound to store the contents without a local IPFS node, a requirement that will not disappear and possibly will even grow as many users don’t like installing stuff, so I asked @heimindanger of DTube about it and got to chat with the owner of IPFS Store as well, which as been a great help even in trying out DSound and bug reporting. Great guy this @nannal (steem, twitter/etc), recommended!

So I ended up with the same approach as DTube, created a @dsound account and this account will be used to collect 25% of the DSound author rewards. The rates of storage are the same, but historically in STEEM video content more than doubles the rewards on music content, so I think it is fair to go with the same percentage of the author rewards, basically due to the probability that the storage / reward ratio will be probably identical.

Also part of these rewards will be used to finance the continuation of the project development, if the community finds it useful, and hire a project team if it all turns out really well.

Should one day the project is done and it may survive on it’s own without much effort in development and maintenance, and a large user base have their own IPFS nodes, then my contribution to the project will not be needed so often and the project will be open sourced and the reward sharing percentage removed.

Design and User Experience

Here I decided to have a simpler but equally intuitive approach, inspired by the leading sound sharing platform SoundCloud, as the potential users are already used to it.

I tried to have the design as clean as possible without distractions, but still showing what users care about and facilitate the usages that they require, like waveform navigation, commenting, republish and like content. Another main requirement was to make it easy to discover new music, as that is really important for DJs like myself, thus the browsing by tags and merging with top sections. I think I did fine on this for this first version, but still a lot to improve and new features to implement, as described in the roadmap below.

Browser stored data

DSound will use your browser local storage to store your user accounts and posting keys encrypted, so that you don't have to login every time. If you clean your browser stored data, you will have to login again in all accounts on DSound.

Why can't I log in with my master password or active key?

Because you simply shouldn’t do it! Steemit.com allows it solely because they also have a wallet in the application, but you shouldn’t login on Steemit.com with your password anyway, it is a bad practice. I think the worse thing a developer can deal with is sentiment of guilt cause by their users losing their money and accounts due to a security breach in his application or on a specific browser. Instead, it is much safer to only allow the use of the private posting key and limit the risks.

If you want to manage your STEEM rewards, I invite you to use Vessel. And start using only the posting key on any online platform such as Steemit.com, Busy.org, etc.

Sound processing on upload

DSound already do some needed sound processing on upload. This is required to be able to display the waveforms of sounds before downloading them from IPFS network. A typical good quality song file is around 10MB, so it could take as much as 30 seconds to display a sound waveform on the screen. This multiplied by 6 sounds per page would be insane due to the time it took and the bandwidth required for just displaying files that the user didn’t necessarily want to play anyway.

So on DSound I implemented it the other way around: at upload time DSound reads the contents of the sound file and processes it to generate the peak values for that file that will feed the waveform display. That peak data is then uploaded to the IPFS network, alongside with the original media, thus generating 2 files uploaded per sound published, not counting the cover art image.

Then downloading a 15KB peaks file is almost instantaneous, and it will only download the media file if the user wants to play it! Cool isn’t it?

Integration with other platforms

Any other STEEM based platform can easily integrate sounds posted on DSound. The sound and cover IPFS hashes are stored inside the json_metadata of the post. Then it is as easy as doing:

<video src=”https://ipfs.io/ipfs/soundhash” poster=”https://ipfs.io/ipfs/coverhash” controls></video>

or

<audio src=”https://ipfs.io/ipfs/soundhash”></audio>

Known Issues

  • Problematic behavior in iPad
  • Some weird event race on drag over the sound upload area
  • Found another? Please get to me on steemit.chat

Roadmap (missing features)

  • Search (in a decentralized way - not possible now)
  • Playlist sharing and playback
  • Playback goodies like cross-fade
  • Mobile app for iOS and Android
  • Custom Player for Social Networks integration
  • Sharing to Facebook, Twitter, and others

I believe the current state of the DSound is viable, even without these missing features. I will add them, slowly. Please let me know what you want to be implemented first, or other feature suggestions in the comments...

App Dependencies

DSound is built with React, and uses many open-source packages from NPM. DSound wouldn't exist without them, so they deserve some credits:

  • js-ipfs-api - Communication with the IPFS Network
  • SteemJS - Communicating with the STEEM Blockchain
  • autolinker - Adding links to descriptions / comments
  • moment - Displaying times
  • XSS - For displaying untrusted texts and preventing XSS attacks

Last words

The same way as @heimindanger, I am a true believer that decentralization is the future and I am trying to contribute with my share to change the world.

But I know that I will have a hard time here because competing with SoundCloud will not be an easy task! DSound will be decentralized the most I can, in order to get the project out of my direct control leaving only the domain as single centralized dependency for now.

Also I expect to have even more pressure from the Labels due to copyright infringement, although you didn’t read a single word from me about building DSound to circumvent or facilitate sharing of copyrighted materials illegally, as I am a musician and DJ myself and I comply with all copyright laws all the time.

On the other hand, I defend that the copyright laws are being misinterpreted by labels in their favor, allowing them to use their huge economic power to impoverishing 99% of the music creators, while monopolizing the 1% that they enslave with their 100 pages contracts and 360º deals and making huge profits out of those, in times that publishing is MP3 and distribution is Internet. So, labels are now marketing companies that sell their brands, and fight all others that attempt to bring something new to the world, that is not own by them!

I will never encourage the use of music without any kind of contribution to the actual guy that put in the time and creativity to turn that into a music that we enjoy! Authors also need to buy stuff on supermarkets, they don’t survive out of nothing and without them the world would be so less interesting…

What I don’t agree with is the abuse of the same laws that had in their true heart the need to defend the rights of those who make our world more entertaining, to enforce the enrichment of few and prevent us from hearing all the music created that we possibly can and enjoy it all!
For example, do you that the music of this century is based on electronic instruments and sampling? All music in the tops contains some kind of sample or sampled instrument! And the labels go after remixers and take down their content while they publish and make fortunes with other sampled songs as well?!

Also go after the small DJs and take down their work, because they are using music that they bought legally to make their sets, prohibiting them of having their work shared and get noticed by what they do best… How the heck should a DJ make a set to share without any copyrighted material in it? Does this sound sane at all?!

So DSound is NOT about facilitating the sharing of copyrighted material, but it is all about freeing the authors of the pressures of the major labels and giving them a tool that enables them to make decent living out of their creations without having to be signed to a label and enslaved their lives.

If I can help to make this happen, I will be the happiest man on this planet, because…

“Music is what feelings sound like”

@prc - 2017

Sort:  

Your work speaks volumes of the kind of man you are – efficient, organized and result-oriented. Congratulation! Looking forward to know more from you. Thank you for sharing...

"speaks volumes" in reference to an audio platform. I love this!

You took the words right out of my mouth. :D
Thats really great work!

Next time be fast :P...Yes, it is a great work. I will be waiting for his next post.

Amazing work dude! After YouTube, now Soundcloud is getting the D!

I hope you get the same amount of support as I did for DTube, your UI looks much smoother than mine :D

Thank you BOTH! Real heroes in my humble opinion.
The community needed these tools and you guys built them without resorting to a bunch of Corporate BS and egotistical back patting like some others here on SteemIt.
Very appreciative!

Yes Thank you guys! Great work and team spirit.

Do you think it's a great idea to have two projects when DTube could do exactly what DSound is making? Which is mostly a new interface? And maybe progress together faster?

Do you think that IPFS is the sustainable storage solution? I didn't understood how are the storage nodes rewarded? If both projects are successful they can become quite large in total data volume.

However again congratulations to both of you @prc @heimindanger for your creativity about the decentralized storage solution, something that a project like LBRY didn't solve yet.

And you're both AMAZING!!!

Wow you are a genius! Thank you so much for your effort. I was thinking the same as I heard from D-Tube but I have no idea how to programm such a masterpiece. I'd love to upload some great jazz-beats I just need to get my friend on steemit, lol!
Anyway, thank you for this addition.
Cheers

Thanks a lot! :)

Finally my friend tries to upload one of his beats. Thank you again for the segway to steemit. I try to listen to musig but it doesn't play the tune. Am I way to inpatient or can you play the songs only via PC and not on the smartphone?
Cheers!
Edit: yeah it sends me back to the homescreen of Dsound whenever I try to play a song.

There are some problems in iOS still. Didn't have time to investigate them... Are you using iPhone? :/

Ah that explains it:) yes I'm on iPhone. I could load a song from the trending page but not from the new page:) maybe that helps you.

Thanks a lot. :)

Tell me please, what about copiright ? can we upload any sond we want or just music we've made ?

On DSound there is no copyright enforcement, but do you think it is fair for you to share the work of others and profit from it? Maybe the community will flag your posts and your reputation will decrease... It's a question of fairness. Thanks! :)

I didn't say it's fair, I am just wondering !

great work with the site @prc, just wanted to let you know, however, it seems if I click through to look at a link on the site, it just hangs because I think you have it hard-coded to hit a local IPFS node:

POST http://127.0.0.1:5001/api/v0/repo/stat?stream-channels=true net::ERR_CONNECTION_REFUSED

ps. I wasn't logged into dsound, so perhaps this problem is occurring for those not currently logged in?

Thanks a lot for your words and feedback! :) That connection error is a poll that I do to verify if the local IPFS is available or not... That's why it is hard coded with 127.0.0.1 :) As for the other issue with user not logged-in, I also got that problem today and it is solved now. Please check if you have the correct behaviour now. Thanks a lot! :)

looks like it's working perfectly now! again great work, and really sweet design... :)

Thanks for your work as well!

Thank you a lot! :)

Dtube, now DSound great combination.

Great accomplishment.

Follow me @Yehey
Thank you,

Dtube, now DSound Plus the power of blockchain I call that the perfect match

match made in heaven!

Something is wrong, when I click on the dsound link the music just loading and not launching, when I click on IPFS link it download a weird file that i hope not a virus, can you fix it please, here is the post, please tell me what to do to fix it: Change of life - My first decentralized music - Posted on DSound

Hi there! I am thrilled with the amount of uploads and love spread by the community in these first hours of DSound! :) I ask you all to be patient with the platform and myself, I am monitoring it and I am finding some small problems to fix here and there. It is natural on a project this big to have some minor bugs and even few major ones for the first time it comes to life, specially with such a warm welcome of hundreds of uploads in few hours only... I ask you, if you find some problem to report it here as @clixmoney did and from time to time go check and refresh your browser with Ctrl+R/Cmd+R or F12 to reload the application with the latest version and verify if the problem persist. Relating to this problem @clixmoney, please retry the upload with exactly the same title and files, but instead of the HTML full description that you placed, put a simpler one without HTML if possible. I'll improve verification of HTML but for now this may solve your problem quickly, ok? Thank you all again for your patience with new-born DSound! :)

I'll better wait when you fix everything, I have almost 1400 followers and I don't like to show them something that didn't work well, dtube also needs modification, sometimes video also don't play, I am not a developer and I don't know a about your technical stuff, but I am a good marketer, I don't like to test, I like to use good ready tools to work with. I hope you will fix everything as soon as possible.

We should really connect, talk business sometime i own SNN, peace! More here - #SomethingNewNow

()

Hi Guys I am using win 10 64 bit - I am having truble with ipfs - when clicking the ipfs exe the command line just flicks on the screen and is then gone - any help please ? I want to upload original tracks but drag and drop won't work I just get message ipfs setting and that flics away too quick for me to read what it all said any help please

Sorry for this inconvenience, but there was a problem with the IPFS gateway... You don't need to install IPFS right now. I will have some helper application soon to help people with that... So you can just go to upload and send your files. The gateway is being fixed and you can upload again soon. Right now it is going through a cleanup process so it should be really slow, so please allow it an hour or so to stabilize and then try again. Thank you for your understanding, launch load was huge... :)

You're right, now it magically worked without IPFS node setup after a few hours. Before i had constantly upload issues now it works smooth like a breeze. Succcessful uploaded my first track! Incredible work done, Thank you!

Great! :)

001 F COVER.jpg

Thank you for taking the time to reply
I am - upvote 4 - @super-grand-ad
First track and album cover all uploaded
But now you have aroused my interest in
IPFS - LOL
I got IPFS installed and working today
But the last comment said Dsound was
working without installing IPFS
That's good news for those not savvy
using batch files and Dos commands
Anyway all's well that it now works

look at that prc Got an upvote for Great! :) Now let's see if you upvote back for a ♫ ☺♪ ☺♫

Great work D fathers! Hope everyone gets the D. D the whole internet!

You inspire and gave good help to this new project. A+ to you. One doesn't need an ICO or venture funding if the idea and tenacity is there to bring it to fruition.

Thanks for your work sir.... I think you're absolutely amazing, I told my brother about DSound and he loved the idea, my brother is a producer/recording engineer and he to is now interested in DSound.

comments with full of encouragement, same support @heimindanger @prc

youtube is replaced by Dtube soundcloud is different site and youtube is different

The issue I see in both cases is that the only people who can affect your votes are people on steemit. So if I upload one of my artists to dtube or dsound, and copy the link to Facebook to their fans, nearly none of them have steemit so they can't help the artist get paid even though they would click the vote button.

Spectacular work!

Thank you so much! :)

Awesome work, 100% upvote!
I have some steroïds for your project :)

Sent you an email. Let's chat.

Thanks a lot! :) please get to me on steemit.chat, if you used the email on my sites that one is outdated... ;)

Did you get my linkedin invite?

Hey! I think I did... Will you get to me on steemit.chat? I'm never online on LinkedIn...

Awesome!
Made a listing for DSOUND on http://steemtools.com
Next update don't forget to use #steemdev

Thank you so much! :) Nice to see dsound on steemtools.com! :)

nice smart Dsound

Thanks Marco. Appreciated!

Great work! Thanks!

Thank you! :)

thank's for your post it's a great information

haha I already saw someone did it on Dtube! Porn on Steem will definitely get big one day in my opinion!

Following the pattern YouTube -> DTube, SoundCloud -> DSound, then logically PornHub -> DPorn. Assuming, of course, people aren't just posting it to DTube - which last time I checked they are.

I'd like to see DTube as alternative to Youtube and keep the nsfw-material for sites like DPorn.

And presumably, DPorn users would not want to see sfw-material "polluting" their experience. One site could just offer two views under two different names. DTube = no nsfw-material. DPorn = only nsfw-material. Would save copying content around once it has been flagged.

on a decentralised porn website we could see some really nasty shit. its not a good idea.

Dtube Simply has a NSFW section ....right???

Yeah Dporn.video would be amazing man decentralized porn ..do u really want steem the coin of the porn industry??

OH SHIT cam girls can ONLY Use steem because its the ONLY coin with FREE transaction fees so you dont have to pay for micro transactions!!!!

business opportunity of the decade right? bring all the bitches to steem!



Screen Shot 2017-09-09 at 10.52.55.png


Id rather the T&Aporn myself though :P

Thank you @prc for your work, this is an awesome idea!
Many talented musicians are struggling so a platform like this is amazing.
I'm always happy to see how Steemians are innovating and creating new projects

Thank you so much! :) That is exactly my concern. Hope to facilitate things up for many talented artists!

i am happy too please help me new here sir