So to get this slope, you used
pow( 2, ( env - 0.3846 ) * envAmt )
where envAmt is the 303's 'decay rate' and env is a linear (or exponential?) function of time?
So to get this slope, you used
difference equation:antto wrote:just need to think of the formula (based on sampling rate, or omega, or somethin..)
yes. and env is the exponential decay from the RC filter. ...and i had to scale the whole curve according to some (assumed) nominal cutoff frequency, of course.brambos wrote: So to get this slope, you used
pow( 2, ( env - 0.3846 ) * envAmt )
where envAmt is the 303's 'decay rate' and env is a linear (or exponential?) function of time?
antto wrote:ok, no matter what i do, i can't get the RC output to match my curve (you know which one) whatever i do with that 2^((env-x) * y) shaper
it's just not right
and that DC (the X value there) doesn't change the "shape" of the curve in any way, it only makes things difficult
Because that looks a lot simpler.. and your synth sounds (and looks) already incredibly close to the real thing!curve: -0.2938485 / (1.0 + -608.94871 * exp(-6.1539216 * x))
x is your linear envelope.. 1 to 0.. (decaying)
min decay: 0.341
max decay: 4.310
i know which one ....mmm...well, not exactly. i remember you describing some procedure of extracting data-points graphically from a spectrogram with some image viewing program...but that's about all i know. could you post the data? and maybe the concrete sample from which the data was drawn?antto wrote:i can't get the RC output to match my curve (you know which one)
Looks good. So do you use the same curve for the amp decay? Or just for the filter env decay?antto wrote:yeah, the curve that you commented is exactly what i use since then
and it is an approximitation of the curve i mesured out from a sample from rv0 (actually, it matches perfectly all other samples i got at any decay time!)
(because it is Teh Curve..)
there's a simplified schematic in service notes that shows this. the antilog amp is there mainly for cutoff and the envelope also goes thru it. seems not to be the case with amp env, but could be implemented in VCA block.Robin from www.rs-met.com wrote:thanks for that clarification. unfortunately, i don't have enough EE background to read such things from circuit diagrams. is this also the case for the amplitude envelope?
that would be interesting indeed - since, if you cant fit it with the exp-of-exp, then it probably differs from my dataantto wrote:i can give you the datapoints i measured, and used to make the approximitation
Code: Select all
clear all;
[x fs] = wavread('Samples/ResoSweep.wav');
% obtain the data-set from the sample:
x = filter([1 -1], 1, x);
fftSize = 512;
hopSize = fftSize/4;
N = length(x);
numFrames = floor(N/hopSize)-3;
frameStart = 1;
window = hanningWindow(fftSize);
freqs = zeros(numFrames, 1);
for i=1:numFrames
frame = window.*x(frameStart:frameStart+fftSize-1);
spectrum = fft(frame);
spectrum = abs(spectrum(1:fftSize/2));
[maxValue maxIndex] = max(spectrum);
freqs(i) = maxIndex;
frameStart = frameStart+hopSize;
end
times = (0:numFrames-1)*hopSize/fs;
freqs = binIndexToFrequency(freqs, fftSize, fs);
% generate the curve:
c = 0.9937;
a = 5.4;
o = 1/2.60;
y = 1;
f = 3000; % nominal cutoff frequency
numFrames = length(times);
env = zeros(numFrames,1);
for n=1:numFrames
env(n) = y;
y = c*y;
end
env = 2.^((env-o)*a);
env = f*env;
% plot data and generated curve:
plot(times, freqs, times, env);
grid on;Submit: News, Plugins, Hosts & Apps | Advertise @ KVR | Developer Account | About KVR / Contact Us | Privacy Statement
© KVR Audio, Inc. 2000-2026