Re: LADSPA Plugins from ALSA,would like some help, please !

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Jean,

[Jean Beauve]
>I have done a third test on the 2" speaker, with a around 0.4L box and the
>results are very good, indeed.
>
>I have changed a little bit the settings
> lo.f=280
>  lo.compress=1.0
>  lo.gain=0.6
>  hi.gain=0

I just realised the plugin is a lot more effective with an effect
strength control.  A patch against the current caps sources is
attached to this mail (feel free to contact me for help if you don't
know what to do with it).

With the patch applied, you can dial down compression and gain but
still get more bass boost:
 lo.f = 240
 lo.compress = .3
 lo.gain = .2
 lo.vol = 20
 hi.gain = 0

Cheers, Tim
--- releases/caps-0.9.24/Saturate.h	2014-11-10 08:56:20.000000000 +0100
+++ Saturate.h	2016-09-14 06:50:45.031674258 +0200
@@ -1,7 +1,7 @@
 /*
 	Saturate.h
 	
-	Copyright 2004-13 Tim Goetze <tim@xxxxxxxxx>
+	Copyright 2004-16 Tim Goetze <tim@xxxxxxxxx>
 	
 	http://quitte.de/dsp/
 
@@ -90,6 +90,8 @@
 	public:
 		Splitter split[2];
 		DSP::IIR2<sample_t> shape[2];
+		struct {float lo, hi;} vol;
+
 		DSP::ChebPoly<5> cheby; 
 
 		uint remain;
@@ -112,6 +114,8 @@
 			Splitter split[2];
 			DSP::IIR2<sample_t> shape[2];
 		} chan[2];
+		struct {float lo, hi;} vol;
+
 		DSP::ChebPoly<5> cheby; 
 
 		uint remain;
--- releases/caps-0.9.24/Saturate.cc	2014-11-10 09:52:25.000000000 +0100
+++ Saturate.cc	2016-09-13 18:08:36.348934794 +0200
@@ -1,7 +1,7 @@
 /*
 	Saturate.cc
 	
-	Copyright 2003-13 Tim Goetze <tim@xxxxxxxxx>
+	Copyright 2003-16 Tim Goetze <tim@xxxxxxxxx>
 	
 	http://quitte.de/dsp/
 
@@ -222,7 +222,7 @@
 Spice::init()
 {
 	float amps[] = {0,0,1,.3,.01};
-	cheby.calculate (amps);
+	cheby.calculate(amps);
 }
 
 void
@@ -235,7 +235,7 @@
 		split[i].reset();
 		shape[i].reset();
 	}
-	compress.init(fs);
+	compress.init(fs,32);
 	compress.set_threshold(0);
 	compress.set_attack(0);
 	compress.set_release(0);
@@ -244,19 +244,23 @@
 void
 Spice::cycle (uint frames)
 {
-	struct { float f, squash, gain; } 
-			lo = {getport(0)*over_fs, getport(1), getport(2)},
-			hi = {getport(3)*over_fs, 0, getport(4)};
+	struct { float f, squash, gain, vol; } 
+			lo = {getport(0)*over_fs, getport(1), getport(2), getport(3)},
+			hi = {getport(4)*over_fs, 0, getport(5), getport(6)};
 
-	if (split[0].f != lo.f)
+	if (split[0].f != lo.f || lo.vol != vol.lo)
 	{
+		vol.lo = lo.vol;
 		split[0].set_f(lo.f);
 		DSP::RBJ::BP (2*lo.f,.7,shape[0]);
+		shape[0].scale(db2lin(vol.lo));
 	}
-	if (split[1].f != hi.f)
+	if (split[1].f != hi.f || hi.vol != vol.hi)
 	{
+		vol.hi = hi.vol;
 		split[1].set_f(hi.f);
 		DSP::RBJ::HP (2*hi.f,.7,shape[1]);
+		shape[1].scale(db2lin(vol.hi));
 	}
 
 	lo.gain = pow (24,lo.gain) - 1;
@@ -264,8 +268,8 @@
 
 	sample_t dc = cheby.process(0);
 
-	sample_t * s = ports[5];
-	sample_t * d = ports[6];
+	sample_t * s = ports[7];
+	sample_t * d = ports[8];
 
 	while (frames)
 	{
@@ -315,11 +319,13 @@
 PortInfo
 Spice::port_info [] = 
 {
-	{	"lo.f (Hz)",   CTRL_IN,	{LOG | DEFAULT_MID, 50, 400}}, 
+	{	"lo.f (Hz)",   CTRL_IN,	{LOG | DEFAULT_LOW, 50, 800}}, 
 	{	"lo.compress", CTRL_IN,	{DEFAULT_MID, 0, 1}}, 
 	{	"lo.gain",     CTRL_IN,	{DEFAULT_LOW, 0, 1}}, 
-	{	"hi.f (Hz)",   CTRL_IN | GROUP,	{LOG | DEFAULT_MID, 400, 5000}}, 
+	{	"lo.vol (dB)",	     CTRL_IN,	{DEFAULT_0, -60, 60}}, 
+	{	"hi.f (Hz)",   CTRL_IN | GROUP,	{LOG | DEFAULT_LOW, 400, 5000}}, 
 	{	"hi.gain",     CTRL_IN,	{DEFAULT_LOW, 0, 1}}, 
+	{	"hi.vol (dB)",	     CTRL_IN,	{DEFAULT_0, -60, 60}}, 
 
 	{ "in", INPUT | AUDIO }, 
 	{ "out", OUTPUT | AUDIO }, 
@@ -358,7 +364,7 @@
 			chan[c].split[i].reset();
 			chan[c].shape[i].reset();
 		}
-	compress.init(fs);
+	compress.init(fs,64);
 	compress.set_threshold(0);
 	compress.set_attack(0);
 	compress.set_release(0);
@@ -367,34 +373,38 @@
 void
 SpiceX2::cycle (uint frames)
 {
-	struct { float f, squash, gain; } 
-			lo = {getport(0)*over_fs, getport(1), getport(2)},
-			hi = {getport(3)*over_fs, 0, getport(4)};
+	struct { float f, squash, gain, vol; } 
+			lo = {getport(0)*over_fs, getport(1), getport(2), getport(3)},
+			hi = {getport(4)*over_fs, 0, getport(5), getport(6)};
 
-	if (chan[0].split[0].f != lo.f)
+	if (chan[0].split[0].f != lo.f || lo.vol != vol.lo)
 	{
+		vol.lo = lo.vol;
 		for (int c=0; c<2; ++c)
 		{
 			chan[c].split[0].set_f(lo.f);
 			DSP::RBJ::BP (2*lo.f,.7,chan[c].shape[0]);
+			chan[c].shape[0].scale(db2lin(vol.lo));
 		}
 	}
-	if (chan[0].split[1].f != hi.f)
+	if (chan[0].split[1].f != hi.f || hi.vol != vol.hi)
 	{
+		vol.hi = hi.vol;
 		for (int c=0; c<2; ++c)
 		{
 			chan[c].split[1].set_f(hi.f);
 			DSP::RBJ::BP (2*hi.f,.7,chan[c].shape[1]);
+			chan[c].shape[1].scale(db2lin(vol.hi));
 		}
 	}
 
-	lo.gain = pow (24,lo.gain) - 1;
-	hi.gain = pow (8,hi.gain) - 1;
+	lo.gain = pow(24,lo.gain) - 1;
+	hi.gain = pow(8,hi.gain) - 1;
 
 	sample_t dc = cheby.process(0);
 
-	sample_t * s[2] = {ports[5],ports[6]};
-	sample_t * d[2] = {ports[7],ports[8]};
+	sample_t * s[2] = {ports[7],ports[8]};
+	sample_t * d[2] = {ports[9],ports[10]};
 
 	while (frames)
 	{
@@ -452,8 +462,10 @@
 	{	"lo.f (Hz)",   CTRL_IN,	{LOG | DEFAULT_LOW, 50, 800}}, 
 	{	"lo.compress", CTRL_IN,	{DEFAULT_MID, 0, 1}}, 
 	{	"lo.gain",     CTRL_IN,	{DEFAULT_LOW, 0, 1}}, 
+	{	"lo.vol (dB)",	     CTRL_IN,	{DEFAULT_0, -60, 60}}, 
 	{	"hi.f (Hz)",   CTRL_IN | GROUP,	{LOG | DEFAULT_LOW, 400, 5000}}, 
 	{	"hi.gain",     CTRL_IN,	{DEFAULT_LOW, 0, 1}}, 
+	{	"hi.vol (dB)",	     CTRL_IN,	{DEFAULT_0, -60, 60}}, 
 
 	{ "in:l", INPUT | AUDIO }, 
 	{ "in:r", INPUT | AUDIO }, 
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@xxxxxxxxxxxxxxxxxxxx
http://lists.linuxaudio.org/listinfo/linux-audio-user

[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux