Skip to content

Commit

Permalink
added delay gui
Browse files Browse the repository at this point in the history
  • Loading branch information
ParadoxChains committed Mar 9, 2020
1 parent 2b08524 commit 89f82cb
Show file tree
Hide file tree
Showing 9 changed files with 170 additions and 5 deletions.
2 changes: 2 additions & 0 deletions C3JI5D-Synthesiser/C3JI5D-Synthesiser.jucer
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
<MAINGROUP id="Z0T8fs" name="Evan Sitt Synthesiser">
<GROUP id="{FDD0FFB0-7ABA-CAD0-AB6D-A607E5623CAE}" name="Source">
<GROUP id="{52D67643-5272-5540-74BB-D17C6972D3E4}" name="GUI_Elements">
<FILE id="nOufey" name="Delay.cpp" compile="1" resource="0" file="Source/Delay.cpp"/>
<FILE id="vGyWUZ" name="Delay.h" compile="0" resource="0" file="Source/Delay.h"/>
<FILE id="mAxG7m" name="Oscillator.cpp" compile="1" resource="0" file="Source/Oscillator.cpp"/>
<FILE id="lwHWX8" name="Oscillator.h" compile="0" resource="0" file="Source/Oscillator.h"/>
<FILE id="shQvqD" name="Envelope.cpp" compile="1" resource="0" file="Source/Envelope.cpp"/>
Expand Down
75 changes: 75 additions & 0 deletions C3JI5D-Synthesiser/Source/Delay.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#include "../JuceLibraryCode/JuceHeader.h"
#include "Delay.h"

Delay::Delay(JuceSynthFrameworkAudioProcessor& p) :
processor(p)
{
setSize(200, 200);

delayMenu.addItemList(processor.tree.getParameter("delayType")->getAllValueStrings(), 1);

delayMenu.setJustificationType(Justification::centred);
addAndMakeVisible(&delayMenu);

delayTypeVal = new AudioProcessorValueTreeState::ComboBoxAttachment(processor.tree, "delayType", delayMenu);

delayTime.setSliderStyle(Slider::SliderStyle::RotaryHorizontalVerticalDrag);
delayTime.setRange(1, 5);
delayTime.setValue(1);
delayTime.setTextBoxStyle(Slider::NoTextBox, false, 0, 0);
addAndMakeVisible(&delayTime);
delayTimeVal = new AudioProcessorValueTreeState::SliderAttachment(processor.tree, "delayTime", delayTime);

delayFeedback.setSliderStyle(Slider::SliderStyle::RotaryHorizontalVerticalDrag);
delayFeedback.setRange(1, 5);
delayFeedback.setValue(1);
delayFeedback.setTextBoxStyle(Slider::NoTextBox, false, 0, 0);
addAndMakeVisible(&delayFeedback);
delayFeedbackVal = new AudioProcessorValueTreeState::SliderAttachment(processor.tree, "delayFeedback", delayFeedback);

delaySpeed.setSliderStyle(Slider::SliderStyle::RotaryHorizontalVerticalDrag);
delaySpeed.setRange(20.0, 10000.0);
delaySpeed.setValue(400.0);
delaySpeed.setTextBoxStyle(Slider::NoTextBox, false, 0, 0);
addAndMakeVisible(&delaySpeed);
delaySpeedVal = new AudioProcessorValueTreeState::SliderAttachment(processor.tree, "delaySpeed", delaySpeed);
delaySpeed.setSkewFactorFromMidPoint(1000.0);

delayDepth.setSliderStyle(Slider::SliderStyle::RotaryHorizontalVerticalDrag);
delayDepth.setRange(1, 5);
delayDepth.setValue(1);
delayDepth.setTextBoxStyle(Slider::NoTextBox, false, 0, 0);
addAndMakeVisible(&delayDepth);
delayDepthVal = new AudioProcessorValueTreeState::SliderAttachment(processor.tree, "delayDepth", delayDepth);


}

Delay::~Delay()
{
}

void Delay::paint(Graphics& g)
{
juce::Rectangle<int> titleArea(0, 10, getWidth(), 20);

g.fillAll(Colours::powderblue);
g.setColour(Colours::slategrey);
g.drawText("Delay", titleArea, Justification::centredTop);

juce::Rectangle <float> area(25, 25, 300, 150);

g.setColour(Colours::palevioletred);
g.drawRoundedRectangle(area, 20.0f, 2.0f);
}

