-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMegaSynth.h
88 lines (66 loc) · 1.77 KB
/
MegaSynth.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#pragma once
#include "IPlug_include_in_plug_hdr.h"
#include "IPlugMidi.h"
import megasynth.midi_receiver;
import megasynth.voice_manager;
const int kNumPresets = 1;
enum EParams
{
osc1Waveform = 0,
attack,
decay,
sustain,
release,
osc1PitchMod,
osc2Waveform,
osc2PitchMod,
oscMix,
lfoWaveform,
lfoRate,
filterMode,
filterCutoff,
filterResonance,
filterAttack,
filterDecay,
filterSustain,
filterRelease,
filterEnvelopeAmount,
filterLfoAmount,
kNumParams
};
/*typedef struct {
const char *name;
const int defaultValue;
const int numberOfValues;
const char **listOfValues;
} enumControls_struct;
const enumControls_struct enumControls[3] = {
{.name = "Osc 1 Waveform", .defaultValue=Oscillator::Waveform::SINE,
.numberOfValues=Oscillator::Waveform::kNumberOfWaveforms,
.listOfValues={"", ""}
},
{}
};*/
using namespace iplug;
using namespace igraphics;
class MegaSynth final : public iplug::Plugin
{
private:
MIDIReceiver midiReceiver;
VoiceManager voiceManager;
void createParams();
void createGraphics(IGraphics* pGraphics);
public:
MegaSynth(const iplug::InstanceInfo& info);
void OnReset() override;
void OnParamChange(int paramId) override;
void ProcessMidiMsg(const iplug::IMidiMsg& msg) override;
inline int getNumKeysPressed() const { return midiReceiver.getNumKeysPressed(); }
inline bool getKeyStatus(int keyIndex) const { return midiReceiver.getKeyStatus(keyIndex); }
static const int virtualKeyboardMinimumNoteNumber = 48;
int lastVirtualKeyboardNoteNumber = virtualKeyboardMinimumNoteNumber - 1;
IControl* virtualKeyboard;
#if IPLUG_DSP // http://bit.ly/2S64BDd
void ProcessBlock(iplug::sample** inputs, iplug::sample** outputs, int nFrames) override;
#endif
};