RobinSchmidt / RS-MET

Codebase for RS-MET products (Robin Schmidt's Music Engineering Tools)
Other
56 stars 6 forks source link

Spectral Components and Noise #283

Open MIDIculous opened 5 years ago

MIDIculous commented 5 years ago

I’m just getting into the discussion about your exciting spectral algorithm. I was curious as to if it will accurately interpret not just the harmonic content, but the noise content as well? This is very important for instruments such as Rhodes or wind instruments.

RobinSchmidt commented 5 years ago

i'm not sure what you mean with interpreting in this context. do you mean, if the noise is modeled in some way? at the moment, most the noise is modeled as part of the sinusoids - as some sort of noisy amplitude and frequency modulation. ...which is exactly what we would want and expect when there is no deliberate separation of the noisy content yet. there is already some separation though, due to the inherent limitations of the model (the freq and amp envelopes of the sinusoids already contain some smoothing due to the decimation and later interpolation of the freq and amp trajectories), as we can hear:

www.rs-met.com/sounds/resynthesis/flute-C-octave1Original.wav www.rs-met.com/sounds/resynthesis/flute-C-octave1Resynthesized.wav www.rs-met.com/sounds/resynthesis/flute-C-octave1Residual.wav

www.rs-met.com/sounds/resynthesis/Rhodes_F3_ShortOriginal.wav www.rs-met.com/sounds/resynthesis/Rhodes_F3_ShortResynthesized.wav www.rs-met.com/sounds/resynthesis/Rhodes_F3_ShortResidual.wav

there's still a lot of noisy content left in the resynthesized signals. to separate that noisy content, it would make sense to deliberately smooth the amplitude- and frequency trajectories of the partials further - in addition to the slight smoothing that is already inherent in the modeling process. once we have the noisy part separated, we could try to model that with a different kind of model - linear prediction is what comes to mind first

RobinSchmidt commented 5 years ago

for modeling noise, this algorithm here could be useful: https://pdfs.semanticscholar.org/e777/f38fbb4817e41c9fb2b87d24d51cddc1ed6a.pdf?_ga=2.31492158.1209010308.1561792114-1197917107.1561792114 ...i once implemented it in matlab long ago. i guess, i could dig out the code and port it to c++. this is a generalization of what linear prediction would produce. linear prediction estimates parameters of an all-pole filter to model the frequency characteristics of the noise. this algorithm here estimates the parameters of a fully general filter with poles and zeros. the main advantage is probably the explicit modeling of notches in the transfer function