MCPcopy Create free account
hub / github.com/VCVRack/Befaco / processLEDs

Method processLEDs

src/AxBC.cpp:117–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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();

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected