Beats2Fun (Funscript tools / PMV Generator)

After playing around for a while with the PMV generator over here: https://www.reddit.com/r/AutoPMVs/

I got inspired to make something similar myself, the main improvements I wanted to achieve was better timing acuracy and generation speed. Rhythmgames usually have some custom file support, which means a HUGE source of perfectly timed songs. My tools supports some of there for it’s generation.
As for speed, have tested around with batches/threads/bitrates and am verry happy with the result, to take an average about 5 minutes for a video.

The project is called Beats2Fun and contains 3 tools:

Beats2Fun
Give it a folder of videos, give it a osu/stepmania custom file, and it will output a pmv with heatmap and funscript

Beats2Bar
Apply a CockHero style beatbar + beatsounds to an existing video, the video should have a funscript / beat txt with it

Beats2Map
Generates heatmap images for funscripts or osu/stepmania customs. The second is nice to check how heavy your PMV might be before generation

This is only a first release. Let me know what you think! Also please credit this post / project when releasing a video created with these tools.

Example generated PMV’s
https://discuss.eroscripts.com/t/beats2fun-pmv-demo-am-to-pm-pmv-if-ya-gettin-down-pmv-invitation-from-mr-c-pmv/60939

For instructions / screenshots / documentation: the project can be found here

Latest download link

30 Likes

Looks really interesting, Thanks! But the link to the latest release doesn’t seem to work, and the github releases page is empty.

1 Like

I definitely will check it out. Also Auto PMV Generator V4.3 is not made by me. I just post the updates here. All credit for its creation should go to well “autopmv” on https://www.reddit.com/r/AutoPMVs/. I really excited to see the how well it can script beats cause if thats the case ohh boy it just made a project I was thinking of making alot eaiser.

yes he’s right there is nothing there :face_with_diagonal_mouth:

Haven’t posted a release yet, but the builds are available under actions: Actions · Nootna8/Beats2Fun · GitHub

Click the top action, then builds are under Artifacts at the bottom

I think only you can download action artifacts? They’re don’t seem to be downloadable by the public

Looks like it works when you’re logged in to any account on GitHub. Anyway I changed the link to a pre-release.

Think this build might have a bug regarding output folder. Running it as admin or from a different working directory should fix that for now

tried to make a video but I keep running into this error everything should have been set up correctly on my end. Have tried running it with and without beat bar, but idk maybe I’m missing something here. Hope the screenshot will be of use for troubleshooting.

What actions did you take to come here? What buttons/what fields filled in.

Could you also send the output of the main program progress?

input a 9-minute mp3 and in the video, the folder had four 30-minute videos. Search reclusive not selected, clip distance at 0.40, fps set at 25, video amount set a 0. As soon as I hit start the error from my pic above shows up. when trying to stop the process with the stop button on the program it tells me it may corrupt my files. When I hit the are you sure you want to stop button. The program does not close. Have to click the x button on the upper corner to close the program.

In terms of output of the main program progress, I have no idea how to do that lol. Idk code or programming sry.

Beats2bar. Just tried to play with it but the output section for required argumentations is asking for a “video file” as the output location for the input video file. Due to this I cant actually keep going with the program.

The input requires a StepMania or Osu song, beat detection on mp3’s is not supported yet.

AHHHH I see sorry for missing that

I tried using the pre-release and got an error as well. It looks like it find the videos, but can’t create clips from them? I used a stepmania song and a folder full of short mp4 clips.

Here’ the paste from the output window:

  • Checking input

\ Checking input
v Input - Song: E:\b2fWIP\music/Holding Out For A Hero.mp3 - Beatcount: 438, - Output: Holding Out For A Hero-PMV

  • Getting and processing beats

\ Getting and processing beats
v Getting and processing beats

Found 63 videos

Video clip analasys: 0%| | 0/63 [00:00<?, ?it/s]
Video clip analasys: 21%|\u2588\u2588 | 13/63 [00:00<00:00, 117.01it/s]
Video clip analasys: 51%|\u2588\u2588\u2588\u2588\u2588 | 32/63 [00:00<00:00, 144.94it/s]
Video clip analasys: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 49/63 [00:00<00:00, 155.51it/s]
Video clip analasys: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 63/63 [00:00<00:00, 139.87it/s]

Clip assignment: 0%| | 0/249 [00:00<?, ?it/s]
Clip assignment: 100%|#########9| 248/249 [00:00<00:00, 247781.66it/s]
No clips

Try taking out the short clips or reducing the video count. No clips means it fails to find a piece of video for the required length. That part still in need if improvement hehe

Ok, tried with longer clips and got a different error:

Merging clips together: 97%|#########6| 245/253 [00:21<00:00, 10.95it/s]Traceback (most recent call last):
File “Beats2Fun.py”, line 169, in
File “gooey\python_bindings\gooey_decorator.py”, line 134, in
File “Beats2Fun.py”, line 163, in main
File “Beats2Fun.py”, line 107, in make_pmv
File “videoutil.py”, line 335, in clips_merge
File “videoutil.py”, line 77, in ffmpeg_run
Exception: ffmpeg failed with 1: command: E:.…/Beats2Fun/Resources/ffmpeg/ffmpeg -hide_banner -y -f concat -i “C:\Users.…\AppData\Local\Temp\tmpxxq1l4f9\1xa2eem0.txt” -i “E:\b2fWIP\music/Holding Out For A Hero.mp3” “out/Holding Out For A Hero-PMV.mp4”
[36556] Failed to execute script ‘Beats2Fun’ due to unhandled exception!

Alright I can fix that. It can’t find ffmpeg. Give me second to make a build

I ran as admin using the default options BTW

ok tried it again the same way I described above except I used an sm file this time and got this error. Hope this is helpful to you

  • Checking input

\ Checking input

| Checking input
v
Traceback (most recent call last):
File “halo\halo.py”, line 605, in stop_and_persist
File “halo\halo.py”, line 305, in _write
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 85-87: character maps to

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “Beats2Fun.py”, line 169, in
File “gooey\python_bindings\gooey_decorator.py”, line 134, in
File “Beats2Fun.py”, line 163, in main
File “Beats2Fun.py”, line 63, in make_pmv
File “halo\halo.py”, line 532, in succeed
File “halo\halo.py”, line 607, in stop_and_persist
File “halo\halo.py”, line 305, in _write
File “colorama\ansitowin32.py”, line 41, in write
File “colorama\ansitowin32.py”, line 162, in write
File “colorama\ansitowin32.py”, line 184, in write_and_convert
File “colorama\ansitowin32.py”, line 246, in convert_osc
TypeError: cannot use a string pattern on a bytes-like object
[29200] Failed to execute script ‘Beats2Fun’ due to unhandled exception!

ffmpeg is actually in the folder it’s looking in. could be failing because it’s missing .exe or because python is being picky about forward/backslash