FahlGrahn Audio v1.0.0
Loading...
Searching...
No Matches
DrumsPluginProcessor.h
1#pragma once
2
3#include <JuceHeader.h>
4#include <juce_audio_processors/juce_audio_processors.h>
5#include "DrumSampler.h"
6
7
8
9
10//==============================================================================
11class DrumsAudioProcessor final : public juce::AudioProcessor
12{
13 public:
14 //==============================================================================
16 ~DrumsAudioProcessor() override;
17
18 //==============================================================================
19 void prepareToPlay(double sampleRate, int samplesPerBlock) override;
20 void releaseResources() override;
21
22 bool isBusesLayoutSupported(const BusesLayout &layouts) const override;
23
24 void processBlock(juce::AudioBuffer<float> &, juce::MidiBuffer &) override;
25 using AudioProcessor::processBlock;
26
27 //==============================================================================
28 juce::AudioProcessorEditor *createEditor() override;
29 bool hasEditor() const override;
30
31 //==============================================================================
32 const juce::String getName() const override;
33
34 bool acceptsMidi() const override;
35 bool producesMidi() const override;
36 bool isMidiEffect() const override;
37 double getTailLengthSeconds() const override;
38
39 //==============================================================================
40 int getNumPrograms() override;
41 int getCurrentProgram() override;
42 void setCurrentProgram(int index) override;
43 const juce::String getProgramName(int index) override;
44 void changeProgramName(int index, const juce::String &newName) override;
45
46 //==============================================================================
47 void getStateInformation(juce::MemoryBlock &destData) override;
48 void setStateInformation(const void *data, int sizeInBytes) override;
49
50 void playPreviewSample(int drumType, int index);
51 void loadDrumSample(int drumType, int index);
52 void clearSample();
53 int mDrumType{-1};
54 int mDrumIndex{-1};
55 juce::AudioProcessorValueTreeState apvts;
56
57 private:
58 //==============================================================================
59
60 juce::AudioProcessorValueTreeState::ParameterLayout createParameters();
61 juce::AudioParameterBool *mFlipPhase;
62 juce::WavAudioFormat wavFormat;
63 DrumSampler loadedDrumSamples;
64 std::unique_ptr<juce::AudioFormatReaderSource> audioFormatReaderSource;
65 std::unique_ptr<juce::ResamplingAudioSource> previewResampler;
66 juce::SpinLock previewLock;
67
68
69 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DrumsAudioProcessor)
70};
Definition DrumSampler.h:4
Definition DrumsPluginProcessor.h:12