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