record / pre level calculations during crossfade #4
Comments
|
after trying many things, some new opinions:
so, building on that consideration, we can construct a new compromise:
by adjusting
here is a figure showing one possible compromise: unfortunately, this doesn't show the third leg of the compromise: the click when changing loop points. (it's just too much PITA to build a matlab model for this.) setting i'll add a c++ implementation of this strategy (using LUTs) and we can do a trial by ear. (@tehn) |
|
this sounds very smart, looking forward to testing |
|
better after PR#5 and subsequent commits, but there are still definite problems:
|
|
ok:
this is not the fade at all, something about resampler / output pointer (needs reset on subhead activation ?)
i think this is due to both parameters undergoing exponential slew. as they sweep across each other a lump/dip in the written signal amplitude is created. will try different interpolation curves for these |
|
i think this is ok now. opened issue #8 for treating punch in/out/over. |

it's clear that the record and pre levels need to be modulated during the crossfade, along with the playback level.
the requirements are also pretty clear:
here's what we have now (the linear case for simplicity):
the waterfall image shows successive states of the looped portion of a buffer (including a long crossfade,) which is first recorded with white noise, and subsequently overdubbed with silence. the rec/pre fade curves (shown at the top) produce a "bump" in the recorded level around the fade point, where the pre-level is too high compared to the record level level.
as the picture suggests, one way to interpret what we're doing here is: at each point in the crossfade, we're applying a different recursive filter to the level of the (old+new) signal, with one feedback term: if
r(i)is the record value at a given point in the fade, andp(i)is the pre-level, then the filter difference equation isy(n) = r(i)*x(n) + p(i)*y(n-1); sincep(i) > 0, this is a one-pole lowpass.more specifically,
p(i)determines the corner frequency of the lowpass, andr(i)is the gain factor.question is: can we somehow keep the perceived cutoff freq constant while varying the rec level?
one proposal was waiting to change the pre level until the rec level is fully down. i don't think this is the answer - it keeps the decay constant during the xfade all right, but produces the opposite problem of a dip in volume while the pre-level ramps up.
The text was updated successfully, but these errors were encountered: