This commit is contained in:
Weird Constructor 2022-07-05 20:03:32 +02:00
parent d60d5733f0
commit 40381a5a8d
2 changed files with 34 additions and 26 deletions

View file

@ -1,4 +1,7 @@
# HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.
# hexodsp
## HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.
This project contains the complete DSP backend of the modular
synthesizer [HexoSynth](https://github.com/WeirdConstructor/HexoSynth).
@ -22,15 +25,15 @@ Here a short list of features:
* Extensible framework for quickly developing new nodes at compile time
* A comprehensive automated test suite
## API Examples
### API Examples
### Documentation
#### Documentation
The development documentation with all private fields and functions can be
found separately hosted:
[HexoDSP API Developer Documentation](http://m8geil.de/hexodsp_doc/hexodsp/).
### Raw `NodeConfigurator` API
#### Raw `NodeConfigurator` API
This API is the most low level API provided by HexoDSP.
It shows how to create nodes and connect them.
@ -65,7 +68,7 @@ node_conf.upload_prog(prog, true);
let (out_l, out_r) = node_exec.test_run(0.1, false);
```
### Hexagonal Matrix API
#### Hexagonal Matrix API
This is a short overview of the API provided by the
hexagonal Matrix API, which is the primary API used
@ -98,7 +101,7 @@ let (out_l, out_r) = node_exec.test_run(0.11, true);
// samples now.
```
## State of Development
### State of Development
As of 2021-05-18: The architecture and it's functionality have been mostly
feature complete by now. The only part that is still lacking is the collection
@ -109,39 +112,44 @@ Make sure to follow [Weird Constructors Mastodon
account](https://mastodon.online/@weirdconstructor) or the releases of this
project to be notified of updates.
### Road Map / TODO List
#### Road Map / TODO List
I have a pretty detailed TODO list in my private notebook.
## Running the Jack Example:
### Running the Jack Example:
You need nightly rust:
rustup toolchain install nightly
To run the example:
cargo +nightly run --release --example jack_demo
```
cargo run --release --example jack_demo_node_api
```
You might need following dependencies (Ubuntu Linux):
```
sudo apt install libjack0 libjack-jackd2-dev qjackctl
```
These might work on Debian too:
```
sudo apt install libjack0 libjack-dev
```
## Running the Automated Testsuite:
### Running the Automated Testsuite:
There exists an automate test suite for the DSP and backend code:
```
cargo test
```
## Known Bugs
### Known Bugs
* The ones you encounter and create as issues on GitHub.
## Contributions
### Contributions
I currently have a quite precise vision of what I want to achieve and my goal
is to make music with this project eventually.
@ -155,32 +163,32 @@ I might merge pull requests if I find the time and think that the contributions
are in line with my vision.
Please bear in mind, that I can only accept contributions under the License
of this project (AGPLv3 or later).
of this project (GPLv3 or later).
## Contact the Author
### Contact the Author
You can reach me via Discord or Mastodon. I'm joined most public Rust Discord
servers, especially the "Rust Audio" Discord server. I am also sometimes on
freenode.net, for instance in the `#lad` channel (nick `weirdctr`).
## Support Development
### Support Development
You can support me (and the development of this project) via Liberapay:
<a href="https://liberapay.com/WeirdConstructor/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
## License
### License
This project is licensed under the GNU Affero General Public License Version 3 or
later.
### Why GPL?
#### Why GPL?
The obivious reason is that this project copied and translated code from many
other free software / open source synthesis projects. The sources
will show the origin and license of the individual parts.
#### My Reasons
##### My Reasons
Picking a license for my code bothered me for a long time. I read many
discussions about this topic. Read the license explanations. And discussed

View file

@ -166,7 +166,7 @@ I might merge pull requests if I find the time and think that the contributions
are in line with my vision.
Please bear in mind, that I can only accept contributions under the License
of this project (AGPLv3 or later).
of this project (GPLv3 or later).
## Contact the Author
@ -185,7 +185,7 @@ You can support me (and the development of this project) via Liberapay:
This project is licensed under the GNU Affero General Public License Version 3 or
later.
### Why (A)GPL?
### Why GPL?
The obivious reason is that this project copied and translated code from many
other free software / open source synthesis projects. The sources
@ -215,8 +215,8 @@ _why I publish the code_, when I could as well keep it to myself:
- To exchange knowledge and help other developers.
- And it's a nice change to put some more polish on my private projects.
Most of those reasons don't yet justify (A)GPL. The main point of the (A)GPL, as far
as I understand: The (A)GPL makes sure the software stays free software until
Most of those reasons don't yet justify GPL. The main point of the GPL, as far
as I understand: The GPL makes sure the software stays free software until
eternity. That the _end user_ of the software always stays in control. That the users
have the means to adapt the software to new platforms or use cases.
Even if the original authors don't maintain the software anymore.
@ -229,7 +229,7 @@ value. If I give away my work without _any_ strings attached, I effectively
work for free. This compromises the price I (and potentially other developers)
can demand for the skill, workforce and time.
This makes two reasons for me to choose the (A)GPL:
This makes two reasons for me to choose the GPL:
1. I do not want to support vendor lock in scenarios for free.
I want to prevent those when I have a choice, when I invest my private