WIP project of writing a (relatively) simple synthesizer. Developed using TDD (Test-Driven Development) principles.
Project management to keep track of goals and tasks. I find it important to have a direction when doing TDD.
-
Github setup-
Create repo -
Create setup -
Create pipeline with tests and dotnet format
-
-
Synthesizer CRUD-
Creating basic synthesizer -
Getting synthesizer -
Listing synthesizers -
Deleting synthesizer -
Updating synthesizer
-
-
Oscillators-
Create new service for CRUD-
Get -
List -
Create -
Delete -
Update
-
-
Add oscillator to synthesizer
-
-
Generating audio samples-
Create SynthesizerConfiurationService -
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
- 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
- Levels
- 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.
- 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.
- Polyphonic audio generation
- MIDI input
- Web-based input
- GUI
- Other kinds of signal generation
- From audio files
- Customizable signal paths
- Recursive signal paths