/*
  ==============================================================================

    CustomSynth.h
    Created: 17 May 2021 11:29:59pm
    Author:  除村武志

  ==============================================================================
*/

#pragma once
#include "../JuceLibraryCode/JuceHeader.h"

class Magical8bitPlug2AudioProcessor;
class TonalVoice;

class CustomSynth : public Synthesiser {
public:
    CustomSynth(Magical8bitPlug2AudioProcessor& p);
    
    void noteOn(int midiChannel, int midiNoteNumber, float velocity) override;
    void noteOff(int midiChannel, int midiNoteNumber, float velocity, bool allowTailOff) override;
    void allNotesOff (const int midiChannel, const bool allowTailOff) override;
    
private:
    TonalVoice* getVoiceIfShouldProcessInMonoMode();
    double calcArpeggioInterval();
    Magical8bitPlug2AudioProcessor& processor;
};