void Delay::resized()
{
juce::Rectangle<int> area = getLocalBounds().reduced(40);

delayMenu.setBounds(area.removeFromTop(20));
delayTime.setBounds(30, 100, 70, 70);
delayFeedback.setBounds(100, 100, 70, 70);
delaySpeed.setBounds(170, 100, 70, 70);
delayDepth.setBounds(240, 100, 70, 70);
}
32 changes: 32 additions & 0 deletions C3JI5D-Synthesiser/Source/Delay.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once

#include "../JuceLibraryCode/JuceHeader.h"
#include "PluginProcessor.h"

class Delay : public Component
{
public:
Delay(JuceSynthFrameworkAudioProcessor&);
~Delay();

void paint(Graphics&) override;
void resized() override;

private:
Slider delayTime;
Slider delayFeedback;
Slider delaySpeed;
Slider delayDepth;

ComboBox delayMenu;

ScopedPointer<AudioProcessorValueTreeState::ComboBoxAttachment> delayTypeVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> delayTimeVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> delayFeedbackVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> delaySpeedVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> delayDepthVal;

JuceSynthFrameworkAudioProcessor& processor;

JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Delay)
};
2 changes: 1 addition & 1 deletion C3JI5D-Synthesiser/Source/Filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ processor(p)
filterCutoff.setValue (400.0);
filterCutoff.setTextBoxStyle(Slider::NoTextBox, false, 0, 0);
addAndMakeVisible(&filterCutoff);
filterVal = new AudioProcessorValueTreeState::SliderAttachment (processor.tree, "filterCutoff", filterCutoff);
filterCutoffVal = new AudioProcessorValueTreeState::SliderAttachment (processor.tree, "filterCutoff", filterCutoff);
filterCutoff.setSkewFactorFromMidPoint(1000.0);

filterRes.setSliderStyle(Slider::SliderStyle::RotaryHorizontalVerticalDrag);
Expand Down
2 changes: 1 addition & 1 deletion C3JI5D-Synthesiser/Source/Filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Filter : public Component
ComboBox filterMenu;

ScopedPointer<AudioProcessorValueTreeState::ComboBoxAttachment> filterTypeVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> filterVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> filterCutoffVal;
ScopedPointer<AudioProcessorValueTreeState::SliderAttachment> resVal;

JuceSynthFrameworkAudioProcessor& processor;
Expand Down
6 changes: 5 additions & 1 deletion C3JI5D-Synthesiser/Source/PluginEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@
#include "PluginEditor.h"

JuceSynthFrameworkAudioProcessorEditor::JuceSynthFrameworkAudioProcessorEditor (JuceSynthFrameworkAudioProcessor& p)
: AudioProcessorEditor (&p), processor (p), oscGui(p), osc2Gui(p), envGui(p), filterGui(p), frontGui(p)
: AudioProcessorEditor (&p), processor (p), oscGui(p), osc2Gui(p), envGui(p), filterGui(p), frontGui(p), delayGui(p)
{
setSize (2000, 2000);

addAndMakeVisible(&oscGui);
addAndMakeVisible(&osc2Gui);
addAndMakeVisible(&envGui);
addAndMakeVisible(&filterGui);
addAndMakeVisible(&delayGui);
addAndMakeVisible(&frontGui);

}

JuceSynthFrameworkAudioProcessorEditor::~JuceSynthFrameworkAudioProcessorEditor()
Expand All @@ -32,8 +34,10 @@ void JuceSynthFrameworkAudioProcessorEditor::resized()
oscGui.setBounds(area.removeFromLeft(componentWidth).removeFromTop(componentHeight));
osc2Gui.setBounds(area.removeFromLeft(componentWidth).removeFromTop(componentHeight));
filterGui.setBounds(area.removeFromLeft(componentWidth).removeFromTop(componentHeight));
delayGui.setBounds(area.removeFromLeft(componentWidth*1.75).removeFromTop(componentHeight));
envGui.setBounds(area.removeFromLeft(componentWidth).removeFromTop(componentHeight));
frontGui.setBounds(area.removeFromLeft(componentWidth).removeFromTop(componentHeight));

}


3 changes: 3 additions & 0 deletions C3JI5D-Synthesiser/Source/PluginEditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "Envelope.h"
#include "Filter.h"
#include "Frontgui.h"
#include "Delay.h"


class JuceSynthFrameworkAudioProcessorEditor : public AudioProcessorEditor
Expand All @@ -28,7 +29,9 @@ class JuceSynthFrameworkAudioProcessorEditor : public AudioProcessorEditor
Oscillator2 osc2Gui;
Envelope envGui;
Filter filterGui;
Delay delayGui;
Frontgui frontGui;


JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceSynthFrameworkAudioProcessorEditor)
};
19 changes: 19 additions & 0 deletions C3JI5D-Synthesiser/Source/PluginProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ JuceSynthFrameworkAudioProcessor::JuceSynthFrameworkAudioProcessor()
std::make_unique<AudioParameterFloat>("filterCutoff", "FilterCutoff", NormalisableRange<float>(20.0f, 10000.0f), 400.0f),
std::make_unique<AudioParameterFloat>("filterRes", "FilterRes", NormalisableRange<float>(1.0f, 5.0f), 1.0f),


std::make_unique<AudioParameterChoice>("delayType",
TRANS("Delay Type"),
StringArray("Delay","Flanger"),
0),
std::make_unique<AudioParameterFloat>("delayTime", "DelayTime", NormalisableRange<float>(1.0f, 5.0f), 1.0f),
std::make_unique<AudioParameterFloat>("delayFeedback", "DelayFeedback", NormalisableRange<float>(1.0f, 5.0f), 1.0f),
std::make_unique<AudioParameterFloat>("delaySpeed", "DelaySpeed", NormalisableRange<float>(20.0f, 10000.0f), 400.0f),
std::make_unique<AudioParameterFloat>("delayDepth", "DelayDepth", NormalisableRange<float>(1.0f, 5.0f), 1.0f),

std::make_unique<AudioParameterFloat>("blend", "Osc2Blend", NormalisableRange<float>(0.0f, 1.0f), 0.5f),

std::make_unique<AudioParameterFloat>("mastergain", "MasterGain", NormalisableRange<float>(0.0f, 1.0f), 0.7f),
Expand Down Expand Up @@ -205,6 +215,15 @@ void JuceSynthFrameworkAudioProcessor::processBlock (AudioSampleBuffer& buffer,
tree.getRawParameterValue("filterCutoff")->load(),
tree.getRawParameterValue("filterRes")->load()
);
/*
myVoice->getDelayParams(
tree.getRawParameterValue("delayType")->load(),
tree.getRawParameterValue("delayTime")->load(),
tree.getRawParameterValue("delayFeedback")->load(),
tree.getRawParameterValue("delaySpeed")->load(),
tree.getRawParameterValue("delayDepth")->load()
);
*/
myVoice->getEnvelopeParams(
tree.getRawParameterValue("attack")->load(),
tree.getRawParameterValue("decay")->load(),
Expand Down
34 changes: 32 additions & 2 deletions C3JI5D-Synthesiser/Source/SynthVoice.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include "../JuceLibraryCode/JuceHeader.h"
#include "SynthSound.h"
//#include "Maximilian.h"
#include "WaveformSynthesis.h"
#include "Envelopes.h"
#include "Filters.h"
Expand Down Expand Up @@ -153,6 +152,29 @@ class SynthVoice : public SynthesiserVoice
//return sample;
}

void getDelayParams(float delayType, float dTime, float dFeedback, float dSpeed, float dDepth)
{
delayChoice = delayType;
delayTime = dTime;
delayFeedback = dFeedback;
delaySpeed = dSpeed;
delayDepth = dDepth;
}

double setDelay(double sample)
{
switch (delayChoice)
{
case 0:
return delay01.dl(sample, delayTime, delayFeedback);
case 1:
return flanger01.flange(sample, delayTime, delayFeedback, delaySpeed, delayDepth);
default:
return sample;
break;
}
}

void startNote (int midiNoteNumber, float velocity, SynthesiserSound* sound, int currentPitchWheelPosition) override
{
noteNumber = midiNoteNumber;
Expand Down Expand Up @@ -184,7 +206,7 @@ class SynthVoice : public SynthesiserVoice

double giveSample()
{
return masterGain * setFilter(setEnvelope(setOscType()));
return masterGain * /*setDelay(*/setFilter(setEnvelope(setOscType()))/*)*/;
}

void renderNextBlock (AudioBuffer <float> &outputBuffer, int startSample, int numSamples) override
Expand Down Expand Up @@ -215,8 +237,16 @@ class SynthVoice : public SynthesiserVoice
int filterChoice;
float cutoff;
float resonance;

int delayChoice;
float delayTime;
float delayFeedback;
float delaySpeed;
float delayDepth;

oscillator oscillator01, oscillator02;
envelope envelope01;
filter filter01;
delay_chain delay01;
flanger flanger01;
};

0 comments on commit 89f82cb

Please sign in to comment.