mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Fix some LLVM 17 compiler warnings
This commit is contained in:
parent
951b873c14
commit
2fb19ffd8f
176 changed files with 867 additions and 894 deletions
|
|
@ -53,7 +53,7 @@
|
|||
#include <ARA_Library/Utilities/ARATimelineConversion.h>
|
||||
|
||||
//==============================================================================
|
||||
class ARADemoPluginAudioModification : public ARAAudioModification
|
||||
class ARADemoPluginAudioModification final : public ARAAudioModification
|
||||
{
|
||||
public:
|
||||
ARADemoPluginAudioModification (ARAAudioSource* audioSource,
|
||||
|
|
@ -79,7 +79,7 @@ struct PreviewState
|
|||
std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr };
|
||||
};
|
||||
|
||||
class SharedTimeSliceThread : public TimeSliceThread
|
||||
class SharedTimeSliceThread final : public TimeSliceThread
|
||||
{
|
||||
public:
|
||||
SharedTimeSliceThread()
|
||||
|
|
@ -89,7 +89,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class AsyncConfigurationCallback : private AsyncUpdater
|
||||
class AsyncConfigurationCallback final : private AsyncUpdater
|
||||
{
|
||||
public:
|
||||
explicit AsyncConfigurationCallback (std::function<void()> callbackIn)
|
||||
|
|
@ -303,7 +303,7 @@ struct ProcessingLockInterface
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class PlaybackRenderer : public ARAPlaybackRenderer
|
||||
class PlaybackRenderer final : public ARAPlaybackRenderer
|
||||
{
|
||||
public:
|
||||
PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn)
|
||||
|
|
@ -480,8 +480,8 @@ private:
|
|||
std::unique_ptr<AudioBuffer<float>> tempBuffer;
|
||||
};
|
||||
|
||||
class EditorRenderer : public ARAEditorRenderer,
|
||||
private ARARegionSequence::Listener
|
||||
class EditorRenderer final : public ARAEditorRenderer,
|
||||
private ARARegionSequence::Listener
|
||||
{
|
||||
public:
|
||||
EditorRenderer (ARA::PlugIn::DocumentController* documentController,
|
||||
|
|
@ -699,8 +699,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class ARADemoPluginDocumentControllerSpecialisation : public ARADocumentControllerSpecialisation,
|
||||
private ProcessingLockInterface
|
||||
class ARADemoPluginDocumentControllerSpecialisation final : public ARADocumentControllerSpecialisation,
|
||||
private ProcessingLockInterface
|
||||
{
|
||||
public:
|
||||
using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation;
|
||||
|
|
@ -853,8 +853,8 @@ struct PlayHeadState
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class ARADemoPluginAudioProcessorImpl : public AudioProcessor,
|
||||
public AudioProcessorARAExtension
|
||||
class ARADemoPluginAudioProcessorImpl : public AudioProcessor,
|
||||
public AudioProcessorARAExtension
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
|
|
@ -985,14 +985,14 @@ private:
|
|||
ListenerList<Listener> listeners;
|
||||
};
|
||||
|
||||
class RulersView : public Component,
|
||||
public SettableTooltipClient,
|
||||
private Timer,
|
||||
private TimeToViewScaling::Listener,
|
||||
private ARAMusicalContext::Listener
|
||||
class RulersView final : public Component,
|
||||
public SettableTooltipClient,
|
||||
private Timer,
|
||||
private TimeToViewScaling::Listener,
|
||||
private ARAMusicalContext::Listener
|
||||
{
|
||||
public:
|
||||
class CycleMarkerComponent : public Component
|
||||
class CycleMarkerComponent final : public Component
|
||||
{
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
|
|
@ -1233,7 +1233,7 @@ private:
|
|||
bool isDraggingCycle = false;
|
||||
};
|
||||
|
||||
class RulersHeader : public Component
|
||||
class RulersHeader final : public Component
|
||||
{
|
||||
public:
|
||||
RulersHeader()
|
||||
|
|
@ -1274,7 +1274,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
struct WaveformCache : private ARAAudioSource::Listener
|
||||
struct WaveformCache final : private ARAAudioSource::Listener
|
||||
{
|
||||
WaveformCache() : thumbnailCache (20)
|
||||
{
|
||||
|
|
@ -1325,12 +1325,12 @@ private:
|
|||
std::map<ARAAudioSource*, std::unique_ptr<AudioThumbnail>> thumbnails;
|
||||
};
|
||||
|
||||
class PlaybackRegionView : public Component,
|
||||
public ChangeListener,
|
||||
public SettableTooltipClient,
|
||||
private ARAAudioSource::Listener,
|
||||
private ARAPlaybackRegion::Listener,
|
||||
private ARAEditorView::Listener
|
||||
class PlaybackRegionView final : public Component,
|
||||
public ChangeListener,
|
||||
public SettableTooltipClient,
|
||||
private ARAAudioSource::Listener,
|
||||
private ARAPlaybackRegion::Listener,
|
||||
private ARAEditorView::Listener
|
||||
{
|
||||
public:
|
||||
PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache)
|
||||
|
|
@ -1467,7 +1467,7 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
class PreviewRegionOverlay : public Component
|
||||
class PreviewRegionOverlay final : public Component
|
||||
{
|
||||
static constexpr auto previewLength = 0.5;
|
||||
|
||||
|
|
@ -1522,11 +1522,11 @@ private:
|
|||
bool isSelected = false;
|
||||
};
|
||||
|
||||
class RegionSequenceView : public Component,
|
||||
public ChangeBroadcaster,
|
||||
private TimeToViewScaling::Listener,
|
||||
private ARARegionSequence::Listener,
|
||||
private ARAPlaybackRegion::Listener
|
||||
class RegionSequenceView final : public Component,
|
||||
public ChangeBroadcaster,
|
||||
private TimeToViewScaling::Listener,
|
||||
private ARARegionSequence::Listener,
|
||||
private ARAPlaybackRegion::Listener
|
||||
{
|
||||
public:
|
||||
RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache)
|
||||
|
|
@ -1645,7 +1645,7 @@ private:
|
|||
double playbackDuration = 0.0;
|
||||
};
|
||||
|
||||
class ZoomControls : public Component
|
||||
class ZoomControls final : public Component
|
||||
{
|
||||
public:
|
||||
ZoomControls()
|
||||
|
|
@ -1672,8 +1672,8 @@ private:
|
|||
TextButton zoomInButton { "+" }, zoomOutButton { "-" };
|
||||
};
|
||||
|
||||
class PlayheadPositionLabel : public Label,
|
||||
private Timer
|
||||
class PlayheadPositionLabel final : public Label,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
PlayheadPositionLabel (PlayHeadState& playHeadStateIn)
|
||||
|
|
@ -1769,9 +1769,9 @@ private:
|
|||
ARAMusicalContext* selectedMusicalContext = nullptr;
|
||||
};
|
||||
|
||||
class TrackHeader : public Component,
|
||||
private ARARegionSequence::Listener,
|
||||
private ARAEditorView::Listener
|
||||
class TrackHeader final : public Component,
|
||||
private ARARegionSequence::Listener,
|
||||
private ARAEditorView::Listener
|
||||
{
|
||||
public:
|
||||
TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn)
|
||||
|
|
@ -1848,7 +1848,7 @@ private:
|
|||
|
||||
constexpr auto trackHeight = 60;
|
||||
|
||||
class VerticalLayoutViewportContent : public Component
|
||||
class VerticalLayoutViewportContent final : public Component
|
||||
{
|
||||
public:
|
||||
void resized() override
|
||||
|
|
@ -1863,7 +1863,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class VerticalLayoutViewport : public Viewport
|
||||
class VerticalLayoutViewport final : public Viewport
|
||||
{
|
||||
public:
|
||||
VerticalLayoutViewport()
|
||||
|
|
@ -1887,12 +1887,12 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
class OverlayComponent : public Component,
|
||||
private Timer,
|
||||
private TimeToViewScaling::Listener
|
||||
class OverlayComponent final : public Component,
|
||||
private Timer,
|
||||
private TimeToViewScaling::Listener
|
||||
{
|
||||
public:
|
||||
class PlayheadMarkerComponent : public Component
|
||||
class PlayheadMarkerComponent final : public Component
|
||||
{
|
||||
void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); }
|
||||
};
|
||||
|
|
@ -1981,11 +1981,11 @@ private:
|
|||
PlayheadMarkerComponent playheadMarker;
|
||||
};
|
||||
|
||||
class DocumentView : public Component,
|
||||
public ChangeListener,
|
||||
public ARAMusicalContext::Listener,
|
||||
private ARADocument::Listener,
|
||||
private ARAEditorView::Listener
|
||||
class DocumentView final : public Component,
|
||||
public ChangeListener,
|
||||
public ARAMusicalContext::Listener,
|
||||
private ARADocument::Listener,
|
||||
private ARAEditorView::Listener
|
||||
{
|
||||
public:
|
||||
DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState)
|
||||
|
|
@ -2287,8 +2287,8 @@ private:
|
|||
};
|
||||
|
||||
|
||||
class ARADemoPluginProcessorEditor : public AudioProcessorEditor,
|
||||
public AudioProcessorEditorARAExtension
|
||||
class ARADemoPluginProcessorEditor final : public AudioProcessorEditor,
|
||||
public AudioProcessorEditorARAExtension
|
||||
{
|
||||
public:
|
||||
explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p)
|
||||
|
|
@ -2334,7 +2334,7 @@ private:
|
|||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor)
|
||||
};
|
||||
|
||||
class ARADemoPluginAudioProcessor : public ARADemoPluginAudioProcessorImpl
|
||||
class ARADemoPluginAudioProcessor final : public ARADemoPluginAudioProcessorImpl
|
||||
{
|
||||
public:
|
||||
bool hasEditor() const override { return true; }
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#include "../Assets/DemoUtilities.h"
|
||||
|
||||
//==============================================================================
|
||||
class MaterialLookAndFeel : public LookAndFeel_V4
|
||||
class MaterialLookAndFeel final : public LookAndFeel_V4
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
|
|
@ -178,8 +178,8 @@ public:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class AUv3SynthEditor : public AudioProcessorEditor,
|
||||
private Timer
|
||||
class AUv3SynthEditor final : public AudioProcessorEditor,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
|
|
@ -309,7 +309,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class AUv3SynthProcessor : public AudioProcessor
|
||||
class AUv3SynthProcessor final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
AUv3SynthProcessor ()
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
|
||||
//==============================================================================
|
||||
class Arpeggiator : public AudioProcessor
|
||||
class Arpeggiator final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
|
||||
//==============================================================================
|
||||
/** A demo synth sound that's just a basic sine wave.. */
|
||||
class SineWaveSound : public SynthesiserSound
|
||||
class SineWaveSound final : public SynthesiserSound
|
||||
{
|
||||
public:
|
||||
SineWaveSound() {}
|
||||
|
|
@ -66,7 +66,7 @@ public:
|
|||
|
||||
//==============================================================================
|
||||
/** A simple demo synth voice that just plays a sine wave.. */
|
||||
class SineWaveVoice : public SynthesiserVoice
|
||||
class SineWaveVoice final : public SynthesiserVoice
|
||||
{
|
||||
public:
|
||||
SineWaveVoice() {}
|
||||
|
|
@ -175,7 +175,7 @@ private:
|
|||
|
||||
//==============================================================================
|
||||
/** As the name suggest, this class does the actual audio processing. */
|
||||
class JuceDemoPluginAudioProcessor : public AudioProcessor
|
||||
class JuceDemoPluginAudioProcessor final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
|
|
@ -362,9 +362,9 @@ public:
|
|||
private:
|
||||
//==============================================================================
|
||||
/** This is the editor component that our filter will display. */
|
||||
class JuceDemoPluginAudioProcessorEditor : public AudioProcessorEditor,
|
||||
private Timer,
|
||||
private Value::Listener
|
||||
class JuceDemoPluginAudioProcessorEditor final : public AudioProcessorEditor,
|
||||
private Timer,
|
||||
private Value::Listener
|
||||
{
|
||||
public:
|
||||
JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner)
|
||||
|
|
|
|||
|
|
@ -143,15 +143,15 @@ void resetAll (Processors&... processors)
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
class DspModulePluginDemo : public AudioProcessor,
|
||||
private ValueTree::Listener
|
||||
class DspModulePluginDemo : public AudioProcessor,
|
||||
private ValueTree::Listener
|
||||
{
|
||||
public:
|
||||
DspModulePluginDemo()
|
||||
: DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {}
|
||||
|
||||
//==============================================================================
|
||||
void prepareToPlay (double sampleRate, int samplesPerBlock) override
|
||||
void prepareToPlay (double sampleRate, int samplesPerBlock) final
|
||||
{
|
||||
const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels());
|
||||
|
||||
|
|
@ -163,15 +163,15 @@ public:
|
|||
reset();
|
||||
}
|
||||
|
||||
void reset() override
|
||||
void reset() final
|
||||
{
|
||||
chain.reset();
|
||||
update();
|
||||
}
|
||||
|
||||
void releaseResources() override {}
|
||||
void releaseResources() final {}
|
||||
|
||||
void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) override
|
||||
void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) final
|
||||
{
|
||||
if (jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()) == 0)
|
||||
return;
|
||||
|
|
@ -195,43 +195,43 @@ public:
|
|||
chain.process (dsp::ProcessContextReplacing<float> (inoutBlock));
|
||||
}
|
||||
|
||||
void processBlock (AudioBuffer<double>&, MidiBuffer&) override {}
|
||||
void processBlock (AudioBuffer<double>&, MidiBuffer&) final {}
|
||||
|
||||
//==============================================================================
|
||||
AudioProcessorEditor* createEditor() override { return nullptr; }
|
||||
bool hasEditor() const override { return false; }
|
||||
|
||||
//==============================================================================
|
||||
const String getName() const override { return "DSPModulePluginDemo"; }
|
||||
const String getName() const final { return "DSPModulePluginDemo"; }
|
||||
|
||||
bool acceptsMidi() const override { return false; }
|
||||
bool producesMidi() const override { return false; }
|
||||
bool isMidiEffect() const override { return false; }
|
||||
bool acceptsMidi() const final { return false; }
|
||||
bool producesMidi() const final { return false; }
|
||||
bool isMidiEffect() const final { return false; }
|
||||
|
||||
double getTailLengthSeconds() const override { return 0.0; }
|
||||
double getTailLengthSeconds() const final { return 0.0; }
|
||||
|
||||
//==============================================================================
|
||||
int getNumPrograms() override { return 1; }
|
||||
int getCurrentProgram() override { return 0; }
|
||||
void setCurrentProgram (int) override {}
|
||||
const String getProgramName (int) override { return "None"; }
|
||||
int getNumPrograms() final { return 1; }
|
||||
int getCurrentProgram() final { return 0; }
|
||||
void setCurrentProgram (int) final {}
|
||||
const String getProgramName (int) final { return "None"; }
|
||||
|
||||
void changeProgramName (int, const String&) override {}
|
||||
void changeProgramName (int, const String&) final {}
|
||||
|
||||
//==============================================================================
|
||||
bool isBusesLayoutSupported (const BusesLayout& layout) const override
|
||||
bool isBusesLayoutSupported (const BusesLayout& layout) const final
|
||||
{
|
||||
return layout == BusesLayout { { AudioChannelSet::stereo() },
|
||||
{ AudioChannelSet::stereo() } };
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void getStateInformation (MemoryBlock& destData) override
|
||||
void getStateInformation (MemoryBlock& destData) final
|
||||
{
|
||||
copyXmlToBinary (*apvts.copyState().createXml(), destData);
|
||||
}
|
||||
|
||||
void setStateInformation (const void* data, int sizeInBytes) override
|
||||
void setStateInformation (const void* data, int sizeInBytes) final
|
||||
{
|
||||
apvts.replaceState (ValueTree::fromXml (*getXmlFromBinary (data, sizeInBytes)));
|
||||
}
|
||||
|
|
@ -811,7 +811,7 @@ private:
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
void valueTreePropertyChanged (ValueTree&, const Identifier&) override
|
||||
void valueTreePropertyChanged (ValueTree&, const Identifier&) final
|
||||
{
|
||||
requiresUpdate.store (true);
|
||||
}
|
||||
|
|
@ -1498,7 +1498,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class DspModulePluginDemoEditor : public AudioProcessorEditor
|
||||
class DspModulePluginDemoEditor final : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
explicit DspModulePluginDemoEditor (DspModulePluginDemo& p)
|
||||
|
|
@ -1637,7 +1637,7 @@ private:
|
|||
RangedAudioParameter& param;
|
||||
};
|
||||
|
||||
class AttachedSlider : public ComponentWithParamMenu
|
||||
class AttachedSlider final : public ComponentWithParamMenu
|
||||
{
|
||||
public:
|
||||
AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
|
||||
|
|
@ -1663,7 +1663,7 @@ private:
|
|||
SliderParameterAttachment attachment;
|
||||
};
|
||||
|
||||
class AttachedToggle : public ComponentWithParamMenu
|
||||
class AttachedToggle final : public ComponentWithParamMenu
|
||||
{
|
||||
public:
|
||||
AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
|
||||
|
|
@ -1682,7 +1682,7 @@ private:
|
|||
ButtonParameterAttachment attachment;
|
||||
};
|
||||
|
||||
class AttachedCombo : public ComponentWithParamMenu
|
||||
class AttachedCombo final : public ComponentWithParamMenu
|
||||
{
|
||||
public:
|
||||
AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
|
||||
|
|
@ -1795,7 +1795,7 @@ private:
|
|||
grid.performLayout (bounds);
|
||||
}
|
||||
|
||||
struct BasicControls : public Component
|
||||
struct BasicControls final : public Component
|
||||
{
|
||||
explicit BasicControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::MainGroup& state)
|
||||
|
|
@ -1814,7 +1814,7 @@ private:
|
|||
AttachedSlider pan, input, output;
|
||||
};
|
||||
|
||||
struct DistortionControls : public Component
|
||||
struct DistortionControls final : public Component
|
||||
{
|
||||
explicit DistortionControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::DistortionGroup& state)
|
||||
|
|
@ -1840,7 +1840,7 @@ private:
|
|||
AttachedCombo type, oversampling;
|
||||
};
|
||||
|
||||
struct ConvolutionControls : public Component
|
||||
struct ConvolutionControls final : public Component
|
||||
{
|
||||
explicit ConvolutionControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state)
|
||||
|
|
@ -1860,7 +1860,7 @@ private:
|
|||
AttachedSlider mix;
|
||||
};
|
||||
|
||||
struct MultiBandControls : public Component
|
||||
struct MultiBandControls final : public Component
|
||||
{
|
||||
explicit MultiBandControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state)
|
||||
|
|
@ -1881,7 +1881,7 @@ private:
|
|||
AttachedSlider low, high, lRFreq;
|
||||
};
|
||||
|
||||
struct CompressorControls : public Component
|
||||
struct CompressorControls final : public Component
|
||||
{
|
||||
explicit CompressorControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::CompressorGroup& state)
|
||||
|
|
@ -1903,7 +1903,7 @@ private:
|
|||
AttachedSlider threshold, ratio, attack, release;
|
||||
};
|
||||
|
||||
struct NoiseGateControls : public Component
|
||||
struct NoiseGateControls final : public Component
|
||||
{
|
||||
explicit NoiseGateControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state)
|
||||
|
|
@ -1925,7 +1925,7 @@ private:
|
|||
AttachedSlider threshold, ratio, attack, release;
|
||||
};
|
||||
|
||||
struct LimiterControls : public Component
|
||||
struct LimiterControls final : public Component
|
||||
{
|
||||
explicit LimiterControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::LimiterGroup& state)
|
||||
|
|
@ -1945,7 +1945,7 @@ private:
|
|||
AttachedSlider threshold, release;
|
||||
};
|
||||
|
||||
struct DirectDelayControls : public Component
|
||||
struct DirectDelayControls final : public Component
|
||||
{
|
||||
explicit DirectDelayControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state)
|
||||
|
|
@ -1968,7 +1968,7 @@ private:
|
|||
AttachedSlider delay, smooth, mix;
|
||||
};
|
||||
|
||||
struct DelayEffectControls : public Component
|
||||
struct DelayEffectControls final : public Component
|
||||
{
|
||||
explicit DelayEffectControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state)
|
||||
|
|
@ -1993,7 +1993,7 @@ private:
|
|||
AttachedSlider value, smooth, lowpass, feedback, mix;
|
||||
};
|
||||
|
||||
struct PhaserControls : public Component
|
||||
struct PhaserControls final : public Component
|
||||
{
|
||||
explicit PhaserControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::PhaserGroup& state)
|
||||
|
|
@ -2016,7 +2016,7 @@ private:
|
|||
AttachedSlider rate, depth, centre, feedback, mix;
|
||||
};
|
||||
|
||||
struct ChorusControls : public Component
|
||||
struct ChorusControls final : public Component
|
||||
{
|
||||
explicit ChorusControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::ChorusGroup& state)
|
||||
|
|
@ -2039,7 +2039,7 @@ private:
|
|||
AttachedSlider rate, depth, centre, feedback, mix;
|
||||
};
|
||||
|
||||
struct LadderControls : public Component
|
||||
struct LadderControls final : public Component
|
||||
{
|
||||
explicit LadderControls (AudioProcessorEditor& editor,
|
||||
const DspModulePluginDemo::ParameterReferences::LadderGroup& state)
|
||||
|
|
@ -2088,7 +2088,7 @@ private:
|
|||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor)
|
||||
};
|
||||
|
||||
struct DspModulePluginDemoAudioProcessor : public DspModulePluginDemo
|
||||
struct DspModulePluginDemoAudioProcessor final : public DspModulePluginDemo
|
||||
{
|
||||
AudioProcessorEditor* createEditor() override
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
|
||||
//==============================================================================
|
||||
class GainProcessor : public AudioProcessor
|
||||
class GainProcessor final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public:
|
|||
pluginList.addChangeListener (this);
|
||||
}
|
||||
|
||||
bool isBusesLayoutSupported (const BusesLayout& layouts) const override
|
||||
bool isBusesLayoutSupported (const BusesLayout& layouts) const final
|
||||
{
|
||||
const auto& mainOutput = layouts.getMainOutputChannelSet();
|
||||
const auto& mainInput = layouts.getMainInputChannelSet();
|
||||
|
|
@ -102,7 +102,7 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
void prepareToPlay (double sr, int bs) override
|
||||
void prepareToPlay (double sr, int bs) final
|
||||
{
|
||||
const ScopedLock sl (innerMutex);
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void releaseResources() override
|
||||
void releaseResources() final
|
||||
{
|
||||
const ScopedLock sl (innerMutex);
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ public:
|
|||
inner->releaseResources();
|
||||
}
|
||||
|
||||
void reset() override
|
||||
void reset() final
|
||||
{
|
||||
const ScopedLock sl (innerMutex);
|
||||
|
||||
|
|
@ -136,12 +136,12 @@ public:
|
|||
// In this example, we don't actually pass any audio through the inner processor.
|
||||
// In a 'real' plugin, we'd need to add some synchronisation to ensure that the inner
|
||||
// plugin instance was never modified (deleted, replaced etc.) during a call to processBlock.
|
||||
void processBlock (AudioBuffer<float>&, MidiBuffer&) override
|
||||
void processBlock (AudioBuffer<float>&, MidiBuffer&) final
|
||||
{
|
||||
jassert (! isUsingDoublePrecision());
|
||||
}
|
||||
|
||||
void processBlock (AudioBuffer<double>&, MidiBuffer&) override
|
||||
void processBlock (AudioBuffer<double>&, MidiBuffer&) final
|
||||
{
|
||||
jassert (isUsingDoublePrecision());
|
||||
}
|
||||
|
|
@ -149,18 +149,18 @@ public:
|
|||
bool hasEditor() const override { return false; }
|
||||
AudioProcessorEditor* createEditor() override { return nullptr; }
|
||||
|
||||
const String getName() const override { return "HostPluginDemo"; }
|
||||
bool acceptsMidi() const override { return true; }
|
||||
bool producesMidi() const override { return true; }
|
||||
double getTailLengthSeconds() const override { return 0.0; }
|
||||
const String getName() const final { return "HostPluginDemo"; }
|
||||
bool acceptsMidi() const final { return true; }
|
||||
bool producesMidi() const final { return true; }
|
||||
double getTailLengthSeconds() const final { return 0.0; }
|
||||
|
||||
int getNumPrograms() override { return 0; }
|
||||
int getCurrentProgram() override { return 0; }
|
||||
void setCurrentProgram (int) override {}
|
||||
const String getProgramName (int) override { return "None"; }
|
||||
void changeProgramName (int, const String&) override {}
|
||||
int getNumPrograms() final { return 0; }
|
||||
int getCurrentProgram() final { return 0; }
|
||||
void setCurrentProgram (int) final {}
|
||||
const String getProgramName (int) final { return "None"; }
|
||||
void changeProgramName (int, const String&) final {}
|
||||
|
||||
void getStateInformation (MemoryBlock& destData) override
|
||||
void getStateInformation (MemoryBlock& destData) final
|
||||
{
|
||||
const ScopedLock sl (innerMutex);
|
||||
|
||||
|
|
@ -185,7 +185,7 @@ public:
|
|||
destData.replaceAll (text.toRawUTF8(), text.getNumBytesAsUTF8());
|
||||
}
|
||||
|
||||
void setStateInformation (const void* data, int sizeInBytes) override
|
||||
void setStateInformation (const void* data, int sizeInBytes) final
|
||||
{
|
||||
const ScopedLock sl (innerMutex);
|
||||
|
||||
|
|
@ -285,7 +285,7 @@ private:
|
|||
static constexpr const char* innerStateTag = "inner_state";
|
||||
static constexpr const char* editorStyleTag = "editor_style";
|
||||
|
||||
void changeListenerCallback (ChangeBroadcaster* source) override
|
||||
void changeListenerCallback (ChangeBroadcaster* source) final
|
||||
{
|
||||
if (source != &pluginList)
|
||||
return;
|
||||
|
|
@ -312,7 +312,7 @@ static void doLayout (Component* main, Component& bottom, int bottomHeight, Rect
|
|||
grid.performLayout (bounds);
|
||||
}
|
||||
|
||||
class PluginLoaderComponent : public Component
|
||||
class PluginLoaderComponent final : public Component
|
||||
{
|
||||
public:
|
||||
template <typename Callback>
|
||||
|
|
@ -348,7 +348,7 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
struct Buttons : public Component
|
||||
struct Buttons final : public Component
|
||||
{
|
||||
Buttons()
|
||||
{
|
||||
|
|
@ -390,7 +390,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class PluginEditorComponent : public Component
|
||||
class PluginEditorComponent final : public Component
|
||||
{
|
||||
public:
|
||||
template <typename Callback>
|
||||
|
|
@ -435,7 +435,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class ScaledDocumentWindow : public DocumentWindow
|
||||
class ScaledDocumentWindow final : public DocumentWindow
|
||||
{
|
||||
public:
|
||||
ScaledDocumentWindow (Colour bg, float scale)
|
||||
|
|
@ -448,7 +448,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class HostAudioProcessorEditor : public AudioProcessorEditor
|
||||
class HostAudioProcessorEditor final : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner)
|
||||
|
|
@ -576,7 +576,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class HostAudioProcessor : public HostAudioProcessorImpl
|
||||
class HostAudioProcessor final : public HostAudioProcessorImpl
|
||||
{
|
||||
public:
|
||||
bool hasEditor() const override { return true; }
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MidiTable : public Component,
|
||||
private TableListBoxModel
|
||||
class MidiTable final : public Component,
|
||||
private TableListBoxModel
|
||||
{
|
||||
public:
|
||||
MidiTable (MidiListModel& m)
|
||||
|
|
@ -220,8 +220,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MidiLoggerPluginDemoProcessor : public AudioProcessor,
|
||||
private Timer
|
||||
class MidiLoggerPluginDemoProcessor final : public AudioProcessor,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
MidiLoggerPluginDemoProcessor()
|
||||
|
|
@ -268,8 +268,8 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
class Editor : public AudioProcessorEditor,
|
||||
private Value::Listener
|
||||
class Editor final : public AudioProcessorEditor,
|
||||
private Value::Listener
|
||||
{
|
||||
public:
|
||||
explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
#include "../Assets/DemoUtilities.h"
|
||||
|
||||
//==============================================================================
|
||||
class MultiOutSynth : public AudioProcessor
|
||||
class MultiOutSynth final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
enum
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
|
||||
//==============================================================================
|
||||
class NoiseGate : public AudioProcessor
|
||||
class NoiseGate final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ struct EmbeddedViewListener
|
|||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor")
|
||||
|
||||
//==============================================================================
|
||||
class EmbeddedUI : public reaper::IReaperUIEmbedInterface
|
||||
class EmbeddedUI final : public reaper::IReaperUIEmbedInterface
|
||||
{
|
||||
public:
|
||||
explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {}
|
||||
|
|
@ -146,7 +146,7 @@ private:
|
|||
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
class VST2Extensions : public VST2ClientExtensions
|
||||
class VST2Extensions final : public VST2ClientExtensions
|
||||
{
|
||||
public:
|
||||
explicit VST2Extensions (EmbeddedViewListener& l)
|
||||
|
|
@ -187,7 +187,7 @@ private:
|
|||
EmbeddedViewListener& listener;
|
||||
};
|
||||
|
||||
class VST3Extensions : public VST3ClientExtensions
|
||||
class VST3Extensions final : public VST3ClientExtensions
|
||||
{
|
||||
public:
|
||||
explicit VST3Extensions (EmbeddedViewListener& l)
|
||||
|
|
@ -222,7 +222,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class Editor : public AudioProcessorEditor
|
||||
class Editor final : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
explicit Editor (AudioProcessor& proc,
|
||||
|
|
@ -258,9 +258,9 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class ReaperEmbeddedViewDemo : public AudioProcessor,
|
||||
private EmbeddedViewListener,
|
||||
private Timer
|
||||
class ReaperEmbeddedViewDemo final : public AudioProcessor,
|
||||
private EmbeddedViewListener,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
ReaperEmbeddedViewDemo()
|
||||
|
|
|
|||
|
|
@ -111,8 +111,8 @@ struct Command
|
|||
};
|
||||
|
||||
template <typename Proc, typename Func>
|
||||
class TemplateCommand : public Command<Proc>,
|
||||
private Func
|
||||
class TemplateCommand final : public Command<Proc>,
|
||||
private Func
|
||||
{
|
||||
public:
|
||||
template <typename FuncPrime>
|
||||
|
|
@ -257,7 +257,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MPESamplerVoice : public MPESynthesiserVoice
|
||||
class MPESamplerVoice final : public MPESynthesiserVoice
|
||||
{
|
||||
public:
|
||||
explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound)
|
||||
|
|
@ -501,7 +501,7 @@ private:
|
|||
};
|
||||
|
||||
template <typename Contents>
|
||||
class ReferenceCountingAdapter : public ReferenceCountedObject
|
||||
class ReferenceCountingAdapter final : public ReferenceCountedObject
|
||||
{
|
||||
public:
|
||||
template <typename... Args>
|
||||
|
|
@ -564,7 +564,7 @@ public:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MemoryAudioFormatReaderFactory : public AudioFormatReaderFactory
|
||||
class MemoryAudioFormatReaderFactory final : public AudioFormatReaderFactory
|
||||
{
|
||||
public:
|
||||
MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn)
|
||||
|
|
@ -588,7 +588,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class FileAudioFormatReaderFactory : public AudioFormatReaderFactory
|
||||
class FileAudioFormatReaderFactory final : public AudioFormatReaderFactory
|
||||
{
|
||||
public:
|
||||
explicit FileAudioFormatReaderFactory (File fileIn)
|
||||
|
|
@ -643,20 +643,20 @@ struct GenericVariantConverter
|
|||
};
|
||||
|
||||
template <typename Numeric>
|
||||
struct VariantConverter<Range<Numeric>> : GenericVariantConverter<Range<Numeric>> {};
|
||||
struct VariantConverter<Range<Numeric>> final : GenericVariantConverter<Range<Numeric>> {};
|
||||
|
||||
template<>
|
||||
struct VariantConverter<MPEZoneLayout> : GenericVariantConverter<MPEZoneLayout> {};
|
||||
struct VariantConverter<MPEZoneLayout> final : GenericVariantConverter<MPEZoneLayout> {};
|
||||
|
||||
template<>
|
||||
struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>>
|
||||
struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> final
|
||||
: GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>>
|
||||
{};
|
||||
|
||||
} // namespace juce
|
||||
|
||||
//==============================================================================
|
||||
class VisibleRangeDataModel : private ValueTree::Listener
|
||||
class VisibleRangeDataModel final : private ValueTree::Listener
|
||||
{
|
||||
public:
|
||||
class Listener
|
||||
|
|
@ -757,7 +757,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MPESettingsDataModel : private ValueTree::Listener
|
||||
class MPESettingsDataModel final : private ValueTree::Listener
|
||||
{
|
||||
public:
|
||||
class Listener
|
||||
|
|
@ -947,7 +947,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class DataModel : private ValueTree::Listener
|
||||
class DataModel final : private ValueTree::Listener
|
||||
{
|
||||
public:
|
||||
class Listener
|
||||
|
|
@ -1132,8 +1132,8 @@ constexpr int controlSeparation = 6;
|
|||
} // namespace
|
||||
|
||||
//==============================================================================
|
||||
class MPELegacySettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
class MPELegacySettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
{
|
||||
public:
|
||||
explicit MPELegacySettingsComponent (const MPESettingsDataModel& model,
|
||||
|
|
@ -1256,8 +1256,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MPENewSettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
class MPENewSettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
{
|
||||
public:
|
||||
MPENewSettingsComponent (const MPESettingsDataModel& model,
|
||||
|
|
@ -1352,8 +1352,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MPESettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
class MPESettingsComponent final : public Component,
|
||||
private MPESettingsDataModel::Listener
|
||||
{
|
||||
public:
|
||||
MPESettingsComponent (const MPESettingsDataModel& model,
|
||||
|
|
@ -1446,7 +1446,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class LoopPointMarker : public Component
|
||||
class LoopPointMarker final : public Component
|
||||
{
|
||||
public:
|
||||
using MouseCallback = std::function<void (LoopPointMarker&, const MouseEvent&)>;
|
||||
|
|
@ -1523,8 +1523,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class Ruler : public Component,
|
||||
private VisibleRangeDataModel::Listener
|
||||
class Ruler final : public Component,
|
||||
private VisibleRangeDataModel::Listener
|
||||
{
|
||||
public:
|
||||
explicit Ruler (const VisibleRangeDataModel& model)
|
||||
|
|
@ -1614,9 +1614,9 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class LoopPointsOverlay : public Component,
|
||||
private DataModel::Listener,
|
||||
private VisibleRangeDataModel::Listener
|
||||
class LoopPointsOverlay final : public Component,
|
||||
private DataModel::Listener,
|
||||
private VisibleRangeDataModel::Listener
|
||||
{
|
||||
public:
|
||||
LoopPointsOverlay (const DataModel& dModel,
|
||||
|
|
@ -1715,9 +1715,9 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class PlaybackPositionOverlay : public Component,
|
||||
private Timer,
|
||||
private VisibleRangeDataModel::Listener
|
||||
class PlaybackPositionOverlay final : public Component,
|
||||
private Timer,
|
||||
private VisibleRangeDataModel::Listener
|
||||
{
|
||||
public:
|
||||
using Provider = std::function<std::vector<float>()>;
|
||||
|
|
@ -1762,10 +1762,10 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class WaveformView : public Component,
|
||||
private ChangeListener,
|
||||
private DataModel::Listener,
|
||||
private VisibleRangeDataModel::Listener
|
||||
class WaveformView final : public Component,
|
||||
private ChangeListener,
|
||||
private DataModel::Listener,
|
||||
private VisibleRangeDataModel::Listener
|
||||
{
|
||||
public:
|
||||
WaveformView (const DataModel& model,
|
||||
|
|
@ -1853,8 +1853,8 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class WaveformEditor : public Component,
|
||||
private DataModel::Listener
|
||||
class WaveformEditor final : public Component,
|
||||
private DataModel::Listener
|
||||
{
|
||||
public:
|
||||
WaveformEditor (const DataModel& model,
|
||||
|
|
@ -1909,9 +1909,9 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class MainSamplerView : public Component,
|
||||
private DataModel::Listener,
|
||||
private ChangeListener
|
||||
class MainSamplerView final : public Component,
|
||||
private DataModel::Listener,
|
||||
private ChangeListener
|
||||
{
|
||||
public:
|
||||
MainSamplerView (const DataModel& model,
|
||||
|
|
@ -2103,7 +2103,7 @@ struct ProcessorState
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class SamplerAudioProcessor : public AudioProcessor
|
||||
class SamplerAudioProcessor final : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
SamplerAudioProcessor()
|
||||
|
|
@ -2366,10 +2366,10 @@ public:
|
|||
|
||||
private:
|
||||
//==============================================================================
|
||||
class SamplerAudioProcessorEditor : public AudioProcessorEditor,
|
||||
public FileDragAndDropTarget,
|
||||
private DataModel::Listener,
|
||||
private MPESettingsDataModel::Listener
|
||||
class SamplerAudioProcessorEditor final : public AudioProcessorEditor,
|
||||
public FileDragAndDropTarget,
|
||||
private DataModel::Listener,
|
||||
private MPESettingsDataModel::Listener
|
||||
{
|
||||
public:
|
||||
SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state)
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ public:
|
|||
samplesPlayed = samplesToPlay;
|
||||
}
|
||||
|
||||
bool applyBusLayouts (const BusesLayout& layouts) override
|
||||
bool applyBusLayouts (const BusesLayout& layouts) final
|
||||
{
|
||||
// Some very badly-behaved hosts will call this during processing!
|
||||
const SpinLock::ScopedLockType lock (levelMutex);
|
||||
|
|
@ -225,8 +225,8 @@ inline void configureLabel (Label& label, const AudioProcessor::Bus* layout)
|
|||
label.setColour (Label::textColourId, textColour);
|
||||
}
|
||||
|
||||
class InputBusViewer : public Component,
|
||||
private Timer
|
||||
class InputBusViewer final : public Component,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
InputBusViewer (ProcessorWithLevels& proc, int busNumber)
|
||||
|
|
@ -306,7 +306,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class OutputBusViewer : public Component
|
||||
class OutputBusViewer final : public Component
|
||||
{
|
||||
public:
|
||||
OutputBusViewer (ProcessorWithLevels& proc, int busNumber)
|
||||
|
|
@ -332,7 +332,7 @@ public:
|
|||
channelButtons.emplace_back (channelName, channelName);
|
||||
|
||||
auto& newButton = channelButtons.back();
|
||||
newButton.onClick = [&proc = processor, bus = bus, i] { proc.channelButtonClicked (bus, i); };
|
||||
newButton.onClick = [&p = processor, b = bus, i] { p.channelButtonClicked (b, i); };
|
||||
addAndMakeVisible (newButton);
|
||||
}
|
||||
|
||||
|
|
@ -376,7 +376,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
class SurroundEditor : public AudioProcessorEditor
|
||||
class SurroundEditor final : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
explicit SurroundEditor (ProcessorWithLevels& parent)
|
||||
|
|
@ -454,7 +454,7 @@ private:
|
|||
};
|
||||
|
||||
//==============================================================================
|
||||
struct SurroundProcessor : public ProcessorWithLevels
|
||||
struct SurroundProcessor final : public ProcessorWithLevels
|
||||
{
|
||||
AudioProcessorEditor* createEditor() override { return new SurroundEditor (*this); }
|
||||
bool hasEditor() const override { return true; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue