fixed windows build platform

This commit is contained in:
2026-01-22 22:59:28 -06:00
parent 1acbbce033
commit 6bdf9c0e1f
9 changed files with 38 additions and 66 deletions

4
.gitmodules vendored
View File

@@ -4,7 +4,3 @@
[submodule "lib/rtmidi"]
path = lib/rtmidi
url = https://github.com/thestk/rtmidi.git
[submodule "lib/qt5"]
path = lib/qt5
url = https://github.com/qt/qt5.git
branch = 6.11

View File

@@ -9,41 +9,19 @@ find_package(Qt6 REQUIRED COMPONENTS Widgets)
if (WIN32) # windows 11 x86_64
# dont judge me i had a lot of issues with this
add_library(rtaudio_headers INTERFACE)
target_include_directories(rtaudio_headers INTERFACE
"C:/rtaudio/include"
"C:/rtaudio/include/rtAudio"
add_library(RtAudio::rtaudio SHARED IMPORTED)
set_target_properties(RtAudio::rtaudio PROPERTIES
IMPORTED_LOCATION "${RtAudio_ROOT}/bin/rtaudio.dll"
IMPORTED_IMPLIB "${RtAudio_ROOT}/lib/rtaudio.lib"
INTERFACE_INCLUDE_DIRECTORIES "${RtAudio_ROOT}/include/rtaudio"
)
add_library(rtaudio_binary SHARED IMPORTED)
set_target_properties(rtaudio_binary PROPERTIES
IMPORTED_LOCATION "C:/rtaudio/bin/rtaudio.dll"
IMPORTED_IMPLIB "C:/rtaudio/lib/rtaudio.lib"
add_library(RtMidi::rtmidi SHARED IMPORTED)
set_target_properties(RtMidi::rtmidi PROPERTIES
IMPORTED_LOCATION "${RtMidi_ROOT}/bin/rtmidi.dll"
IMPORTED_IMPLIB "${RtMidi_ROOT}/lib/rtmidi.lib"
INTERFACE_INCLUDE_DIRECTORIES "${RtMidi_ROOT}/include/rtmidi"
)
add_library(rtaudio INTERFACE)
target_link_libraries(rtaudio INTERFACE
rtaudio_headers
rtaudio_binary
)
add_library(RtAudio::RtAudio ALIAS rtaudio)
add_library(rtmidi_headers INTERFACE)
target_include_directories(rtmidi_headers INTERFACE
"C:/rtmidi/include"
"C:/rtmidi/include/rtMidi"
)
add_library(rtmidi_binary SHARED IMPORTED)
set_target_properties(rtmidi_binary PROPERTIES
IMPORTED_LOCATION "C:/rtmidi/bin/rtmidi.dll"
IMPORTED_IMPLIB "C:/rtmidi/lib/rtmidi.lib"
)
add_library(rtmidi INTERFACE)
target_link_libraries(rtmidi INTERFACE
rtmidi_headers
rtmidi_binary
)
add_library(RtMidi::RtMidi ALIAS rtmidi)
else() # debian 12 x86_64
@@ -97,6 +75,7 @@ qt_add_executable(metabolus
)
set_target_properties(metabolus PROPERTIES AUTOUIC ON)
target_compile_options(metabolus PUBLIC "/Zc:__cplusplus")
target_include_directories(metabolus PRIVATE
${CMAKE_SOURCE_DIR}/src/ui
@@ -106,9 +85,9 @@ target_include_directories(metabolus PRIVATE
if (WIN32)
target_link_libraries(metabolus
PRIVATE
RtAudio::rtaudio
RtMidi::rtmidi
Qt6::Widgets
RtAudio::RtAudio
RtMidi::RtMidi
)
else()

View File

@@ -40,10 +40,10 @@ This synthesizer isn't very good, but it's neat :3
## Build Instructions
Prerequisites:
CMake: https://cmake.org/download/
Ninja: https://github.com/ninja-build/ninja/releases
CMake: https://cmake.org/download/ \
QtWidgets: https://www.qt.io/development/download-qt-installer-oss
Windows: MSVC
Windows: MSVC (The build scripts use Visual Studio 17 2022)
Linux: GCC
Clone repository
@@ -55,6 +55,7 @@ or if you forgot to --recursive:
git clone https://github.com/Blitblank/metabalus.git
git submodule update --init --recursive
```
\
Build. The script will build and install dependencies automatically
On Windows (MSVC):

Submodule lib/qt5 deleted from f5f14e7b58

View File

@@ -6,8 +6,8 @@ $PROJECT_ROOT = $PWD
$BUILD_DIR = "$PWD/build"
$CONFIG = "Release"
# change these to the build libs
$QT_ROOT = "$BUILD_DIR\lib\qt\install"
# change these to your need
$QT_ROOT = "C:\Qt\6.10.1\msvc2022_64"
$RTAUDIO_ROOT = "$BUILD_DIR\lib\rtaudio"
$RTMIDI_ROOT = "$BUILD_DIR\lib\rtmidi"
@@ -23,7 +23,7 @@ if (-not (Test-Path -Path $BUILD_DIR)) {
# detect dependencies
$libraries = @("qt", "rtaudio", "rtmidi")
$libraries = @("rtaudio", "rtmidi")
$dependencies_found = 0
foreach ($lib in $libraries) {
if (Test-Path -Path ".\build\lib\$lib") {
@@ -37,12 +37,12 @@ foreach ($lib in $libraries) {
if (-not ($dependencies_found -eq $libraries.Count)) {
& "scripts\install_dependencies.ps1"
} else {
Write-Host "All dependencies detected, skipping depency install step..."
Write-Host "All dependencies detected, skipping dependency install step..."
}
# configure
Write-Host "Configuring metabolus..."
cmake -S . -B $BUILD_DIR -G Ninja -DCMAKE_BUILD_TYPE=$CONFIG -DQt6_ROOT="$QT_ROOT\lib\cmake\Qt6" -DRTAUDIO_ROOT=$RTAUDIO_ROOT -DRTMIDI_ROOT=$RTMIDI_ROOT
cmake -S . -B $BUILD_DIR -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release -DQt6_ROOT="$QT_ROOT\lib\cmake\Qt6" -DRtAudio_ROOT="$RTAUDIO_ROOT" -DRtMidi_ROOT="$RTMIDI_ROOT"
# build
Write-Host "Building metabolus..."
@@ -52,11 +52,13 @@ cmake --build $BUILD_DIR
Write-Host "Deploying metabolus..."
cd $BUILD_DIR
& "$QT_ROOT\bin\windeployqt.exe" metabolus.exe
& "$QT_ROOT\bin\windeployqt6.exe" .\Debug\metabolus.exe
Copy-Item -Path "$RTAUDIO_ROOT\bin\rtaudio.dll" -Destination .
Copy-Item -Path "$RTMIDI_ROOT\bin\rtmidi.dll" -Destination .
Copy-Item -Path "$RTAUDIO_ROOT\bin\rtaudio.dll" -Destination .\Debug
Copy-Item -Path "$RTMIDI_ROOT\bin\rtmidi.dll" -Destination .\Debug
# TODO: allow input of an external qt install because this one is huge
# TODO: remove unnecessary qt modules bc why is this install like 80 gb
cd $PROJECT_ROOT

View File

@@ -9,19 +9,10 @@ if (-not (Test-Path -Path "$PWD\build\lib")) {
$build_lib_dir = "$PWD\build\lib"
# qt
mkdir "$build_lib_dir\qt" -Force
#cd $project_root\lib\qt5
cd $build_lib_dir\qt
& "$project_root\lib\qt5\configure.bat" -prefix .\install -submodules qttools,qtbase -widgets
cmake --build . --parallel
cmake --install .
# rtaudio
mkdir "$build_lib_dir\rtaudio" -Force
cd $project_root\lib\rtaudio
cmake -S . -B build -DRTDUIO_API_WASAPI=ON -DRTAUDIO_API_DS=OFF -DRT_AUDIO_API_ASIO=OFF -DRTAUDIO_BUILD_SHARED_LIBS=ON
cmake -S . -B build -G "Visual Studio 17 2022" -DRTDUIO_API_WASAPI=ON -DRTAUDIO_API_DS=OFF -DRT_AUDIO_API_ASIO=OFF -DRTAUDIO_BUILD_SHARED_LIBS=ON
cmake --build build --config Release
cmake --install build --prefix "$build_lib_dir\rtaudio"
@@ -29,7 +20,7 @@ cmake --install build --prefix "$build_lib_dir\rtaudio"
# rtmidi
mkdir "$build_lib_dir\rtmidi" -Force
cd $project_root\lib\rtmidi
cmake -S . -B build -DRT_MIDI_API_WINMM=ON -DRTMIDI_BUILD_SHARED_LIBS=ON
cmake -S . -B build -G "Visual Studio 17 2022" -DRT_MIDI_API_WINMM=ON -DRTMIDI_BUILD_SHARED_LIBS=ON
cmake --build build --config Release
cmake --install build --prefix "$build_lib_dir\rtmidi"

View File

@@ -98,7 +98,7 @@ float Voice::process(float* params, bool& scopeTrigger) {
float osc3 = oscillators_[2].process(osc3NoteOffset + note_, getParam(ParamId::Osc3PitchOffset)/100.0f, temp);
// mix oscillators
float sampleOut = (osc1 + osc2*0.5f + osc3*0.25f) * gain;
float sampleOut = (osc1 + osc2*0.25f + osc3*0.125f) * gain;
// filter sample
float baseFreq = oscillators_[0].frequency();
@@ -106,8 +106,8 @@ float Voice::process(float* params, bool& scopeTrigger) {
float resonance = resonanceEnv * getParam(ParamId::FilterResonanceDepth) * velocityGain;
filter1_.setParams(Filter::Type::BiquadLowpass, cutoffFreq, resonance);
filter2_.setParams(Filter::Type::BiquadLowpass, cutoffFreq, resonance);
sampleOut = filter1_.biquadProcess(sampleOut);
sampleOut = filter2_.biquadProcess(sampleOut);
float filteredSample = filter1_.biquadProcess(sampleOut);
// sampleOut = filter2_.biquadProcess(sampleOut); // TODO: for some reason second filter is unstable only on windows 🤷
return sampleOut;
return filteredSample;
}

View File

@@ -3,6 +3,7 @@
#include <array>
#include <vector>
#include <cstdint>
#define SYNTH_WAVETABLE_SIZE 2048
#ifndef M_PI // I hate my stupid chungus life

View File

@@ -52,7 +52,10 @@ MainWindow::MainWindow(QWidget *parent) :
audio_->start();
// midi
#ifndef _WIN32
midi_.openPort(1); // TODO: error check
#endif
}
MainWindow::~MainWindow() {