/* ==================================== JUCER_BINARY_RESOURCE ====================================

   This is an auto-generated file: Any edits you make may be overwritten!

*/

#include <cstring>

namespace BinaryData
{

//================== jucer_PIPAudioProcessorTemplate.h ==================
static const unsigned char temp_binary_data_49[] =
"class %%class_name%%  : public juce::AudioProcessor\r\n"
"{\r\n"
"public:\r\n"
"    //==============================================================================\r\n"
"    %%class_name%%()\r\n"
"        : AudioProcessor (BusesProperties().withInput  (\"Input\",  juce::AudioChannelSet::stereo())\r\n"
"                                           .withOutput (\"Output\", juce::AudioChannelSet::stereo()))\r\n"
"    {\r\n"
"    }\r\n"
"\r\n"
"    ~%%class_name%%() override\r\n"
"    {\r\n"
"    }\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    void prepareToPlay (double, int) override\r\n"
"    {\r\n"
"        // Use this method as the place to do any pre-playback\r\n"
"        // initialisation that you need..\r\n"
"    }\r\n"
"\r\n"
"    void releaseResources() override\r\n"
"    {\r\n"
"        // When playback stops, you can use this as an opportunity to free up any\r\n"
"        // spare memory, etc.\r\n"
"    }\r\n"
"\r\n"
"    void processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer&) override\r\n"
"    {\r\n"
"        juce::ScopedNoDenormals noDenormals;\r\n"
"        auto totalNumInputChannels  = getTotalNumInputChannels();\r\n"
"        auto totalNumOutputChannels = getTotalNumOutputChannels();\r\n"
"\r\n"
"        // In case we have more outputs than inputs, this code clears any output\r\n"
"        // channels that didn't contain input data, (because these aren't\r\n"
"        // guaranteed to be empty - they may contain garbage).\r\n"
"        // This is here to avoid people getting screaming feedback\r\n"
"        // when they first compile a plugin, but obviously you don't need to keep\r\n"
"        // this code if your algorithm always overwrites all the output channels.\r\n"
"        for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i)\r\n"
"            buffer.clear (i, 0, buffer.getNumSamples());\r\n"
"\r\n"
"        // This is the place where you'd normally do the guts of your plugin's\r\n"
"        // audio processing...\r\n"
"        // Make sure to reset the state if your inner loop is processing\r\n"
"        // the samples and the outer loop is handling the channels.\r\n"
"        // Alternatively, you can process the samples with the channels\r\n"
"        // interleaved by keeping the same state.\r\n"
"        for (int channel = 0; channel < totalNumInputChannels; ++channel)\r\n"
"        {\r\n"
"            auto* channelData = buffer.getWritePointer (channel);\r\n"
"\r\n"
"            // ..do something to the data...\r\n"
"        }\r\n"
"    }\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    juce::AudioProcessorEditor* createEditor() override          { return nullptr; }\r\n"
"    bool hasEditor() const override                              { return false;   }\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    const juce::String getName() const override                  { return \"%%name%%\"; }\r\n"
"    bool acceptsMidi() const override                            { return false; }\r\n"
"    bool producesMidi() const override                           { return false; }\r\n"
"    double getTailLengthSeconds() const override                 { return 0; }\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    int getNumPrograms() override                                { return 1; }\r\n"
"    int getCurrentProgram() override                             { return 0; }\r\n"
"    void setCurrentProgram (int) override                        {}\r\n"
"    const juce::String getProgramName (int) override             { return {}; }\r\n"
"    void changeProgramName (int, const juce::String&) override   {}\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    void getStateInformation (juce::MemoryBlock& destData) override\r\n"
"    {\r\n"
"        // You should use this method to store your parameters in the memory block.\r\n"
"        // You could do that either as raw data, or use the XML or ValueTree classes\r\n"
"        // as intermediaries to make it easy to save and load complex data.\r\n"
"    }\r\n"
"\r\n"
"    void setStateInformation (const void* data, int sizeInBytes) override\r\n"
"    {\r\n"
"        // You should use this method to restore your parameters from this memory block,\r\n"
"        // whose contents will have been created by the getStateInformation() call.\r\n"
"    }\r\n"
"\r\n"
"    //==============================================================================\r\n"
"    bool isBusesLayoutSupported (const BusesLayout& layouts) const override\r\n"
"    {\r\n"
"        // This is the place where you check if the layout is supported.\r\n"
"        // In this template code we only support mono or stereo.\r\n"
"        if (layouts.getMainOutputChannelSet() != juce::AudioChannelSet::mono()\r\n"
"            && layouts.getMainOutputChannelSet() != juce::AudioChannelSet::stereo())\r\n"
"            return false;\r\n"
"\r\n"
"        // This checks if the input layout matches the output layout\r\n"
"        if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet())\r\n"
"            return false;\r\n"
"\r\n"
"        return true;\r\n"
"    }\r\n"
"\r\n"
"private:\r\n"
"    //==============================================================================\r\n"
"    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n"
"};\r\n";

const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_49;
}
