Do my dance on your dick, ooh you know you love this shit.
Do my dance on your dick, ooh you know you love this shit.
Do my dance on your dick, ooh you know you love this shit.
Do my dance on your dick, ooh you know you love this shit.
– Tyga
Generate funscripts from any music media using its beat, pitch and energy. The analysis of the audio can be cropped, and there are sliders and radio buttons to control the funscript generation. The funscript preview updates in real time.
Note that the music analytics - the difficult bit - are performed by software written by people who know more about music analysis than I do and that need to be installed separately.
Currently there is no stand alone binary for FunscriptDancer. It needs to be run from source, but it should run on Windows, MacOS and Linux.
In case anyone was wondering: the prototype can be found in the prototype folder, where you can admire my awk skillz.
I chose to do this in Julia as it combines the power and ease of use of high level data-focussed environments like Python (e.g. dataframes, plotting) with the speed and possibilities for building distributables across platforms of lower level languages.
But then I discovered that the built distributable is 2GiB (srsly) and also it segfaults when run. Distributables is not the priority or strength of Julia, and Julia remains immature. It is a nice language to work with in many ways though.
I may be able to improve this by swapping out the GUI toolkit (this is Gtk: I’ve already ruled out Qt but haven’t tried ImGui yet) and using a lower-level plotting API that doesn’t bring in the entire Julia ecosystem. I doubt it would go much below 1GiB uncompressed.
But I’m also considering reimplementing (again) in Rust or C++.
There are a number of improvements I’d like to make (the blank spaces by the sliders are placeholders for new controls I have in mind; Sonic Annotator can be cut out and the Vamp libraries bundled and called directly; better handling of media with multiple pieces of music) but I’m not going to pursue them until I’ve improved the distributable situation.
Was already seraching for a tool like this and tried some other ones. Sounds quite prommising, I’ll give it a try if I find some free time (always my issue )
After a bit of hacking, it looks like replacing the GUI toolkit (and the plotting library) with the Julia bindings for Dear ImGUI (the toolkit used by OpenFunscripter) would allow me to produce a distributable binary that both successfully runs and is a little over half a gigabyte uncompressed - chunky, and much larger than the equivalent in C++ (or I think Rust) would be, but not totally ridiculous. We’re probably all downloading videos larger than that. So I think I’ll go that way rather than rewrite in another language.
Rewriting the user interface and the plots isn’t a small task, and it’s a technology I haven’t used before, so don’t expect an update to be released particularly soon.
There’s probably an issue with the Path environment variable.
Try opening a command prompt (cmd from Windows menu) and entering sonic-annotator -l and pressing enter. It should show a list of available metrics that look like vamp:bbc-vamp-plugins:bbc-energy:average.
If it says sonic-annotator is not recognized... then it’s not on the Path. You need to add the directory containing the .exe. See here.
This is the program I’ve been waiting for. A quick way to make scripts to the beat of the music and it does a great job even with the default setting.
It’s not perfect so scripts need some tuning after, especially when there’s no beat to follow but it certainly faster than doing the whole thing manually.
The install was a bit much but you explained very well how to do it.
Well done!