Skip to content
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

VST support for macOS. #70

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open

Conversation

fefal64
Copy link

@fefal64 fefal64 commented Jul 8, 2021

Support for macOS. Just the VST stuff.
Checked on the environment described in macOS support
Details about the modifications are documentes in [macOS porting details] wiki page.(https://github.com/fefal64/WaveSabre/wiki/macOS-porting-details) wiki page.
Fixed windows compilation but requires editing vstgui.h.

fefal64 added 13 commits July 4, 2021 23:13
Redefinition of _WIN32_WINNT to 0x0600 is required is vstgui.h (line 69).
Surprisingly /D compiler option takes precedence over #define and windows vista features are found.
The /D switch worked because I was compiling with a vstgui.h already patched. So no surprise.
Because I can not see any workaround but patching vstgui.cpp and vstgui.h, a patch is included
and AppVeyor script is modified to apply the patch.
…cache save.

VSTSDK download is failing by some reason just for the Visual Studio 2013 + x64 job.
and it makes an unsuccessful build, so cache is not created.

Let's try to get success by removing that job and put in it again in next commit.
@fefal64
Copy link
Author

fefal64 commented Jul 11, 2021

So, I was able to make AppVeyor to build successfully the project for Win32 and x64 by patching the vstsdk source code, for requiring Windows Vista features.

But wait; is AppVeyor's cache shared among branches? I hope no, because it could affect master branch compilation.

@fefal64
Copy link
Author

fefal64 commented Jul 11, 2021

So, I realized that AppVeyor can also build macOS stuff. So added macOS image to .appveyor.yml and It build the project successfully for that platform.

But there is a caveat: downloading vstsdk always fails for one of the two windows jobs; that Invoke-WebRequest cmdlet. I tried to reuse the cache, but no success.

@yupferris
Copy link
Member

Finally getting a chance to look at this, and first off, let me say this is great work, and I'm super pleased to see it! We've been wanting to build mac versions of the plugs in particular for a long time - ideally this would open the door for many more musicians to use the tool than can today, as you're surely aware.

Looking at most of the changes, things look pretty benign/straightforward, but I had some thoughts:

  • I think I want to look into Factor out sample loading logic from Thunder and Specimen into a separate file #52 more properly first, as that would likely enable us to much more easily isolate the platform-specific parts of the sampler devices, which I suspect would bring down the amount of changes in this PR quite a bit. I wanted to do some size measurements on that other PR first, so I'll get on that and see if we can get it pushed through ASAP.
  • I (or someone else, ideally who's more familiar with both mac and appveyor) need(s) to look into the cache stuff a bit more; I don't have any idea why it fails currently and that bugs me a lot, because having CI on this is a must IMO (since we're not typically building on mac ourselves, so having it in CI is the only way it can be reasonably maintained moving forward).
  • Have you tested importing/encoding samples with Specimen using a mac plug, and subsequently decoding/playing it back on Windows? Ideally it would sound more or less the same, but it's something we need tested. Ofc, Specimen is planned for deprecation once pulsejet is properly incorporated, but I have limited motivation to actually do that work these days so we'll see when that could actually happen; in the meantime Specimen is still quite important (as it is for older projects too!).

@yupferris
Copy link
Member

FYI, #72 (which superceded #52) was just landed/merged.

@yupferris
Copy link
Member

re the Invoke-WebRequest cmdlet for Windows builds, I too noticed that this was a bit flaky - however, you can use the "re-run incomplete" button in the appveyor UI to restart the failing/incomplete build jobs (this also works if you notice a particular job failing early in the run and cancel the build). It's ofc annoying that it's so flaky, but it should still work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants