wrote a proper README

This commit is contained in:
Weird Constructor 2021-05-18 05:02:58 +02:00
parent 1bdce9463e
commit 799443d266
2 changed files with 39 additions and 36 deletions

View file

@ -4,7 +4,9 @@ version = "0.1.0"
authors = ["Weird Constructor <weirdconstructor@m8geil.de>"] authors = ["Weird Constructor <weirdconstructor@m8geil.de>"]
license = "AGPL-3.0-or-later" license = "AGPL-3.0-or-later"
edition = "2018" edition = "2018"
description = "An audio synthesis DSP graph library" description = "Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth."
keywords = ["audio", "music", "real-time", "synthesis", "synthesizer", "dsp", "sound"]
categories = ["multimedia::audio", "multimedia", "algorithms", "mathematics"]
[dependencies] [dependencies]
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }

View file

@ -1,42 +1,42 @@
# HexoSynth - A hexagonal modular synthesizer # HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.
This project aims to create a modular synthesizer. Like those encountered This project contains the complete DSP backend of the modular
in projects like VCVRack or Bitwigs Polygrid. synthesizer [HexoSynth](https://github.com/WeirdConstructor/HexoSynth).
The core idea is having a hexagonal tile map for laying out module It's aimed to provide a toolkit for everyone who wants to develop
instances and connect them at the edges to route audio signals and CV signals a synthesizer in Rust. You can use it to quickly define a DSP graph
to inputs of other modules. that you can change at runtime. It comes with a large collection
of already developed DSP modules/nodes, such as oscillators, filters,
amplifiers, envelopes and sequencers.
A goal is to provide a simple wireless environment to build The DSP graph API also provides multiple kinds of feedback to track what the
sound effects, synthesizers or whole generative music patches from signals in the DSP threads look like. From monitoring the inputs and outputs of
predefined modules. single nodes to get the current output value of all nodes.
Hosting plugins (VST, LV2, ...) is out of the scope of this project. Here a short list of features:
The goal is rather to have a good set of predefined modules.
* Runtime changeable DSP graph
* Full monitoring and feedback introspection into the running DSP graph
* Provides a wide variety of modules
* Extensible framework for quickly developing new nodes at compile time
* A comprehensive automated test suite
## State of Development ## State of Development
This project is still (2021-03-17) under heavy development and is considered As of 2021-05-18: The architecture and it's functionality have been mostly
pre alpha stage. There is no noteworthy functionality yet implemented. feature complete by now. The only part that is still lacking is the collection
Just a lot of prototype code and plumbing. of modules/nodes, this is the area of current development. Adding lots of
nodes.
Make sure to follow [Weird Constructors Mastodon Make sure to follow [Weird Constructors Mastodon
account](https://mastodon.online/@weirdconstructor) or the releases of this account](https://mastodon.online/@weirdconstructor) or the releases of this
project to be notified once I release a beta or stable release. 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, but I have a pretty detailed TODO list in my private notebook.
this is the rough road map:
- Make a UI that is more or less fluently usable and easily extendable ## Running the Jack Example:
with new modules.
- Take a bit of care that there is online help.
- Add lots of modules (Oscillators, Filters, Envelopes, LFOs, Quantizers, ...).
- Factor out the DSP code into it's own crate.
- Comment the code for easier maintenance.
## Running the Standalone Example:
You need nightly rust: You need nightly rust:
@ -44,15 +44,15 @@ You need nightly rust:
To run the example: To run the example:
cargo +nightly run --release --example standalone cargo +nightly run --release --example jack_demo
You might need following dependencies (Ubuntu Linux): You might need following dependencies (Ubuntu Linux):
sudo apt install libjack0 libjack-jackd2-dev qjackctl libx11-xcb-dev libxcb-icccm4-dev libxcb-dri3-dev sudo apt install libjack0 libjack-jackd2-dev qjackctl
These might work on Debian too: These might work on Debian too:
sudo apt install libjack0 libjack-dev libx11-xcb-dev libxcb-icccm4-dev libxcb-dri2-dev sudo apt install libjack0 libjack-dev
## Running the Automated Testsuite: ## Running the Automated Testsuite:
@ -83,8 +83,8 @@ of this project (AGPLv3 or later).
## Contact the Author ## Contact the Author
You can reach me via Discord or Mastodon. I'm joined most public Rust Discord 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 on freenode.net, servers, especially the "Rust Audio" Discord server. I am also sometimes on
for instance in the `#lad` channel (nick `weirdctr`). freenode.net, for instance in the `#lad` channel (nick `weirdctr`).
## Support Development ## Support Development
@ -97,13 +97,14 @@ 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 This project is licensed under the GNU Affero General Public License Version 3 or
later. later.
The fonts DejaVuSerif.ttf and DejaVuSansMono.ttf under the license:
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
### Why (A)GPL? ### Why (A)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
Picking a license for my code bothered me for a long time. I read many 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 discussions about this topic. Read the license explanations. And discussed
this matter with other developers. this matter with other developers.