#pragma once #include "Adder.h" #include "Effect.h" #include "Note.h" #include "Oscillator.h" #include "Settings.h" #include class Synth { private: std::vector m_oscillators; Adder m_adder; std::vector m_effects; // OscillatorUI* ui_oscillators; // Note m_current_note; std::vector m_out_signal; std::vector& get_note(int semitone, float beats); void apply_effects(); public: Synth(/* args */); ~Synth(); void ProduceNoteSound(Note input); void AddOscillator(); void AddEffect(Effect* fx); const std::vector& GetOutSignal() { return m_out_signal; } const std::vector& GetOscillators() { return m_oscillators; } };