Open303 - open source 303 emulation project - collaborators wanted

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS
JC-303

Post

um, what's that?!
would that meet with my measurements? (image)

i am interested in achieving these ranges (see the image) with a bipolar envelope, without mixing cutoff + envmod knob values
tho, i can live without it i guess

Robin: that sample kind of looks good, but you used a program to "trace" the cutoff frequency out of the wavefile?!
what frequency does you think this starts off at? ~25KHz? because it's more like ~28 ..

here's my data (taken out of a screenshot of a linear-scale sonogram (SoundForge) from a 88200Hz sample, pixels X/Y position translated to time/amplitude with mIRC)

Code: Select all

0	0
0.350543	0.006579
0.483696	0.013158
0.581522	0.019737
0.649457	0.026316
0.682065	0.032895
0.711957	0.039474
0.744565	0.052632
0.782609	0.069079
0.815217	0.092105
0.847826	0.121711
0.880435	0.171053
0.913043	0.25
0.94837	0.391447
0.980978	0.634868
1	1
left = position (time), right = amplitude (of the curve)
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

antto wrote:Robin: that sample kind of looks good, but you used a program to "trace" the cutoff frequency out of the wavefile?!
what frequency does you think this starts off at? ~25KHz? because it's more like ~28 ..
yes: highpass the sample -> windowed FFT -> extract peak magnitude per frame.
(highpass was necessary to prevent it to pick the fundamental as peak).

and when inspecting the sepctrogram by eye, i'd say it starts off somewhere just below 25 kHz


here's my data (taken out of a screenshot of a linear-scale sonogram (SoundForge) from a 88200Hz sample, pixels X/Y position translated to time/amplitude with mIRC)

Code: Select all

0	0
0.350543	0.006579
0.483696	0.013158
0.581522	0.019737
0.649457	0.026316
0.682065	0.032895
0.711957	0.039474
0.744565	0.052632
0.782609	0.069079
0.815217	0.092105
0.847826	0.121711
0.880435	0.171053
0.913043	0.25
0.94837	0.391447
0.980978	0.634868
1	1
left = position (time), right = amplitude (of the curve)
O.K. so you have already normalized the data. how? ...really hard to tell...
thing is, i'm not using a linear ramp as input to my shaper anyway, so i can't really apply this curve. however, nothing wrong with it if it works for you.
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

EDIT CORRECTED:

in that case:

fc[n] = Fc*pow(2, (env[n] - 0.3)*envAmt)

where envAmt range is 0 to 5.5.

actually different cutoffs gave different values 0.32 and 5.65 for min, 0.27 and 5.3 for min cutoff.
Last edited by kunn on Tue Sep 22, 2009 10:08 pm, edited 1 time in total.

Post

kunn wrote:in that case:

fc[n] = Fc*pow(2, (env[n] - 0.35)*envAmt)

where envAmt range is 0 to 4.7.

actually different cutoffs gave different values 0.32 and 4.4 for max, 0.36 and 4.9 for min cutoff.
ah, so the offset and maximum modulation depth varies with cutoff frequency, yes? i already feared that. so, i take it, you have a 303 and have measured all this just now?
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

no calculated this by looking at anttos picture.
EDIT:
the reason for min and max error may be due to the fact there's always some envelope modulation that also lowers the cutoff. so the values in these pictures are not equivalent to the cutoff. i'm sure they can be tweaked.
Last edited by kunn on Tue Sep 22, 2009 10:14 pm, edited 2 times in total.

Post

kunn: that's what i meant.. the two knobs just have something to do with each other, "bipolar envelope" alone doesn't solve that complicated envelope

as far as i can tell, that negative value that you add (which you agree must be based on the cutoff knob value) doesn't make the envelope "bipolar" does it?
it doesn't change the "shape" of the curve neither, only the amplitude+offset (if scaled back after that, it matches perfectly with the same curve with different value there)
so if i'm right, that negative value only adds some positive DC + scale to the whole thing
could this be tweaked such that it gives out the values from my image? (if it could, it would be quite simpler than my circuit that does the same job)

Robin: i normalized it with mIRC, as i mentioned, i translated the X/Y coordinates to time/amplitude (where amplitude is 0 to 1)

actually, you can use this data, to compare against whatever you come up with
that's if you believe my curve is *close* ;]

and, you were wrong about the "below 25KHz" thing.. it's 28! (actually quite rare, most of the times it's seen as starting at ~27.9 as i've "written" on my image there)
i guess this is why you *could* approximate your curve by just 2 exp() functions

