Show HN: Mofi – Content-aware fill for audio to change a song to any duration
708 points| jaflo | 2 years ago |mofi.loud.red
The cool thing is that after the song is analyzed on the server, the client can recompute and preview the results completely client-side through an implementation that uses Web Workers and WebAssembly. The audio previewing uses Tone.js. I am thinking of writing up some more details about the implementation in the future.
I'm still working on a way to explain this easily, but I like the idea of carrying over the concept of content-aware fill from images to audio.
Please let me know if you have any comments or questions!
[+] [-] Philip-J-Fry|2 years ago|reply
I think it was https://eternalbox.dev/ since that's all I can find on Google. But that site is down.
[+] [-] gffrd|2 years ago|reply
He created some excellent products from the Rdio API, and later Spotify … and I believe his analysis engine ended up being the foundation upon which Spotify's _play more tracks like these_ capability is based.
Looks like he's moved over to publish on Substack—there's a recent(ish) post reflecting on 10 years of Infinite Jukebox: https://musicmachinery.substack.com/p/the-infinite-jukebox-1...
[+] [-] jaflo|2 years ago|reply
There is this version now, but it does not allow custom uploads anymore: https://eternalboxmirror.xyz/jukebox_index.html
[+] [-] npteljes|2 years ago|reply
[+] [-] pfd1986|2 years ago|reply
https://publicinfrastructure.org/podcast/80-nick-seaver/
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] josuepeq|2 years ago|reply
But for today’s music, shortening the 2010s/2020 already shorter lengths would mean a song might not be more than a minute in length. On average, full unedited tracks today end up being a bit shorter than they used to be, solely due to the economics of streaming. Rather than paying for the content second by second, it is done by paying per track play. The result is a lot of 2 minute tracks, which were produced with the “verse” parts getting jammed together into the “chorus” with no break in vocals, which also uses pitch adjustments, “the “bridge” is an afterthought that is terrible, or more recently, nonexistent……… Instrumental solo? Anyone? Bueller?
Music is no longer anticipated, budgeted for, and purchased on launch day with great fanfare. We have grown accustomed to the idea that we should have everything available at our fingertips, and as a consequence of this we get exactly what we pay for.
[+] [-] robinsonb5|2 years ago|reply
A few days ago I was given the task of creating a corporate video - just a rolling slideshow for a shop-window display. Then suddenly it was going to go on YouTube as well - so needed some music! I found a suitable track but needed to edit it for length so its closing chord coincided with the credits card at the end of the video.
This tool might have saved me the bother of splicing the music in Audacity.
[+] [-] asdff|2 years ago|reply
[+] [-] efdee|2 years ago|reply
I'm sorry, that's the best I could do.
[+] [-] Gordonjcp|2 years ago|reply
I hit upon the plan of taping stuff off the radio onto 1/4", and then I could splice a not-talked-over beginning onto a not-talked-over ending.
Later, I worked out that I could extend or shorten tracks, particularly if I could get a tape of the instrumental version, using the same trick.
No-one uses tape and razors these days, but it was good fun.
[+] [-] seanthemon|2 years ago|reply
I think music suffers even more so because we're all so tuned into having the best at our fingertips that if a single moment in a song isn't to our liking we can skip and forget about it completely - i think this fuels the fast-short song market, easier to saturate with many short songs and get listens rather than to work/slave on a longer more intricate piece.
Back in the day, mixtapes with songs were slaved on and cherished, today slaving over something is seen as a negative quality.
[+] [-] hedora|2 years ago|reply
I don't see any of the effects you describe on my feeds (tidal; previously apple music). Perhaps you need to switch to a service with a better recommendation algorithm, or nuke your personalization profile and start over.
[+] [-] _glass|2 years ago|reply
[+] [-] jollyllama|2 years ago|reply
[+] [-] lelanthran|2 years ago|reply
I uploaded Wuthering Heights[1], selected just the trailing guitar solo (3:09 to just before the fade-out starts), and got a bunch of seemless sounding 3m tracks of just that guitar shredding away.
All the ones it generated were perfectly cut and pasted, with one exception in track 2 where I could tell where it was cut/pasted.
Can't wait to try it with the guitar at the end of Brothers in Arms (Dire Straits), or the flute solo in Locomotive Breath.
If anyone is looking for a good use of AI, I wouldn't mind a webpage that lets me say "complete this solo that was abruptly cut short" and get something great.
[1] This one is especially sad because the sound engineer/producer later lamented that he faded the solo out so quickly because the player was still improving like mad and what he had left after the fadeout was apparently better than what he had done while recording.
[+] [-] InCityDreams|2 years ago|reply
[+] [-] cheschire|2 years ago|reply
[+] [-] jermeh|2 years ago|reply
[+] [-] mmh0000|2 years ago|reply
I like to have multiple hour continuations of songs which I use to help me fall asleep. In the past I've made my own, but I'm terrible at audio editing. It is a ton of work and, for me, really hard to get right.
After a little bit of experimenting with Mofi, it seems to do a very good job and selecting when to repeat a sections.
[edit]
Here's my first attempt for a 30 minute song:
https://mofi.loud.red/edit/ebbf4b410181aa767152945cbb6a2d679...
[+] [-] jtbayly|2 years ago|reply
[+] [-] BonoboIO|2 years ago|reply
"Not Imported You haven't imported this file yet. Import it first to use it."
[+] [-] mmh0000|2 years ago|reply
1] A lot of the heavy lifting is done client side, which is excellent; I have a super fast processor! But, watching the CPU utilization, it seems to spike the CPU for a few milliseconds, then waits for a second or two and, spikes the CPU again, then repeats. I suspect there may be some significant performance improvements to be had on client recomputes.
2] While it is doing recomputes, it would be great to get a progress bar or, at least, a message saying, "This will take a long time, be patient." It took me multiple attempts to determine that the service was indeed working, just that my client was taking its sweet time recomputing.
[+] [-] spaceman_2020|2 years ago|reply
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] diggum|2 years ago|reply
[+] [-] diggum|2 years ago|reply
[+] [-] Solvency|2 years ago|reply
[+] [-] jasonjmcghee|2 years ago|reply
[+] [-] zedadex|2 years ago|reply
With Eternal Jukebox I was able to emulate it by setting the jump percent very high manually at the right time (but had to be paying attention + had to get lucky with which branch it took), whereas here I'll see if I can get it going by calculating what the cut I want would set the song length to, and requesting that length and fewest cuts. (Edit: didn't work)
Sometimes the simplest features are the easiest to overlook but most useful
[+] [-] MatthewWilkes|2 years ago|reply
[+] [-] liminalsunset|2 years ago|reply
Interesting, as the primary use case for this seems to be something along the lines of editing music to fit into video projects.
[+] [-] naltroc|2 years ago|reply
[+] [-] sergiotapia|2 years ago|reply
He just butchers an otherwise perfect song!
Will report back with results.
Edit: Results are great! https://voca.ro/13ar1g88LSKK
[+] [-] brennopost|2 years ago|reply
[+] [-] lcnPylGDnU4H9OF|2 years ago|reply
> On repeat: Make an extended version of your song's favorite part by choosing the catchy part and seamlessly repeating part of it!
John Mulaney's "Best Meal I Ever Had" story[1] had me wanting to do this for Tom Jones' What's New Pussycat so I could play that as an inside joke with some friends. This would definitely have made that easier. (Ultimately, I had a version of the song which started in the middle and "ended" right before it "started" so the effect could be mimicked if the file was played on loop. This had a short silence manifest as the media player "loaded a new song" from its perspective; didn't have that issue in Audacity.)
[0] https://www.pokemon.com/us/pokedex/loudred
[1] https://www.youtube.com/watch?v=Tv1l1eUhN-E (Usually called "The Salt and Pepper Diner")
[+] [-] sd9|2 years ago|reply
[+] [-] codetrotter|2 years ago|reply
This is perfect for TikTok videos!
Will definitely be using your tool. Very cool!
> I am thinking of writing up some more details about the implementation in the future.
Please do :D
[+] [-] personjerry|2 years ago|reply
Is the project open-source?
[+] [-] jaflo|2 years ago|reply
If you are interested in audio analysis in general, I would also recommend checking out librosa: https://librosa.org/doc/latest/index.html
[+] [-] stu2010|2 years ago|reply
[+] [-] jaflo|2 years ago|reply
[+] [-] jedberg|2 years ago|reply
[+] [-] quickthrower2|2 years ago|reply
[+] [-] redox99|2 years ago|reply
[+] [-] jaflo|2 years ago|reply