Old 11-15-2011, 07:51 AM   #1
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default 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.
domino49 is offline   Reply With Quote
Old 11-15-2011, 08:04 AM   #2
matey
Human being with feelings
 
matey's Avatar
 
Join Date: Apr 2008
Location: Civitavecchia (Italy)
Posts: 574
Default

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
matey is offline   Reply With Quote
Old 11-15-2011, 08:24 AM   #3
Mich
Human being with feelings
 
Join Date: May 2009
Posts: 1,265
Default

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.
Mich is offline   Reply With Quote
Old 11-15-2011, 08:57 AM   #4
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

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.
domino49 is offline   Reply With Quote
Old 11-16-2011, 03:38 AM   #5
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

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.
IXix is offline   Reply With Quote
Old 11-16-2011, 09:12 AM   #6
sebas777
Human being with feelings
 
sebas777's Avatar
 
Join Date: Nov 2006
Posts: 2,182
Default

Thank you for your valuable contribution, domino49 !
sebas777 is offline   Reply With Quote
Old 11-16-2011, 10:07 AM   #7
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

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 View Post
// (C) 20011, Dominique Guichaoua.
Tale is offline   Reply With Quote
Old 11-17-2011, 06:43 PM   #8
andrew grove
Human being with feelings
 
andrew grove's Avatar
 
Join Date: Mar 2007
Location: Nashville, Tennessee
Posts: 484
Default

Quote:
Originally Posted by domino49 View Post
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
andrew grove is offline   Reply With Quote
Old 11-17-2011, 09:12 PM   #9
benj.calderon
Human being with feelings
 
Join Date: Oct 2011
Posts: 2
Default

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
benj.calderon is offline   Reply With Quote
Old 11-18-2011, 08:18 AM   #10
Link0126
Human being with feelings
 
Link0126's Avatar
 
Join Date: Jul 2010
Posts: 1,268
Default

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.
Link0126 is offline   Reply With Quote
Old 11-18-2011, 09:03 AM   #11
RunBeerRun
Human being with feelings
 
Join Date: Jan 2007
Posts: 562
Default

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
RunBeerRun is offline   Reply With Quote
Old 11-18-2011, 11:10 AM   #12
grinder
Human being with feelings
 
grinder's Avatar
 
Join Date: Jan 2009
Location: New Zealand
Posts: 2,905
Default 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
grinder is offline   Reply With Quote
Old 11-18-2011, 12:56 PM   #13
benj.calderon
Human being with feelings
 
Join Date: Oct 2011
Posts: 2
Default

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
benj.calderon is offline   Reply With Quote
Old 11-18-2011, 01:09 PM   #14
grinder
Human being with feelings
 
grinder's Avatar
 
Join Date: Jan 2009
Location: New Zealand
Posts: 2,905
Default Many thanks

Great Benj, thanks for that, have a great Christmas.

Grinder
grinder is offline   Reply With Quote
Old 11-18-2011, 03:23 PM   #15
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

Hi
A little bank of some presets (nothing fancy, just handy)
http://www.box.com/s/lxd63pimrq9zrxnpcr1i
sinkmusic is offline   Reply With Quote
Old 11-18-2011, 05:08 PM   #16
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

Quote:
Originally Posted by Link0126 View Post
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.
nofish is offline   Reply With Quote
Old 11-19-2011, 03:55 AM   #17
Cisco Kid
Human being with feelings
 
Cisco Kid's Avatar
 
Join Date: Nov 2010
Location: Seattle WA
Posts: 100
Default

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"
Cisco Kid is offline   Reply With Quote
Old 11-19-2011, 05:13 AM   #18
airon
Human being with feelings
 
airon's Avatar
 
Join Date: Aug 2006
Location: Berlin
Posts: 11,817
Default

Sounds great. I'll be trying this on some sources in coming mixes.

Thanks very much for sharing.
__________________
Using Latch Preview (Video) - Faderport 16 setup for CSI 1.1 , CSI 3.10
Website
"My ego comes pre-shrunk" - Randy Thom
airon is offline   Reply With Quote
Old 11-19-2011, 05:17 AM   #19
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

Quote:
Originally Posted by nofish View Post
Yes please.
I also wondered about it.
http://www.google.fr/search?q=bbe+so...ient=firefox-a
sinkmusic is offline   Reply With Quote
Old 11-19-2011, 09:31 AM   #20
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

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);
--
liteon is offline   Reply With Quote
Old 11-19-2011, 02:02 PM   #21
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

Quote:
Originally Posted by Cisco Kid View Post
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
domino49 is offline   Reply With Quote
Old 11-19-2011, 04:26 PM   #22
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

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 ?
sinkmusic is offline   Reply With Quote
Old 11-19-2011, 04:34 PM   #23
Kundalinguist
Human being with feelings
 
