migrating to the latest JUCE version
This commit is contained in:
		@@ -1,33 +1,33 @@
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
#include "PluginEditor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor& p)
 | 
			
		||||
    : AudioProcessorEditor (&p), processorRef (p)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (processorRef);
 | 
			
		||||
    // Make sure that before the constructor has finished, you've set the
 | 
			
		||||
    // editor's size to whatever you need it to be.
 | 
			
		||||
    setSize (400, 300);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessorEditor::paint (juce::Graphics& g)
 | 
			
		||||
{
 | 
			
		||||
    // (Our component is opaque, so we must completely fill the background with a solid colour)
 | 
			
		||||
    g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));
 | 
			
		||||
 | 
			
		||||
    g.setColour (juce::Colours::white);
 | 
			
		||||
    g.setFont (15.0f);
 | 
			
		||||
    g.drawFittedText ("Hello World!", getLocalBounds(), juce::Justification::centred, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessorEditor::resized()
 | 
			
		||||
{
 | 
			
		||||
    // This is generally where you'll want to lay out the positions of any
 | 
			
		||||
    // subcomponents in your editor..
 | 
			
		||||
}
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
#include "PluginEditor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor& p)
 | 
			
		||||
    : AudioProcessorEditor (&p), processorRef (p)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (processorRef);
 | 
			
		||||
    // Make sure that before the constructor has finished, you've set the
 | 
			
		||||
    // editor's size to whatever you need it to be.
 | 
			
		||||
    setSize (400, 300);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessorEditor::paint (juce::Graphics& g)
 | 
			
		||||
{
 | 
			
		||||
    // (Our component is opaque, so we must completely fill the background with a solid colour)
 | 
			
		||||
    g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));
 | 
			
		||||
 | 
			
		||||
    g.setColour (juce::Colours::white);
 | 
			
		||||
    g.setFont (15.0f);
 | 
			
		||||
    g.drawFittedText ("Hello World!", getLocalBounds(), juce::Justification::centred, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessorEditor::resized()
 | 
			
		||||
{
 | 
			
		||||
    // This is generally where you'll want to lay out the positions of any
 | 
			
		||||
    // subcomponents in your editor..
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,22 +1,22 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
class AudioPluginAudioProcessorEditor  : public juce::AudioProcessorEditor
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&);
 | 
			
		||||
    ~AudioPluginAudioProcessorEditor() override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void paint (juce::Graphics&) override;
 | 
			
		||||
    void resized() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    // This reference is provided as a quick way for your editor to
 | 
			
		||||
    // access the processor object that created it.
 | 
			
		||||
    AudioPluginAudioProcessor& processorRef;
 | 
			
		||||
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessorEditor)
 | 
			
		||||
};
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
class AudioPluginAudioProcessorEditor  : public juce::AudioProcessorEditor
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&);
 | 
			
		||||
    ~AudioPluginAudioProcessorEditor() override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void paint (juce::Graphics&) override;
 | 
			
		||||
    void resized() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    // This reference is provided as a quick way for your editor to
 | 
			
		||||
    // access the processor object that created it.
 | 
			
		||||
    AudioPluginAudioProcessor& processorRef;
 | 
			
		||||
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessorEditor)
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,188 +1,188 @@
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
#include "PluginEditor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
AudioPluginAudioProcessor::AudioPluginAudioProcessor()
 | 
			
		||||
     : AudioProcessor (BusesProperties()
 | 
			
		||||
                     #if ! JucePlugin_IsMidiEffect
 | 
			
		||||
                      #if ! JucePlugin_IsSynth
 | 
			
		||||
                       .withInput  ("Input",  juce::AudioChannelSet::stereo(), true)
 | 
			
		||||
                      #endif
 | 
			
		||||
                       .withOutput ("Output", juce::AudioChannelSet::stereo(), true)
 | 
			
		||||
                     #endif
 | 
			
		||||
                       )
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AudioPluginAudioProcessor::~AudioPluginAudioProcessor()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
const juce::String AudioPluginAudioProcessor::getName() const
 | 
			
		||||
{
 | 
			
		||||
    return JucePlugin_Name;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::acceptsMidi() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_WantsMidiInput
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::producesMidi() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_ProducesMidiOutput
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::isMidiEffect() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_IsMidiEffect
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
double AudioPluginAudioProcessor::getTailLengthSeconds() const
 | 
			
		||||
{
 | 
			
		||||
    return 0.0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int AudioPluginAudioProcessor::getNumPrograms()
 | 
			
		||||
{
 | 
			
		||||
    return 1;   // NB: some hosts don't cope very well if you tell them there are 0 programs,
 | 
			
		||||
                // so this should be at least 1, even if you're not really implementing programs.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int AudioPluginAudioProcessor::getCurrentProgram()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::setCurrentProgram (int index)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const juce::String AudioPluginAudioProcessor::getProgramName (int index)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index);
 | 
			
		||||
    return {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::changeProgramName (int index, const juce::String& newName)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index, newName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock)
 | 
			
		||||
{
 | 
			
		||||
    // Use this method as the place to do any pre-playback
 | 
			
		||||
    // initialisation that you need..
 | 
			
		||||
    juce::ignoreUnused (sampleRate, samplesPerBlock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::releaseResources()
 | 
			
		||||
{
 | 
			
		||||
    // When playback stops, you can use this as an opportunity to free up any
 | 
			
		||||
    // spare memory, etc.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const
 | 
			
		||||
{
 | 
			
		||||
  #if JucePlugin_IsMidiEffect
 | 
			
		||||
    juce::ignoreUnused (layouts);
 | 
			
		||||
    return true;
 | 
			
		||||
  #else
 | 
			
		||||
    // This is the place where you check if the layout is supported.
 | 
			
		||||
    // In this template code we only support mono or stereo.
 | 
			
		||||
    // Some plugin hosts, such as certain GarageBand versions, will only
 | 
			
		||||
    // load plugins that support stereo bus layouts.
 | 
			
		||||
    if (layouts.getMainOutputChannelSet() != juce::AudioChannelSet::mono()
 | 
			
		||||
     && layouts.getMainOutputChannelSet() != juce::AudioChannelSet::stereo())
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    // This checks if the input layout matches the output layout
 | 
			
		||||
   #if ! JucePlugin_IsSynth
 | 
			
		||||
    if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet())
 | 
			
		||||
        return false;
 | 
			
		||||
   #endif
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
  #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer,
 | 
			
		||||
                                              juce::MidiBuffer& midiMessages)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (midiMessages);
 | 
			
		||||
 | 
			
		||||
    juce::ScopedNoDenormals noDenormals;
 | 
			
		||||
    auto totalNumInputChannels  = getTotalNumInputChannels();
 | 
			
		||||
    auto totalNumOutputChannels = getTotalNumOutputChannels();
 | 
			
		||||
 | 
			
		||||
    // In case we have more outputs than inputs, this code clears any output
 | 
			
		||||
    // channels that didn't contain input data, (because these aren't
 | 
			
		||||
    // guaranteed to be empty - they may contain garbage).
 | 
			
		||||
    // This is here to avoid people getting screaming feedback
 | 
			
		||||
    // when they first compile a plugin, but obviously you don't need to keep
 | 
			
		||||
    // this code if your algorithm always overwrites all the output channels.
 | 
			
		||||
    for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i)
 | 
			
		||||
        buffer.clear (i, 0, buffer.getNumSamples());
 | 
			
		||||
 | 
			
		||||
    // This is the place where you'd normally do the guts of your plugin's
 | 
			
		||||
    // audio processing...
 | 
			
		||||
    // Make sure to reset the state if your inner loop is processing
 | 
			
		||||
    // the samples and the outer loop is handling the channels.
 | 
			
		||||
    // Alternatively, you can process the samples with the channels
 | 
			
		||||
    // interleaved by keeping the same state.
 | 
			
		||||
    for (int channel = 0; channel < totalNumInputChannels; ++channel)
 | 
			
		||||
    {
 | 
			
		||||
        auto* channelData = buffer.getWritePointer (channel);
 | 
			
		||||
        juce::ignoreUnused (channelData);
 | 
			
		||||
        // ..do something to the data...
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
bool AudioPluginAudioProcessor::hasEditor() const
 | 
			
		||||
{
 | 
			
		||||
    return true; // (change this to false if you choose to not supply an editor)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
juce::AudioProcessorEditor* AudioPluginAudioProcessor::createEditor()
 | 
			
		||||
{
 | 
			
		||||
    return new AudioPluginAudioProcessorEditor (*this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessor::getStateInformation (juce::MemoryBlock& destData)
 | 
			
		||||
{
 | 
			
		||||
    // You should use this method to store your parameters in the memory block.
 | 
			
		||||
    // You could do that either as raw data, or use the XML or ValueTree classes
 | 
			
		||||
    // as intermediaries to make it easy to save and load complex data.
 | 
			
		||||
    juce::ignoreUnused (destData);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
 | 
			
		||||
{
 | 
			
		||||
    // You should use this method to restore your parameters from this memory block,
 | 
			
		||||
    // whose contents will have been created by the getStateInformation() call.
 | 
			
		||||
    juce::ignoreUnused (data, sizeInBytes);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This creates new instances of the plugin..
 | 
			
		||||
juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
 | 
			
		||||
{
 | 
			
		||||
    return new AudioPluginAudioProcessor();
 | 
			
		||||
}
 | 
			
		||||
#include "PluginProcessor.h"
 | 
			
		||||
#include "PluginEditor.h"
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
AudioPluginAudioProcessor::AudioPluginAudioProcessor()
 | 
			
		||||
     : AudioProcessor (BusesProperties()
 | 
			
		||||
                     #if ! JucePlugin_IsMidiEffect
 | 
			
		||||
                      #if ! JucePlugin_IsSynth
 | 
			
		||||
                       .withInput  ("Input",  juce::AudioChannelSet::stereo(), true)
 | 
			
		||||
                      #endif
 | 
			
		||||
                       .withOutput ("Output", juce::AudioChannelSet::stereo(), true)
 | 
			
		||||
                     #endif
 | 
			
		||||
                       )
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AudioPluginAudioProcessor::~AudioPluginAudioProcessor()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
const juce::String AudioPluginAudioProcessor::getName() const
 | 
			
		||||
{
 | 
			
		||||
    return JucePlugin_Name;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::acceptsMidi() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_WantsMidiInput
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::producesMidi() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_ProducesMidiOutput
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::isMidiEffect() const
 | 
			
		||||
{
 | 
			
		||||
   #if JucePlugin_IsMidiEffect
 | 
			
		||||
    return true;
 | 
			
		||||
   #else
 | 
			
		||||
    return false;
 | 
			
		||||
   #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
double AudioPluginAudioProcessor::getTailLengthSeconds() const
 | 
			
		||||
{
 | 
			
		||||
    return 0.0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int AudioPluginAudioProcessor::getNumPrograms()
 | 
			
		||||
{
 | 
			
		||||
    return 1;   // NB: some hosts don't cope very well if you tell them there are 0 programs,
 | 
			
		||||
                // so this should be at least 1, even if you're not really implementing programs.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int AudioPluginAudioProcessor::getCurrentProgram()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::setCurrentProgram (int index)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const juce::String AudioPluginAudioProcessor::getProgramName (int index)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index);
 | 
			
		||||
    return {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::changeProgramName (int index, const juce::String& newName)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (index, newName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock)
 | 
			
		||||
{
 | 
			
		||||
    // Use this method as the place to do any pre-playback
 | 
			
		||||
    // initialisation that you need..
 | 
			
		||||
    juce::ignoreUnused (sampleRate, samplesPerBlock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::releaseResources()
 | 
			
		||||
{
 | 
			
		||||
    // When playback stops, you can use this as an opportunity to free up any
 | 
			
		||||
    // spare memory, etc.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AudioPluginAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const
 | 
			
		||||
{
 | 
			
		||||
  #if JucePlugin_IsMidiEffect
 | 
			
		||||
    juce::ignoreUnused (layouts);
 | 
			
		||||
    return true;
 | 
			
		||||
  #else
 | 
			
		||||
    // This is the place where you check if the layout is supported.
 | 
			
		||||
    // In this template code we only support mono or stereo.
 | 
			
		||||
    // Some plugin hosts, such as certain GarageBand versions, will only
 | 
			
		||||
    // load plugins that support stereo bus layouts.
 | 
			
		||||
    if (layouts.getMainOutputChannelSet() != juce::AudioChannelSet::mono()
 | 
			
		||||
     && layouts.getMainOutputChannelSet() != juce::AudioChannelSet::stereo())
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    // This checks if the input layout matches the output layout
 | 
			
		||||
   #if ! JucePlugin_IsSynth
 | 
			
		||||
    if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet())
 | 
			
		||||
        return false;
 | 
			
		||||
   #endif
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
  #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer,
 | 
			
		||||
                                              juce::MidiBuffer& midiMessages)
 | 
			
		||||
{
 | 
			
		||||
    juce::ignoreUnused (midiMessages);
 | 
			
		||||
 | 
			
		||||
    juce::ScopedNoDenormals noDenormals;
 | 
			
		||||
    auto totalNumInputChannels  = getTotalNumInputChannels();
 | 
			
		||||
    auto totalNumOutputChannels = getTotalNumOutputChannels();
 | 
			
		||||
 | 
			
		||||
    // In case we have more outputs than inputs, this code clears any output
 | 
			
		||||
    // channels that didn't contain input data, (because these aren't
 | 
			
		||||
    // guaranteed to be empty - they may contain garbage).
 | 
			
		||||
    // This is here to avoid people getting screaming feedback
 | 
			
		||||
    // when they first compile a plugin, but obviously you don't need to keep
 | 
			
		||||
    // this code if your algorithm always overwrites all the output channels.
 | 
			
		||||
    for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i)
 | 
			
		||||
        buffer.clear (i, 0, buffer.getNumSamples());
 | 
			
		||||
 | 
			
		||||
    // This is the place where you'd normally do the guts of your plugin's
 | 
			
		||||
    // audio processing...
 | 
			
		||||
    // Make sure to reset the state if your inner loop is processing
 | 
			
		||||
    // the samples and the outer loop is handling the channels.
 | 
			
		||||
    // Alternatively, you can process the samples with the channels
 | 
			
		||||
    // interleaved by keeping the same state.
 | 
			
		||||
    for (int channel = 0; channel < totalNumInputChannels; ++channel)
 | 
			
		||||
    {
 | 
			
		||||
        auto* channelData = buffer.getWritePointer (channel);
 | 
			
		||||
        juce::ignoreUnused (channelData);
 | 
			
		||||
        // ..do something to the data...
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
bool AudioPluginAudioProcessor::hasEditor() const
 | 
			
		||||
{
 | 
			
		||||
    return true; // (change this to false if you choose to not supply an editor)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
juce::AudioProcessorEditor* AudioPluginAudioProcessor::createEditor()
 | 
			
		||||
{
 | 
			
		||||
    return new AudioPluginAudioProcessorEditor (*this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
void AudioPluginAudioProcessor::getStateInformation (juce::MemoryBlock& destData)
 | 
			
		||||
{
 | 
			
		||||
    // You should use this method to store your parameters in the memory block.
 | 
			
		||||
    // You could do that either as raw data, or use the XML or ValueTree classes
 | 
			
		||||
    // as intermediaries to make it easy to save and load complex data.
 | 
			
		||||
    juce::ignoreUnused (destData);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AudioPluginAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
 | 
			
		||||
{
 | 
			
		||||
    // You should use this method to restore your parameters from this memory block,
 | 
			
		||||
    // whose contents will have been created by the getStateInformation() call.
 | 
			
		||||
    juce::ignoreUnused (data, sizeInBytes);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This creates new instances of the plugin..
 | 
			
		||||
juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
 | 
			
		||||
{
 | 
			
		||||
    return new AudioPluginAudioProcessor();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,48 +1,48 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <juce_audio_processors/juce_audio_processors.h>
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
class AudioPluginAudioProcessor  : public juce::AudioProcessor
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    AudioPluginAudioProcessor();
 | 
			
		||||
    ~AudioPluginAudioProcessor() override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void prepareToPlay (double sampleRate, int samplesPerBlock) override;
 | 
			
		||||
    void releaseResources() override;
 | 
			
		||||
 | 
			
		||||
    bool isBusesLayoutSupported (const BusesLayout& layouts) const override;
 | 
			
		||||
 | 
			
		||||
    void processBlock (juce::AudioBuffer<float>&, juce::MidiBuffer&) override;
 | 
			
		||||
    using AudioProcessor::processBlock;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    juce::AudioProcessorEditor* createEditor() override;
 | 
			
		||||
    bool hasEditor() const override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    const juce::String getName() const override;
 | 
			
		||||
 | 
			
		||||
    bool acceptsMidi() const override;
 | 
			
		||||
    bool producesMidi() const override;
 | 
			
		||||
    bool isMidiEffect() const override;
 | 
			
		||||
    double getTailLengthSeconds() const override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    int getNumPrograms() override;
 | 
			
		||||
    int getCurrentProgram() override;
 | 
			
		||||
    void setCurrentProgram (int index) override;
 | 
			
		||||
    const juce::String getProgramName (int index) override;
 | 
			
		||||
    void changeProgramName (int index, const juce::String& newName) override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void getStateInformation (juce::MemoryBlock& destData) override;
 | 
			
		||||
    void setStateInformation (const void* data, int sizeInBytes) override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessor)
 | 
			
		||||
};
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <juce_audio_processors/juce_audio_processors.h>
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
class AudioPluginAudioProcessor  : public juce::AudioProcessor
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    AudioPluginAudioProcessor();
 | 
			
		||||
    ~AudioPluginAudioProcessor() override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void prepareToPlay (double sampleRate, int samplesPerBlock) override;
 | 
			
		||||
    void releaseResources() override;
 | 
			
		||||
 | 
			
		||||
    bool isBusesLayoutSupported (const BusesLayout& layouts) const override;
 | 
			
		||||
 | 
			
		||||
    void processBlock (juce::AudioBuffer<float>&, juce::MidiBuffer&) override;
 | 
			
		||||
    using AudioProcessor::processBlock;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    juce::AudioProcessorEditor* createEditor() override;
 | 
			
		||||
    bool hasEditor() const override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    const juce::String getName() const override;
 | 
			
		||||
 | 
			
		||||
    bool acceptsMidi() const override;
 | 
			
		||||
    bool producesMidi() const override;
 | 
			
		||||
    bool isMidiEffect() const override;
 | 
			
		||||
    double getTailLengthSeconds() const override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    int getNumPrograms() override;
 | 
			
		||||
    int getCurrentProgram() override;
 | 
			
		||||
    void setCurrentProgram (int index) override;
 | 
			
		||||
    const juce::String getProgramName (int index) override;
 | 
			
		||||
    void changeProgramName (int index, const juce::String& newName) override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    void getStateInformation (juce::MemoryBlock& destData) override;
 | 
			
		||||
    void setStateInformation (const void* data, int sizeInBytes) override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessor)
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user