| 141 | return _normalize->valueBool(); |
| 142 | } |
| 143 | void ConvolverNode::setNormalize(bool new_n) |
| 144 | { |
| 145 | bool n = normalize(); |
| 146 | if (new_n == n) |
| 147 | return; |
| 148 | |
| 149 | auto clip = _impulseResponseClip->valueBus(); |
| 150 | if (clip) |
| 151 | { |
| 152 | size_t len = clip->length(); |
| 153 | if (n && _scale != 1.f) |
| 154 | { |
| 155 | // undo previous normalization |
| 156 | float s = 1.f / _scale; |
| 157 | for (int i = 0; i < clip->numberOfChannels(); ++i) |
| 158 | { |
| 159 | float * data = clip->channel(i)->mutableData(); |
| 160 | for (int j = 0; j < len; ++j) |
| 161 | data[j] *= s; |
| 162 | } |
| 163 | } |
| 164 | if (!n) |
| 165 | { |
| 166 | // wasn't previously normalized, so normalize |
| 167 | _scale = calculateNormalizationScale(clip.get()); |
| 168 | for (int i = 0; i < clip->numberOfChannels(); ++i) |
| 169 | { |
| 170 | float * data = clip->channel(i)->mutableData(); |
| 171 | for (int j = 0; j < len; ++j) |
| 172 | data[j] *= _scale; |
| 173 | } |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | _normalize->setBool(new_n); |
| 178 | } |
| 179 | |
| 180 | void ConvolverNode::setImpulse(std::shared_ptr<AudioBus> bus) |
| 181 | { |
nothing calls this directly
no test coverage detected