This is my 4rd iteration on building a synthesiser ;-)
This time, these are my goals:
- The synth logic can be used in embedded systems (I plan to build actual hardware from this).
- Internally it is like a modular synth, where all the blocks (Osc, Lfo, Filter, Env, Dca, ...) can be patched together using a simple Rust DSL
This is the very beginning of this project and I plan to take quite some time developing it, but it already makes some noise ;-)
cd kiro-synth-host
cargo run --release
NOTE: You have to connect your MIDI keyboard before starting the synth. Also it only supports MacOS right now.
- Basic synth pieces: Oscillator, EG, LFO, Filter, DCA
- Rust DSL to build the synth graph as a program
- Basic voice management
- Parameters can be changed from MIDI events or a UI
- Controlling parameters from a Druid UI
- Modulation of parameters through a modulation matrix
- The modulation matrix can be tuned from the UI
- UI feedback for the modulations
- UI feedback for the number of voices
- UI feedback for the output levels
- Fix modulation parameters value ranges
- Fix LFO phase parameter
- Add note expression as modulation sources (velocity, pitch, modwheel, after touch)
- Patch management from configuration
- Patch management from the UI
- Internal signals explorer (oscilloscope, spectrum analyzer, Peak/RMS level meter)
- Improve the program with more blocks (add one more EG and LFO)
- Improve the program graph to include global oscillators parameters (octave, semitones, cents, drift, filter output)
- Improve the program graph to allow FM synthesis using the oscillators
- Improve the program graph to add more parameters for the oscillators (filter output)
- Add a square waveshape (including new parameter for width)
- Add noise waveshapes
- Add more filters
- Filter mode parameter shows the filter name in the UI
- Improve the Knob widget to support logarithmic parameters
- Unison ?
- UI feedback for the CPU usage
- ...