[feature]: ADSR (#15)

closes #14

Reviewed-on: #15
This commit is contained in:
2023-09-06 11:29:46 +03:00
parent 64fa6396bc
commit c50a8335d7
20 changed files with 444 additions and 140 deletions

View File

@@ -1,6 +1,8 @@
#pragma once
#include "ADSR.h"
#include "Adder.h"
#include "Effect.h"
#include "Note.h"
#include "Oscillator.h"
#include "Settings.h"
@@ -8,18 +10,28 @@
class Synth {
private:
bool is_note_triggered;
std::vector<Oscillator*> m_oscillators;
Adder m_adder;
std::vector<Effect*> m_effects;
// OscillatorUI* ui_oscillators;
// Note m_current_note;
std::vector<float> m_out_signal;
std::vector<float>& get_note(int semitone, float beats);
void zero_signal();
void get_note();
void trigger_note_on_effects();
void untrigger_note_on_effects();
void apply_effects();
public:
Synth(/* args */);
~Synth();
void ProduceNoteSound(Note input);
void TriggerNote(Note input);
void ProduceSound();
void StopSound();
void AddOscillator();
void AddEffect(Effect* fx);
const std::vector<float>& GetOutSignal() { return m_out_signal; }
const std::vector<Oscillator*>& GetOscillators() { return m_oscillators; }
const bool& GetIsNoteTriggered() { return is_note_triggered; }
ADSR* GetADSR() { return (ADSR*)m_effects[0]; }
};