Coupled Strings

Given the positive results obtained by adjusting the overallGain, pedalPresenceFactor, and BrightnessAdjustment parameters, I decided to investigate the remaining two slider controls: detuningFactor and stiffnessFactor. These parameters affect the coupled strings algorithm. They were present as user adjustable controls in the STK implementation, but the conversion from normalized value to actual value used a different value range than that of the SynthBuilder patch. After fixing these values, I started getting unstable filter warnings from the allpass filters. Further inspection revealed that the allpass coefficient was still being set for high notes at and above E7, when the coupled strings are no longer used. I resolved this by adding a conditional block, but in doing so I also noticed that the macro FIRST_HIGH_NOTE was defined as 88. However, E7 is MIDI note 100. It is likely there was confusion with the definition, LAST_KEYNUM_WITH_DAMPER which is 88. I also noticed that the tuning allpass filters are currently missing. At this point, sustained notes behaved satisfactorily, but the noteOff messages didn't stop the notes from playing. The likely culprit was the loop gain filter. Indeed, examination of the coupled strings logic revealed that the loop gain was multiplied with the delay output rather than the incoming excitation. With this change, the notes decayed, but much too quickly. I eventually noticed that the coupled strings noteOn function was never being called, so the loop gain envelope was never reset.

Sebastian Laguerre 2018-12-08