Last night I put out a small project I quickly built called NFT 2 MP3, a way to download mp3 files from Music NFTs. I was putting together an offline playlist on Apple Music for some upcoming travel and wanted to download some Music NFTs and was really surprised to find that there wasn’t an easy way to do this using any of the existing web3 platforms.
Downloading music used to be such a huge part of my existence as a music enjoyoor, and leeching off of sites like Youtube2Mp3, Limewire, what.cd, and Soulseek were some of my fondest memories of being terminally online. Downloading music is totally necessary to facilitate the distribution of new tracks through channels like DJ’ing, mixes, or P2P filesharing. It seemed like a missed opportunity for none of the music NFT platforms to cater to this use case.
It was a relatively easy solution too - with a couple of cold brews and chatGPT, I was able to build out a full stack next.js site in about 6 hours. In the process, I got to experiment with the newly released Vercel Postgres, which I highly recommend to anyone wanting to start a project with a DB from scratch (PlanetScale is pretty good too, but this wins just out of the sheer convenience of managing all the resources in one place). I wanted to start storing what people were downloading on my end - I think it’ll become normal to store more data in MVPs in the future, especially as we are rushing towards an LLM-centric future, I could see being able to generate really cool recommendations and stuff. I actually used chatGPT to play designer too, and to generate all the tailwind CSS classes, which is definitely an underrated application of the tool. It saved me a ton of time. I could see this leading to the sterilization and conformity of design in the long run if everyone starts using this, leading to things having “chatGPT MVP vibes” but it works great for the time being.
The app currently supports the 3 major music NFT platforms - Nina, Sound, and Catalog. I created adapters for each, which I’ll open source soon so folks can build on top of it. One sus thing I realized is that currently to go from a URL on these platforms to a file you need access to their API, which maps the slug to the NFT contract. I totally get why the platforms do this (human readable slugs for SEO) but it really goes against the ethos of web3 by making it difficult to build on top of these supposed open protocols.
Finally, I wanted to build in light discovery. Downloading things is high-intent and high signal, and cuts through a lot of noise. I wanted to create a feed to allow folks to explore what people are downloading. Of course, this works only well if a lot of people are using it, so please share this with your friends, especially your crate-digging friends who are interested in promoting artists using new distribution primitives on web3.
If anyone has any feedback or wants to jam on expanding on this idea, hit me up I’m @poolnoodle93. I have some interesting things I’m jamming on in my free time, and if this takes off and starts generating a lot of downloaded content, maybe I could turn the curatorial part of this app into a DAO that manages a publication on Mirror or something and helps highlight cool new music.
Check out the app below.
If you liked this, consider minting this.