|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
#include <iostream> |
|
|
|
|
|
|
|
|
|
#include "synth/cc.h" |
|
|
|
|
#include "synth/preset.h" |
|
|
|
|
|
|
|
|
|
#include "synthframe.h" |
|
|
|
|
#include "synthapp.h" |
|
|
|
@ -28,18 +29,22 @@ SynthFrame::SynthFrame() : wxFrame(NULL, wxID_ANY, "Hello World") { |
|
|
|
|
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); |
|
|
|
|
panel->SetSizer(sizer); |
|
|
|
|
|
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_FREQ_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_Q_SLIDER, 22, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_FREQ_SLIDER, DEFAULT_PRESET.filter.freq, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_Q_SLIDER, DEFAULT_PRESET.filter.Q, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->AddSpacer(20); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_ATTACK_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_DECAY_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_SUSTAIN_SLIDER, 127, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_RELEASE_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, KEY_TRACK_SLIDER, DEFAULT_PRESET.keyTrack, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->AddSpacer(20); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_ATTACK_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_DECAY_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_SUSTAIN_SLIDER, 127, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, FLT_RELEASE_SLIDER, 0, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_ATTACK_SLIDER, DEFAULT_PRESET.ampEnv.attack, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_DECAY_SLIDER, DEFAULT_PRESET.ampEnv.decay, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_SUSTAIN_SLIDER, DEFAULT_PRESET.ampEnv.sustain, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, AMP_RELEASE_SLIDER, DEFAULT_PRESET.ampEnv.release, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->AddSpacer(20); |
|
|
|
|
sizer->Add(new wxSlider(panel, MOD_ATTACK_SLIDER, DEFAULT_PRESET.modEnv.attack, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, MOD_DECAY_SLIDER, DEFAULT_PRESET.modEnv.decay, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, MOD_SUSTAIN_SLIDER, DEFAULT_PRESET.modEnv.sustain, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->Add(new wxSlider(panel, MOD_RELEASE_SLIDER, DEFAULT_PRESET.modEnv.release, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
sizer->AddSpacer(20); |
|
|
|
|
sizer->Add(new wxSlider(panel, MOD_ENV_FLT_GAIN, DEFAULT_PRESET.modEnvFltGain, 0, 127, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE)); |
|
|
|
|
|
|
|
|
|
Bind(wxEVT_MENU, &SynthFrame::OnAbout, this, wxID_ABOUT); |
|
|
|
|
Bind(wxEVT_MENU, &SynthFrame::OnExit, this, wxID_EXIT); |
|
|
|
@ -64,6 +69,11 @@ void SynthFrame::OnFltQScroll(wxScrollEvent& event) { |
|
|
|
|
app.synth.control(0, CC_FLT_Q, event.GetPosition()); |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SynthFrame::OnKeyTrackScroll(wxScrollEvent& event) { |
|
|
|
|
SynthApp& app = wxGetApp(); |
|
|
|
|
app.synth.control(0, CC_KEY_TRK, event.GetPosition()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SynthFrame::OnAmpAttackScroll(wxScrollEvent& event) { |
|
|
|
|
SynthApp& app = wxGetApp(); |
|
|
|
|
app.synth.control(0, CC_AMP_ATK, event.GetPosition()); |
|
|
|
@ -104,19 +114,28 @@ void SynthFrame::OnFltReleaseScroll(wxScrollEvent& event) { |
|
|
|
|
app.synth.control(0, CC_FLT_REL, event.GetPosition()); |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SynthFrame::OnModEnvFltGainScroll(wxScrollEvent& event) { |
|
|
|
|
SynthApp& app = wxGetApp(); |
|
|
|
|
app.synth.control(0, CC_MOD_FLT, event.GetPosition()); |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wxBEGIN_EVENT_TABLE(SynthFrame, wxFrame) |
|
|
|
|
|
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_FREQ_SLIDER, SynthFrame::OnFltFreqScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_Q_SLIDER, SynthFrame::OnFltQScroll) |
|
|
|
|
|
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::KEY_TRACK_SLIDER, SynthFrame::OnKeyTrackScroll) |
|
|
|
|
|
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::AMP_ATTACK_SLIDER, SynthFrame::OnAmpAttackScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::AMP_DECAY_SLIDER, SynthFrame::OnAmpDecayScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::AMP_SUSTAIN_SLIDER, SynthFrame::OnAmpSustainScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::AMP_RELEASE_SLIDER, SynthFrame::OnAmpReleaseScroll) |
|
|
|
|
|
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_ATTACK_SLIDER, SynthFrame::OnFltAttackScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_DECAY_SLIDER, SynthFrame::OnFltDecayScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_SUSTAIN_SLIDER, SynthFrame::OnFltSustainScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::FLT_RELEASE_SLIDER, SynthFrame::OnFltReleaseScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::MOD_ATTACK_SLIDER, SynthFrame::OnFltAttackScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::MOD_DECAY_SLIDER, SynthFrame::OnFltDecayScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::MOD_SUSTAIN_SLIDER, SynthFrame::OnFltSustainScroll) |
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::MOD_RELEASE_SLIDER, SynthFrame::OnFltReleaseScroll) |
|
|
|
|
|
|
|
|
|
EVT_COMMAND_SCROLL(SynthFrame::MOD_ENV_FLT_GAIN, SynthFrame::OnModEnvFltGainScroll) |
|
|
|
|
|
|
|
|
|
wxEND_EVENT_TABLE() |