Beats2Fun (Funscript tools / PMV Generator)

Yes, it converts the notes to movements

So what are you thinking of doing for integrating mp3s. Will the program detect a certain hz to translate as a beat?

Traceback (most recent call last):
File “Beats2Fun.py”, line 181, in
File “gooey\python_bindings\gooey_decorator.py”, line 134, in
File “Beats2Fun.py”, line 174, in main
File “Beats2Fun.py”, line 49, in make_pmv
File “colorama\ansitowin32.py”, line 41, in write
File “colorama\ansitowin32.py”, line 162, in write
File “colorama\ansitowin32.py”, line 190, in write_and_convert
File “colorama\ansitowin32.py”, line 195, in write_plain_text
File “encodings\cp1252.py”, line 19, in encode
UnicodeEncodeError: ‘charmap’ codec can’t encode characters in position 91-93: character maps to
[15064] Failed to execute script ‘Beats2Fun’ due to unhandled exception!

tried a generated sm file and it seems to no longer work

also tried longer music and it seems to not be able to handle it I’ve tried 4-9 minute songs for sm and osu files and it cant read it

There are methods like onset detection and tempo detection that can be used. A bit like audiosourf does

Idk if you’ve seen this but this program uses audio to create finscripts. granted it’s not the best, but if your looking to integrate mp3s this might help as inspiration. Tool for automatically generate funscript from sound

There are already tools that automatically generate charts from songs. The same tools/tricks could be hooked into Beats2Fun to make that work :o. You could already run these manually, then provide the generated chart to Beats2Fun.

https://monket.net/dancing-monkeys/

1 Like

Tried a rather longer music track and got this

Merging clips together:100% | 3646/3650 [16:28<00:01, 3.43it/s]Exception during ffmpeg: ffmpeg -hide_banner -y -f concat -i “C:\Users\redacted\AppData\Local\Temp\tmpzm10kbc_\gz2spcht.txt” -i “C:\Users\redacted\Desktop\autostepper\80s Workout Hits Session for Fitness And Workout 135 Bpm - 32 Count (128 kbps).mp3_dir/80s Workout Hits Session for Fitness And Workout 135 Bpm - 32 Count (128 kbps).mp3” “F:\yeah\80s Workout Hits Session for Fitness And Workout 135 Bpm - 32 Count (128 kbps)-PMV.mp4”, Errorcode: 1
Traceback (most recent call last):
File “Beats2Fun.py”, line 181, in
File “gooey\python_bindings\gooey_decorator.py”, line 134, in
File “Beats2Fun.py”, line 174, in main
File “Beats2Fun.py”, line 106, in make_pmv
File “videoutil.py”, line 379, in clips_merge
File “videoutil.py”, line 88, in ffmpeg_run
File “videoutil.py”, line 78, in ffmpeg_run
Exception: Error while decoding stream #1:0: Invalid data found when processing input

[30104] Failed to execute script ‘Beats2Fun’ due to unhandled exception!

Merging clips together:100% | 3646/3650 [16:28<00:01, 3.69it/s]

Working on an update with a bunch of fixes/improvements. Should pop up somewhere next week

1 Like

I used Beats2Fun for like 2 days and it’s really cool but I encountered some bugs/problems and have some ideas for features that I would like to recommend(keep in mind that I used only GUI Beats2Fun 0.3 version and that I used it for like 2 days with limited time for testing):

Problem 1: After using Beats2Fun (mostly after error occurs) program starts to run slower, whole pc freezes etc… and it starts working normal after PC restart so most likely programs piles up junk data etc… (idk if it’s fixable and it’s not anything program breaking just wanted to point it out, it only clears after restarting PC not program or clearing temp folder)

Problem 2: Sometimes error occurs with mp4 files and FFMPEG randomly and video won’t process and it’s weird because I use x amount of clips and I use clip A it works normally I edit it a bit remove few clips and when I put new clips error occurs with clip A, same clip that worked normally for last PMV but for new one it doesn’t and it’s annoying, I checked if clip is damage and it’s not. It’s nothing really program breaking but yea it can be annoying sometimes

Problem 3: I don’t know why this problem occurs(didn’t really test it too much though) but sometimes when I make PMV randomly 60% of transitions freeze for like half a second and it looks really bad, it didn’t happend when I first started using Beats2Fun (yesterday), I am not sure if restarting PC or reinstalling will fix it (I can’t restart it rn because I have some other things that I am doing on PC).

