AmpOSCReceiver.h (5455B)
1 #include "../JuceLibraryCode/JuceHeader.h" 2 3 #pragma once 4 5 class AmpOSCReceiver : 6 private OSCReceiver, 7 private OSCReceiver::Listener <OSCReceiver::MessageLoopCallback> 8 { 9 public: 10 AmpOSCReceiver() 11 { 12 changePort (defaultPort); 13 14 addListener (this); 15 } 16 17 Value& getGainValue() 18 { 19 return gainValue; 20 } 21 22 Value& getMasterValue() 23 { 24 return masterValue; 25 } 26 27 Value& getBassValue() 28 { 29 return bassValue; 30 } 31 32 Value& getMidValue() 33 { 34 return midValue; 35 } 36 37 Value& getTrebleValue() 38 { 39 return trebleValue; 40 } 41 42 Value& getPresenceValue() 43 { 44 return presenceValue; 45 } 46 47 Value& getModelValue() 48 { 49 return modelValue; 50 } 51 52 Value& getIrValue() 53 { 54 return irValue; 55 } 56 57 Value& getDelayValue() 58 { 59 return delayValue; 60 } 61 62 Value& getReverbValue() 63 { 64 return reverbValue; 65 } 66 67 void changePort (int port) 68 { 69 if (! connect (port)) 70 { 71 connected = false; 72 DBG ("Connection Failed"); 73 } 74 else 75 { 76 connected = true; 77 DBG("Connection Succeeded"); 78 } 79 } 80 81 void updateAmpName (String name) 82 { 83 ampName = std::move(name); 84 buildAddressPatterns(); 85 } 86 87 bool isConnected() 88 { 89 return connected; 90 } 91 92 private: 93 void buildAddressPatterns() 94 { 95 gainAddressPattern = "/parameter/" + ampName + "/Gain"; 96 masterAddressPattern = "/parameter/" + ampName + "/Master"; 97 bassAddressPattern = "/parameter/" + ampName + "/Bass"; 98 midAddressPattern = "/parameter/" + ampName + "/Mid"; 99 trebleAddressPattern = "/parameter/" + ampName + "/Treble"; 100 presenceAddressPattern = "/parameter/" + ampName + "/Presence"; 101 modelAddressPattern = "/parameter/" + ampName + "/Model"; 102 irAddressPattern = "/parameter/" + ampName + "/Ir"; 103 reverbAddressPattern = "/parameter/" + ampName + "/Reverb"; 104 delayAddressPattern = "/parameter/" + ampName + "/Delay"; 105 } 106 107 void oscMessageReceived(const OSCMessage& message) override 108 { 109 DBG("Message Received: "); 110 111 if (message.size() == 1 && message[0].isFloat32()) 112 { 113 DBG(" value " + String(message[0].getFloat32()) + " to AP " + message.getAddressPattern().toString()); 114 115 if (message.getAddressPattern().matches(gainAddressPattern)) 116 { 117 gainValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 118 } 119 else if (message.getAddressPattern().matches(masterAddressPattern)) 120 { 121 masterValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 122 } 123 124 if (message.getAddressPattern().matches(bassAddressPattern)) 125 { 126 bassValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 127 } 128 else if (message.getAddressPattern().matches(midAddressPattern)) 129 { 130 midValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 131 } 132 133 if (message.getAddressPattern().matches(trebleAddressPattern)) 134 { 135 trebleValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 136 } 137 else if (message.getAddressPattern().matches(presenceAddressPattern)) 138 { 139 presenceValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 140 } 141 else if (message.getAddressPattern().matches(modelAddressPattern)) 142 { 143 modelValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 144 } 145 else if (message.getAddressPattern().matches(irAddressPattern)) 146 { 147 irValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 148 } 149 else if (message.getAddressPattern().matches(reverbAddressPattern)) 150 { 151 reverbValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 152 } 153 else if (message.getAddressPattern().matches(delayAddressPattern)) 154 { 155 delayValue.setValue(jlimit(0.0f, 1.0f, message[0].getFloat32())); 156 } 157 } 158 } 159 160 int defaultPort {25024}; 161 162 String ampName {"NeuralPi"}; 163 String gainAddressPattern {"/parameter/elk_juce_example/Gain"}; 164 String masterAddressPattern {"/parameter/elk_juce_example/Master"}; 165 String bassAddressPattern {"/parameter/elk_juce_example/Bass"}; 166 String midAddressPattern {"/parameter/elk_juce_example/Mid"}; 167 String trebleAddressPattern {"/parameter/elk_juce_example/Treble"}; 168 String presenceAddressPattern {"/parameter/elk_juce_example/Presence"}; 169 String modelAddressPattern {"/parameter/elk_juce_example/Model"}; 170 String irAddressPattern {"/parameter/elk_juce_example/Ir"}; 171 String delayAddressPattern {"/parameter/elk_juce_example/Delay"}; 172 String reverbAddressPattern {"/parameter/elk_juce_example/Reverb"}; 173 174 Value gainValue {0.5f}; 175 Value masterValue {0.5f}; 176 Value bassValue {0.5f}; 177 Value midValue {0.5f}; 178 Value trebleValue {0.5f}; 179 Value presenceValue {0.5f}; 180 181 Value modelValue {0.0f}; 182 Value irValue {0.0f}; 183 184 Value delayValue {0.0f}; 185 Value reverbValue {0.0f}; 186 187 bool connected = false; 188 189 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AmpOSCReceiver) 190 };