beat-machine / beat-webapp

Webapp for The Beat Machine
https://beatmachine.branchpanic.me/
MIT License
11 stars 3 forks source link

I don't understand the logic of the app ๐Ÿ˜” #31

Open JustACuteGirlLookingForAManToFixHerBugs opened 4 years ago

JustACuteGirlLookingForAManToFixHerBugs commented 4 years ago

I have trouble following how it divides the beats & how multiple effects apply. Do you have any docs explaining how it works?

For example, obvious guess would be that if you add 'Swap every 2 with 4 offset 0' it's going to divide the song into bars of 4 beats, and then inside every bar swap the second and fourth. But what if you add 'Swap every 1 with 5 offset 0'? Is it going to to divide the bar into 5 parts? Or is it going to replace every first beat with the the first beat of the next bar?

What happens when you remove every 5th beat? Is it the same as removing every first beat only skipping the very first one?

If I add two 'remove every 3 beat' effects, is the second one going to treat the song as 3/4 or 4/4, with the original 4th beat becoming 3rd, etc?

dhsavell commented 4 years ago

As you saw in #17 i'm hoping to make the process a bit more visual. I'll do my best to explain it here. Maybe I'll copy this over to the wiki and link that in the meantime.

The app doesn't really understand time signatures or bars. To it, the song is just a big list of beats. So, when you swap every 1/5, it'll do this (which corresponds to "replace every first beat with the first beat of the next bar"):

Input:
  1 2 3 4 5 6 7 8 ...

After swapping every 1 and 5:
  5 2 3 4 1 6 7 8 ...

The swap effect restarts right after the swap is made, so here's a longer example with 1 and 5. Now that I'm thinking about this, it might help to have a "measure size" option on swap, because it's a bit counterintuitive.

Input:
  01 02 03 04 05 06 07 08 09 10 ...

After swapping every 1 and 5:
  05 02 03 04 01 10 06 08 09 06 ...
                 ^ starts again here

If it helps, here's what that same example looks like with 4/4 bar lines.

Input:
  01 02 03 04 | 05 06 07 08 | 09 10 ...

After swapping every 1 and 5:
  05 02 03 04 | 01 10 06 08 | 09 06 ...

Effects just get applied one after the other, so here's what using two "remove every 3" effects would do. Each effect has no knowledge of the others and just takes a list of beats in and produces another list of beats as output.

Input:
  01 02 03 04 05 06 07 08 ...

Removing every 3 for the first time:
  01 02 04 05 07 08 ...

Removing every 3 for the second time:
  01 02 05 07 ...

Thanks for posting your working understanding, by the way. It's useful for seeing how I can try to make it more accessible. Things don't make a whole ton of sense right now but I'm hoping to iterate on the design in the future. If you have any suggestions I'd be happy to hear them.

JustACuteGirlLookingForAManToFixHerBugs commented 4 years ago

Hey! Jeez, it took me a long time to get back to you (I'm honestly kinda puzzled how much time has passed). Hope you're doing well.

Yeah, this explanation sets up the basics pretty neatly. I'd suggest adding something like a How Does It Work popup with this text - and then gradually update it with info on other modes and parameters when you'll have time.

... unless you wanna keep your server running ๐Ÿ˜„

JustACuteGirlLookingForAManToFixHerBugs commented 4 years ago

I've played with the app for the last few days - it's fun and mildly addicting ๐ŸฆŠ But, I have to admit, it still remains largely a black box for me. The results are inconsistent and very hard to predict.

I'll try to outline a list of ๐Ÿคทโ€โ™€๏ธ issues/confusions (yeah, there's always this duality "is it broken or am I just dumm"). So...

  1. No idea when it starts to count beats (so fur example, removing every other beat is a toincoss between odd and even beats)
  2. This makes the 'Offset' setting a trial and error of re-rendering.
  3. It doesn't show the estimated BPM by the machine. This one's a biggie, but hopefully, if your machine calculates it, bpm shouldn't be hard to display?
  4. The Cut tool... I really wonder how the next effect in the chain gonna divide the song into beats after that?) So stacking anything after the Cut is a gamble. 4.1. Cutting and leaving only 1 part is not very useful beyond like 3-4 pieces. I'd see much more value in keeping several pieces.
  5. What happens if we swap with previous beats? How is Swap 1 with 2 different from Swap 2 with 1? โ…ž. Stacking multiple swaps gives me not the result I'm expecting. See the duality problem. ยข. I'm fairly certain there's a bug with beat count. If the music starts right away (and I apply remove every 2 beat) it removes the first one, third etc

exhales Hope at least some of these will be helpful. Thank you for the app, you're doing the God's work.

dhsavell commented 4 years ago

This information is really helpful so thanks for taking the time to write it out. I'll see what I can do about making this more intuitive next time I work on an update for the app, although unfortunately as you've seen I've been a lot busier due to current events and had less time to work on this.

I'll try to answer a couple questions for the time being though:

3- I might be able to display an estimate, but the app works by locating each beat individually to let it work on live performances. That being said it should just be a matter of calculating an average, so maybe I can add it after all.

4- I agree that the cut tool is a lot more confusing than it should be right now. The main idea is that a beat gets replaced by the one piece left over from the cut operation (which is then the "beat" moving forward).

5- In theory swap 1/2 and swap 2/1 should be the same. If you apply both you should end up with what you started, which might not be happening right now due to the bugs you mentioned

Again I apologize that I haven't had time to update the app past responding to issues. I've had a lot of ideas for making the app more intuitive (like having a node-based interface or visual effect previews like #17), but unfortunately I just don't have the frontend expertise to make them happen. I hope I can get to at least some of these.

For now though I will link to the explanation above as you suggested, since it's the least I can do to explain things.

commentspae commented 3 years ago

I keep getting network errors and can't render anything...

dhsavell commented 3 years ago

Thanks for reporting. I have been having trouble with Google Cloud recently, so I'll take a look. I'll hide this comment since it's not related to the parent issue. We can continue discussion if necessary at #37.