OpenFunscripter - a scripting tool - 3.2.0 release

Clears all nodes that are placed within 15ms (0.015s) of each other. I havent made it so you can dynamicly adjust, or only applies that to the selected part of the script. But thats because its not realy needed.

If needed you can just edit the code (there is only 1 line where the edit is needed).

Note, it always removes the point afterward (as that keeps the timing of the movement the same)

1 Like

Can’t seem to get it to work.
It seems like the points have to literally be on each other, but 2 points literally on each other are cancelled out already with OFS.
I made two points that are both at the same vertical level, but 3ms apart from each other horizontally, and it won’t delete them.

Apparently i made it already that it only considers the selected area. Had been a while since i used it, and since it was just a once purpose script didnt pay too much attention to it.

This is very useful.

Just edit this line in the script if you want to change the distance,
if action.pos == action_prev.pos and action.at - action_prev.at < 0.015 then

Before:

After:

Note though, if your script looks like that, you might want to use OFS’s built in simplifyer instead. Thats just way too many nodes to begin with. In this case the handy will very likely mimic a vibrating motion rather than a smooth one.

My script was more ment for some limited situations where most of the script is fine, but some nodes were erroneous and you quickly want to get rid of those. But that example looks like a live recording, and my plugin isnt going to make that usable by simply removing duplicates.

Hey, check out my newly released OFS v3 extension enabling way more detailed statistics for the GUI!

4 Likes

I’ve tried to update from (working) version 2 to version 3.2.0, and it won’t run.
I’m using the non avx build.
I’ve uninstalled, rebooted, updated Nvidia drivers, tried the installer and the zip file, nada.
Just a spinning circle for 5 seconds, then nothing.
Earlier, someone mentions that there’s possibly an issue with MPV-2.dll, and suggests replacing with a renamed MPV-1.dll, but that doesn’t help.
I did see on github, there’s discussion that mpv-2 uses the AVX processor extensions. I don’t know if that’s the issue.

The log file is empty, and that’s the only file in the ‘OFS3_data’ folder.

Has anyone found the issue or a workaround?

Edit - additional information:
Intel Core i5-3450S, step E1.
HWiNFO64 says that AVX is supported. Base level, not FMA. No AVX-2 or -512
SIMD 4.1 and 4.2 supported
GPU GTX960, and OpenGL is supported
OS is Windows 7 (ultimate 64 bit)

Hello I had a question please forgive me I know nothing about programming so if this is asking the world tell me to heck off but I had a genuine question.
So I figured out that when mapping cock heroes it’s easier to just watch the video once and hit zero every time a beat passes and then go back through and put a dot in the middle of the two beats is there a way that this program could automate that second half
Basically having a feature where you put down two dots and then the computer figures out what the middle of the two dots is and places the peak
image
you put the points down on the beats/notes and the program figures the mid point between them
I also apologize if this is not the proper way to ask/recommend things / it’s probably already in the program and I’m just a dingus and haven’t figured it out yet lol

So, also not a programmer here but avid Linux user. Would love to try and get this working on Linux (Gentoo) but I don’t know how you even compile it. I can see it uses CMake but I don’t know the commands needed or what dir you should be in to do the CMake. Anyone have any pointers for me?

Sorry for the newbie question…

hi i cant get 3.2.0 to work. if i download the exe files at the install it says v1.0.0 and wont start up after install and the zip files dont do anything at all for me. v2.0.0 works fine tho.

is this a problem in the files or just something that i dont get?

Its a plugin :slight_smile:

Got it figured out (kinda):
From the GitHub page:

  1. Clone the repository
  2. cd "OpenFunscripter"
  3. git submodule update --init
  4. Run CMake and compile

With step 4, go in to the src directory then do “cmake ..” (that’s two periods after cmake) and it will start to build.

The build is failing with localization errors but at least I have something to work with now :wink:

What software did you install to do that? I assume you installed CMake and maybe Clang?

GCC and cmake.

I missed Step 5 - run “make” after the cmake portion has finished.

If you are able to try it, please let me know if it fails for you also around the 85% mark with localization errors. I don’t know how to fix it, though.

@LeGrosFromage It turned out to be much easier than I initially thought.

I decided to install Visual Studio 2022 Community edition and made sure to select C++ desktop development and also made sure that CMake was selected to be installed in the optional modules for C++.

After that I simply connected to git, cloned the repo and then I’m a bit unsure what I did. I doubled clicked on showing Folder View in the Solution Explorer and suddenly CMake was running, downloading and possibly building stuff. Once that was done I simply did an ordinary Build All in Visual Studio and voila, OFS was built and it was possible to run OpenFunscripter.exe from the OFS/bin folder. My first C++ build in over a decade btw :slight_smile:

However, I guess this doesn’t help you since you want to build it for Linux. There is an option in the Visual Studio installer called Linux Development with C++, but that feature is dependent on either a remote Linux machine or the Windows subsystem for Linux. The build will be done in Linux, which must be configured with gcc, gdp, rsync, zip and ninja-build according to the documentaiton.

@sentinel Yeah I’m using Gentoo so I’m building code all the time (everything in Gentoo is done from source). The “make” portion runs fine until I get to this:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx :: uint32_t
      |      ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:11:1: error: expected unqualified-id before ‘{’ token
   11 | {
      | ^
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_src_file(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:16: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);

I don’t know how to fix that and based on other experiences with other programs in the past, I’m reluctant to ask for help on Github as the answer usually is “there’s a Windows binary, just use that”

So near but yet, so far.

That double colon :: in the enum declaration on line 10 should not be there. It should be a single :

It only has a single colon on github, so I guess another one must have magically appeared in your source tree?

Ha, that was my attempt at a bug fix. With the one colon, as in the source code, it also produces this error:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:13: error: found ‘:’ in nested-name-specifier, expected ‘::’
   10 | enum ColIdx : uint32_t
      |             ^
      |             ::
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx : uint32_t

Note now the expected ‘::’

the double colon is not legal enum syntax. Based on the error message I think there’s nothing wrong with this file, but the last included file is broken.

Could you take a look at rapidcsv.h (included on line 4), and check if there perhaps is something wrong with the include guards. Or try updating to a newer version of that file.

Thanks for that.
I downloaded a new copy of rapidcsv.h from the Github project page, there was a minor version difference to thought that would be the easiest way to go. To be on the safe side I deleted the whole project, pulled the whole OFS again from Git, replaced that header file, did a new cmake (which ran 100% clean), did a make, failed in the same place with the same thing. Here’s the full output of the error:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:13: error: found ‘:’ in nested-name-specifier, expected ‘::’
   10 | enum ColIdx : uint32_t
      |             ^
      |             ::
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx : uint32_t
      |      ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:11:1: error: expected unqualified-id before ‘{’ token
   11 | {
      | ^
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_src_file(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:16: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:48: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                                                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:69:20: error: ‘ColIdx’ has not been declared
   69 |         fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:69:52: error: ‘ColIdx’ has not been declared
   69 |         fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                                                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_header_enum(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:100:16: error: ‘ColIdx’ has not been declared
  100 |     fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:100:44: error: ‘ColIdx’ has not been declared
  100 |     fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                                            ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:106:20: error: ‘ColIdx’ has not been declared
  106 |         fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:106:48: error: ‘ColIdx’ has not been declared
  106 |         fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                                                ^~~~~~
make[2]: *** [localization/CMakeFiles/gen_localization.dir/build.make:76: localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1286: localization/CMakeFiles/gen_localization.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Please let me know if there’s anything else you think I could try - it would be great to get this working.