| 123 | } |
| 124 | |
| 125 | void processTerminalOutput(const ProcessArgs&) override |
| 126 | { |
| 127 | if (pcontext->variant != kCardinalVariantMain && pcontext->variant != kCardinalVariantMini) |
| 128 | return; |
| 129 | if (pcontext->bypassed) |
| 130 | return; |
| 131 | |
| 132 | const uint8_t ioOffset = pcontext->variant == kCardinalVariantMini ? 2 : 8; |
| 133 | const uint32_t bufferSize = pcontext->bufferSize; |
| 134 | |
| 135 | // only incremented on output |
| 136 | const uint32_t k = dataFrame++; |
| 137 | DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,); |
| 138 | |
| 139 | if (bypassed) |
| 140 | return; |
| 141 | |
| 142 | float** const dataOuts = pcontext->dataOuts; |
| 143 | |
| 144 | if (dataOuts[ioOffset] == nullptr) |
| 145 | return; |
| 146 | |
| 147 | float inputOffset; |
| 148 | inputOffset = params[BIPOLAR_INPUTS_1_5].getValue() > 0.1f ? 5.0f : 0.0f; |
| 149 | |
| 150 | for (int i=0; i<5; ++i) |
| 151 | { |
| 152 | if (!std::isfinite(dataOuts[i+ioOffset][k])) |
| 153 | __builtin_unreachable(); |
| 154 | dataOuts[i+ioOffset][k] += inputs[i].getVoltage() + inputOffset; |
| 155 | } |
| 156 | |
| 157 | if (pcontext->variant == kCardinalVariantMain) |
| 158 | { |
| 159 | inputOffset = params[BIPOLAR_INPUTS_6_10].getValue() > 0.1f ? 5.0f : 0.0f; |
| 160 | |
| 161 | for (int i=5; i<10; ++i) |
| 162 | { |
| 163 | if (!std::isfinite(dataOuts[i+ioOffset][k])) |
| 164 | __builtin_unreachable(); |
| 165 | dataOuts[i+ioOffset][k] += inputs[i].getVoltage() + inputOffset; |
| 166 | } |
| 167 | } |
| 168 | } |
| 169 | }; |
| 170 | |
| 171 | #ifndef HEADLESS |
no test coverage detected