Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/olivervea/synthesizer
https://github.com/olivervea/synthesizer
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/olivervea/synthesizer
- Owner: OliverVea
- Created: 2022-12-27T00:48:23.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-16T14:09:55.000Z (about 2 years ago)
- Last Synced: 2024-12-12T20:16:40.651Z (2 months ago)
- Language: C#
- Size: 185 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Synthesizer Project
WIP project of writing a (relatively) simple synthesizer. Developed using TDD (Test-Driven Development) principles.
## Project Management
Project management to keep track of goals and tasks. I find it important to have a direction when doing TDD.
### Tasks
* [x] ~~Github setup~~
* [x] ~~Create repo~~
* [x] ~~Create setup~~
* [x] ~~Create pipeline with tests and dotnet format~~
* [x] ~~Synthesizer CRUD~~
* [x] ~~Creating basic synthesizer~~
* [x] ~~Getting synthesizer~~
* [x] ~~Listing synthesizers~~
* [x] ~~Deleting synthesizer~~
* [x] ~~Updating synthesizer~~
* [x] ~~Oscillators~~
* [x] ~~Create new service for CRUD~~
* [x] ~~Get~~
* [x] ~~List~~
* [x] ~~Create~~
* [x] ~~Delete~~
* [x] ~~Update~~
* [x] ~~Add oscillator to synthesizer~~
* [x] ~~Generating audio samples~~
* [x] ~~Create SynthesizerConfiurationService~~
* [x] ~~Create SynthesizerGenerationService~~
* [ ] Playing audio
* [ ] Getting real-time input
* [ ] Envelope CRUD
* [ ] Create service for CRUD
* [ ] Attaching to synthesizer and saving
* [ ] Effect on audio sample generation
* [ ] Filter CRUD
* [ ] Attaching to synthesizer and saving
* [ ] Effect on audio sample generation### MVP definition
* Being able to create one synthesizer containing:
* A sample rate
* A display name
* An auto-generated id
* A master volume control
* One oscillator containing
* Waveform
* Frequency
* Amplitude
* One envelope
* Levels
* Attack
* Sustain
* Timings
* Attack
* Decay
* Release
* One filter
* Low
* High
* Resonance
* It must be possible to generate audio samples with the synthesizer.
* The audio samples should be generated in a streamable manner.
* It must be possible to stream the audio to an output audio device in windows.
* Synthesizer configuration should be stored persistently.### Project structure
![Project structure illustration](./ProjectStructure.drawio.svg)
### Not decided
* Method of IO - everything is services, could be web-based, GUI, etc.
* Implement the most simple file-based storage, another storage method can be found later.
* Deployment style of application.### Future stuff
* Polyphonic audio generation
* MIDI input
* Web-based input
* GUI
* Other kinds of signal generation
* From audio files
* Customizable signal paths
* Recursive signal paths