Built in 2020
Mooderize is a single page app which allows you to apply sound effects to an audio file. The audio is processed by the Web Audio API. The website also contains a feature allowing users to asynchronously load a YouTube video. For this feature, I made a small API using Express.js.
I wanted to find a way to process audio on a website. I wanted the user to be able to upload a song, choose a pre-maid audio effect, apply it to the song and then download the modified song. I also wanted the website to be a PWA.
The second problem, which was linked to the first one, was that the Web Audio API doesn't provide the possibility to create a file from the modified song. You can stream the song only. The only solution I found is to use the Recorderjs library. It's unfortunately not maintained anymore, but I know that a lot of websites are using it and it's a small module so I went with it.
The third problem was to use a YouTube link as an audio source. YouTube is not helpful on this, as you can't use the audio from an embed YouTube video. I didn't find any online API to retrieve an audio file from a YouTube link, but I found multiple python and Node modules on GitHub and went for the node-ytdl module. I then built a very simple API using Express.js, just to retrieve the audio file using an ajax call.