SOUL-VA is a collection of analog-inspired audio effects. Unlike other libraries, this project achieves analytical solutions and a strict -60dB peak amplitude limit for aliasing artifacts.
A 1.0.0 Github release will be uploaded once two VA::Highlevel Processors are finished, thoroughly tested, and documented (Approx. December 2021).
This library considers background knowledge trivial; SOUL-VA will not re-explain any of the following concepts:
- The Art of VA Filter Design (through Chapter 6)
- Antiderivative Antialiasing for Memoryless Nonlinearities
include/VA.soul
- single-file libraryexamples/main.soul
- example[[main]]
instance for instantiatingProcessors
from VA.soulexamples/main.soulpatch
- 'includes' and 'links' VA.soul with main.soultests/testMain.m
- script that runs test cases on main.soulpatchtools/soul.json
- VSCode snippets
- SOUL Playground
Copy VA.soul, main.soul, and main.soulpatch into the editor. Delete '../include/' on line 13 in main.soulpatch. Click 'Compile' to run in mono mode. To enable stereo processing, modify main.soul according to the instructions. - SOUL CLI 1.0.82
Read the CLI instructions by executing soul.exe in a terminal and use main.soulpatch as the<soul file>
. Stereo processing and higher oversampling rates will not compile using this method. - Octave 6.3.0
Include soul.exe in the 'Path' environment variable. SetSOUL-VA/tests/
as the current working directory in Octave and runtestMain(44100)
. See testMain.m for more info on test cases and usage.
Please post bugs in issues and feature requests in discussions. Bug fixes take priority. Pull requests are not accepted at the moment.
The following sections explain the output after running testMain (44100)
on different VA::HighLevel
effects (instantiated in Processor [[main]]
). The script is useful for catching common errors in development without needing to listen to processed samples.
The system is trivial (and linear) and simply passes signals through unmodified. Notice how the step response is actually a pulse signal with values 0.5 and 0.25 so that the test can measure overshoot and undershoot.
The system is significantly nonlinear and all outputs show some sort of distortion. While the magnitude response applies only to linear systems, its plot in the output accurately predicts that OnepoleC_Lan
tends to boost bass frequencies.
The system is significantly nonlinear, but does not meet the standards of this library. Not all aliasing components are less than -60dB as shown by the non-DC inharmonic partials in the bottom right-hand corner in 'SinSweep (BW)'.