sfarkxtc-windows moltenform
winget install --id=moltenform.sfarkxtc-windows -e Windows binaries for sfarkxtc (to uncompress soundfonts).
winget install --id=moltenform.sfarkxtc-windows -e Windows binaries for sfarkxtc (to uncompress soundfonts).
Windows binaries for the sfarkxtc tool, use it to take soundfonts and convert them from .sfark into .sf2. A fork of https://github.com/raboof/sfArkXTm
Go to the releases tab on Github and download the latest release that says "win64". Unzip the zip file.
Copy a .sfark file into the same directory as sfarkxtc. From the commandline, run a command like
sfarkxtc.exe mySoundfont.sfark mySoundfont.sf2
and it will extract the .sf2!
For quiet mode (shows less output), use
sfarkxtc.exe mySoundfont.sfark mySoundfont.sf2 --quiet
sfArk still compresses .sf2 files significantly better than even modern .7z and .rar compression. I want to store my files in a format that will still be readable, even 20 years in the future, though, so any type of unique or proprietary format is dangerous. How should I store my soundfonts?
(In 2012, j_e_f_f_g, who wrote "unsfark", claimed that sfark is an extremely fragile format relying on intel rounding errors, but this has been disputed by further research... and we'll probably have some sort of x86 emulator available for a long time. The fact that sfarkxtc will build and work targeting both x86 and x86-64, and on linux and mac, is a good sign. If you are converting many sf2 files to sfark, see my batch convert sf2 to sfark tool here which also confirms that the resulting sfark file can be decoded by sfarkxtc with 100% fidelity.)
Conclusion: If disk space is at a premium, use sfark, otherwise, use xz or 7z.
There are many ways to accomplish this, here's a pretty straightforward route:
git clone https://github.com/moltenform/sfarkxtc-windows.gitrubyinstaller-devkit-2.5.3-1-x64.exeC:\ruby\Ruby25-x64, replace this below if you used a different directoryC:\ruby\Ruby25-x64\msys64msys2_shell.cmd to open a msys2 shell.cd to where the sfarkxtc-windows source is.
make
make: g++: Command not foundexport PATH=$PATH:/c/ruby/Ruby25-x64/msys64/mingw64/binmake USE_DUMA=1pacman -Syu a few times to get the latest MSYS2make USE_DUMA=1 PROTECT_STACK=1sfarkxtc_out.exeC:\ruby\Ruby25-x64\msys64\mingw64\bin\zlib1.dll into the same directory as sfarkxtc_out.exeC:\ruby\Ruby25-x64\msys64\mingw64\bin\libssp-0.dll into the same directory as sfarkxtc_out.execd to src/testpython test_sfarkxtc.pyFor the truly paranoid (I guess I'll have to include myself here) I've included the source of zlib, in case I'm trying to build this 20 years in the future and it's hard to find the right version of zlib's source. The easiest way for it to be built on Windows is to:
(use a mingw shell as described above)
(untar the archive)
(cd into the directory)
make -f win32/Makefile.gcc BINARY_PATH=/bin INCLUDE_PATH=/usr/local/include LIBRARY_PATH=/usr/local/lib
This will generate zlib1.dll and so on. You can now modify sfarkxtc's Makefile to point to the newly built zlib, and modify all headers that refer to "zlib.h" to a relative path like "zlib-1.2.11/zlib.h".