|
|
|
11-15-2011, 07:51 AM
|
#1
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
BBE Sonic Maximizer
A JS modelisation of the "BBE Sonic Maximizer" directly by the electronic schematic.
Last version :
Code:
/*
BBE Sonic Maximizer modelisation
(C) 20011, Dominique Guichaoua.
Peek Detector code is Copyright (C) 2011 lubomir i. ivanov
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
desc:BBE Sonic Maximizer
slider1:0<0,10,.1>Low Contour (dB)
slider2:0<0,10,.1>Process (dB)
slider3:0<-30,0,.1>Output Level (dB)
slider4:0<0,10,.1>Peek Detector Level
@init
c_ampdB = 8.65617025;
//Electronic Components
R=21500;
C1=0.0000000033;
C2=0.000000033;
Te=1/srate;
//Input Gain
Gin=-2;
//Band Pass Gain
GBP=0.72;
//Low Pass initial Gain (dB)
GLP0=0.47;
//High Pass initial Gain(dB)
GHP0=0.47;
//High Pass Coefficient
a0HP = -Te/(2*R*C1);
b0HP = a0HP;
//Low Pass Coefficient
a0LP = -Te/(2*R*C2);
b0LP = a0LP;
//Peek Detector Coefficients
// Copyright (C) 2011 lubomir i. ivanov
a0cv = 0.0003;
b0cv = 1 - a0cv;
//end lubomir i. ivanov code
//Front Panel Controls
@slider
//Low Pass Gain
GLP = GLP0*exp((slider1)/c_ampdB);
//High Pass Gain
GHP = GHP0*exp((slider2+GHP0)/c_ampdB);
//Ouput Gain
amp=exp(slider3/c_ampdB);
//Peek Detector close loop gain
// Copyright (C) 2011 lubomir i. ivanov
cv_k = slider4;
//end lubomir i. ivanov code
@sample
//Input Buffer
s0=spl0*Gin;
s1=spl1*Gin;
//Peak Detector
// Copyright (C) 2011 lubomir i. ivanov
cv0 = 1 - abs(s0)*cv_k;
cv1 = 1 - abs(s1)*cv_k;
cv_rc0 = a0cv*cv0 + b0cv*cv_rc0;
cv_rc1 = a0cv*cv1 + b0cv*cv_rc1;
//end lubomir i. ivanov code
//Pseudo State-Variable Filter (Trapezes)
BP0 = a0HP*HP0 + b0HP*HP0tmp + BP0;
BP1 = a0HP*HP1 + b0HP*HP1tmp + BP1;
HP0tmp = HP0;
HP1tmp = HP1;
LP0 = a0LP*BP0 + b0LP*BP0tmp + LP0;
LP1 = a0LP*BP1 + b0LP*BP1tmp + LP1;
BP0tmp = BP0;
BP1tmp = BP1;
HP0 = s0 + 1.5*BP0 - LP0;
HP1 = s1 + 1.5*BP1 - LP1;
//Summing Output Buffer
spl0 = -(LP0 * GLP + BP0 * GBP + HP0 * GHP * cv_rc0)*amp;
spl1 = -(LP1 * GLP + BP1 * GBP + HP1 * GHP * cv_rc1)*amp;
Last edited by domino49; 03-21-2013 at 09:04 AM.
|
|
|
11-15-2011, 08:04 AM
|
#2
|
Human being with feelings
Join Date: Apr 2008
Location: Civitavecchia (Italy)
Posts: 574
|
great Domino, it sounds very good on my workplace laptop...
thanks
__________________
"You know what a miracle is. Not what Bakunin said. But another world's intrusion into this one".
Thomas Pynchon, The Crying of Lot 49
|
|
|
11-15-2011, 08:24 AM
|
#3
|
Human being with feelings
Join Date: May 2009
Posts: 1,265
|
Does the same thing as 3-Band-EQ, no? Except for fixing the x-over frequncies.
__________________
Quote:
Originally Posted by vBulletin Message
Sorry pipelineaudio is a moderator/admin and you are not allowed to ignore him or her.
|
|
|
|
11-15-2011, 08:57 AM
|
#4
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Yes it's based on the 3Band-splitter and the 3Band-Joiner because the électronic works similarly.
http://www.radio-flier.com/PDF%20Files/BBE%20482i.pdf
In the schematic you can look a analog 3 bands splitter and 3 inputs summator.
|
|
|
11-16-2011, 03:38 AM
|
#5
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
|
Thanks! Working really well on some muddy guitar picking I'm working on. Cleans it up nicely and brings out the detail. I think I'll find this extremely useful.
|
|
|
11-16-2011, 09:12 AM
|
#6
|
Human being with feelings
Join Date: Nov 2006
Posts: 2,182
|
Thank you for your valuable contribution, domino49 !
|
|
|
11-16-2011, 10:07 AM
|
#7
|
Human being with feelings
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
|
I haven't tried this yet, but it seems like a cool plug-in. It certainly is way ahead of its time...
Quote:
Originally Posted by domino49
// (C) 20011, Dominique Guichaoua.
|
|
|
|
11-17-2011, 06:43 PM
|
#8
|
Human being with feelings
Join Date: Mar 2007
Location: Nashville, Tennessee
Posts: 484
|
Quote:
Originally Posted by domino49
A JS modelisation of the "BBE Sonic Maximizer" directly by the elctronic scematic.
// (C) 20011, Dominique Guichaoua.
//BBE Sonic Maximizer modelisation
desc:BBE Sonic Maximizer
slider1:0<0,10,.1>Low Contour (dB)
slider2:0<0,10,.1>Process (dB)
slider3:0<-30,0,.1>Output Level (dB)
@init
cDenorm=10^-30;
c_ampdB = 8.65617025;
freqHP = 2192.2;
xHP = exp(-2.0*$pi*freqHP/srate);
a0HP = 1.0-xHP;
b1HP = -xHP;
freqLP = 153.92;
xLP = exp(-2.0*$pi*freqLP/srate);
a0LP = 1.0-xLP;
b1LP = -xLP;
@slider
band1 = exp((slider1+3)/c_ampdB);
band2 = exp(0/c_ampdB);
band3 = exp((slider2+3)/c_ampdB);
amp=exp(slider3/c_ampdB);
@sample
s0 = spl0;
s1 = spl1;
sp0 = (tmplLP = a0LP*s0 - b1LP*tmplLP + cDenorm);
sp1 = (tmprLP = a0LP*s1 - b1LP*tmprLP + cDenorm);
sp4 = s0 - (tmplHP = a0HP*s0 - b1HP*tmplHP + cDenorm);
sp5 = s1 - (tmprHP = a0HP*s1 - b1HP*tmprHP + cDenorm);
sp2 = s0 - sp0 - sp4;
sp3 = s1 - sp1 - sp5;
spl0 = (sp0 * band1 + sp2 * band2 + sp4 * band3)*amp;
spl1 = (sp1 * band1 + sp3 * band2 + sp5 * band3)*amp;
|
Can someone tell me how to compile this or if someone did compile this can they post it as a DLL thanks
|
|
|
11-17-2011, 09:12 PM
|
#9
|
Human being with feelings
Join Date: Oct 2011
Posts: 2
|
There's no need to compile it...
just create a text file in the "effects" folder in reaper folder and then paste the code there and that's all
I just tried it and it sound great! I make some A/B test with the original BBE Sonic Maximizer plugin which I have and they are very similar in sound. Seems like it's going to be very used in my studio
|
|
|
11-18-2011, 08:18 AM
|
#10
|
Human being with feelings
Join Date: Jul 2010
Posts: 1,268
|
I have tried this out briefly and it seems pretty cool. Easy to change the overall sound of the track. But can someone explain this sliders a little better or describe what this is actually doing in more detail.
|
|
|
11-18-2011, 09:03 AM
|
#11
|
Human being with feelings
Join Date: Jan 2007
Posts: 562
|
Awesome, this one's a keeper. They should upgrade the JS list, I mean who really depends on SlightlyLouderator or whatever that one was.
__________________
Free Synthedit/Synthmaker plugins that I made: runbeerrun dot blogspot dot com
|
|
|
11-18-2011, 11:10 AM
|
#12
|
Human being with feelings
Join Date: Jan 2009
Location: New Zealand
Posts: 2,905
|
code
Hi all
I am a little mature and do not know which part of this should be left out of "The Code" on the text file.
(I know what a text file is I think?)
Would this include the Author and BBE Sonic Maximizer modelization or just the script below these two?
..................................
A JS modelisation of the "BBE Sonic Maximizer" directly by the elctronic scematic.
// (C) 20011, Dominique Guichaoua.
//BBE Sonic Maximizer modelisation
desc:BBE Sonic Maximizer
slider1:0<0,10,.1>Low Contour (dB)
slider2:0<0,10,.1>Process (dB)
slider3:0<-30,0,.1>Output Level (dB)
@init
cDenorm=10^-30;
c_ampdB = 8.65617025;
freqHP = 2192.2;
xHP = exp(-2.0*$pi*freqHP/srate);
a0HP = 1.0-xHP;
b1HP = -xHP;
freqLP = 153.92;
xLP = exp(-2.0*$pi*freqLP/srate);
a0LP = 1.0-xLP;
b1LP = -xLP;
@slider
band1 = exp((slider1+3)/c_ampdB);
band2 = exp(0/c_ampdB);
band3 = exp((slider2+3)/c_ampdB);
amp=exp(slider3/c_ampdB);
@sample
s0 = spl0;
s1 = spl1;
sp0 = (tmplLP = a0LP*s0 - b1LP*tmplLP + cDenorm);
sp1 = (tmprLP = a0LP*s1 - b1LP*tmprLP + cDenorm);
sp4 = s0 - (tmplHP = a0HP*s0 - b1HP*tmplHP + cDenorm);
sp5 = s1 - (tmprHP = a0HP*s1 - b1HP*tmprHP + cDenorm);
sp2 = s0 - sp0 - sp4;
sp3 = s1 - sp1 - sp5;
spl0 = (sp0 * band1 + sp2 * band2 + sp4 * band3)*amp;
spl1 = (sp1 * band1 + sp3 * band2 + sp5 * band3)*amp;
Many thanks in anticipation
Grinder
|
|
|
11-18-2011, 12:56 PM
|
#13
|
Human being with feelings
Join Date: Oct 2011
Posts: 2
|
Hello grinder
the code starts with the "//"
those are mark for comments which means that they are part of the code but only for information to the user and the computer does not use that...
just start copy from the first "//" to the last ";"
-benj
|
|
|
11-18-2011, 01:09 PM
|
#14
|
Human being with feelings
Join Date: Jan 2009
Location: New Zealand
Posts: 2,905
|
Many thanks
Great Benj, thanks for that, have a great Christmas.
Grinder
|
|
|
11-18-2011, 03:23 PM
|
#15
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Hi
A little bank of some presets (nothing fancy, just handy)
http://www.box.com/s/lxd63pimrq9zrxnpcr1i
|
|
|
11-18-2011, 05:08 PM
|
#16
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
|
Quote:
Originally Posted by Link0126
But can someone explain this sliders a little better or describe what this is actually doing in more detail.
|
Yes please.
I also wondered about it.
|
|
|
11-19-2011, 03:55 AM
|
#17
|
Human being with feelings
Join Date: Nov 2010
Location: Seattle WA
Posts: 100
|
Talk about synchronicity! I was just looking at this plugin and hardware unit from a Sweetwater magazine earlier today. When I get some time tomorrow ill play around with your JS version.
I know this is probably a long and complicated question...but...How do you take the schematics from the circuitry and convert that to a JS plugin? I know it can be done but its way above my head.
Thanks for your effort.
__________________
"Insert amusing little quip"
|
|
|
11-19-2011, 05:13 AM
|
#18
|
Human being with feelings
Join Date: Aug 2006
Location: Berlin
Posts: 11,817
|
Sounds great. I'll be trying this on some sources in coming mixes.
Thanks very much for sharing.
|
|
|
11-19-2011, 05:17 AM
|
#19
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Quote:
Originally Posted by nofish
Yes please.
I also wondered about it.
|
http://www.google.fr/search?q=bbe+so...ient=firefox-a
|
|
|
11-19-2011, 09:31 AM
|
#20
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
i've seen plots where there was an allpass and also phase cancelation when boosting, which is perhaps for a different model and suggests different filters. its definitely not "just an eq" effect though...having said that the peak-detector in that schematic, did look a little bit odd.
here is a quick go at the dynamic part + "modeling" some other bits...adding CV will "duck" the "process" amount.
Code:
/*
sonic enhancer thing
Copyright (C) 2011 lubomir i. ivanov
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
desc: Sonic Enhancer
slider1:0<-12, 12, 0.1>Input
slider2:0<0, 10, 0.1>Low Contour
slider3:0<0, 10, 0.1>Process
slider4:2<0, 10, 0.1>CV
slider5:0<-12, 12, 0.1>Output
slider6:1<0, 1, {Off,On})>Noise Floor
@init
r_6 = 1/6;
nf_k = pow(2, -96 * r_6);
rc0_k0 = 0.0003;
rc0_k1 = 1 - rc0_k0;
fc = 700;
fs = srate;
pi2 = 2*$pi;
q = 0.23;
omega = pi2 * fc / fs;
sn = sin(omega);
cs = cos(omega);
alpha = sn / (2.0 * Q);
b0_ap = 1.0 / (1.0 + alpha);
b1_ap = (-2.0 * cs) * b0_ap;
b2_ap = (1.0 - alpha) * b0_ap;
a0_ap = b2_ap;
a1_ap = b1_ap;
a2_ap = 1;
b0_lp = 1.0 / (1.0 + alpha);
b1_lp = (-2.0 * cs) * b0_lp;
b2_lp = (1.0 - alpha) * b0_lp;
a1_lp = (1.0 - cs) * b0_lp;
a0_lp = a1_lp * 0.5;
a2_lp = a0_lp;
b0_hp = 1.0 / (1.0 + alpha);
b1_hp = (-2.0 * cs) * b0_hp;
b2_hp = (1.0 - alpha) * b0_hp;
a1_hp = -(1.0 + cs) * b0_hp;
a0_hp = -a1_hp * 0.5;
a2_hp = a0_hp;
@slider
g_in = pow(2, slider1 * r_6);
g_lp = slider2*0.5;
g_hp = slider3*0.5;
cv_k = slider4;
g_out = pow(2, slider5 * r_6);
noise_floor = slider6;
@sample
in0 = spl0*g_in;
in1 = spl1*g_in;
nf0 = 0.0;
nf1 = 0.0;
noise_floor ? (
nf0 = (rand(2.0) - 1.0)*nf_k;
nf1 = (rand(2.0) - 1.0)*nf_k;
);
out_ap0 = a0_ap*in0 + a1_ap*x1_ap0 + a2_ap*x2_ap0 - b1_ap*y1_ap0 - b2_ap*y2_ap0;
x2_ap0 = x1_ap0;
x1_ap0 = in0;
y2_ap0 = y1_ap0;
y1_ap0 = out_ap0;
out_ap1 = a0_ap*in1 + a1_ap*x1_ap1 + a2_ap*x2_ap1 - b1_ap*y1_ap1 - b2_ap*y2_ap1;
x2_ap1 = x1_ap1;
x1_ap1 = in1;
y2_ap1 = y1_ap1;
y1_ap1 = out_ap1;
out_lp0 = a0_lp*in0 + a1_lp*x1_lp0 + a2_lp*x2_lp0 - b1_lp*y1_lp0 - b2_lp*y2_lp0;
x2_lp0 = x1_lp0;
x1_lp0 = in0;
y2_lp0 = y1_lp0;
y1_lp0 = out_lp0;
out_lp1 = a0_lp*in1 + a1_lp*x1_lp1 + a2_lp*x2_lp1 - b1_lp*y1_lp1 - b2_lp*y2_lp1;
x2_lp1 = x1_lp1;
x1_lp1 = in1;
y2_lp1 = y1_lp1;
y1_lp1 = out_lp1;
out_hp0 = a0_hp*in0 + a1_hp*x1_hp0 + a2_hp*x2_hp0 - b1_hp*y1_hp0 - b2_hp*y2_hp0;
x2_hp0 = x1_hp0;
x1_hp0 = in0;
y2_hp0 = y1_hp0;
y1_hp0 = out_hp0;
out_hp1 = a0_hp*in1 + a1_hp*x1_hp1 + a2_hp*x2_hp1 - b1_hp*y1_hp1 - b2_hp*y2_hp1;
x2_hp1 = x1_hp1;
x1_hp1 = in1;
y2_hp1 = y1_hp1;
y1_hp1 = out_hp1;
cv0 = 1 - abs(in0)*cv_k;
cv1 = 1 - abs(in1)*cv_k;
cv_rc0 = rc0_k0*cv0 + rc0_k1*cv_rc0;
cv_rc1 = rc0_k0*cv1 + rc0_k1*cv_rc1;
out_sv0 = out_ap0 + out_hp0*cv_rc0*g_hp + out_lp0*g_lp;
out_sv1 = out_ap1 + out_hp1*cv_rc1*g_hp + out_lp1*g_lp;
out_rc0 = rc0_k0*out_sv0 + rc0_k1*out_rc0;
out_rc1 = rc0_k0*out_sv1 + rc0_k1*out_rc1;
out_dc0 = out_sv0 - out_rc0;
out_dc1 = out_sv1 - out_rc1;
spl0 = out_dc0*g_out + nf0;
spl1 = out_dc1*g_out + nf1;
@gfx 0 10
gfx_r = 0.8;
gfx_g = 0.5;
gfx_b = 0;
gfx_a = min(1, 0.55 + cv_rc0*0.25 + g_hp*0.1);
gfx_x = 5;
gfx_y = 5;
gfx_rectto(gfx_w*0.5 - 3, gfx_h - 5);
gfx_a = min(1, 0.55 + cv_rc1*0.25 + g_hp*0.1);
gfx_x = gfx_w*0.5 + 3;
gfx_y = 5;
gfx_rectto(gfx_w - 5, gfx_h - 5);
--
|
|
|
11-19-2011, 02:02 PM
|
#21
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Quote:
Originally Posted by Cisco Kid
Talk about synchronicity! I was just looking at this plugin and hardware unit from a Sweetwater magazine earlier today. When I get some time tomorrow ill play around with your JS version.
I know this is probably a long and complicated question...but...How do you take the schematics from the circuitry and convert that to a JS plugin? I know it can be done but its way above my head.
Thanks for your effort.
|
Hi
It is very difficult for me to explain in English. Electronics, signal processing, scientifique computing and digital modelisation it's my job. Reaper with JS script is a ideal tool for signal processing and digital modelisation. To model an electronic circuit you have a choice between modeling electronic components (as in simulation software) and then model the function performed by a set of components. I chose the second solution.
The schematic : http://www.radio-flier.com/PDF%20Files/BBE%20482i.pdf
|
|
|
11-19-2011, 04:26 PM
|
#22
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Hi, Liteon
Thank you !
This eye candy blinking window looks good, and the ducking can help us achieve interesting effects.
http://img249.**************/img249/3...icenhancer.gif
Would there have any way to somewhat compensate, level-wise, the volume boosting when we engage the effect ?
(I mean, if we had roughly +2dB of "Low Contour" and +3dB of "process", the output will be 5dB louder than the input, the volume increase making us thing louder = better, so we have to decrease manually the output to get a proper before/after comparison. If it was possible to automatically decrease the input volume at the same time and by he same amount of "low" and "process" boosting, it would allow a better A/B comparison... Does it make sense ?)
Oh, and what does the "noise floor" feature do ?
|
|
|
11-19-2011, 04:34 PM
|
#23
|
Human being with feelings
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
|
Like, how friggin' cool is this thread - like Christmas, without the heavy financial burden.
Here's some prefab to save you 30 seconds:
Last edited by Kundalinguist; 11-19-2011 at 04:40 PM.
|
|
|
11-20-2011, 01:11 AM
|
#24
|
Human being with feelings
Join Date: Jul 2010
Posts: 1,268
|
Quote:
Originally Posted by sinkmusic
|
Ok so supposedly it splits the lo, mids, and highs and offsets them by milliseconds so that they all reach your ear at the same time, thereby correcting phase differences amongst the frequencies. That's pretty bad ass if actually true.
|
|
|
11-20-2011, 10:44 AM
|
#25
|
Human being with feelings
Join Date: May 2007
Location: Helsinki
Posts: 57
|
I've been using the Refined Audiometrics CLAS which is very similar to the BBE but it's much more subtle. I find this JS version much better for single tracks because it can do more extreme settings. It's amazing what we can get for free these days. I love js sonic maximizer for analog synths. Wow.. Thanks a lot guys!!!
|
|
|
11-21-2011, 04:58 AM
|
#26
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Hi,
New version with more comments and new modelisation
|
|
|
11-21-2011, 10:07 AM
|
#27
|
Human being with feelings
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
|
Thanks, Domino.
|
|
|
11-21-2011, 04:44 PM
|
#28
|
Human being with feelings
Join Date: Jul 2010
Posts: 1,268
|
Getting some weird pumping effects from the second version that aren't present in the first.
|
|
|
11-21-2011, 06:16 PM
|
#29
|
Human being with feelings
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
|
Quote:
Originally Posted by Link0126
Getting some weird pumping effects from the second version that aren't present in the first.
|
Have you tried calling tech support?
|
|
|
11-21-2011, 06:22 PM
|
#30
|
Human being with feelings
Join Date: Jul 2007
Posts: 619
|
Quote:
Originally Posted by Link0126
Getting some weird pumping effects from the second version that aren't present in the first.
|
i noticed the same thing when i tried the second version as well.
i'm happy with the first version so i'm going back to that one for now.
|
|
|
11-22-2011, 01:54 AM
|
#31
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Quote:
Originally Posted by slops
i noticed the same thing when i tried the second version as well.
i'm happy with the first version so i'm going back to that one for now.
|
Fin the line :
Code:
//Peek Detector close loop gain
cv_k = 8;
And adjust variable "cv_k" with less value (2 for example)...
|
|
|
11-22-2011, 02:10 AM
|
#32
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
New version with a "Peek detector" front panel adjustment.
Code:
// (C) 2011, Dominique Guichaoua.
//BBE Sonic Maximizer modelisation
desc:BBE Sonic Maximizer
slider1:0<0,10,.1>Low Contour (dB)
slider2:0<0,10,.1>Process (dB)
slider3:0<-30,0,.1>Output Level (dB)
slider4:2<0,10,.1>Peek Detector Level
@init
c_ampdB = 8.65617025;
//Electronic Components
R=21.5e3;
C1=0.0000000033;
C2=0.000000033;
Te=1/srate;
//Input Gain
Gin=1;
//Band Pass Gain
GBP=1;
//Low Pass initial Gain (dB)
GLP0=3;
//High Pass initial Gain(dB)
GHP0=3;
//High Pass Coefficient
a0HP = -Te/(2*R*C1);
b0HP = a0HP;
//Low Pass Coefficient
a0LP = -Te/(2*R*C2);
b0LP = a0LP;
//Peek Detector Coefficients
a0cv = 0.0003;
b0cv = 1 - a0cv;
//Front Panel Controls
@slider
//Low Pass Gain
GLP = exp((slider1+GLP0)/c_ampdB);
//High Pass Gain
GHP = exp((slider2+GHP0)/c_ampdB);
//Ouput Gain
amp=exp(slider3/c_ampdB);
//Peek Detector close loop gain
cv_k = slider4;
@sample
//Input Buffer
s0=spl0*Gin;
s1=spl1*Gin;
//Peak Detector
cv0 = 1 - abs(s0)*cv_k;
cv1 = 1 - abs(s1)*cv_k;
cv_rc0 = a0cv*cv0 + b0cv*cv_rc0;
cv_rc1 = a0cv*cv1 + b0cv*cv_rc1;
//Pseudo State-Variable Filter (Trapezes)
BP0 = a0HP*HP0 + b0HP*HP0tmp + BP0;
BP1 = a0HP*HP1 + b0HP*HP1tmp + BP1;
HP0tmp = HP0;
HP1tmp = HP1;
LP0 = a0LP*BP0 + b0LP*BP0tmp + LP0;
LP1 = a0LP*BP1 + b0LP*BP1tmp + LP1;
BP0tmp = BP0;
BP1tmp = BP1;
HP0 = s0 + 1.5*BP0 - LP0;
HP1 = s1 + 1.5*BP1 - LP1;
//Summing Output Buffer
spl0 = (LP0 * GLP + BP0 * GBP + HP0 * GHP * cv_rc0)*amp;
spl1 = (LP1 * GLP + BP1 * GBP + HP1 * GHP * cv_rc1)*amp;
Last edited by domino49; 12-02-2011 at 01:23 AM.
|
|
|
11-22-2011, 05:09 AM
|
#33
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,890
|
bugfix:
too many zeros in the (c) year.
|
|
|
11-22-2011, 05:54 AM
|
#34
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Quote:
Originally Posted by reapercurious
bugfix:
too many zeros in the (c) year.
|
Corrected Thanks
|
|
|
11-23-2011, 12:06 AM
|
#35
|
Human being with feelings
Join Date: Oct 2006
Location: Greece
Posts: 3,553
|
Is this an effect that translates well to all playback mediums (mono/stereo speakers, headphones)?
|
|
|
11-23-2011, 09:10 AM
|
#36
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
|
Quote:
Originally Posted by Evan
Is this an effect that translates well to all playback mediums (mono/stereo speakers, headphones)?
|
Yes.
Could somebody please explain how the new version differs from the original? What does changing the peak level slider actually do?
|
|
|
11-25-2011, 06:12 AM
|
#37
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
Quote:
Originally Posted by IXix
Could somebody please explain how the new version differs from the original? What does changing the peak level slider actually do?
|
its a bit hard to tell what CLAS and the BBE plugins are doing dynamically, but they are doing something similar. my version above, is pretty much the same frequency response wise to these plugins, apart from adding different amounts of gain!
the "CV" part though is something in the lines of "what may sound good". it grabs the current peak value and smooths it out with a one pole LP filter then multiplies this value to the gain of the "process" (or high band) to create a more "gentle" ducking effect. it is also controllable.
looks like domino has copy pasted my CV code into his version, which is fine, by me, of course. but his filters are still different (or wrong if you will). both the schematic and the plugins which i examined use a biquad state variable.
also this part:
Quote:
Originally Posted by the manual
the BBE sound processing system adds progressively longer delay times to lower frequencies
|
is missing in his version, due to the used filters.
another thing i've noticed is that he is adding "process" and "low contour" amounts by default, which i don't think is present in the bbe schematic, bbe plugin, CLAS etc.
disclaimer:
no intent to hijack the thread. just posting more info on the subject...
--
|
|
|
11-25-2011, 09:29 AM
|
#38
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
|
Thanks for the explanation liteon.
|
|
|
11-25-2011, 05:59 PM
|
#39
|
Human being with feelings
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
|
But in defense of both plugins, I think what matters is how they sound. I think both are excellent. And if in trying to do one thing someone invents something entirely different, then we have simply done as many famous inventors and explorers of the past, including Columbus, who never did make it to India that trip.
|
|
|
11-28-2011, 03:37 PM
|
#40
|
Human being with feelings
Join Date: Nov 2011
Location: Angers, France
Posts: 27
|
Quote:
Originally Posted by liteon
the "CV" part though is something in the lines of "what may sound good". it grabs the current peak value and smooths it out with a one pole LP filter then multiplies this value to the gain of the "process" (or high band) to create a more "gentle" ducking effect. it is also controllable.
|
Thanks Liteon for your explication.
Quote:
Originally Posted by liteon
looks like domino has copy pasted my CV code into his version, which is fine, by me, of course.
|
Exactly, I copy and paste your CV code because I don't find any infos in the schematic or in the datasheet of the component NJM2153 regarding the operation of peak detector and CV feedback.
Quote:
Originally Posted by liteon
but his filters are still different (or wrong if you will). both the schematic and the plugins which i examined use a biquad state variable.
|
Look the filter on the schematic of the BBE Sonic Maximizer 482i :
The filter is a pseudo state variable filter composed of two integrators and a subtractor like in my filter. There are two cutoff frequencies at 224Hz and 2443Hz and not only one at 700Hz !!!
Quote:
Originally Posted by liteon
also this part:
Originally Posted by the manual
the BBE sound processing system adds progressively longer delay times to lower frequencies
is missing in his version, due to the used filters.
|
Look the complete schematic there are no delay line in the lower frequencies process.
http://www.radio-flier.com/PDF%20Files/BBE%20482i.pdf
The delay is only caused by phase shift of two integrators.
Quote:
Originally Posted by liteon
another thing i've noticed is that he is adding "process" and "low contour" amounts by default, which i don't think is present in the bbe schematic, bbe plugin, CLAS etc.
|
In the schematic the input buffer gain is setting at +3dB and the Band-pass gain at -3dB. I set the input buffer gain and the Band-pass gain at 0dB and the low-pass and high-pass gain at +3dB. it's the same...
Quote:
Originally Posted by liteon
disclaimer:
no intent to hijack the thread. just posting more info on the subject...
--
|
quite agree
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 11:42 AM.
|