![]() |
StoneyDSP v0.0.953.30383265313963
The StoneyDSP audio library.
|
StoneyDSP is an audio Digital Signal Processing (DSP) library with isometric support for C, C++, and other C-like languages, across a wide range of target platforms, architectures, and toolchains; additional features include interfaces for popular audio programming targets including VST, AU, and even VCV Rack, as well as as extensions and utilities such as a CMake API, JUCE module support, vcpkg integration, and NodeJS Binary Addon bindings to Javascript/Typescript.*
*please note that we are under construction; some of these features are planned, experimental, or only partially implemented as of writing.
Clone StoneyDSP:
Build with GNU Make:
Or build with CMake:
TODO
TODO
### Make
TODO
### CMake
TODO
### Presets
When building StoneyDSP from source, we provide an extensive set of curated CMake Presets for a simplified, streamlined workflow.
CMake presets provide multiple possible actions - configure, build, test, package, and so forth - and also the ability to chain these actions together into a "workflow".
For example, configuring the CMake project for 64-bit Linux platforms in "Release" mode with extra logging enabled is as easy as:
Our CMake Presets are specified as: <arch>-<platform>-<mode>[-<option>]
Where <arch>
may be any of:
x86
(32-bit machines)x64
(64-bit machines)arm64
(ARM machines)Where <platform>
may be any of:
windows
osx
linux
Where <mode>
may be any of:
release
debug
Where [-option]
may be unspecified, or any of:
verbose
CMake, CTest, and CPack all respond appropriately to the various preset combinations available. The entire set of actions, demonstrated with the example preset as before, is as follows:
CMake configure with a preset:
CMake re-configure with a preset:
CMake build with a prest:
CTest test with a preset:
CMake package the build tree with a preset (calls CPack underneath):
CMake package the source tree with a preset (calls CPack underneath):
NOTE: Our presets all use Ninja as a generator to ensure cross-compatibility and reduce complexity.
Not all platform and architecture combinations are currently supported; here is a summary of what we guarantee as of writing:
### Workflows
StoneyDSP also provides workflows for all possible presets:
The workflows run the following steps in order:
To streamline this even further, we have implemented a platform look-up method in our Makefile, which automatically selects an appropriate preset for your host machine's platform and architecture, with additional options set as environment variables on the command line.
In other words, if you are on a 64-bit Windows platform and just run:
Our look-up mechanism will automatically select the x64-windows-release
preset for you. This applies to all possible preset combinations on all platforms (not only 64-bit Windows).
Additionally, if you wish to run the workflow - or any preset - in Debug
mode - with the compiler generating debugger symbols, some helpful additional logging, and other expected "debugging" behaviours, just prepend DEBUG=1
to the same command:
In addition to the standard DEBUG
environment workflows and our presets respond similarly to VERBOSE=1
for enabling gratuituous logging to the console by selecting a -verbose
option from the presets list:
Of course, both flags can be combined to access the final variant:
### core
The core features and functionalities of StoneyDSP.
This feature is ON
by default.
### simd
SIMD data types for optimized performance.
### dsp
The DSP (digital signal processing) features and functionalities of StoneyDSP.
### test
Unit-tests with Catch2.
This feature is only available when building StoneyDSP from source (it is not part of our distribution build), and is OFF
by default.
### doc
Documentation with Doxygen.
This feature is only available when building StoneyDSP from source (it is not part of our distribution build), and is OFF
by default.
TODO
Copyright (C) 2024 Nathan J. Hood natha.nosp@m.njho.nosp@m.od@go.nosp@m.ogle.nosp@m.mail..nosp@m.com MIT License.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
For more information, visit the website: www.stoneydsp.com
FULL STONEYDSP TERMS:
TODO