commit 58a2a7754479ee7f8094c28189ce4d975ab2965d
parent f1393acd2b9ad9d34a1d74ee4aadeafa5c1ea2ef
Author: keith <kbloemer89@gmail.com>
Date: Sun, 11 Jul 2021 20:46:04 -0500
Added toggle buttons for ir and model
Diffstat:
5 files changed, 41 insertions(+), 28 deletions(-)
diff --git a/Source/CabSim.h b/Source/CabSim.h
@@ -9,34 +9,19 @@
#pragma once
-
//==============================================================================
-//template <typename Type>
class CabSim
{
public:
//==============================================================================
CabSim()
{
- auto dir = juce::File::getCurrentWorkingDirectory();
- //auto dir = juce::File("C:\\Users\\rache\\Desktop\\dev\\NeuralPi\\resources");
- int numTries = 0;
-
- while (! dir.getChildFile ("resources").exists() && numTries++ < 15)
- dir = dir.getParentDirectory();
- auto& convolution = processorChain.template get<convolutionIndex>();
- //convolution.loadImpulseResponse(dir.getChildFile("cassette_recorder.wav"),
- convolution.loadImpulseResponse(dir.getChildFile("resources").getChildFile("guitar_amp.wav"),
- juce::dsp::Convolution::Stereo::yes,
- juce::dsp::Convolution::Trim::no,
- 1024);
}
//==============================================================================
void prepare (const juce::dsp::ProcessSpec& spec)
{
- //juce::ignoreUnused (spec);
processorChain.prepare(spec);
}
@@ -63,7 +48,6 @@ public:
}
private:
- //==============================================================================
enum
{
convolutionIndex
diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp
@@ -96,6 +96,17 @@ NeuralPiAudioProcessorEditor::NeuralPiAudioProcessorEditor (NeuralPiAudioProcess
loadIR.setColour(juce::Label::textColourId, juce::Colours::black);
loadIR.addListener(this);
+ // Toggle IR
+ addAndMakeVisible(irButton);
+ irButton.setToggleState(true, juce::NotificationType::dontSendNotification);
+ irButton.onClick = [this] { updateToggleState(&irButton, "IR"); };
+
+ // Toggle LSTM
+ addAndMakeVisible(lstmButton);
+ lstmButton.setToggleState(true, juce::NotificationType::dontSendNotification);
+ lstmButton.onClick = [this] { updateToggleState(&lstmButton, "LSTM"); };
+
+
//gainSliderAttach = std::make_unique<AudioProcessorValueTreeState::SliderAttachment>(processor.treeState, GAIN_ID, ampGainKnob);
addAndMakeVisible(ampGainKnob);
//ampGainKnob.setLookAndFeel(&SilverKnobLAF);
@@ -430,12 +441,14 @@ void NeuralPiAudioProcessorEditor::resized()
{
// This is generally where you'll want to lay out the positions of any
// subcomponents in your editor..
- modelSelect.setBounds(19, 10, 234, 25);
+ modelSelect.setBounds(11, 10, 234, 25);
loadButton.setBounds(19, 74, 100, 25);
modelKnob.setBounds(140, 40, 75, 95);
- irSelect.setBounds(19, 42, 234, 25);
+ irSelect.setBounds(11, 42, 234, 25);
loadIR.setBounds(125, 74, 100, 25);
+ irButton.setBounds(248, 42, 257, 25);
+ lstmButton.setBounds(248, 10, 257, 25);
// Amp Widgets
ampGainKnob.setBounds(15, 120, 75, 95);
@@ -491,6 +504,14 @@ void NeuralPiAudioProcessorEditor::irSelectChanged()
//modelKnob.setValue(processor.current_model_index);
}
+void NeuralPiAudioProcessorEditor::updateToggleState(juce::Button* button, juce::String name)
+{
+ if (name == "IR")
+ processor.ir_state = button->getToggleState();
+ else
+ processor.lstm_state = button->getToggleState();
+}
+
void NeuralPiAudioProcessorEditor::loadButtonClicked()
{
FileChooser chooser("Select one or more .json tone files to import",
diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h
@@ -93,10 +93,14 @@ private:
TextButton loadButton;
TextButton loadIR;
+ ToggleButton irButton;
+ ToggleButton lstmButton;
+
juce::String fname;
virtual void buttonClicked(Button* button) override;
void modelSelectChanged();
void loadButtonClicked();
+ void updateToggleState(juce::Button* button, juce::String name);
void irSelectChanged();
void loadIRClicked();
virtual void sliderValueChanged(Slider* slider) override;
diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp
@@ -30,18 +30,18 @@ NeuralPiAudioProcessor::NeuralPiAudioProcessor()
setupDataDirectories();
installTones();
resetDirectory(userAppDataDirectory_tones);
+ // Sort jsonFiles alphabetically
+ std::sort(jsonFiles.begin(), jsonFiles.end());
if (jsonFiles.size() > 0) {
loadConfig(jsonFiles[current_model_index]);
}
- // Sort jsonFiles alphabetically
- std::sort(jsonFiles.begin(), jsonFiles.end());
-
+ resetDirectoryIR(userAppDataDirectory_irs);
+ // Sort irFiles alphabetically
+ std::sort(irFiles.begin(), irFiles.end());
if (irFiles.size() > 0) {
loadIR(irFiles[current_ir_index]);
}
- // Sort irFiles alphabetically
- std::sort(irFiles.begin(), irFiles.end());
// initialize parameters:
addParameter(gainParam = new AudioParameterFloat(GAIN_ID, GAIN_NAME, NormalisableRange<float>(0.0f, 1.0f, 0.01f), 0.5f));
@@ -194,7 +194,7 @@ void NeuralPiAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffe
eq4band.process(buffer.getReadPointer(0), buffer.getWritePointer(0), midiMessages, numSamples, numInputChannels, sampleRate);
// Apply LSTM model
- if (model_loaded == 1) {
+ if (model_loaded == 1 && lstm_state == true) {
if (current_model_index != model_index) {
loadConfig(jsonFiles[model_index]);
current_model_index = model_index;
@@ -203,9 +203,11 @@ void NeuralPiAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffe
}
// Process IR
- auto block = dsp::AudioBlock<float>(buffer).getSingleChannelBlock(0);
- auto context = juce::dsp::ProcessContextReplacing<float>(block);
- cabSimIR.process(context);
+ if (ir_state == true) {
+ auto block = dsp::AudioBlock<float>(buffer).getSingleChannelBlock(0);
+ auto context = juce::dsp::ProcessContextReplacing<float>(block);
+ cabSimIR.process(context);
+ }
// Master Volume
buffer.applyGain(master);
@@ -315,6 +317,7 @@ void NeuralPiAudioProcessor::resetDirectoryIR(const File& file)
file.findChildFiles(results, juce::File::findFiles, false, "*.wav");
for (int i = results.size(); --i >= 0;)
irFiles.push_back(File(results.getReference(i).getFullPathName()));
+
}
}
diff --git a/Source/PluginProcessor.h b/Source/PluginProcessor.h
@@ -76,7 +76,6 @@ public:
void getStateInformation (MemoryBlock& destData) override;
void setStateInformation (const void* data, int sizeInBytes) override;
- bool compareFunction(juce::File a, juce::File b);
int getModelIndex(float model_param);
void loadConfig(File configFile);
void loadIR(File irFile);
@@ -110,12 +109,14 @@ public:
int current_model_index = 0;
float num_models = 0.0;
int model_index = 0; // Used in processBlock when converting slider param to model index
+ bool lstm_state = true;
juce::String loaded_ir_name;
float num_irs = 0.0;
int ir_loaded = 0;
int custom_ir = 0; // 0 = custom tone loaded, 1 = default channel tone
File loaded_ir;
+ bool ir_state = true;
int current_ir_index = 0;