commit aa3f53d60cc50c97874196c40078fd44583a81c3
parent 585810a7c6a29e0cce2570e1d1d3b5eee23e3f63
Author: Keith <smartguitarml@gmail.com>
Date: Thu, 6 Oct 2022 20:39:39 -0500
Updates
Diffstat:
3 files changed, 54 insertions(+), 15 deletions(-)
diff --git a/src/PluginProcessor.cpp b/src/PluginProcessor.cpp
@@ -171,10 +171,10 @@ void ProteusAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffer
// Apply ramped changes for gain smoothing
if (driveValue == previousDriveValue)
{
- buffer.applyGain(driveValue*10.0);
+ buffer.applyGain(driveValue*2.5);
}
else {
- buffer.applyGainRamp(0, (int) buffer.getNumSamples(), previousDriveValue * 10.0, driveValue * 10.0);
+ buffer.applyGainRamp(0, (int) buffer.getNumSamples(), previousDriveValue * 2.5, driveValue * 2.5);
previousDriveValue = driveValue;
}
auto block44k = resampler.processIn(block);
@@ -190,7 +190,7 @@ void ProteusAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffer
}
resampler.processOut(block44k, block);
} else {
- buffer.applyGain(5.0); // Apply default boost to help sound
+ buffer.applyGain(1.5); // Apply default boost to help sound
// resample to target sample rate
auto block44k = resampler.processIn(block);
@@ -213,10 +213,10 @@ void ProteusAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffer
// Apply ramped changes for gain smoothing
if (masterValue == previousMasterValue)
{
- buffer.applyGain(masterValue);
+ buffer.applyGain(masterValue*1.2);
}
else {
- buffer.applyGainRamp(0, (int) buffer.getNumSamples(), previousMasterValue, masterValue);
+ buffer.applyGainRamp(0, (int) buffer.getNumSamples(), previousMasterValue * 1.2, masterValue * 1.2);
previousMasterValue = masterValue;
}
}
@@ -285,6 +285,7 @@ void ProteusAudioProcessor::loadConfig(File configFile)
LSTM.reset();
LSTM2.reset();
+
LSTM.load_json(char_filename);
LSTM2.load_json(char_filename);
diff --git a/src/RTNeuralLSTM.cpp b/src/RTNeuralLSTM.cpp
@@ -52,23 +52,39 @@ void RT_LSTM::load_json(const char* filename)
{
// Read in the JSON file
std::ifstream i2(filename);
- nlohmann::json weights_json;
- i2 >> weights_json;
+ nlohmann::json weights_json;
+ i2 >> weights_json;
+
+ // Check that format is correct
+ /*
+ int hidden_size_temp = 0;
+ std::string network;
+ try {
+ hidden_size_temp = weights_json["/model_data/hidden_size"_json_pointer];
+ network = weights_json["/model_data/unit_type"_json_pointer];
+ throw(hidden_size_temp);
+ }
+ catch (int hidden_size_temp) {
+ return;
+ }
+ */
+ //if (hidden_size_temp == 40 && network == "LSTM") {
// Get the input size of the JSON file
- int input_size_json = weights_json["/model_data/input_size"_json_pointer];
- input_size = input_size_json;
+ int input_size_json = weights_json["/model_data/input_size"_json_pointer];
+ input_size = input_size_json;
// Load the appropriate model
if (input_size == 1) {
- set_weights(&model, filename);
+ set_weights(&model, filename);
}
else if (input_size == 2) {
- set_weights(&model_cond1, filename);
- }
+ set_weights(&model_cond1, filename);
+ }
else if (input_size == 3) {
- set_weights(&model_cond2, filename);
- }
+ set_weights(&model_cond2, filename);
+ }
+ //}
}
@@ -83,17 +99,36 @@ void RT_LSTM::reset()
void RT_LSTM::process(const float* inData, float* outData, int numSamples)
{
+
for (int i = 0; i < numSamples; ++i)
outData[i] = model.forward(inData + i) + inData[i];
}
void RT_LSTM::process(const float* inData, float param, float* outData, int numSamples)
{
+ // Check for parameter changes for smoothing calculations
+ if (param != previousParam1) {
+ steppedValue1 = (param - previousParam1) / numSamples;
+ changedParam1 = true;
+ }
+ else {
+ changedParam1 = false;
+ }
+
for (int i = 0; i < numSamples; ++i) {
inArray1[0] = inData[i];
- inArray1[1] = param;
+
+ // Perform ramped value calculations to smooth out sound
+ if (changedParam1 == true) {
+ inArray1[1] = previousParam1 + (i + 1) * steppedValue1;
+ }
+ else {
+ inArray1[1] = param;
+ }
+
outData[i] = model_cond1.forward(inArray1) + inData[i];
}
+ previousParam1 = param;
}
void RT_LSTM::process(const float* inData, float param1, float param2, float* outData, int numSamples)
diff --git a/src/RTNeuralLSTM.h b/src/RTNeuralLSTM.h
@@ -18,6 +18,9 @@ public:
void process(const float* inData, float param1, float param2, float* outData, int numSamples);
int input_size = 1;
+ float previousParam1 = 0.0;
+ float steppedValue1 = 0.0;
+ bool changedParam1 = false;
private:
RTNeural::ModelT<float, 1, 1,