SmartGuitarAmp

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

WaveNet.h (1643B)


      1 /*
      2   ==============================================================================
      3 
      4     WaveNet.h
      5     Created: 14 Jan 2019 5:19:01pm
      6     Author:  Damskägg Eero-Pekka
      7 
      8   ==============================================================================
      9 */
     10 
     11 #pragma once
     12 
     13 #include <string>
     14 #include "../JuceLibraryCode/JuceHeader.h"
     15 #include "Activations.h"
     16 #include "ConvolutionStack.h"
     17 
     18 class WaveNet
     19 {
     20 public:
     21     WaveNet(int inputChannels, int outputChannels, int convolutionChannels,
     22             int filterWidth, std::string activation, std::vector<int> dilations);
     23     void prepareToPlay (int newSamplesPerBlock);
     24     void process(const float **inputData, float **outputData, int numSamples);
     25     void setWeight(std::vector<float> W, int layerIdx, std::string name);
     26     void setParams(int newInputChannels, int newOutputChannels, int newConvChannels,
     27                    int newFilterWidth, std::string newActivation,
     28                    std::vector<int> newDilations, float levelAdjust_in);
     29     float levelAdjust = 0.0;
     30 
     31 private:
     32     ConvolutionStack convStack;
     33     ConvolutionLayer inputLayer;
     34     ConvolutionLayer outputLayer;
     35     int inputChannels;
     36     int outputChannels;
     37     int filterWidth;
     38     int skipChannels;
     39     int convolutionChannels;
     40     int memoryChannels;
     41     std::string activation;
     42     std::vector<int> dilations;
     43     int samplesPerBlock = 0;
     44     AudioBuffer<float> convData;
     45     AudioBuffer<float> skipData;
     46     
     47     int idx(int ch, int i, int numSamples);
     48     void readDilations(var config);
     49     void copyInputData(const float **inputData, int numSamples);
     50     void copyOutputData(float **outputData, int numSamples);
     51 };