Sarah Fox writes: >This isn't nearly as complicated as it sounds. No, it's much more complicated. I know because I have done it in TuneLab. If you look closely at the amplitude variations that occur as a note decays, you will see that even if only one string is sounding, there is still a beat-like variation due to the precession of the string from up and down motion to its ultimate elliptical orbit. Any falseness in the string makes matters even worse. When I implemented this function in TuneLab, I used an approach that does not depend at all on detecting when an amplitude crosses a threshold. Instead, I defined two sampling periods, based roughly on the expected sustain time (which I know based on the selected note). The first sampling period covers a fairly loud portion of the decay. A second sampling period immediately follows, and it is twice as long as the first. In each of these two sampling periods, I form an integral of the instantaneous amplitude (based on peak detection) over time. Then, modeling the decay as exponential, there is a straightforward computation to determine the time-constant of the decay as a function of those two integrals. Because this method is based on integrals and not on threshold-detection, it is much more immune to the effects of false beats and related imperfections. You can download the free trial version of TuneLab to check it out. The ultimate sustain time reported is an arbitrary multiple of the computed exponential-decay time constant, normalized to give numbers that agree roughly with subjective reporting of sustain time. I understand that the RCT also has a sustain time measurement feature. Perhaps some RCT users might comment on how that works. And Sarah, as far as developing ideas goes, showers are for showering, but mowing the lawn - that's where the best thinking happens :-) -Robert Scott Real-Time Specialties
This PTG archive page provided courtesy of Moy Piano Service, LLC