Kundalinguist's Avatar
 
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
Default

Like, how friggin' cool is this thread - like Christmas, without the heavy financial burden.

Here's some prefab to save you 30 seconds:
Attached Files
File Type: txt BBE_Model_Domino_JS.txt (930 Bytes, 1010 views)
File Type: txt BBE_Model_LiteOn_JS.txt (3.4 KB, 964 views)
__________________
Success is just one more plugin away! And happiness is as close as your next upgrade. (On the interweb: www.rolandk.ca / www.auroraskypublishing.com)

Last edited by Kundalinguist; 11-19-2011 at 04:40 PM.
Kundalinguist is offline   Reply With Quote
Old 11-20-2011, 01:11 AM   #24
Link0126
Human being with feelings
 
Link0126's Avatar
 
Join Date: Jul 2010
Posts: 1,268
Default

Quote:
Originally Posted by sinkmusic View Post
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.
Link0126 is offline   Reply With Quote
Old 11-20-2011, 10:44 AM   #25
filter303
Human being with feelings
 
filter303's Avatar
 
Join Date: May 2007
Location: Helsinki
Posts: 57
Default

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!!!
filter303 is offline   Reply With Quote
Old 11-21-2011, 04:58 AM   #26
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

Hi,
New version with more comments and new modelisation
Attached Files
File Type: txt SonicMaximizer.txt (1.3 KB, 1024 views)
domino49 is offline   Reply With Quote
Old 11-21-2011, 10:07 AM   #27
Kundalinguist
Human being with feelings
 
Kundalinguist's Avatar
 
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
Default

Thanks, Domino.
__________________
Success is just one more plugin away! And happiness is as close as your next upgrade. (On the interweb: www.rolandk.ca / www.auroraskypublishing.com)
Kundalinguist is offline   Reply With Quote
Old 11-21-2011, 04:44 PM   #28
Link0126
Human being with feelings
 
Link0126's Avatar
 
Join Date: Jul 2010
Posts: 1,268
Default

Getting some weird pumping effects from the second version that aren't present in the first.
Link0126 is offline   Reply With Quote
Old 11-21-2011, 06:16 PM   #29
Kundalinguist
Human being with feelings
 
Kundalinguist's Avatar
 
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
Default

Quote:
Originally Posted by Link0126 View Post
Getting some weird pumping effects from the second version that aren't present in the first.
Have you tried calling tech support?
__________________
Success is just one more plugin away! And happiness is as close as your next upgrade. (On the interweb: www.rolandk.ca / www.auroraskypublishing.com)
Kundalinguist is offline   Reply With Quote
Old 11-21-2011, 06:22 PM   #30
slops
Human being with feelings
 
slops's Avatar
 
Join Date: Jul 2007
Posts: 619
Default

Quote:
Originally Posted by Link0126 View Post
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.
slops is offline   Reply With Quote
Old 11-22-2011, 01:54 AM   #31
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

Quote:
Originally Posted by slops View Post
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)...
domino49 is offline   Reply With Quote
Old 11-22-2011, 02:10 AM   #32
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

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.
domino49 is offline   Reply With Quote
Old 11-22-2011, 05:09 AM   #33
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,890
Default

bugfix:

too many zeros in the (c) year.
reapercurious is offline   Reply With Quote
Old 11-22-2011, 05:54 AM   #34
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

Quote:
Originally Posted by reapercurious View Post
bugfix:

too many zeros in the (c) year.
Corrected Thanks
domino49 is offline   Reply With Quote
Old 11-23-2011, 12:06 AM   #35
Evan
Human being with feelings
 
Join Date: Oct 2006
Location: Greece
Posts: 3,553
Default

Is this an effect that translates well to all playback mediums (mono/stereo speakers, headphones)?
Evan is offline   Reply With Quote
Old 11-23-2011, 09:10 AM   #36
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

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?
IXix is offline   Reply With Quote
Old 11-25-2011, 06:12 AM   #37
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

Quote:
Originally Posted by IXix View Post
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...

--
liteon is offline   Reply With Quote
Old 11-25-2011, 09:29 AM   #38
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Thanks for the explanation liteon.
IXix is offline   Reply With Quote
Old 11-25-2011, 05:59 PM   #39
Kundalinguist
Human being with feelings
 
Kundalinguist's Avatar
 
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
Default

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.
__________________
Success is just one more plugin away! And happiness is as close as your next upgrade. (On the interweb: www.rolandk.ca / www.auroraskypublishing.com)
Kundalinguist is offline   Reply With Quote
Old 11-28-2011, 03:37 PM   #40
domino49
Human being with feelings
 
Join Date: Nov 2011
Location: Angers, France
Posts: 27
Default

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
Attached Images
File Type: png statefilter.png (27.2 KB, 14908 views)
domino49 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 11:42 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.