More documentation
This commit is contained in:
parent
ad4ea837b9
commit
239b9b574a
4 changed files with 84 additions and 5 deletions
7
CHANGELOG.md
Normal file
7
CHANGELOG.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
0.2.0 (unreleased)
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Documentation: Added a guide in the hexodsp::dsp module documentation
|
||||||
|
about implementing new DSP nodes.
|
||||||
|
* Bugfix: TriSawLFO (TsLFO) node did output too high values if the `rev`
|
||||||
|
parameter was changed or modulated at runtime.
|
29
README.md
29
README.md
|
@ -1,6 +1,5 @@
|
||||||
# hexodsp
|
# hexodsp
|
||||||
|
|
||||||
|
|
||||||
## HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.
|
## 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
|
This project contains the complete DSP backend of the modular
|
||||||
|
@ -25,6 +24,34 @@ Here a short list of features:
|
||||||
* Extensible framework for quickly developing new nodes at compile time
|
* Extensible framework for quickly developing new nodes at compile time
|
||||||
* A comprehensive automated test suite
|
* A comprehensive automated test suite
|
||||||
|
|
||||||
|
And following DSP nodes:
|
||||||
|
|
||||||
|
| Category | Name | Function |
|
||||||
|
|-|-|-|
|
||||||
|
| IO Util | Out | Audio output (to DAW or Jack) |
|
||||||
|
| Osc | Sampl | Sample player |
|
||||||
|
| Osc | Sin | Sine oscillator |
|
||||||
|
| Osc | BOsc | Basic bandlimited waveform oscillator (waveforms: Sin, Tri, Saw, Pulse/Square) |
|
||||||
|
| Osc | VOsc | Vector phase shaping oscillator |
|
||||||
|
| Osc | Noise | Noise oscillator |
|
||||||
|
| Signal | Amp | Amplifier/Attenuator |
|
||||||
|
| Signal | SFilter | Simple collection of filters, useable for synthesis |
|
||||||
|
| Signal | Delay | Single tap signal delay |
|
||||||
|
| Signal | PVerb | Reverb node, based on Dattorros plate reverb algorithm |
|
||||||
|
| Signal | AllP | All-Pass filter based on internal delay line feedback |
|
||||||
|
| Signal | Comb | Comb filter |
|
||||||
|
| N-\>M | Mix3 | 3 channel mixer |
|
||||||
|
| N-\>M | Mux9 | 9 channel to 1 output multiplexer/switch |
|
||||||
|
| Ctrl | SMap | Simple control signal mapper |
|
||||||
|
| Ctrl | Map | Control signal mapper |
|
||||||
|
| Ctrl | CQnt | Control signal pitch quantizer |
|
||||||
|
| Ctrl | Quant | Pitch signal quantizer |
|
||||||
|
| Mod | TSeq | Tracker/pattern sequencer |
|
||||||
|
| Mod | Ad | Attack-Decay envelope |
|
||||||
|
| Mod | TsLFO | Tri/Saw waveform low frequency oscillator (LFO) |
|
||||||
|
| Mod | RndWk | Random walker, a Sample & Hold noise generator |
|
||||||
|
| IO Util | FbWr / FbRd | Utility modules for feedback in patches |
|
||||||
|
|
||||||
### API Examples
|
### API Examples
|
||||||
|
|
||||||
#### Documentation
|
#### Documentation
|
||||||
|
|
|
@ -28,7 +28,26 @@ you a GUI for your DSP code for free at the end.
|
||||||
Generally I recommend starting out small. Define your new node with minimal parameters
|
Generally I recommend starting out small. Define your new node with minimal parameters
|
||||||
until you get the hang of all the things involved to make it compile in the first place.
|
until you get the hang of all the things involved to make it compile in the first place.
|
||||||
|
|
||||||
Here are some hints to get you started:
|
**Be aware that new DSP nodes need to meet these quality guidelines to be included:**
|
||||||
|
|
||||||
|
- Clean Rust code that I can understand and maintain.
|
||||||
|
- Does not drag in huge dependency trees. One rationale here is,
|
||||||
|
that I don't want the sound of a HexoSynth patch to change (significantly) because
|
||||||
|
some upstream crate decided to change their DSP code. To have optimal
|
||||||
|
control over this, I would love to have all the DSP code
|
||||||
|
contained in HexoDSP. Make sure to link the repository the code comes
|
||||||
|
from though.
|
||||||
|
- Come with automated smoke tests like all the other nodes, most test
|
||||||
|
signal min/max/rms over time, as well as the frequency spectrum
|
||||||
|
where applicable.
|
||||||
|
- It's parameters have proper denormalized mappings, like `0.5 => 4000 Hz` or `0.3 => 200ms`.
|
||||||
|
- Provide short descriptions for the node and it's parameters.
|
||||||
|
- Provide a comprehensive longer help text with (more details further down in this guide):
|
||||||
|
- What this node is about
|
||||||
|
- How to use it
|
||||||
|
- How the parameters work in combination
|
||||||
|
- Suggestions which combinations with other nodes might be interesting
|
||||||
|
- If applicable: provide a graph function for visualizing what it does.
|
||||||
|
|
||||||
### Boilerplate
|
### Boilerplate
|
||||||
|
|
||||||
|
|
32
src/lib.rs
32
src/lib.rs
|
@ -2,9 +2,7 @@
|
||||||
// This file is a part of HexoDSP. Released under GPL-3.0-or-later.
|
// This file is a part of HexoDSP. Released under GPL-3.0-or-later.
|
||||||
// See README.md and COPYING for details.
|
// See README.md and COPYING for details.
|
||||||
|
|
||||||
/*!
|
/*!# HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.
|
||||||
|
|
||||||
# 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
|
This project contains the complete DSP backend of the modular
|
||||||
synthesizer [HexoSynth](https://github.com/WeirdConstructor/HexoSynth).
|
synthesizer [HexoSynth](https://github.com/WeirdConstructor/HexoSynth).
|
||||||
|
@ -28,6 +26,34 @@ Here a short list of features:
|
||||||
* Extensible framework for quickly developing new nodes at compile time
|
* Extensible framework for quickly developing new nodes at compile time
|
||||||
* A comprehensive automated test suite
|
* A comprehensive automated test suite
|
||||||
|
|
||||||
|
And following DSP nodes:
|
||||||
|
|
||||||
|
| Category | Name | Function |
|
||||||
|
|-|-|-|
|
||||||
|
| IO Util | Out | Audio output (to DAW or Jack) |
|
||||||
|
| Osc | Sampl | Sample player |
|
||||||
|
| Osc | Sin | Sine oscillator |
|
||||||
|
| Osc | BOsc | Basic bandlimited waveform oscillator (waveforms: Sin, Tri, Saw, Pulse/Square) |
|
||||||
|
| Osc | VOsc | Vector phase shaping oscillator |
|
||||||
|
| Osc | Noise | Noise oscillator |
|
||||||
|
| Signal | Amp | Amplifier/Attenuator |
|
||||||
|
| Signal | SFilter | Simple collection of filters, useable for synthesis |
|
||||||
|
| Signal | Delay | Single tap signal delay |
|
||||||
|
| Signal | PVerb | Reverb node, based on Dattorros plate reverb algorithm |
|
||||||
|
| Signal | AllP | All-Pass filter based on internal delay line feedback |
|
||||||
|
| Signal | Comb | Comb filter |
|
||||||
|
| N-\>M | Mix3 | 3 channel mixer |
|
||||||
|
| N-\>M | Mux9 | 9 channel to 1 output multiplexer/switch |
|
||||||
|
| Ctrl | SMap | Simple control signal mapper |
|
||||||
|
| Ctrl | Map | Control signal mapper |
|
||||||
|
| Ctrl | CQnt | Control signal pitch quantizer |
|
||||||
|
| Ctrl | Quant | Pitch signal quantizer |
|
||||||
|
| Mod | TSeq | Tracker/pattern sequencer |
|
||||||
|
| Mod | Ad | Attack-Decay envelope |
|
||||||
|
| Mod | TsLFO | Tri/Saw waveform low frequency oscillator (LFO) |
|
||||||
|
| Mod | RndWk | Random walker, a Sample & Hold noise generator |
|
||||||
|
| IO Util | FbWr / FbRd | Utility modules for feedback in patches |
|
||||||
|
|
||||||
## API Examples
|
## API Examples
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
|
Loading…
Reference in a new issue