/* ============================================================================== This file was auto-generated! It contains the basic framework code for a JUCE plugin processor. ============================================================================== */ #pragma once #include "../JuceLibraryCode/JuceHeader.h" #include "PS_Source/PaulStretchControl.h" //============================================================================== /** */ class PaulstretchpluginAudioProcessor : public AudioProcessor { public: //============================================================================== PaulstretchpluginAudioProcessor(); ~PaulstretchpluginAudioProcessor(); //============================================================================== void prepareToPlay (double sampleRate, int samplesPerBlock) override; void releaseResources() override; #ifndef JucePlugin_PreferredChannelConfigurations bool isBusesLayoutSupported (const BusesLayout& layouts) const override; #endif void processBlock (AudioSampleBuffer&, MidiBuffer&) override; //============================================================================== AudioProcessorEditor* createEditor() override; bool hasEditor() const override; //============================================================================== const 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 String getProgramName (int index) override; void changeProgramName (int index, const String& newName) override; //============================================================================== void getStateInformation (MemoryBlock& destData) override; void setStateInformation (const void* data, int sizeInBytes) override; AudioParameterFloat* getFloatParameter(int index) { return dynamic_cast(getParameters()[index]); } void setRecordingEnabled(bool b); bool isRecordingEnabled() { return m_is_recording; } double getRecordingPositionPercent(); String setAudioFile(File f); File getAudioFile() { return m_current_file; } std::unique_ptr m_afm; std::unique_ptr m_control; private: bool m_ready_to_play = false; AudioBuffer m_recbuffer; double m_max_reclen = 5; bool m_is_recording = false; int m_rec_pos = 0; void finishRecording(int lenrecorded); bool m_using_memory_buffer = false; int m_cur_num_out_chans = 2; std::mutex m_mutex; File m_current_file; double m_phase = 0.0; //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PaulstretchpluginAudioProcessor) };