| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #include "PluginProcessor.h"
- #include "PluginEditor.h"
- //==============================================================================
- CMLSProjectAudioProcessor::CMLSProjectAudioProcessor()
- #ifndef JucePlugin_PreferredChannelConfigurations
- : AudioProcessor(BusesProperties()
- #if ! JucePlugin_IsMidiEffect
- #if ! JucePlugin_IsSynth
- .withInput("Input", juce::AudioChannelSet::stereo(), true)
- #endif
- .withOutput("Output", juce::AudioChannelSet::stereo(), true)
- #endif
- )
- #endif
- {
- // chaining the effects
- this->processorChain.reset();
- }
- CMLSProjectAudioProcessor::~CMLSProjectAudioProcessor() {}
- //==============================================================================
- const juce::String CMLSProjectAudioProcessor::getName() const
- {
- return JucePlugin_Name;
- }
- bool CMLSProjectAudioProcessor::acceptsMidi() const
- {
- #if JucePlugin_WantsMidiInput
- return true;
- #else
- return false;
- #endif
- }
- bool CMLSProjectAudioProcessor::producesMidi() const
- {
- #if JucePlugin_ProducesMidiOutput
- return true;
- #else
- return false;
- #endif
- }
- bool CMLSProjectAudioProcessor::isMidiEffect() const
- {
- #if JucePlugin_IsMidiEffect
- return true;
- #else
- return false;
- #endif
- }
- double CMLSProjectAudioProcessor::getTailLengthSeconds() const
- {
- return 0.0;
- }
- int CMLSProjectAudioProcessor::getNumPrograms() { return 1; }
- int CMLSProjectAudioProcessor::getCurrentProgram() { return 0; }
- void CMLSProjectAudioProcessor::setCurrentProgram(int index) {}
- const juce::String CMLSProjectAudioProcessor::getProgramName(int index) { return {}; }
- void CMLSProjectAudioProcessor::changeProgramName(int index, const juce::String& newName) {}
- //==============================================================================
- void CMLSProjectAudioProcessor::prepareToPlay(double sampleRate, int samplesPerBlock)
- {
- // the place to do any pre-playback & initialisation
- juce::dsp::ProcessSpec spec;
- spec.sampleRate = sampleRate;
- spec.maximumBlockSize = samplesPerBlock;
- spec.numChannels = getTotalNumOutputChannels();
- this->processorChain.prepare(spec);
- }
- void CMLSProjectAudioProcessor::releaseResources() {}
- #ifndef JucePlugin_PreferredChannelConfigurations
- bool CMLSProjectAudioProcessor::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.
- 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
- }
- #endif
- void CMLSProjectAudioProcessor::processBlock(juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
- {
- juce::ScopedNoDenormals noDenormals;
- auto totalNumInputChannels = getTotalNumInputChannels();
- auto totalNumOutputChannels = getTotalNumOutputChannels();
- for (int i = totalNumInputChannels; i < totalNumOutputChannels; ++i)
- buffer.clear(i, 0, buffer.getNumSamples()); // clear any output channels that don't have input data
- const auto numChannels = juce::jmax(totalNumInputChannels, totalNumOutputChannels);
- auto audioBlock = juce::dsp::AudioBlock<float>(buffer).getSubsetChannelBlock(0, (int)numChannels);
- auto context = juce::dsp::ProcessContextReplacing<float>(audioBlock);
- this->processorChain.process(context);
- }
- //==============================================================================
- bool CMLSProjectAudioProcessor::hasEditor() const
- {
- return true;
- }
- juce::AudioProcessorEditor* CMLSProjectAudioProcessor::createEditor()
- {
- return new CMLSProjectAudioProcessorEditor(*this);
- }
- //==============================================================================
- void CMLSProjectAudioProcessor::getStateInformation(juce::MemoryBlock& destData)
- {
- }
- void CMLSProjectAudioProcessor::setStateInformation(const void* data, int sizeInBytes)
- {
- }
- //==============================================================================
- void CMLSProjectAudioProcessor::setEqLowGain(float value)
- {
- auto& instance = this->processorChain.template get<0>();
- instance.setEqLowGain(value);
- }
- void CMLSProjectAudioProcessor::setEqHighGain(float value)
- {
- auto& instance = this->processorChain.template get<0>();
- instance.setEqHighGain(value);
- }
- void CMLSProjectAudioProcessor::setDistortionDrive(float value)
- {
- auto& instance = this->processorChain.template get<1>();
- instance.setDrive(value);
- }
- void CMLSProjectAudioProcessor::setDistortionMix(float value)
- {
- auto& instance = this->processorChain.template get<1>();
- instance.setMix(value);
- }
- //==============================================================================
- // This creates new instances of the plugin.
- juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
- {
- return new CMLSProjectAudioProcessor();
- }
|