you know, i put my synth in the DAW, right against most of the good audio samples i got, i sync the whole thing, then i open up sonograms, spectrum analyzers, oscilloscopes, volume meters, and i am really sure this curve is perfect enough that i haven't seen it fail so far

tho, i know where my synth still fails badly, it's bothering me a lot
one of the places is the "normal-slide-to-accented" (with envmod)
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

Robin from www.rs-met.com wrote:
kunn wrote:in that case:

fc[n] = Fc*pow(2, (env[n] - 0.35)*envAmt)

where envAmt range is 0 to 4.7.

actually different cutoffs gave different values 0.32 and 4.4 for max, 0.36 and 4.9 for min cutoff.
ah, so the offset and maximum modulation depth varies with cutoff frequency, yes? i already feared that. so, i take it, you have a 303 and have measured all this just now?
yes, that's the whole damn thing about the cutoff and envmod knobs ;]
you really got to look at that image to see it

when cutoff=0 and envmod=0, the cutoff is not 0, the envelope modulation is small but not 0 neither
then when you increase the cutoff, the modulation gets bigger (see the difference)

this is why i say that "bipolar" doesn't solve any problem here ;]
"bipolar" might have some role in the gimmick circuit afterwards, but not here
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

hey man just try it. i calculated these values from your pictures and also edited my post - correct formula:

fc[n] = Fc*pow(2, (env[n] - 0.3)*envAmt)

where envAmt range is 0 to 5.5.

EDIT:

5.5 and 0.3 should be tweaked to match the behavior at all frequencies. also the min envAmt should be found.
Last edited by kunn on Tue Sep 22, 2009 10:22 pm, edited 1 time in total.

Post

kunn wrote:no calculated this by looking at anttos picture.
EDIT:
the reason for min and max error may be due to the fact there's always some envelope modulation that also lowers the cutoff. so the values in these pictures are not equivalent to the cutoff. i'm sure they can be tweaked.
oh ;]

gotta check it

yeah, even if we assume the envelope is bipolar, and the cutoff knob only adds DC signal, the two knobs have nothing else to do with each other - then you still can't tell what the cutoff knob adds to the filter, and where is the zero-point on the envelope
blah
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

kunn wrote:hey man just try it. i calculated these values from your pictures and also edited my post - correct formula:

fc[n] = Fc*pow(2, (env[n] - 0.3)*envAmt)

where envAmt range is 0 to 5.5.

EDIT:

5.5 and 0.3 should be tweaked to match the behavior at all frequencies. also the min envAmt should be found!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
the cutoff doesn't add DC!!! envelope modulation is around cutoff not the usual cutoff + envelope!!!

Post

what should the "Fc" value be?!
EDIT: oops, i didn't see the "0.3 should be tweaked" part
for i moment i was thinking you got an even simpler solution that seemed impossible before ;]
ok, now i can tweak this
tho, i think i don't like how the RC is shaped by that pow(2,x) thing ..
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

Fc - the cutoff user sets. fc[n] - the actual cutoff. when envAmt=0 then fc[n]=Fc. the problem is that min envAmt is not 0. but when near 0 the fc[n]~Fc thats how i got those values. they're approximately correct but need to be tweaked. also the min envAmt should be found.

Post

UPDATE:

fc[n] = Fc*pow(2, (env[n] - o)*envAmt)

min cutoff: o = ~0.32, min envAmt = ~0.73, max envAmt = ~5.65
max cutoff: o = ~0.27, min envAmt = ~0.88, max envAmt = ~5.29

i think some constants between those values should get it pretty close.

Post

i would need long notes (lowest possible) with max reso to calculate this (96kHz).

min cutoff, min env mod, min/max decay
min cutoff, max env mod, min/max decay
max cutoff, min env mod, min/max decay
max cutoff, max env mod, min/max decay

Post

kunn wrote:i would need long notes (lowest possible) with max reso to calculate this (96kHz).

min cutoff, min env mod, min/max decay
min cutoff, max env mod, min/max decay
max cutoff, min env mod, min/max decay
max cutoff, max env mod, min/max decay
will record tonight..
so the lowest note possible, 88.2kHz (or do you really need 96?).

Any other samples needed? It's easy if I can do a whole bunch at once.

btw: about the filter:
last year a friend of mine delved into the schematics to explain the filter to me. He knows a lot about dsp so I can ask if he remembers the conclusions made then.

Post Reply

Return to “DSP and Plugin Development”