ConvolutionStack.h (1415B)
1 /* 2 ============================================================================== 3 4 ConvolutionStack.h 5 Created: 8 Jan 2019 5:21:49pm 6 Author: Damskägg Eero-Pekka 7 8 ============================================================================== 9 */ 10 11 #pragma once 12 13 #include "../JuceLibraryCode/JuceHeader.h" 14 #include "ConvolutionLayer.h" 15 16 class ConvolutionStack 17 { 18 public: 19 ConvolutionStack(int numChannels, int filterWidth, std::vector<int> dilations, 20 std::string activation, bool residual = true); 21 void process(float *data, float* skipData, int numSamples); 22 void prepareToPlay(int newNumSamples); 23 size_t getNumLayers() { return dilations.size(); } 24 void setWeight(std::vector<float> W, int layerIdx, std::string name); 25 void setParams(int newNumChannels, int newFilterWidth, std::vector<int> newDilations, 26 std::string newActivation, bool newResidual); 27 28 private: 29 std::vector<ConvolutionLayer> layers; 30 std::vector<int> dilations; 31 bool residual; 32 int numChannels; 33 int filterWidth; 34 std::string activation; 35 int samplesPerBlock = 0; 36 AudioBuffer<float> residualData; 37 int idx(int ch, int i, int numSamples); 38 void copyResidual(float *data, int numSamples); 39 void addResidual(float *data, int numSamples); 40 float* getSkipPointer(float *skipData, int layerIdx, int numSamples); 41 void initLayers(); 42 };