The Beat Machine: A webapp for making all kinds of accurate beat edits!

Meta

Try it out here: https://beatmachine.branchpanic.me/

(Edit: I've been made aware of the occasional "Error: Network Error." It has to do with instances running out of resources so trying again in a minute should fix it.)

I've been working on this on and off for a while and I think it's finally not-broken enough to share. This site lets you swap beats, remove them, cut them, and more. You can also combine up to 5 effects to make... something interesting. Beats are auto-detected with a bit of machine learning magic so tempo changes and variations are handled automatically.

It's a bit slow since I'm stuck with free hosting, but if you're not afraid of the command line, it's available as a Python library (which is a lot faster and lets you code your own effects). The rest of it is open source, too.

Here are some examples of the insanity it can make using songs I already had downloaded:

Also props to u/DBmain for their awesome BeatSwapper program that came before mine! Now we just need an AI to write the captions, right? Enjoy :)

Posted Jul 17, 2019, 4:54 AM UTC · edited

2127
NoControlSR•

Works like a charm, thank you so much for making this!

5
NoControlSR•

Every now an then I get " An error occurred: Error: Network Error" though

1
computersunifiedOP•

looks like it's occasionally running out of resources since the process is pretty memory-intensive, so i'll allocate a bit more. i'll also increase the timeout from 3 minutes to 5. glad you enjoyed it!

2
blargsnarf•

Was having a lot of fun with it yesterday, but today 80% of the songs I try are giving me errors. Is it anything I'm doing on my end?

1
computersunifiedOP•

Hmm.. The only possible issue i can think of on the user end is sending songs that are either too long or invalid, and I doubt either of those are the case since you said it was working yesterday. Google Cloud isn't showing any errors but I'll look into it. Maybe it's something on the website itself and not the worker.

2
WhipMemesWhip (the caption guy)•

That part about the caption AI needs to happen, that would be so helpful for somebody like me

3
wileyfoxyx•

Thank you very much!!

2
computersunifiedOP•

My pleasure to help out a fun community :)

1
[deleted]•

[deleted]

1
BMHater12•

I feel like this site should have user BPM option

1
BMHater12•

Annnd hey, my feature request was finally here in the machine!

2
[deleted]•

[deleted]

1
[deleted]•

[deleted]

1
blargsnarf•

I just noticed another problem.. maybe? If I select the Swap option, and do 2 and 4, then 1 and 3, I get the same result. I admit I am not much of a musician so idk if that's just me being stupid, but that should return a different result, right?

As far as I can tell, 2/4 and 1/3 both return 1/3...? Even in the Santana example you gave, it sounds like 1/3 are swapped - beat 1 right at the start of the song is wrong, and that'd be correct if it was swapped with beat 3, right?

Apologies if I am just thinking about this wrong. Still a super really fun thing to play with, haha.

1
computersunifiedOP•

I wouldn't be surprised if I did my math wrong! I'll take a look at it soon :)

2
NoControlSR•

I have the same problem, but reloading the page fixes it.

1
NoControlSR•

Hey again, running into new problem now: I'm currently trying to swap beats on a song with around 100 BPM, but the program detects it at ~200 BPM. It still sounds interesting, but it's not what I want sadly. I've also tried running the song through DBmain's BeatSwapper, but the tempo of the song drifts quite a bit, which his program can't handle unfortunately. If you can find a fix for this, it would be awesome! :) The song in question is The Kids Aren't Alright by Offspring btw

1
computersunifiedOP•

Hm, there are a couple ways to go about this but I'll experiment with it. I think more control over the bpm would definitely be useful for people who have a desired result in mind. I'll be working on the site this weekend so keep an eye on it (hopefully I can get closer to resolving the timeouts too).

1
NoControlSR•

Thanks again! Btw is there any way to support you and this project (like Patreon, Paypal, etc)? I've been using your site a lot and would like to give something back.

1
computersunifiedOP•

Not as of right now but I've considered making a Patreon for a while, so now's probably as good a time as ever to do it. Once it gets approved and what not I'll add it to the page (thanks for your offer by the way!).

Also, I just pushed the user BPM option. It should be live on the site momentarily.

1
SarahSchmarah•

can I suggest implementing some sort of crossfade between beats? I've made my own Python script to do this, a while ago, and implemented a crossfade feature making a customizable portion of each beat fade into the next (that is, if you have beats 1 2 3 4 and you drop every other beat, beat 1 would play, then the last part of beat 1 and a small part of beat 2 would fade out, while the last part of beat 2 and the first part of beat 3 fade in) if there are any changes. It reduced popping noises a lot without affecting the quality of the edits.

1
computersunifiedOP•

That's a good idea. In fact I use a similar feature regularly in Renoise to do the same thing, avoiding pops. I'll add this in along with the other few recent suggestions (adding a donation link, making the cut effect more versatile, fixing weirdness with the repeat effect) in an update soon. Also if you want to play around with the Python library/cli it'll probably be implemented there before it's live on the webapp.

1
SarahSchmarah•

Cool!

Another thing I did in my python script is allowing the user to specify any rearrangement of beats per measure as an array of beat numbers, so:

period: 2,
order: [1]

Would drop every other beat,

period: 4,
order: [1, 4, 3, 2]

Would swap beats 2 and 4, and you could specify any weird edit you want like

period: 5,
order; [1, 3, 2, 5, 3, 4]

Something like this might make specifying more complex edits easier and it's quite versatile. With your current system for example there's no way to drop every second beat but starting from the first beat.

1
computersunifiedOP•

You know, with the way the swap effect is currently implemented this would be pretty easy to add, and I think it'd be fun to have. Not sure how I'd create a UI on the site for it but I'm sure I can come up with something at least half-intuitive.

1
SarahSchmarah•

That would be really cool! Thanks for listening to my suggestions :)

1