Suggestion 1:It would be cool if it’s possible to make custom Beatmap UI default ui is sometimes really hard to see in certain videos and it can be really annoying

Suggestion 2: it would be cool if it’s possible to add custom sound for beats and to choose volume because for certain songs it’s just really hard to hear because of volume and some songs have really similar drums

Suggestion 3: it would be cool if it’s possible to choose intro/Last video because it’s really big part fo whole PMV and it’s as much as I can see randomly chosen which isn’t bad but a bit more customisation would make software 10 times better in my opinion

Traceback (most recent call last):
  File "Beats2Fun.py", line 181, in <module>
  File "gooey\python_bindings\gooey_decorator.py", line 128, in inner2
  File "Beats2Fun.py", line 170, in main
  File "gooey\python_bindings\gooey_parser.py", line 125, in parse_args
  File "gooey\python_bindings\gooey_decorator.py", line 123, in run_gooey
  File "gooey\gui\application.py", line 21, in run
  File "gooey\gui\application.py", line 27, in build_app
  File "gooey\gui\application.py", line 40, in _build_app
  File "gooey\gui\containers\application.py", line 48, in __init__
  File "gooey\gui\containers\application.py", line 215, in layoutComponent
wx._core.wxAssertionError: C++ assertion "strcmp(setlocale(0, 0), "C") == 0" failed at ..\..\src\common\intl.cpp(1694) in wxLocale::GetInfo(): You probably called setlocale() directly instead of using wxLocale and now there is a mismatch between C/C++ and Windows locale.
Things are going to break, please only change locale by creating wxLocale objects to avoid this!
[8312] Failed to execute script 'Beats2Fun' due to unhandled exception!

[process exited with code 1 (0x00000001)]

i have that error when launch the app, how to solve it?

windows 11, Python 3.10.4

If you want to use your systems python use the manual installation.
The setup has it’s own python included which can clash with your systems python installation

Good ideas! Just pushed the beatbar volume option with some other tweaks, if you’re feeling experimental should be available under action artifacts.

As for a custom ui, what elements would you provide to the tool?

When I said custom UI I mostly meant custom beatbar + sounds for it.

You’ve all been very patient and now I’m here with a reward. Did a lot of testing, fixed a bunch of issues and cleaned up the code end interface.

It’s not perfect yet, haven’t added all planned features / ideas yet but it does have some. Do have a look and please report any problems you find or improvement ideas at the link bellow. When reporting an error please run the program with the debug option enabled!

Get the latest version here:

1 Like

Will definitely check out soon

for the music, does it still only use sim and osu files? no support for mp3s? And do the other programs work as well?

Beats2Bar and Beats2Map aren’t working I think.

Also yes, reading beats from .mp3 isn’t working yet.

Custom beat sounds works by selecting an mp3,
Custom beat circle can be done by replacing the images in the programs Resources folder. This will become an option later. Also added a beat_dist option but that only works with stepmania files

Most interesting songs already have steps, find them at

https://search.stepmaniaonline.net/

Hello Nootna8,
I meet this issuem can you help me check which step is error?

Traceback (most recent call last):
File “Beats2Fun.py”, line 283, in
File “gooey\python_bindings\gooey_decorator.py”, line 134, in
File “Beats2Fun.py”, line 271, in main
File “Beats2Fun.py”, line 267, in main
File “Beats2Fun.py”, line 70, in run
File “Beats2Fun.py”, line 75, in task_load_beat_input
File “parsers\parseosu.py”, line 19, in load
File “parsers\beatmapparser.py”, line 372, in build_beatmap
File “parsers\beatmapparser.py”, line 231, in parse_hit_object
File “parsers\slidercalc.py”, line 61, in get_end_point
File “parsers\slidercalc.py”, line 122, in get_circum_circle
ZeroDivisionError: division by zero
[8152] Failed to execute script ‘Beats2Fun’ due to unhandled exception!

this is my gui setup:
image

Note: the osz file is download from the osu beatmap website and I choose none video only music

here is mine folder looks like:
Input:
image

video folder:
image

Any steps I do wrong?
I only have one video for generate the beat

Thank you!
Regards,

Bugged osu beatmap. Try with another one