| 115 | } |
| 116 | |
| 117 | void processLEDs(const float lightTime, const int channels) { |
| 118 | |
| 119 | // monophonic uses red and green LEDs |
| 120 | if (channels == 1) { |
| 121 | |
| 122 | const float redValue1 = -std::min(0.f, outputs[OUT_1_OUTPUT].getVoltage() / 5.f); |
| 123 | const float greenValue1 = +std::max(0.f, outputs[OUT_1_OUTPUT].getVoltage() / 5.f); |
| 124 | lights[OUT_1_MINUS_LIGHT + 0].setSmoothBrightness(redValue1, lightTime); |
| 125 | lights[OUT_1_MINUS_LIGHT + 1].setBrightness(0.f); |
| 126 | lights[OUT_1_MINUS_LIGHT + 2].setBrightness(0.f); |
| 127 | |
| 128 | lights[OUT_1_PLUS_LIGHT + 0].setBrightness(0.f); |
| 129 | lights[OUT_1_PLUS_LIGHT + 1].setSmoothBrightness(greenValue1, lightTime); |
| 130 | lights[OUT_1_PLUS_LIGHT + 2].setBrightness(0.f); |
| 131 | |
| 132 | const float redValue2 = -std::min(0.f, outputs[OUT_2_OUTPUT].getVoltage() / 5.f); |
| 133 | const float greenValue2 = +std::max(0.f, outputs[OUT_2_OUTPUT].getVoltage() / 5.f); |
| 134 | lights[OUT_2_MINUS_LIGHT + 0].setSmoothBrightness(redValue2, lightTime); |
| 135 | lights[OUT_2_MINUS_LIGHT + 1].setBrightness(0.f); |
| 136 | lights[OUT_2_MINUS_LIGHT + 2].setBrightness(0.f); |
| 137 | |
| 138 | lights[OUT_2_PLUS_LIGHT + 0].setBrightness(0.f); |
| 139 | lights[OUT_2_PLUS_LIGHT + 1].setSmoothBrightness(greenValue2, lightTime); |
| 140 | lights[OUT_2_PLUS_LIGHT + 2].setBrightness(0.f); |
| 141 | } |
| 142 | // polyphonic uses blue LEDs, but seperated by signal polarity |
| 143 | else { |
| 144 | float sumNeg1 = 0.f, sumPos1 = 0.f; |
| 145 | float sumNeg2 = 0.f, sumPos2 = 0.f; |
| 146 | for (int c = 0; c < channels; c++) { |
| 147 | sumNeg1 += -std::min(outputs[OUT_1_OUTPUT].getVoltage(c), 0.f); |
| 148 | sumPos1 += +std::max(outputs[OUT_1_OUTPUT].getVoltage(c), 0.f); |
| 149 | |
| 150 | sumNeg2 += -std::min(outputs[OUT_2_OUTPUT].getVoltage(c), 0.f); |
| 151 | sumPos2 += +std::max(outputs[OUT_2_OUTPUT].getVoltage(c), 0.f); |
| 152 | } |
| 153 | lights[OUT_1_MINUS_LIGHT + 0].setBrightness(0.f); |
| 154 | lights[OUT_1_MINUS_LIGHT + 1].setBrightness(0.f); |
| 155 | lights[OUT_1_MINUS_LIGHT + 2].setBrightness(sumNeg1 / channels / 5.f); |
| 156 | |
| 157 | lights[OUT_1_PLUS_LIGHT + 0].setBrightness(0.f); |
| 158 | lights[OUT_1_PLUS_LIGHT + 1].setBrightness(0.f); |
| 159 | lights[OUT_1_PLUS_LIGHT + 2].setBrightness(sumPos1 / channels / 5.f); |
| 160 | |
| 161 | lights[OUT_2_MINUS_LIGHT + 0].setBrightness(0.f); |
| 162 | lights[OUT_2_MINUS_LIGHT + 1].setBrightness(0.f); |
| 163 | lights[OUT_2_MINUS_LIGHT + 2].setBrightness(sumNeg2 / channels / 5.f); |
| 164 | |
| 165 | lights[OUT_2_PLUS_LIGHT + 0].setBrightness(0.f); |
| 166 | lights[OUT_2_PLUS_LIGHT + 1].setBrightness(0.f); |
| 167 | lights[OUT_2_PLUS_LIGHT + 2].setBrightness(sumPos2 / channels / 5.f); |
| 168 | } |
| 169 | } |
| 170 | |
| 171 | json_t* dataToJson() override { |
| 172 | json_t* rootJ = json_object(); |
nothing calls this directly
no outgoing calls
no test coverage detected