-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: FluidSynth interpolation settings #54
Comments
I am also just now trying to do this as I noticed aliasing noise on some lower-bitrate samples. I'll let you know if I have any luck compiling this plugin, considering there are no instructions for Windows. |
Okay, so I'm totally lost trying to compile, so I will also say: it would be nice to be able to choose sample interpolation method. The default interpolation method (4th order) can sound a little grainy with lower-bitrate samples, so it would be nice to have the highest interpolation method (7th order) either as an option or as the default, depending on CPU hit. |
Hah, for me it's the opposite. I noticed certain older consoles use no interpolation when pitching samples, and it turns out it's hard to get that to work with soundfonts. Being able to set interp to NONE would make recreations more realistic. |
I wrote some notes a while back regarding building on Windows with Visual Studio: but I don't maintain the Visual Studio solution or anyway, I switched the build over to be based on CMake, since this keeps it cross-platform, IDE-agnostic, and not such a hostage to Projucer. the newer way to build for Windows via CMake is documented here: the idea is that you would install Docker for Windows, use Linux containers, and that Dockerfile would use Linux to cross-compile for Windows (using LLVM and MinGW-w64). the build output would be in the |
Thank you, I'll give that a try! I was trying to build in Visual Studio and was getting "No global header file was included" error messages in reference to Juce. Most of my software compiling experience is Linux software, so Windows is still a bit foreign to me. Docker is also completely unknown to me, so I'll have to see what I can figure out. Do I need to put the dependencies in the same location specified in the Visual Studio instructions? |
nope, you don't need to put any dependencies in. the Dockerfile shows the Linux container how to download dependencies from MSYS2's repositories (well, it just runs |
Oh, thank you for replying. I'll try the new way and hopefully it works out. |
I've been trying the Docker method and banging my head against a wall and floundering around. I might as well ask for more help. So I've gotten it to run the Docker script, and it gets all the way to
From what I can gather, it tries to check pkg-config, but it fails to find a version of "libpcre2-8". I tried to run llvm-mingw (the command should use mstorjo/llvm-minw btw) but I don't even know if that instance is synced with the |
I can't even get that far. How am I supposed to run the
There doesn't seem to be an option to run this command from within Docker Desktop and no other terminals seem to work (cmd.exe, PowerShell), which makes sense, since they are not bash shells. Sorry if I'm an idiot, but what am I missing here? |
@mrbumpy409 I did the following (skipping around an hour of doing other things that didn't yield any progress): You did just remind me of the buildkit thing, but changing that setting didn't make a difference. |
I finally got the command to run in WSL--I had to install Ubuntu and enable integration with it in Docker Desktop--but alas, it throws the same errors as when I run it in a Git Bash terminal. I've attached the command output here: WSL_output.txt. I don't have Visual Studio installed on here. My previous Visual Studio compilation attempt was in VirtualBox but Docker won't run in a VM so I have to do this now on my main Windows install, which I'd like to avoid junking up with anything unnecessary. I'll install it if I need to, but I'd like to hear from @Birch-san first. |
for what it’s worth: it is possible to run Docker for Windows + Linux containers without installing WSL2, but yes that’s probably the best way (since it’s the best way to run a Linux virtual machine). It believes there’s a syntax error in the bash script, because it saw Windows-style line endings (CRLF). this means you cloned the repository using Windows defaults. You need to clone the repository with Unix-style line-endings ( git clone https://github.com/Birch-san/juicysfplugin.git --config core.autocrlf=input |
to clarify: this |
I'm not getting errors related to the bash command. There seems to be something weird with either the way docker gets configured by the script (not including a needed package) or the way I set up the WSL environment. This virtualization business is pretty arcane to me, so I'm hoping someone else can replicate this issue. |
none of these should be problems. everything inside the container is known-good; I believe you have the same environment as I do. we should be more suspicious of external factors, particularly the MSYS2 repository from which it downloads dependencies. as for why it can't find libpcre… I told
it seems pcre-8.45-1 should match that, so it's not immediately obvious to me what the problem is. you can try running just this script, locally in Git Bash for Windows, or inside WSL: ./get_fluidsynth_deps.sh and see what kinds of stuff it downloads, and whether there's any obvious signs that libpcre is absent. I think it will try to install them to |
oh interesting; it's looking for perhaps the newer glib wants the newer major version of libpcre, then. try changing - declare -a PKGS=("libiconv" "flac" "glib2" "libogg" "opus-1" "libvorbis" "pcre-" "libsndfile" "gettext")
+ declare -a PKGS=("libiconv" "flac" "glib2" "libogg" "opus-1" "libvorbis" "pcre2" "libsndfile" "gettext") |
Okay, after fixing the line endings of the git clone, I have made it much further. Changing "pcre-" to "pcre2" allowed me to get past the Cmake error reported by @DaforLynx, and The I then had the process stop when it couldn't find the VST2 SDK:
I happen to have the VST2 SDK 2.4, so I copied the contents of "vstsdk2.4" into "VST2_SDK" and the script proceeds. Now I'm running into issues here: If these problems are unique to building x86 and/or VST2, I am happy to go without them, as I only plan to use 64-bit VST3. UPDATE: Indeed, this appears to be the 32-bit UUIDGetter issue mentioned in the 3.1.0 release notes. So now, how to bypass 32-bit plugin building... |
hmm I actually thought x86 was already disabled. I commented out the only entry in the graph that creates any dependency from the entrypoint to any of the x86 layers: juicysfplugin/win32.Dockerfile Line 124 in c95eb57
maybe if you don't specify a target: it builds all targets? I guess that's the problem. you could try explicitly asking for the x64 target, via docker build . -f win32.Dockerfile --tag=llvm-mingw --target=juicysfplugin_x64 this means that the final target ( maybe there's a way to enable both targets? since |
I'll give it a try. How important is the "DOCKER_BUILDKIT=0" environment variable before that? Also, did you mean to close the ticket? |
What about commenting out the following lines in the win32.Dockerfile?:
Would that simplify things regarding the distribution step? Either way, if I only need to manually copy the VST3 files rather than having an installer, that is not an issue for my use case. |
it disables the newer-generation parallel Docker build, to get back some old behaviours that were useful for developing changes to the Dockerfile. namely that any layer that is created successfully: it'd give you an image id, so if anything went wrong after that you could look inside the last completed layer (via if you don't intend to / know how to make use of those debugging/development techniques, then don't use |
yes, you can just comment out those x86 lines in the Dockerfile. and yes, it's not essential to run the distribute step. that's simply how I automate putting it into a zip with licenses. but you might want to study the well, maybe WSL2 + Docker gives you some nice file explorer GUI to do that anyway. |
I'm currently building with the aforementioned Dockerfile lines commented out. Now I get much further, but again run into an error:
Unable to find mp3lame library. Unfortunately, I need to head out for a few hours, so to be continued... UPDATE: I'm guessing this might be related to my adding the mpg123 package for SF3 support. I will disable that again and recompile. |
Okay, last update before I have to leave. When I remove mpg123 from the FluidSynth dependencies, I get the following errors during linking: fluidsynth_linking_default.txt When I add mpg123, I get the error reported in my previous comment (missing mp3lame library). When I add both mpg123 and lame, I get the following: fluidsynth_linking_with_mpg123_lame.txt Seems it's unhappy with Opus now? |
Edit: ah, the exact same error as @mrbumpy409 . At least I'm not alone. The libpcre2 solution worked (thank you so much), but now I'm getting new compile errors XD
and so on. From what I could gather, the linker, LLD, doesn't appear to be detecting the glib2 import. This might not even be juicysf's fault, but maybe some tweak to one of the configuration files could fix it. I don't have a clue what or which, though. We are successfully installing the mingw-w64-clang-x86_64-glib2 package at an earlier step. It should contain those functions. The linker just isn't importing them somehow. I'm not sure how it works. |
I can't figure this out either. I've long wanted to learn C++, but it would probably be a while before I would have learned enough to be able to understand what is going on here. |
So far I've tried:
None of these change the error. So I'm quite at a loss. Again, this is building from master without any modifications. It does seem to be a fluidsynth issue, but it's hard to say whether it's something they can fix. Fluidsynth itself seems to build fine on WSL. Maybe it's an issue with mingw (it probably is). |
Update: fluidsynth seems to compile fine in MSYS2 MINGW64 using the same cmake configuration as in configure_fluidsynth.sh |
@mrbumpy409 @Birch-san I'm going to move the compilation discussion to a new issue #56 because it's really rather unrelated to the original intent of this issue. You're free to close this if you don't see it going anywhere (i.e. you don't think it'd be a worthy feature). |
This is a long shot, but would it be possible to include some kind of setting for the interpolation method used by FluidSynth? In their API, they have functions for this already. Here in the juicysf source code you already use another one of the API commands,
fluid_synth_set_sample_rate
.I would just try to make a version with an added line myself, but I'm having trouble compiling it as it is on my Windows machine. Alternatively, somebody could assist me in that endeavor.
The text was updated successfully, but these errors were encountered: