Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@ install:
Invoke-WebRequest "https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip" -OutFile "vstsdk.zip"
Expand-Archive "vstsdk.zip" "C:\tmp"
}
if (-Not (Test-Path "C:\tmp\Monad.FLParser.dll")) {
Invoke-WebRequest "https://github.com/LeStahL/FLParser/releases/download/compatibility-20.9/Monad.FLParser.dll" -OutFile "C:\tmp\Monad.FLParser.dll"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we maybe include the FL parser as source in a subdir, similar to how we handle the VST SDK, instead of linking an external binary?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem! 'Other stuff' turned out great! :)

We could add the FL parser source at configure time and compile it, instead of downloading the binary, with only the implication of requiring a higher .NET build tools version than we do now. We have the options

(1) add the FL parser repo as git submodule.
(2) use CMake to download the source from the FL parser repo at configure time.

To build it together with WS, we could

(a) add a library target for the FL parser to the WaveSabreConvert CMakeLists.txt,
(b) modify the FL parser to include a CMakeLists.txt

Let me know which one you'd prefer. I think (2a) is the option most similiar to the VST SDK handling.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem! 'Other stuff' turned out great! :)

cheers!

I like both 2a and 2b. Obviously 2a is more localized/practical and doesn't rely on external maintainers to do or accept changes in their repo. I especially like it if we can reference a specific commit, which means explicitly updating it from time to time, but I'd rather do that than have the rug pulled under us if/when breaking changes happen.

So yeah, tl;dr I like 2a, and perhaps we can look into 2b at some point in the future of monad wants to support cmake explicitly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, changed this. Some other changes were necessary:

  • Removed the VS 2013 configuration, because it lacks the required C# language version for the FL parser.
  • Added the VS 2022 configuration, because it exists now and is interesting.
  • Changed the Wayback request URI (this seems to have changed in the meantime, but because of the cache, none of the other pipelines have failed so far).

If Monad decide, at some point, to unarchive their FL parser repo, we can use the now included CMakeLists.txt for a CMake-support-PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, and now it references a specific commit as requested :D

}

build_script:
# build native code/tests
- mkdir build
- cd build
- cmake -DCMAKE_GENERATOR_PLATFORM=%PLATFORM% -DVSTSDK3_DIR="C:/tmp/VST3 SDK" ..
- cmake -DCMAKE_GENERATOR_PLATFORM=%PLATFORM% -DVSTSDK3_DIR="C:/tmp/VST3 SDK" -DMONAD_FL_PARSER_DIR="C:/tmp/" ..
- msbuild /v:minimal /nologo WaveSabre.sln
- msbuild /v:minimal /nologo /property:Configuration="MinSizeRel" WaveSabre.sln
- cd ..
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ Vst3.x/*
!Vst3.x/README
Data/data.aps
Vsts/*/*.def
WaveSabreConvert/FLParser/Monad.FLParser.dll

# Ignore VS 2017 IDE fluff
.vs/
14 changes: 13 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ set(BUILD_WAVESABRE_CONVERT ON CACHE BOOL "Do not build WaveSabreConvert.")
set(BUILD_WAVESABRE_CONVERT_TESTS ON CACHE BOOL "Do not build the WaveSabreConvert tests.")
set(BUILD_CONVERT_THE_FUCK ON CACHE BOOL "Do not build ConvertTheFuck.")
set(BUILD_PROJECT_MANAGER ON CACHE BOOL "Do not build the project manager.")
set(VSTSDK3_DIR "${PROJECT_SOURCE_DIR}/Vst3.x/" CACHE PATH "VSTSDK location")
set(VSTSDK3_DIR "${PROJECT_SOURCE_DIR}/Vst3.x/" CACHE PATH "VSTSDK location.")
set(MONAD_FL_PARSER_DIR "${PROJECT_SOURCE_DIR}/WaveSabreConvert/FLParser/" CACHE PATH "Monad FL parser location.")

# Download and unpack VST3 SDK
set(DOWNLOAD_VST3SDK OFF CACHE BOOL "Download and unpack VST3 SDK automatically.")
Expand All @@ -33,6 +34,17 @@ if(${BUILD_VST_PLUGINS} AND ${DOWNLOAD_VST3SDK})
endif()
endif()

# Download and unpack the Monad FL Parser
set(DOWNLOAD_MONAD_FL_PARSER OFF CACHE BOOL "Download the Monad FL parser binary automatically.")
if(${BUILD_WAVESABRE_CONVERT} AND ${DOWNLOAD_MONAD_FL_PARSER})
find_file(MONAD_FL_PARSER_TEST name Monad.FLParser.dll HINTS ${MONAD_FL_PARSER_DIR})
if(${MONAD_FL_PARSER_TEST} MATCHES MONAD_FL_PARSER_TEST-NOTFOUND)
message(STATUS "Monad FL parser not found. Will download.")
file(DOWNLOAD https://github.com/LeStahL/FLParser/releases/download/compatibility-20.9/Monad.FLParser.dll Monad.FLParser.dll SHOW_PROGRESS)
file(COPY "${CMAKE_CURRENT_BINARY_DIR}/Monad.FLParser.dll" DESTINATION "${MONAD_FL_PARSER_DIR}")
endif()
endif()

# shared code
add_subdirectory(MSVCRT)
add_subdirectory(WaveSabreCore)
Expand Down
3 changes: 3 additions & 0 deletions Docs/Home.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- WaveSabre builds have only been tested with Visual Studio 2013/2015/2017/2019 and version 3.6.6 of the VST3 SDK.
- Due to licensing requirements, WaveSabre requires you to either [download](https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip) and copy the VST3 SDK into the build yourself. Download, extract, and copy into the *"Vst3.x"* folder. See [this readme](https://github.com/logicomacorp/WaveSabre/blob/master/Vst3.x/README) or download the VST3 SDK automatically using CMake (see below).
- For the same reasons, you should [download](https://github.com/LeStahL/FLParser/releases/download/compatibility-20.9/Monad.FLParser.dll) and copy the Monad FL parser into the build yourself. Download and copy the dll into the folder at `WaveSabreConvert/FLParser/`. See [this readme](https://github.com/logicomacorp/WaveSabre/blob/master/WaveSabreConvert/FLParser/README). You can also let CMake download the Monad FL parser automatically for you; see below for the command line options to use for this.

### CMake

Expand All @@ -15,6 +16,8 @@ WaveSabre has a new [CMake](https://cmake.org/) based build-system that can gene
- Run `cmake -B build` to generate the Visual Studio project files and solution
- Optionally, you can also specify `-DVSTDIR=<some-path>` to copy the VST plugins into your DAW's VST plugin directory upon build.
- Optionally, you can specify `-DDOWNLOAD_VST3SDK=ON` to let CMake download and unpack the VST3 SDK for you.
- Optionally, you can specify `-DDOWNLOAD_MONAD_FL_PARSER=ON` to let CMake download and unpack the Monad FL parser for you.
- It is possible to specify a custom directory for the Monad FL parser using `-DMONAD_FL_PARSER_DIR=<some-path>`.
- You can specify `-DBUILD_VST_PLUGINS=OFF` to avoid building the plugins (useful for projects that only need the synthesizer and not the plugins).
- You can also specify `-DVSTSDK3_DIR=<dir>` to use a VSTSDK from outside of the source-tree.
- You can limit the tools you want to build by using `-DBUILD_WAVESABRE_CONVERT=OFF`, `-DBUILD_WAVESABRE_CONVERT_TESTS=OFF`, `-DBUILD_CONVERT_THE_FUCK=OFF` or `-DBUILD_PROJECT_MANAGER=OFF`.
Expand Down
2 changes: 1 addition & 1 deletion WaveSabreConvert/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ add_library(WaveSabreConvert SHARED ${WAVESABRE_CONVERT_SOURCES})

csharp_set_designer_cs_properties(${WAVESABRE_CONVERT_SOURCES})
csharp_set_windows_forms_properties(${WAVESABRE_CONVERT_SOURCES})
set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_REFERENCE_Monad.FLParser "${CMAKE_CURRENT_SOURCE_DIR}/FLParser/Monad.FLParser.dll")
set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_REFERENCE_Monad.FLParser "${MONAD_FL_PARSER_DIR}/Monad.FLParser.dll")
set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_REFERENCES
"System"
Expand Down
7 changes: 0 additions & 7 deletions WaveSabreConvert/FLParser/LICENSE

This file was deleted.

Binary file removed WaveSabreConvert/FLParser/Monad.FLParser.dll
Binary file not shown.
5 changes: 5 additions & 0 deletions WaveSabreConvert/FLParser/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
You can download the last version of the Monad FL parser [here][1].

Copy the dll downloaded from there into this folder.

[1]: https://github.com/LeStahL/FLParser/releases/download/compatibility-20.9/Monad.FLParser.dll