This commit is contained in:
2026-01-30 18:35:47 -06:00
35 changed files with 532 additions and 166 deletions

View File

@@ -37,9 +37,56 @@ This synthesizer isn't very good, but it's neat :3
- [ ] Noise
- [ ] LFO modulation
## setup
TODO: instructions on build setup
Package Dependencies: Qt 6, RtAudio, RtMidi
## Build Instructions
Prerequisites:
CMake: https://cmake.org/download/ \
QtWidgets: https://www.qt.io/development/download-qt-installer-oss
Windows: MSVC (The build scripts use Visual Studio 17 2022)
Linux: GCC
Clone repository
```PowerShell
git clone https://github.com/Blitblank/metabalus.git --recursive
```
or if you forgot to --recursive:
```PowerShell
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):
```PowerShell
.\scripts\build.ps1 # builds in build/Debug/
```
On Linux (GCC):
```Bash
./scripts/build.sh
```
TODO: right now you need to run the executable from the executable's directory because of CWD paths and such. Needs to be fixed because annoying
Configure the CMake/build script if you have issues
To clean:
```
.\scripts\clean.ps1
./scripts/clean.sh
```
Note: dependencies are built into build/lib, so don't delete unless you need to rebuild the libraries
Use the install_dependencies script to manually install dependencies.
Build troubleshooting:
On windows, `bcdedit /set IncreaseUserVa 3072` solved cc1plus.exe: out of memory errors while building qt for me
## Configurations (NOT YET IMPLEMENTED)
Default config files are located in the config/ directory, and they are replicated into build/config/ if they dont already exist there. To edit the configurations, edit the config files in the build directory, not the defaults. Most config files are loaded/parsed at startup (TODO: investigate some reloading functions), so the program must be restarted, although not recompiled, for new configs to take effect. \
Voice profiles are saved into config files into a human-readable format (YAML) and can be edited manually or by saving within the app. \
## Wavetables (NOT YET IMPLEMENTED)
Wavetables are this synthesizer's starting point for audio synthesis. A wavetable (as defined for this synthesizer, not elsewhere) contains a single period of a particular wave-shape with a discrete number of samples. Wavetables are loaded at runtime and sampled by oscillator objects to define and mix different wave shapes. Further specifications, as well as instructions for generating your own wavetable (including an example python script << TODO), are located within config/wavetables/README.md
$ ./scripts/build.sh
PS ./scripts/build.bat