SmartGuitarAmp

Guitar plugin made with JUCE that uses neural networks to emulate a tube amplifier
Log | Files | Refs | Submodules | README

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 };