diff --git a/README.md b/README.md index f031cd9..f2f91da 100644 --- a/README.md +++ b/README.md @@ -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: Donate using Liberapay -## 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 diff --git a/src/lib.rs b/src/lib.rs index fcbcbe0..c41ba54 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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