kopia lustrzana https://github.com/jameshball/osci-render
Add smoothing effect to visualiser
rodzic
a106e09876
commit
1e112425e4
|
@ -119,9 +119,9 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
|
|||
visualiserSettingsWindow.setUsingNativeTitleBar(true);
|
||||
#endif
|
||||
visualiserSettings.setLookAndFeel(&getLookAndFeel());
|
||||
visualiserSettings.setSize(550, 370);
|
||||
visualiserSettings.setSize(550, 400);
|
||||
visualiserSettingsWindow.setContentNonOwned(&visualiserSettings, true);
|
||||
visualiserSettingsWindow.centreWithSize(550, 370);
|
||||
visualiserSettingsWindow.centreWithSize(550, 400);
|
||||
|
||||
tooltipDropShadow.setOwner(&tooltipWindow);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ OscirenderAudioProcessor::OscirenderAudioProcessor()
|
|||
#endif
|
||||
)
|
||||
#endif
|
||||
{
|
||||
{
|
||||
// locking isn't necessary here because we are in the constructor
|
||||
|
||||
toggleableEffects.push_back(std::make_shared<Effect>(
|
||||
|
@ -161,6 +161,7 @@ OscirenderAudioProcessor::OscirenderAudioProcessor()
|
|||
allEffects = toggleableEffects;
|
||||
allEffects.insert(allEffects.end(), permanentEffects.begin(), permanentEffects.end());
|
||||
allEffects.insert(allEffects.end(), luaEffects.begin(), luaEffects.end());
|
||||
allEffects.push_back(visualiserParameters.smoothEffect);
|
||||
|
||||
for (auto effect : allEffects) {
|
||||
for (auto effectParameter : effect->parameters) {
|
||||
|
|
|
@ -51,9 +51,9 @@ SosciPluginEditor::SosciPluginEditor(SosciAudioProcessor& p)
|
|||
visualiserSettingsWindow.setUsingNativeTitleBar(true);
|
||||
#endif
|
||||
visualiserSettings.setLookAndFeel(&getLookAndFeel());
|
||||
visualiserSettings.setSize(550, 370);
|
||||
visualiserSettings.setSize(550, 400);
|
||||
visualiserSettingsWindow.setContentNonOwned(&visualiserSettings, true);
|
||||
visualiserSettingsWindow.centreWithSize(550, 370);
|
||||
visualiserSettingsWindow.centreWithSize(550, 400);
|
||||
|
||||
menuBar.toFront(true);
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ SosciAudioProcessor::SosciAudioProcessor()
|
|||
for (auto effect : parameters.effects) {
|
||||
allEffects.push_back(effect);
|
||||
}
|
||||
|
||||
allEffects.push_back(parameters.smoothEffect);
|
||||
|
||||
for (auto effect : allEffects) {
|
||||
for (auto effectParameter : effect->parameters) {
|
||||
|
|
|
@ -86,9 +86,10 @@ void VisualiserComponent::setBuffer(const std::vector<OsciPoint>& buffer) {
|
|||
ySamples.clear();
|
||||
zSamples.clear();
|
||||
for (auto& point : buffer) {
|
||||
xSamples.push_back(point.x);
|
||||
ySamples.push_back(point.y);
|
||||
zSamples.push_back(point.z);
|
||||
OsciPoint smoothPoint = settings.parameters.smoothEffect->apply(0, point);
|
||||
xSamples.push_back(smoothPoint.x);
|
||||
ySamples.push_back(smoothPoint.y);
|
||||
zSamples.push_back(smoothPoint.z);
|
||||
}
|
||||
|
||||
triggerAsyncUpdate();
|
||||
|
|
|
@ -12,6 +12,7 @@ VisualiserSettings::VisualiserSettings(VisualiserParameters& parameters, int num
|
|||
addAndMakeVisible(focus);
|
||||
addAndMakeVisible(noise);
|
||||
addAndMakeVisible(glow);
|
||||
addAndMakeVisible(smooth);
|
||||
addAndMakeVisible(graticuleToggle);
|
||||
addAndMakeVisible(smudgeToggle);
|
||||
addAndMakeVisible(upsamplingToggle);
|
||||
|
@ -24,6 +25,7 @@ VisualiserSettings::VisualiserSettings(VisualiserParameters& parameters, int num
|
|||
focus.setSliderOnValueChange();
|
||||
noise.setSliderOnValueChange();
|
||||
glow.setSliderOnValueChange();
|
||||
smooth.setSliderOnValueChange();
|
||||
}
|
||||
|
||||
VisualiserSettings::~VisualiserSettings() {}
|
||||
|
@ -39,6 +41,7 @@ void VisualiserSettings::resized() {
|
|||
focus.setBounds(area.removeFromTop(rowHeight));
|
||||
noise.setBounds(area.removeFromTop(rowHeight));
|
||||
glow.setBounds(area.removeFromTop(rowHeight));
|
||||
smooth.setBounds(area.removeFromTop(rowHeight));
|
||||
graticuleToggle.setBounds(area.removeFromTop(rowHeight));
|
||||
smudgeToggle.setBounds(area.removeFromTop(rowHeight));
|
||||
upsamplingToggle.setBounds(area.removeFromTop(rowHeight));
|
||||
|
|
|
@ -7,12 +7,14 @@
|
|||
#include "../components/SvgButton.h"
|
||||
#include "../LookAndFeel.h"
|
||||
#include "../components/SwitchButton.h"
|
||||
#include "../audio/SmoothEffect.h"
|
||||
|
||||
class VisualiserParameters {
|
||||
public:
|
||||
BooleanParameter* graticuleEnabled = new BooleanParameter("Show Graticule", "graticuleEnabled", VERSION_HINT, true, "Show the graticule or grid lines over the oscilloscope display.");
|
||||
BooleanParameter* smudgesEnabled = new BooleanParameter("Show Smudges", "smudgesEnabled", VERSION_HINT, true, "Adds a subtle layer of dirt/smudges to the oscilloscope display to make it look more realistic.");
|
||||
BooleanParameter* upsamplingEnabled = new BooleanParameter("Upsample Audio", "upsamplingEnabled", VERSION_HINT, true, "Upsamples the audio before visualising it to make it appear more realistic, at the expense of performance.");
|
||||
BooleanParameter* sweepEnabled = new BooleanParameter("Sweep", "sweepEnabled", VERSION_HINT, true, "Plots the audio signal over time, sweeping from left to right");
|
||||
BooleanParameter* visualiserFullScreen = new BooleanParameter("Visualiser Fullscreen", "visualiserFullScreen", VERSION_HINT, false, "Makes the software visualiser fullscreen.");
|
||||
|
||||
std::shared_ptr<Effect> persistenceEffect = std::make_shared<Effect>(
|
||||
|
@ -36,7 +38,7 @@ public:
|
|||
"Brightness",
|
||||
"Controls how bright the light glows for on the oscilloscope display.",
|
||||
"brightness",
|
||||
VERSION_HINT, 3.0, 0.0, 10.0
|
||||
VERSION_HINT, 2.0, 0.0, 10.0
|
||||
)
|
||||
);
|
||||
std::shared_ptr<Effect> intensityEffect = std::make_shared<Effect>(
|
||||
|
@ -80,8 +82,18 @@ public:
|
|||
)
|
||||
);
|
||||
|
||||
std::shared_ptr<Effect> smoothEffect = std::make_shared<Effect>(
|
||||
std::make_shared<SmoothEffect>(),
|
||||
new EffectParameter(
|
||||
"Smoothing",
|
||||
"This works as a low-pass frequency filter, effectively reducing the sample rate of the audio being visualised.",
|
||||
"visualiserSmoothing",
|
||||
VERSION_HINT, 0, 0.0, 1.0
|
||||
)
|
||||
);
|
||||
|
||||
std::vector<std::shared_ptr<Effect>> effects = {persistenceEffect, hueEffect, brightnessEffect, intensityEffect, saturationEffect, focusEffect, noiseEffect, glowEffect};
|
||||
std::vector<BooleanParameter*> booleans = {graticuleEnabled, smudgesEnabled, upsamplingEnabled, visualiserFullScreen};
|
||||
std::vector<BooleanParameter*> booleans = {graticuleEnabled, smudgesEnabled, upsamplingEnabled, visualiserFullScreen, sweepEnabled};
|
||||
};
|
||||
|
||||
class VisualiserSettings : public juce::Component {
|
||||
|
@ -147,6 +159,7 @@ private:
|
|||
EffectComponent focus{*parameters.focusEffect};
|
||||
EffectComponent noise{*parameters.noiseEffect};
|
||||
EffectComponent glow{*parameters.glowEffect};
|
||||
EffectComponent smooth{*parameters.smoothEffect};
|
||||
|
||||
jux::SwitchButton graticuleToggle{parameters.graticuleEnabled};
|
||||
jux::SwitchButton smudgeToggle{parameters.smudgesEnabled};
|
||||
|
|
|
@ -55,6 +55,9 @@
|
|||
file="Source/audio/EffectParameter.h"/>
|
||||
<FILE id="aziWU2" name="SampleRateManager.h" compile="0" resource="0"
|
||||
file="Source/audio/SampleRateManager.h"/>
|
||||
<FILE id="vj5mRC" name="SmoothEffect.cpp" compile="1" resource="0"
|
||||
file="Source/audio/SmoothEffect.cpp"/>
|
||||
<FILE id="GSnwBW" name="SmoothEffect.h" compile="0" resource="0" file="Source/audio/SmoothEffect.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{CD81913A-7F0E-5898-DA77-5EBEB369DEB1}" name="components">
|
||||
<FILE id="URb7Ok" name="AboutComponent.cpp" compile="1" resource="0"
|
||||
|
|
Ładowanie…
Reference in New Issue