Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inexplicable loss of output in lsp-plugins-mb-compressor-stereo and lsp-plugins-limiter-stereo #71

Closed
v-fox opened this issue Jan 29, 2020 · 36 comments
Assignees
Labels
bug Something isn't working
Milestone

Comments

@v-fox
Copy link

v-fox commented Jan 29, 2020

I was trying to recreate my Calf-based setup with LSP and stumbled upon some critical issues. Here's some details on my setup (especially the screenshot): https://gitlab.freedesktop.org/pipewire/pipewire/issues/206
jackd is ran as jackd --sync -P45 -p2048 -t512 -dalsa -dhw:0 -r96000 -p384 -n3 -m -M -Xseq -P -zs -I22 -O22. I was using some snapshot from devel branch while figuring out controls and everything was fine but when I finalized settings and updated to latest snapshot (marked as 1.1.13~20200124T022433 in my OBS repo, not sure about exact revision) weird things started to happen.

lsp-plugins-mb-compressor-stereo, when launched with -c ~/.config/lsp-plugins/lsp-plugins-mbc8.cfg, is muted until I press band №3 on/off switch or switch it to "Classic" mode. But even after un-muting itself it shows output level bar as if there is no signal. Starting it without config restoration and loading it manually avoids that and everything seems fine.

Similar thing happens with lsp-plugins-limiter-stereo. It starts fine but if threshold is lowered below -24db it loses output, same happens if it's switched to "Classic" mode during input. Sometimes it would lose output until I switch to any "Half" oversampling mode from any "Full". It really hates low threshold which I usually use on Calf's Multiband Limiter to boost "uneven", wide-DR speech and background sounds in badly mastered audio in Youtube videos (maybe that's a bad habit and CML acts as compressor more than a limiter, I don't know; but is it even a "limiter" if I have to limit the signal by hand beforehand to avoid going below 0db where "bad things happen" ?).

Sound output quality of the limiter, in comparison to Calf's Multiband Limiter, is awful. In CML I can't hear any distortion until pretty much maxing out gain meters at about -30-40db but in LSP-LS it starts almost immediately and goes downhill quickly, turning into barely comprehensible noise at same -30-40db. On any settings. It also seems to single-handedly introduce 13-15ms of latency on 1ms-3ms lookahead settings (EDIT: although, CML measured up to 14-20ms at 1ms-4ms, so LSP-LS is better at that), by lsp-plugins-latency-meter measurement from before any processing to right before hardware.

I downgraded to 1.1.13~20191223T215643 from master-branch but it did not change anything.

@sadko4u
Copy link
Collaborator

sadko4u commented Jan 29, 2020

First of all, thank you for testing the devel branch. Anyway, I wouldn't recommend to use it as a regular build. Could you try to build from current devel branch and reproduce the case?

@sadko4u sadko4u added the discuss Discussing the issue label Jan 29, 2020
@sadko4u
Copy link
Collaborator

sadko4u commented Jan 29, 2020

Also, please share your '~/.config/lsp-plugins/lsp-plugins-mbc8.cfg' settings.

@sadko4u
Copy link
Collaborator

sadko4u commented Jan 29, 2020

Could not reproduce limiter issues. Can you describe exactly your audio chain? Does limiter ONLY (isolated from the chain) allow to reproduce the problem?

@v-fox
Copy link
Author

v-fox commented Jan 29, 2020

Thank you for making the fanciest audio tools on Linux.
But 1.1.13~20200124T022433 (as in "2020-01-24 6:13 UTC" or something like that) seem to be "the current devel branch". I re-snapshoted it again on OBS and it exactly the same. Moreover, seem the master-branch actually did change something: compressor from latest release has overloaded the CPU core it's was running on and somehow overloaded jackd that it was spewing endless stream of x-runs without any audio routing. Don't know if I actually changes configuration (changing any settings did not make it less glitchy), forgot to previously restart the compressor binary or it just randomly appeared. But that glitch does not happen on devel snapshot.

Have you looked at the link to pipewire issue with details of the setup ?
There is exact chain sequence and screenshot with visible settings. Here's a copy:

  • native JACK apps or PA apps via PA as JACK client
  • first 2 ports of lsp-plugins-spectrum-analyzer-x4
  • Calf Stereo Tools
  • lsp-plugins-para-equalizer-x16-stereo
  • lsp-plugins-mb-compressor-stereo in "up" mode
  • Calf Bass Enhancer
  • Calf Multiband Enhancer
  • lsp-plugins-limiter-stereo
  • last 2 ports of lsp-plugins-limiter-stereo
  • hardware output + lsp-plugins-latency-meter

To reproduce compressor SNAFU:

  • Just launching with -c option will make it go nuts, "importing" manually does not.

Here's

lsp-plugins-mbc8.cfg

#-------------------------------------------------------------------------------
#
# This file contains configuration of the audio plugin.
#   Plugin name:         Multi-band Kompressor Stereo x8 (Multiband Compressor Stereo x8)
#   Plugin version:      1.0.1
#   LV2 URI:             http://lsp-plug.in/plugins/lv2/mb_compressor_stereo
#   VST identifier:      gjsn
#   LADSPA identifier:   5002135
# 
# (C) Linux Studio Plugins Project 
#   http://lsp-plug.in/ 
# 
#-------------------------------------------------------------------------------

# Bypass [boolean]: true/false
bypass = false

# Compressor mode: 0..1
#   0: Classic
#   1: Modern
mode = 1

# Input gain [G]: 0.000000..10.000000
g_in = 1.000000

# Output gain [G]: 0.000000..10.000000
g_out = 1.000000

# Dry gain [G]: 0.000000..10.000000
g_dry = 0.000000

# Wet gain [G]: 0.000000..10.000000
g_wet = 1.000000

# FFT reactivity [ms]: 0.000000..1.000000
react = 0.200000

# Shift gain [G]: 0.000000..100.000000
shift = 1.000000

# Graph zoom [G]: 0.125890..1.000000
zoom = 1.000000

# Envelope boost: 0..4
#   0: None
#   1: Pink BT
#   2: Pink MT
#   3: Brown BT
#   4: Brown MT
envb = 2

# Band selection: 0..8
#   0: Split
#   1: Band 0
#   2: Band 1
#   3: Band 2
#   4: Band 3
#   5: Band 4
#   6: Band 5
#   7: Band 6
#   8: Band 7
bsel = 0

# Band filter curves [boolean]: true/false
flt = true

# Input FFT graph enable Left [boolean]: true/false
ife_l = true

# Output FFT graph enable Left [boolean]: true/false
ofe_l = true

# Input FFT graph enable Right [boolean]: true/false
ife_r = true

# Output FFT graph enable Right [boolean]: true/false
ofe_r = true

# Compression band enable 1 [boolean]: true/false
cbe_1 = false

# Split frequency 1 [Hz]: 20.000000..20000.000000
sf_1 = 50.000000

# Compression band enable 2 [boolean]: true/false
cbe_2 = true

# Split frequency 2 [Hz]: 20.000000..20000.000000
sf_2 = 115.000000

# Compression band enable 3 [boolean]: true/false
cbe_3 = false

# Split frequency 3 [Hz]: 20.000000..20000.000000
sf_3 = 330.000000

# Compression band enable 4 [boolean]: true/false
cbe_4 = true

# Split frequency 4 [Hz]: 20.000000..20000.000000
sf_4 = 650.000000

# Compression band enable 5 [boolean]: true/false
cbe_5 = false

# Split frequency 5 [Hz]: 20.000000..20000.000000
sf_5 = 1587.000000

# Compression band enable 6 [boolean]: true/false
cbe_6 = true

# Split frequency 6 [Hz]: 20.000000..20000.000000
sf_6 = 3675.000000

# Compression band enable 7 [boolean]: true/false
cbe_7 = false

# Split frequency 7 [Hz]: 20.000000..20000.000000
sf_7 = 8000.000000

# Sidechain source 0: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_0 = 0

# Sidechain mode 0: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_0 = 3

# Sidechain lookahead 0 [ms]: 0.000000..20.000000
sla_0 = 8.000000

# Sidechain reactivity 0 [ms]: 0.000000..250.000000
scr_0 = 2.000000

# Sidechain preamp 0 [G]: 0.000000..100.000000
scp_0 = 1.000000

# Sidechain custom lo-cut 0 [boolean]: true/false
sclc_0 = false

# Sidechain custom hi-cut 0 [boolean]: true/false
schc_0 = false

# Sidechain lo-cut frequency 0 [Hz]: 20.000000..20000.000000
sclf_0 = 20.000000

# Sidechain hi-cut frequency 0 [Hz]: 20.000000..20000.000000
schf_0 = 40.000000

# Compression mode 0: 0..1
#   0: Down
#   1: Up
cm_0 = 1

# Compressor enable 0 [boolean]: true/false
ce_0 = true

# Solo band 0 [boolean]: true/false
bs_0 = false

# Mute band 0 [boolean]: true/false
bm_0 = false

# Attack level 0 [G]: 0.001000..1.000000
al_0 = 1.000000

# Attack time 0 [ms]: 0.000000..2000.000000
at_0 = 8.000000

# Relative release level 0 [G]: 0.000000..63.095749
rrl_0 = 0.001000

# Release time 0 [ms]: 0.000000..5000.000000
rt_0 = 512.000000

# Ratio 0: 1.000000..100.000000
cr_0 = 1.360000

# Knee 0 [G]: 0.063100..1.000000
kn_0 = 0.063100

# Makeup gain 0 [G]: 0.001000..1000.000000
mk_0 = 0.707946

# Hue  0: 0.000000..1.000000
hue_0 = 0.000000

# Sidechain source 1: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_1 = 0

# Sidechain mode 1: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_1 = 3

# Sidechain lookahead 1 [ms]: 0.000000..20.000000
sla_1 = 8.000000

# Sidechain reactivity 1 [ms]: 0.000000..250.000000
scr_1 = 2.000000

# Sidechain preamp 1 [G]: 0.000000..100.000000
scp_1 = 1.000000

# Sidechain custom lo-cut 1 [boolean]: true/false
sclc_1 = false

# Sidechain custom hi-cut 1 [boolean]: true/false
schc_1 = false

# Sidechain lo-cut frequency 1 [Hz]: 20.000000..20000.000000
sclf_1 = 40.000000

# Sidechain hi-cut frequency 1 [Hz]: 20.000000..20000.000000
schf_1 = 100.000000

# Compression mode 1: 0..1
#   0: Down
#   1: Up
cm_1 = 1

# Compressor enable 1 [boolean]: true/false
ce_1 = true

# Solo band 1 [boolean]: true/false
bs_1 = false

# Mute band 1 [boolean]: true/false
bm_1 = false

# Attack level 1 [G]: 0.001000..1.000000
al_1 = 1.000000

# Attack time 1 [ms]: 0.000000..2000.000000
at_1 = 8.000000

# Relative release level 1 [G]: 0.000000..63.095749
rrl_1 = 0.001000

# Release time 1 [ms]: 0.000000..5000.000000
rt_1 = 448.000000

# Ratio 1: 1.000000..100.000000
cr_1 = 1.360000

# Knee 1 [G]: 0.063100..1.000000
kn_1 = 0.063100

# Makeup gain 1 [G]: 0.001000..1000.000000
mk_1 = 0.707946

# Hue  1: 0.000000..1.000000
hue_1 = 0.125000

# Sidechain source 2: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_2 = 0

# Sidechain mode 2: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_2 = 3

# Sidechain lookahead 2 [ms]: 0.000000..20.000000
sla_2 = 8.000000

# Sidechain reactivity 2 [ms]: 0.000000..250.000000
scr_2 = 2.000000

# Sidechain preamp 2 [G]: 0.000000..100.000000
scp_2 = 1.000000

# Sidechain custom lo-cut 2 [boolean]: true/false
sclc_2 = false

# Sidechain custom hi-cut 2 [boolean]: true/false
schc_2 = false

# Sidechain lo-cut frequency 2 [Hz]: 20.000000..20000.000000
sclf_2 = 100.000000

# Sidechain hi-cut frequency 2 [Hz]: 20.000000..20000.000000
schf_2 = 252.000000

# Compression mode 2: 0..1
#   0: Down
#   1: Up
cm_2 = 1

# Compressor enable 2 [boolean]: true/false
ce_2 = true

# Solo band 2 [boolean]: true/false
bs_2 = false

# Mute band 2 [boolean]: true/false
bm_2 = false

# Attack level 2 [G]: 0.001000..1.000000
al_2 = 1.000000

# Attack time 2 [ms]: 0.000000..2000.000000
at_2 = 8.000000

# Relative release level 2 [G]: 0.000000..63.095749
rrl_2 = 0.001000

# Release time 2 [ms]: 0.000000..5000.000000
rt_2 = 384.000000

# Ratio 2: 1.000000..100.000000
cr_2 = 1.360000

# Knee 2 [G]: 0.063100..1.000000
kn_2 = 0.063100

# Makeup gain 2 [G]: 0.001000..1000.000000
mk_2 = 0.707946

# Hue  2: 0.000000..1.000000
hue_2 = 0.250000

# Sidechain source 3: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_3 = 0

# Sidechain mode 3: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_3 = 3

# Sidechain lookahead 3 [ms]: 0.000000..20.000000
sla_3 = 8.000000

# Sidechain reactivity 3 [ms]: 0.000000..250.000000
scr_3 = 2.000000

# Sidechain preamp 3 [G]: 0.000000..100.000000
scp_3 = 1.000000

# Sidechain custom lo-cut 3 [boolean]: true/false
sclc_3 = false

# Sidechain custom hi-cut 3 [boolean]: true/false
schc_3 = false

# Sidechain lo-cut frequency 3 [Hz]: 20.000000..20000.000000
sclf_3 = 252.000000

# Sidechain hi-cut frequency 3 [Hz]: 20.000000..20000.000000
schf_3 = 632.000000

# Compression mode 3: 0..1
#   0: Down
#   1: Up
cm_3 = 1

# Compressor enable 3 [boolean]: true/false
ce_3 = true

# Solo band 3 [boolean]: true/false
bs_3 = false

# Mute band 3 [boolean]: true/false
bm_3 = false

# Attack level 3 [G]: 0.001000..1.000000
al_3 = 1.000000

# Attack time 3 [ms]: 0.000000..2000.000000
at_3 = 8.000000

# Relative release level 3 [G]: 0.000000..63.095749
rrl_3 = 0.001000

# Release time 3 [ms]: 0.000000..5000.000000
rt_3 = 320.000000

# Ratio 3: 1.000000..100.000000
cr_3 = 1.360000

# Knee 3 [G]: 0.063100..1.000000
kn_3 = 0.063100

# Makeup gain 3 [G]: 0.001000..1000.000000
mk_3 = 0.707946

# Hue  3: 0.000000..1.000000
hue_3 = 0.375000

# Sidechain source 4: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_4 = 0

# Sidechain mode 4: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_4 = 3

# Sidechain lookahead 4 [ms]: 0.000000..20.000000
sla_4 = 8.000000

# Sidechain reactivity 4 [ms]: 0.000000..250.000000
scr_4 = 2.000000

# Sidechain preamp 4 [G]: 0.000000..100.000000
scp_4 = 1.000000

# Sidechain custom lo-cut 4 [boolean]: true/false
sclc_4 = false

# Sidechain custom hi-cut 4 [boolean]: true/false
schc_4 = false

# Sidechain lo-cut frequency 4 [Hz]: 20.000000..20000.000000
sclf_4 = 632.000000

# Sidechain hi-cut frequency 4 [Hz]: 20.000000..20000.000000
schf_4 = 1587.000000

# Compression mode 4: 0..1
#   0: Down
#   1: Up
cm_4 = 1

# Compressor enable 4 [boolean]: true/false
ce_4 = true

# Solo band 4 [boolean]: true/false
bs_4 = false

# Mute band 4 [boolean]: true/false
bm_4 = false

# Attack level 4 [G]: 0.001000..1.000000
al_4 = 1.000000

# Attack time 4 [ms]: 0.000000..2000.000000
at_4 = 8.000000

# Relative release level 4 [G]: 0.000000..63.095749
rrl_4 = 0.001000

# Release time 4 [ms]: 0.000000..5000.000000
rt_4 = 256.000000

# Ratio 4: 1.000000..100.000000
cr_4 = 1.360000

# Knee 4 [G]: 0.063100..1.000000
kn_4 = 0.063100

# Makeup gain 4 [G]: 0.001000..1000.000000
mk_4 = 0.707946

# Hue  4: 0.000000..1.000000
hue_4 = 0.500000

# Sidechain source 5: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_5 = 0

# Sidechain mode 5: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_5 = 3

# Sidechain lookahead 5 [ms]: 0.000000..20.000000
sla_5 = 8.000000

# Sidechain reactivity 5 [ms]: 0.000000..250.000000
scr_5 = 2.000000

# Sidechain preamp 5 [G]: 0.000000..100.000000
scp_5 = 1.000000

# Sidechain custom lo-cut 5 [boolean]: true/false
sclc_5 = false

# Sidechain custom hi-cut 5 [boolean]: true/false
schc_5 = false

# Sidechain lo-cut frequency 5 [Hz]: 20.000000..20000.000000
sclf_5 = 1587.000000

# Sidechain hi-cut frequency 5 [Hz]: 20.000000..20000.000000
schf_5 = 3984.000000

# Compression mode 5: 0..1
#   0: Down
#   1: Up
cm_5 = 1

# Compressor enable 5 [boolean]: true/false
ce_5 = true

# Solo band 5 [boolean]: true/false
bs_5 = false

# Mute band 5 [boolean]: true/false
bm_5 = false

# Attack level 5 [G]: 0.001000..1.000000
al_5 = 1.000000

# Attack time 5 [ms]: 0.000000..2000.000000
at_5 = 8.000000

# Relative release level 5 [G]: 0.000000..63.095749
rrl_5 = 0.001000

# Release time 5 [ms]: 0.000000..5000.000000
rt_5 = 192.000000

# Ratio 5: 1.000000..100.000000
cr_5 = 1.360000

# Knee 5 [G]: 0.063100..1.000000
kn_5 = 0.063100

# Makeup gain 5 [G]: 0.001000..1000.000000
mk_5 = 0.707946

# Hue  5: 0.000000..1.000000
hue_5 = 0.625000

# Sidechain source 6: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_6 = 0

# Sidechain mode 6: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_6 = 3

# Sidechain lookahead 6 [ms]: 0.000000..20.000000
sla_6 = 8.000000

# Sidechain reactivity 6 [ms]: 0.000000..250.000000
scr_6 = 2.000000

# Sidechain preamp 6 [G]: 0.000000..100.000000
scp_6 = 1.000000

# Sidechain custom lo-cut 6 [boolean]: true/false
sclc_6 = false

# Sidechain custom hi-cut 6 [boolean]: true/false
schc_6 = false

# Sidechain lo-cut frequency 6 [Hz]: 20.000000..20000.000000
sclf_6 = 3984.000000

# Sidechain hi-cut frequency 6 [Hz]: 20.000000..20000.000000
schf_6 = 10000.000000

# Compression mode 6: 0..1
#   0: Down
#   1: Up
cm_6 = 1

# Compressor enable 6 [boolean]: true/false
ce_6 = true

# Solo band 6 [boolean]: true/false
bs_6 = false

# Mute band 6 [boolean]: true/false
bm_6 = false

# Attack level 6 [G]: 0.001000..1.000000
al_6 = 1.000000

# Attack time 6 [ms]: 0.000000..2000.000000
at_6 = 8.000000

# Relative release level 6 [G]: 0.000000..63.095749
rrl_6 = 0.001000

# Release time 6 [ms]: 0.000000..5000.000000
rt_6 = 128.000000

# Ratio 6: 1.000000..100.000000
cr_6 = 1.360000

# Knee 6 [G]: 0.063100..1.000000
kn_6 = 0.063100

# Makeup gain 6 [G]: 0.001000..1000.000000
mk_6 = 0.707946

# Hue  6: 0.000000..1.000000
hue_6 = 0.750000

# Sidechain source 7: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_7 = 0

# Sidechain mode 7: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_7 = 3

# Sidechain lookahead 7 [ms]: 0.000000..20.000000
sla_7 = 8.000000

# Sidechain reactivity 7 [ms]: 0.000000..250.000000
scr_7 = 2.000000

# Sidechain preamp 7 [G]: 0.000000..100.000000
scp_7 = 1.000000

# Sidechain custom lo-cut 7 [boolean]: true/false
sclc_7 = false

# Sidechain custom hi-cut 7 [boolean]: true/false
schc_7 = false

# Sidechain lo-cut frequency 7 [Hz]: 20.000000..20000.000000
sclf_7 = 10000.000000

# Sidechain hi-cut frequency 7 [Hz]: 20.000000..20000.000000
schf_7 = 20000.000000

# Compression mode 7: 0..1
#   0: Down
#   1: Up
cm_7 = 1

# Compressor enable 7 [boolean]: true/false
ce_7 = true

# Solo band 7 [boolean]: true/false
bs_7 = false

# Mute band 7 [boolean]: true/false
bm_7 = false

# Attack level 7 [G]: 0.001000..1.000000
al_7 = 1.000000

# Attack time 7 [ms]: 0.000000..2000.000000
at_7 = 8.000000

# Relative release level 7 [G]: 0.000000..63.095749
rrl_7 = 0.001000

# Release time 7 [ms]: 0.000000..5000.000000
rt_7 = 64.000000

# Ratio 7: 1.000000..100.000000
cr_7 = 1.360000

# Knee 7 [G]: 0.063100..1.000000
kn_7 = 0.063100

# Makeup gain 7 [G]: 0.001000..1000.000000
mk_7 = 0.707946

# Hue  7: 0.000000..1.000000
hue_7 = 0.875000

#-------------------------------------------------------------------------------

To reproduce limiter SNAFU:

  • Open it with "Mixed Herm, O/S Full x2(3L), 24bit dither", launch audio.
  • Switch to classic then turn threshold below -24db.
  • Output will mute itself but switching to any "Half" O/S setting will unmute.
  • Sometimes only one channel is lost, there is output level indication without audio or audio without output level indication.

Pushing audio directly from strawberry in native JACK mode to limiter and into system output also triggered the issue but I had to wiggle "Threshold" a few times, it did not go nuts immediately.

But even when there is output, sound quality is screechy and muffled when "Gain" is anything but 0. Like it's a pure overload and not limiting, in comparison to CLM's output which is nice and clear. Here's

its config from calfjackhost session file:

<?xml version="1.1" encoding="utf-8"?>
<rack>
<plugin type="multibandlimiter" instance-name="multiband limiter" input-index="17" output-index="17">
<preset bank="0" program="0" plugin="multibandlimiter" name="">
  <param name="bypass" value="0" />
  <param name="level_in" value="1" />
  <param name="level_out" value="0.998849" />
  <param name="meter_inL" value="0" />
  <param name="meter_inR" value="0" />
  <param name="meter_outL" value="0" />
  <param name="meter_outR" value="0" />
  <param name="clip_inL" value="0" />
  <param name="clip_inR" value="0" />
  <param name="clip_outL" value="0" />
  <param name="clip_outR" value="0" />
  <param name="freq0" value="115" />
  <param name="freq1" value="650" />
  <param name="freq2" value="3675" />
  <param name="mode" value="1" />
  <param name="limit" value="0.630957" />
  <param name="attack" value="1" />
  <param name="release" value="256" />
  <param name="minrel" value="1" />
  <param name="att0" value="1" />
  <param name="att1" value="1" />
  <param name="att2" value="1" />
  <param name="att3" value="1" />
  <param name="weight0" value="0.15" />
  <param name="weight1" value="0.1" />
  <param name="weight2" value="-0.25" />
  <param name="weight3" value="0.25" />
  <param name="release0" value="0.5" />
  <param name="release1" value="0.2" />
  <param name="release2" value="-0.2" />
  <param name="release3" value="-0.5" />
  <param name="solo0" value="0" />
  <param name="solo1" value="0" />
  <param name="solo2" value="0" />
  <param name="solo3" value="0" />
  <param name="effrelease0" value="512" />
  <param name="effrelease1" value="337.794" />
  <param name="effrelease2" value="194.012" />
  <param name="effrelease3" value="128" />
  <param name="asc" value="1" />
  <param name="asc_led" value="0" />
  <param name="asc_coeff" value="1" />
  <param name="oversampling" value="2" />
  <param name="auto_level" value="1" />
</preset>
</plugin>
</rack>

@sadko4u
Copy link
Collaborator

sadko4u commented Jan 29, 2020

Moreover, seem the master-branch actually did change something

In devel branch, there was a set of fixes around bypass button and also have been done set of optimizations for AVX/AVX2 instruction set.

OK, seems that I've reproduced the limiter issue. Will look what's going wrong.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 11, 2020

Created branch github-issue-71

@sadko4u sadko4u added this to the 1.1.14 milestone Feb 11, 2020
@sadko4u
Copy link
Collaborator

sadko4u commented Feb 11, 2020

This commit should probably fix the limiter issue:
5fc636c

Please try to build from the github-issue-71 branch.

But even when there is output, sound quality is screechy and muffled when "Gain" is anything but 0. Like it's a pure overload and not limiting, in comparison to CLM's output which is nice and clear.

I wouldn't suggest to use Classic mode for the compressor except special case. In this mode, the limiter works as a peak compressor with very small attack and release settings. So it's not a surprise that you hear some sort of clipping. Anyway, I'll check the code again. Maybe somewhere I've missed something.

@v-fox
Copy link
Author

v-fox commented Feb 12, 2020

This commit should probably fix the limiter issue:
5fc636c

Please try to build from the github-issue-71 branch.

Thanks for looking into that ! Indeed, limiter does not seem to be self-muting itself… sound quality is still terrible regardless of settings, unfortunately, so I'll have to stay on Calf :( Not sure if it's something in my setup or not but it doesn't look like it.

But even when there is output, sound quality is screechy and muffled when "Gain" is anything but 0. Like it's a pure overload and not limiting, in comparison to CLM's output which is nice and clear.

I wouldn't suggest to use Classic mode for the compressor except special case. In this mode, the limiter works as a peak compressor with very small attack and release settings. So it's not a surprise that you hear some sort of clipping. Anyway, I'll check the code again. Maybe somewhere I've missed something.

There are seem to be some subtle audible differences in different modes of the limiter but they all still sound really-really violently wrong in comparison to CML.

In compressor Classic mode seem to multiply its load, so I get x-run storm with multiple skips every second. There seem to be no change in compressor's behaviour, it still start weirdly self-muted when started with autoloading config and requires switching bands on/off to get persuaded to work.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 12, 2020

Additional commit that updates behaviour of limiter in Classic mode (and mixed modes, too). But now it's not a brick-wall limiter.

17712e9

There are seem to be some subtle audible differences in different modes of the limiter but they all still sound really-really violently wrong in comparison to CML.

I think this is a sort of taste. I'm always using LSP limiter for mixing purposes and it behaves much better in tasks where short peaks should be eliminated. I discarded to use single-band Calf limiter there since it couldn't pump enough loudness and sounded dull and blured, especially for 180+ bpm heavy metal music. So probably yes, there are tasks for which this limiter is not good.

@v-fox
Copy link
Author

v-fox commented Feb 13, 2020

Additional commit that updates behaviour of limiter in Classic mode (and mixed modes, too). But now it's not a brick-wall limiter.

17712e9

Tried github-issue-71-1 branch. Still seems quite distorted, unfortunately. "Mixed Herm" sounds clean in comparison to Classic but still not great.

Compressor is still misbehaving with self-muting and pops, it's impossible to see what's going on beyond -60db signal and -24db gain boundaries. But now its indicator goes of its "rails", like this:
screenshot_2020-02-13_06:40:48

In this config
#-------------------------------------------------------------------------------
#
# This file contains configuration of the audio plugin.
#   Plugin name:         Multi-band Kompressor Stereo x8 (Multiband Compressor Stereo x8)
#   Plugin version:      1.0.1
#   LV2 URI:             http://lsp-plug.in/plugins/lv2/mb_compressor_stereo
#   VST identifier:      gjsn
#   LADSPA identifier:   5002135
# 
# (C) Linux Studio Plugins Project 
#   http://lsp-plug.in/ 
# 
#-------------------------------------------------------------------------------

# Compressor mode: 0..1
#   0: Classic
#   1: Modern
mode = 1

# Input gain [G]: 0.000000..10.000000
g_in = 1.000000

# Output gain [G]: 0.000000..10.000000
g_out = 1.000000

# Dry gain [G]: 0.000000..10.000000
g_dry = 0.000000

# Wet gain [G]: 0.000000..10.000000
g_wet = 1.000000

# FFT reactivity [ms]: 0.000000..1.000000
react = 0.250000

# Shift gain [G]: 0.000000..100.000000
shift = 1.000000

# Graph zoom [G]: 0.125890..1.000000
zoom = 1.000000

# Envelope boost: 0..4
#   0: None
#   1: Pink BT
#   2: Pink MT
#   3: Brown BT
#   4: Brown MT
envb = 2

# Band selection: 0..8
#   0: Split
#   1: Band 0
#   2: Band 1
#   3: Band 2
#   4: Band 3
#   5: Band 4
#   6: Band 5
#   7: Band 6
#   8: Band 7
bsel = 0

# Band filter curves [boolean]: true/false
flt = true

# Input FFT graph enable Left [boolean]: true/false
ife_l = true

# Output FFT graph enable Left [boolean]: true/false
ofe_l = true

# Input FFT graph enable Right [boolean]: true/false
ife_r = true

# Output FFT graph enable Right [boolean]: true/false
ofe_r = true

# Compression band enable 1 [boolean]: true/false
cbe_1 = true

# Split frequency 1 [Hz]: 20.000000..20000.000000
sf_1 = 55.000000

# Compression band enable 2 [boolean]: true/false
cbe_2 = true

# Split frequency 2 [Hz]: 20.000000..20000.000000
sf_2 = 110.000000

# Compression band enable 3 [boolean]: true/false
cbe_3 = true

# Split frequency 3 [Hz]: 20.000000..20000.000000
sf_3 = 220.000000

# Compression band enable 4 [boolean]: true/false
cbe_4 = true

# Split frequency 4 [Hz]: 20.000000..20000.000000
sf_4 = 440.000000

# Compression band enable 5 [boolean]: true/false
cbe_5 = true

# Split frequency 5 [Hz]: 20.000000..20000.000000
sf_5 = 880.000000

# Compression band enable 6 [boolean]: true/false
cbe_6 = true

# Split frequency 6 [Hz]: 20.000000..20000.000000
sf_6 = 1760.000000

# Compression band enable 7 [boolean]: true/false
cbe_7 = true

# Split frequency 7 [Hz]: 20.000000..20000.000000
sf_7 = 7040.000000

# Sidechain source 0: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_0 = 0

# Sidechain mode 0: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_0 = 3

# Sidechain lookahead 0 [ms]: 0.000000..20.000000
sla_0 = 4.000000

# Sidechain reactivity 0 [ms]: 0.000000..250.000000
scr_0 = 128.000000

# Sidechain preamp 0 [G]: 0.000000..100.000000
scp_0 = 1.000000

# Sidechain custom lo-cut 0 [boolean]: true/false
sclc_0 = false

# Sidechain custom hi-cut 0 [boolean]: true/false
schc_0 = false

# Sidechain lo-cut frequency 0 [Hz]: 20.000000..20000.000000
sclf_0 = 20.000000

# Sidechain hi-cut frequency 0 [Hz]: 20.000000..20000.000000
schf_0 = 40.000000

# Compression mode 0: 0..1
#   0: Down
#   1: Up
cm_0 = 1

# Compressor enable 0 [boolean]: true/false
ce_0 = true

# Solo band 0 [boolean]: true/false
bs_0 = false

# Mute band 0 [boolean]: true/false
bm_0 = false

# Attack level 0 [G]: 0.001000..1.000000
al_0 = 0.125893

# Attack time 0 [ms]: 0.000000..2000.000000
at_0 = 4.000000

# Relative release level 0 [G]: 0.000000..63.095749
rrl_0 = 0.000000

# Release time 0 [ms]: 0.000000..5000.000000
rt_0 = 256.000000

# Ratio 0: 1.000000..100.000000
cr_0 = 1.480000

# Knee 0 [G]: 0.063100..1.000000
kn_0 = 0.063100

# Makeup gain 0 [G]: 0.001000..1000.000000
mk_0 = 1.000000

# Hue  0: 0.000000..1.000000
hue_0 = 0.000000

# Sidechain source 1: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_1 = 0

# Sidechain mode 1: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_1 = 3

# Sidechain lookahead 1 [ms]: 0.000000..20.000000
sla_1 = 4.000000

# Sidechain reactivity 1 [ms]: 0.000000..250.000000
scr_1 = 96.000000

# Sidechain preamp 1 [G]: 0.000000..100.000000
scp_1 = 1.000000

# Sidechain custom lo-cut 1 [boolean]: true/false
sclc_1 = false

# Sidechain custom hi-cut 1 [boolean]: true/false
schc_1 = false

# Sidechain lo-cut frequency 1 [Hz]: 20.000000..20000.000000
sclf_1 = 40.000000

# Sidechain hi-cut frequency 1 [Hz]: 20.000000..20000.000000
schf_1 = 100.000000

# Compression mode 1: 0..1
#   0: Down
#   1: Up
cm_1 = 1

# Compressor enable 1 [boolean]: true/false
ce_1 = true

# Solo band 1 [boolean]: true/false
bs_1 = false

# Mute band 1 [boolean]: true/false
bm_1 = false

# Attack level 1 [G]: 0.001000..1.000000
al_1 = 0.125893

# Attack time 1 [ms]: 0.000000..2000.000000
at_1 = 3.500000

# Relative release level 1 [G]: 0.000000..63.095749
rrl_1 = 0.000000

# Release time 1 [ms]: 0.000000..5000.000000
rt_1 = 128.000000

# Ratio 1: 1.000000..100.000000
cr_1 = 1.480000

# Knee 1 [G]: 0.063100..1.000000
kn_1 = 0.063100

# Makeup gain 1 [G]: 0.001000..1000.000000
mk_1 = 1.000000

# Hue  1: 0.000000..1.000000
hue_1 = 0.125000

# Sidechain source 2: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_2 = 0

# Sidechain mode 2: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_2 = 3

# Sidechain lookahead 2 [ms]: 0.000000..20.000000
sla_2 = 4.000000

# Sidechain reactivity 2 [ms]: 0.000000..250.000000
scr_2 = 64.000000

# Sidechain preamp 2 [G]: 0.000000..100.000000
scp_2 = 1.000000

# Sidechain custom lo-cut 2 [boolean]: true/false
sclc_2 = false

# Sidechain custom hi-cut 2 [boolean]: true/false
schc_2 = false

# Sidechain lo-cut frequency 2 [Hz]: 20.000000..20000.000000
sclf_2 = 100.000000

# Sidechain hi-cut frequency 2 [Hz]: 20.000000..20000.000000
schf_2 = 252.000000

# Compression mode 2: 0..1
#   0: Down
#   1: Up
cm_2 = 1

# Compressor enable 2 [boolean]: true/false
ce_2 = true

# Solo band 2 [boolean]: true/false
bs_2 = false

# Mute band 2 [boolean]: true/false
bm_2 = false

# Attack level 2 [G]: 0.001000..1.000000
al_2 = 0.125893

# Attack time 2 [ms]: 0.000000..2000.000000
at_2 = 3.000000

# Relative release level 2 [G]: 0.000000..63.095749
rrl_2 = 0.000000

# Release time 2 [ms]: 0.000000..5000.000000
rt_2 = 64.000000

# Ratio 2: 1.000000..100.000000
cr_2 = 1.480000

# Knee 2 [G]: 0.063100..1.000000
kn_2 = 0.063100

# Makeup gain 2 [G]: 0.001000..1000.000000
mk_2 = 1.000000

# Hue  2: 0.000000..1.000000
hue_2 = 0.250000

# Sidechain source 3: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_3 = 0

# Sidechain mode 3: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_3 = 3

# Sidechain lookahead 3 [ms]: 0.000000..20.000000
sla_3 = 4.000000

# Sidechain reactivity 3 [ms]: 0.000000..250.000000
scr_3 = 48.000000

# Sidechain preamp 3 [G]: 0.000000..100.000000
scp_3 = 1.000000

# Sidechain custom lo-cut 3 [boolean]: true/false
sclc_3 = false

# Sidechain custom hi-cut 3 [boolean]: true/false
schc_3 = false

# Sidechain lo-cut frequency 3 [Hz]: 20.000000..20000.000000
sclf_3 = 252.000000

# Sidechain hi-cut frequency 3 [Hz]: 20.000000..20000.000000
schf_3 = 632.000000

# Compression mode 3: 0..1
#   0: Down
#   1: Up
cm_3 = 1

# Compressor enable 3 [boolean]: true/false
ce_3 = true

# Solo band 3 [boolean]: true/false
bs_3 = false

# Mute band 3 [boolean]: true/false
bm_3 = false

# Attack level 3 [G]: 0.001000..1.000000
al_3 = 0.125893

# Attack time 3 [ms]: 0.000000..2000.000000
at_3 = 2.500000

# Relative release level 3 [G]: 0.000000..63.095749
rrl_3 = 0.000000

# Release time 3 [ms]: 0.000000..5000.000000
rt_3 = 32.000000

# Ratio 3: 1.000000..100.000000
cr_3 = 1.480000

# Knee 3 [G]: 0.063100..1.000000
kn_3 = 0.063100

# Makeup gain 3 [G]: 0.001000..1000.000000
mk_3 = 1.000000

# Hue  3: 0.000000..1.000000
hue_3 = 0.375000

# Sidechain source 4: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_4 = 0

# Sidechain mode 4: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_4 = 3

# Sidechain lookahead 4 [ms]: 0.000000..20.000000
sla_4 = 4.000000

# Sidechain reactivity 4 [ms]: 0.000000..250.000000
scr_4 = 32.000000

# Sidechain preamp 4 [G]: 0.000000..100.000000
scp_4 = 1.000000

# Sidechain custom lo-cut 4 [boolean]: true/false
sclc_4 = false

# Sidechain custom hi-cut 4 [boolean]: true/false
schc_4 = false

# Sidechain lo-cut frequency 4 [Hz]: 20.000000..20000.000000
sclf_4 = 632.000000

# Sidechain hi-cut frequency 4 [Hz]: 20.000000..20000.000000
schf_4 = 1587.000000

# Compression mode 4: 0..1
#   0: Down
#   1: Up
cm_4 = 1

# Compressor enable 4 [boolean]: true/false
ce_4 = true

# Solo band 4 [boolean]: true/false
bs_4 = false

# Mute band 4 [boolean]: true/false
bm_4 = false

# Attack level 4 [G]: 0.001000..1.000000
al_4 = 0.125893

# Attack time 4 [ms]: 0.000000..2000.000000
at_4 = 2.000000

# Relative release level 4 [G]: 0.000000..63.095749
rrl_4 = 0.000000

# Release time 4 [ms]: 0.000000..5000.000000
rt_4 = 16.000000

# Ratio 4: 1.000000..100.000000
cr_4 = 1.480000

# Knee 4 [G]: 0.063100..1.000000
kn_4 = 0.063100

# Makeup gain 4 [G]: 0.001000..1000.000000
mk_4 = 1.000000

# Hue  4: 0.000000..1.000000
hue_4 = 0.500000

# Sidechain source 5: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_5 = 0

# Sidechain mode 5: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_5 = 3

# Sidechain lookahead 5 [ms]: 0.000000..20.000000
sla_5 = 4.000000

# Sidechain reactivity 5 [ms]: 0.000000..250.000000
scr_5 = 24.000000

# Sidechain preamp 5 [G]: 0.000000..100.000000
scp_5 = 1.000000

# Sidechain custom lo-cut 5 [boolean]: true/false
sclc_5 = false

# Sidechain custom hi-cut 5 [boolean]: true/false
schc_5 = false

# Sidechain lo-cut frequency 5 [Hz]: 20.000000..20000.000000
sclf_5 = 1587.000000

# Sidechain hi-cut frequency 5 [Hz]: 20.000000..20000.000000
schf_5 = 3984.000000

# Compression mode 5: 0..1
#   0: Down
#   1: Up
cm_5 = 1

# Compressor enable 5 [boolean]: true/false
ce_5 = true

# Solo band 5 [boolean]: true/false
bs_5 = false

# Mute band 5 [boolean]: true/false
bm_5 = false

# Attack level 5 [G]: 0.001000..1.000000
al_5 = 0.125893

# Attack time 5 [ms]: 0.000000..2000.000000
at_5 = 1.500000

# Relative release level 5 [G]: 0.000000..63.095749
rrl_5 = 0.000000

# Release time 5 [ms]: 0.000000..5000.000000
rt_5 = 8.000000

# Ratio 5: 1.000000..100.000000
cr_5 = 1.480000

# Knee 5 [G]: 0.063100..1.000000
kn_5 = 0.063100

# Makeup gain 5 [G]: 0.001000..1000.000000
mk_5 = 1.000000

# Hue  5: 0.000000..1.000000
hue_5 = 0.625000

# Sidechain source 6: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_6 = 0

# Sidechain mode 6: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_6 = 3

# Sidechain lookahead 6 [ms]: 0.000000..20.000000
sla_6 = 4.000000

# Sidechain reactivity 6 [ms]: 0.000000..250.000000
scr_6 = 16.000000

# Sidechain preamp 6 [G]: 0.000000..100.000000
scp_6 = 1.000000

# Sidechain custom lo-cut 6 [boolean]: true/false
sclc_6 = false

# Sidechain custom hi-cut 6 [boolean]: true/false
schc_6 = false

# Sidechain lo-cut frequency 6 [Hz]: 20.000000..20000.000000
sclf_6 = 3984.000000

# Sidechain hi-cut frequency 6 [Hz]: 20.000000..20000.000000
schf_6 = 10000.000000

# Compression mode 6: 0..1
#   0: Down
#   1: Up
cm_6 = 1

# Compressor enable 6 [boolean]: true/false
ce_6 = true

# Solo band 6 [boolean]: true/false
bs_6 = false

# Mute band 6 [boolean]: true/false
bm_6 = false

# Attack level 6 [G]: 0.001000..1.000000
al_6 = 0.125893

# Attack time 6 [ms]: 0.000000..2000.000000
at_6 = 1.000000

# Relative release level 6 [G]: 0.000000..63.095749
rrl_6 = 0.000000

# Release time 6 [ms]: 0.000000..5000.000000
rt_6 = 4.000000

# Ratio 6: 1.000000..100.000000
cr_6 = 1.480000

# Knee 6 [G]: 0.063100..1.000000
kn_6 = 0.063100

# Makeup gain 6 [G]: 0.001000..1000.000000
mk_6 = 1.000000

# Hue  6: 0.000000..1.000000
hue_6 = 0.750000

# Sidechain source 7: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_7 = 0

# Sidechain mode 7: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_7 = 3

# Sidechain lookahead 7 [ms]: 0.000000..20.000000
sla_7 = 4.000000

# Sidechain reactivity 7 [ms]: 0.000000..250.000000
scr_7 = 12.000000

# Sidechain preamp 7 [G]: 0.000000..100.000000
scp_7 = 1.000000

# Sidechain custom lo-cut 7 [boolean]: true/false
sclc_7 = false

# Sidechain custom hi-cut 7 [boolean]: true/false
schc_7 = false

# Sidechain lo-cut frequency 7 [Hz]: 20.000000..20000.000000
sclf_7 = 10000.000000

# Sidechain hi-cut frequency 7 [Hz]: 20.000000..20000.000000
schf_7 = 20000.000000

# Compression mode 7: 0..1
#   0: Down
#   1: Up
cm_7 = 1

# Compressor enable 7 [boolean]: true/false
ce_7 = true

# Solo band 7 [boolean]: true/false
bs_7 = false

# Mute band 7 [boolean]: true/false
bm_7 = false

# Attack level 7 [G]: 0.001000..1.000000
al_7 = 0.125893

# Attack time 7 [ms]: 0.000000..2000.000000
at_7 = 0.500000

# Relative release level 7 [G]: 0.000000..63.095749
rrl_7 = 0.000000

# Release time 7 [ms]: 0.000000..5000.000000
rt_7 = 2.000000

# Ratio 7: 1.000000..100.000000
cr_7 = 1.480000

# Knee 7 [G]: 0.063100..1.000000
kn_7 = 0.063100

# Makeup gain 7 [G]: 0.001000..1000.000000
mk_7 = 1.000000

# Hue  7: 0.000000..1.000000
hue_7 = 0.875000

#-------------------------------------------------------------------------------

There are seem to be some subtle audible differences in different modes of the limiter but they all still sound really-really violently wrong in comparison to CML.

I think this is a sort of taste. I'm always using LSP limiter for mixing purposes and it behaves much better in tasks where short peaks should be eliminated. I discarded to use single-band Calf limiter there since it couldn't pump enough loudness and sounded dull and blured, especially for 180+ bpm heavy metal music. So probably yes, there are tasks for which this limiter is not good.

Maybe it's fine for a particular task on a particular instrument but for my case of just pumping system's entire audio stream it's quite disastrous. I don't remember if I tried Calf's single-band limiter, maybe at first install only, because I immediately set up CML:
screenshot_2020-02-13_07:42:50
Which is especially great for listening to Youtubers talk with their crappy microphone setups and complete lack of limiting and/or sensitivity calibration.

Try listening to this metal version of JoJo's Part 5/1 opening or his Red Sun and Rules of Nature covers with low threshold in limiter. Even still, In Classic it seems especially distorted. Maybe it's a nature of single-band versus multi-band, I don't know.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 13, 2020

Tried github-issue-71-1 branch

This branch is still in development, there's nothing to test yet.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 13, 2020

At low-powered signals we're getting infinite gain boost and this cranks up bandpass filters with NaNs. This 'infinite' boost should be aborted at lower-level signals, so I'm currently working on additional knee that will set fixed amplification level below the -72dB threshold.

@v-fox
Copy link
Author

v-fox commented Feb 13, 2020

This branch is still in development, there's nothing to test yet.

Well, at least it includes 17712e9

At low-powered signals we're getting infinite gain boost and this cranks up bandpass filters with NaNs. This 'infinite' boost should be aborted at lower-level signals, so I'm currently working on additional knee that will set fixed amplification level below the -72dB threshold.

Any particular reason for -72db ? Could it be made configurable ? It would be really nice for all things to span across entire audible range of 144db. Sometimes input signal might be heavily decreased to create "wider working range" with faint sounds being choked really low or it may be desirable to amplify lows to check if they are some random noise or useful sounds, like funky echoes or drown out speech. Not so much, when it's that low, but it's still, technically, in human audible range that's detected by mics and encoded in recordings.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 13, 2020

@v-fox Sorry, due to unknown reason I've edited your comment.
Really sorry.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 13, 2020

Well, at least it includes 17712e9

But that's not correct implementation with clashing knees when they're near one to another.

Any particular reason for -72db ? Could it be made configurable ?

Yes, I think I can do it configurable. I'll keep it -72dB by default. Anyway, this knee with such settings won't be visible on the graph. So currently to ensure that it's behaving correctly, I've set it to -48 dB.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 13, 2020

Added additional knee for upward compressor on -72 dB range. Now compressors should not blow up. Please try to build from github-issue-71 branch.
If all is OK, then I'll add control for the lower-bound knee.
Thus, I currently have no idea how to call this knee. Maybe cancellation knee?

@v-fox
Copy link
Author

v-fox commented Feb 14, 2020

Yes, I think I can do it configurable. I'll keep it -72dB by default. Anyway, this knee with such settings won't be visible on the graph. So currently to ensure that it's behaving correctly, I've set it to -48 dB.

But -48db is quite low if you target to uplift -48 to -96 or -144 and don't touch 0 to -24 or -36 at all by decreasing attack level, so amplification mostly would happen at about 24-64 range.

Added additional knee for upward compressor on -72 dB range. Now compressors should not blow up. Please try to build from github-issue-71 branch.
If all is OK, then I'll add control for the lower-bound knee.
Thus, I currently have no idea how to call this knee. Maybe cancellation knee?

Not only did it fixed self-muting and lack of output visualization, it also fixed #72 ! Personally, as amateur, I would call normal knee "upper/upside/top" and this one - "lower/downside/bottom" because the normal one controls smoothness of compression on peaks while this one "chokes" self-looping at "the bottom". But it is a protection feature rather than strictly sound shaping one, so I don't know.

And speaking of knees, I've noticed that "SC Boost" feature basically nullifies "upward" compression mode on >1KHz frequencies. But when I disabled it, quiet music with echoing background beat would overload the compressor's output, so only limiter would help from overloading DAC, as expected. Particularly, this track ("Time To Make History" cover from "PERSONA4 meets BASS×BASS" album). I might just have been too aggressive with amplification in general because fiddling with attack and release timings had no effect. "SC Boost" removes that but only because it forces lower amplification on higher frequencies.

So, I thought that maybe a 2-stage compression is in order, to actually smooth out such peaks beyond >0db to infinity, like what CML is doing in this case, so it sounds fine. Which means either adding another knee, basically using both "normal/down" and "up" modes simultaneously, running another compressor in down-mode or just leave it be and let CML smooth it out, as it does.

Compressor used these settings with limiter right after it with -12db threshold:
#-------------------------------------------------------------------------------
#
# This file contains configuration of the audio plugin.
#   Plugin name:         Multi-band Kompressor Stereo x8 (Multiband Compressor Stereo x8)
#   Plugin version:      1.0.1
#   LV2 URI:             http://lsp-plug.in/plugins/lv2/mb_compressor_stereo
#   VST identifier:      gjsn
#   LADSPA identifier:   5002135
# 
# (C) Linux Studio Plugins Project 
#   http://lsp-plug.in/ 
# 
#-------------------------------------------------------------------------------

# Compressor mode: 0..1
#   0: Classic
#   1: Modern
mode = 1

# Input gain [G]: 0.000000..10.000000
g_in = 1.000000

# Output gain [G]: 0.000000..10.000000
g_out = 0.158489

# Dry gain [G]: 0.000000..10.000000
g_dry = 0.000000

# Wet gain [G]: 0.000000..10.000000
g_wet = 1.000000

# FFT reactivity [ms]: 0.000000..1.000000
react = 0.200000

# Shift gain [G]: 0.000000..100.000000
shift = 1.000000

# Graph zoom [G]: 0.125890..1.000000
zoom = 1.000000

# Envelope boost: 0..4
#   0: None
#   1: Pink BT
#   2: Pink MT
#   3: Brown BT
#   4: Brown MT
envb = 0

# Band selection: 0..8
#   0: Split
#   1: Band 0
#   2: Band 1
#   3: Band 2
#   4: Band 3
#   5: Band 4
#   6: Band 5
#   7: Band 6
#   8: Band 7
bsel = 0

# Band filter curves [boolean]: true/false
flt = true

# Input FFT graph enable Left [boolean]: true/false
ife_l = true

# Output FFT graph enable Left [boolean]: true/false
ofe_l = true

# Input FFT graph enable Right [boolean]: true/false
ife_r = true

# Output FFT graph enable Right [boolean]: true/false
ofe_r = true

# Compression band enable 1 [boolean]: true/false
cbe_1 = true

# Split frequency 1 [Hz]: 20.000000..20000.000000
sf_1 = 55.000000

# Compression band enable 2 [boolean]: true/false
cbe_2 = true

# Split frequency 2 [Hz]: 20.000000..20000.000000
sf_2 = 110.000000

# Compression band enable 3 [boolean]: true/false
cbe_3 = true

# Split frequency 3 [Hz]: 20.000000..20000.000000
sf_3 = 220.000000

# Compression band enable 4 [boolean]: true/false
cbe_4 = true

# Split frequency 4 [Hz]: 20.000000..20000.000000
sf_4 = 440.000000

# Compression band enable 5 [boolean]: true/false
cbe_5 = true

# Split frequency 5 [Hz]: 20.000000..20000.000000
sf_5 = 1760.000000

# Compression band enable 6 [boolean]: true/false
cbe_6 = true

# Split frequency 6 [Hz]: 20.000000..20000.000000
sf_6 = 3520.000000

# Compression band enable 7 [boolean]: true/false
cbe_7 = true

# Split frequency 7 [Hz]: 20.000000..20000.000000
sf_7 = 7040.000000

# Sidechain source 0: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_0 = 0

# Sidechain mode 0: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_0 = 3

# Sidechain lookahead 0 [ms]: 0.000000..20.000000
sla_0 = 4.000000

# Sidechain reactivity 0 [ms]: 0.000000..250.000000
scr_0 = 32.000000

# Sidechain preamp 0 [G]: 0.000000..100.000000
scp_0 = 1.000000

# Sidechain custom lo-cut 0 [boolean]: true/false
sclc_0 = false

# Sidechain custom hi-cut 0 [boolean]: true/false
schc_0 = false

# Sidechain lo-cut frequency 0 [Hz]: 20.000000..20000.000000
sclf_0 = 20.000000

# Sidechain hi-cut frequency 0 [Hz]: 20.000000..20000.000000
schf_0 = 40.000000

# Compression mode 0: 0..1
#   0: Down
#   1: Up
cm_0 = 1

# Compressor enable 0 [boolean]: true/false
ce_0 = true

# Solo band 0 [boolean]: true/false
bs_0 = false

# Mute band 0 [boolean]: true/false
bm_0 = false

# Attack level 0 [G]: 0.001000..1.000000
al_0 = 0.063096

# Attack time 0 [ms]: 0.000000..2000.000000
at_0 = 32.000000

# Relative release level 0 [G]: 0.000000..63.095749
rrl_0 = 0.000000

# Release time 0 [ms]: 0.000000..5000.000000
rt_0 = 128.000000

# Ratio 0: 1.000000..100.000000
cr_0 = 2.080000

# Knee 0 [G]: 0.063100..1.000000
kn_0 = 0.100000

# Makeup gain 0 [G]: 0.001000..1000.000000
mk_0 = 1.000000

# Hue  0: 0.000000..1.000000
hue_0 = 0.000000

# Sidechain source 1: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_1 = 0

# Sidechain mode 1: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_1 = 3

# Sidechain lookahead 1 [ms]: 0.000000..20.000000
sla_1 = 4.000000

# Sidechain reactivity 1 [ms]: 0.000000..250.000000
scr_1 = 28.000000

# Sidechain preamp 1 [G]: 0.000000..100.000000
scp_1 = 1.000000

# Sidechain custom lo-cut 1 [boolean]: true/false
sclc_1 = false

# Sidechain custom hi-cut 1 [boolean]: true/false
schc_1 = false

# Sidechain lo-cut frequency 1 [Hz]: 20.000000..20000.000000
sclf_1 = 40.000000

# Sidechain hi-cut frequency 1 [Hz]: 20.000000..20000.000000
schf_1 = 100.000000

# Compression mode 1: 0..1
#   0: Down
#   1: Up
cm_1 = 1

# Compressor enable 1 [boolean]: true/false
ce_1 = true

# Solo band 1 [boolean]: true/false
bs_1 = false

# Mute band 1 [boolean]: true/false
bm_1 = false

# Attack level 1 [G]: 0.001000..1.000000
al_1 = 0.063096

# Attack time 1 [ms]: 0.000000..2000.000000
at_1 = 28.000000

# Relative release level 1 [G]: 0.000000..63.095749
rrl_1 = 0.000000

# Release time 1 [ms]: 0.000000..5000.000000
rt_1 = 112.000000

# Ratio 1: 1.000000..100.000000
cr_1 = 2.080000

# Knee 1 [G]: 0.063100..1.000000
kn_1 = 0.100000

# Makeup gain 1 [G]: 0.001000..1000.000000
mk_1 = 1.000000

# Hue  1: 0.000000..1.000000
hue_1 = 0.125000

# Sidechain source 2: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_2 = 0

# Sidechain mode 2: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_2 = 3

# Sidechain lookahead 2 [ms]: 0.000000..20.000000
sla_2 = 4.000000

# Sidechain reactivity 2 [ms]: 0.000000..250.000000
scr_2 = 26.000000

# Sidechain preamp 2 [G]: 0.000000..100.000000
scp_2 = 1.000000

# Sidechain custom lo-cut 2 [boolean]: true/false
sclc_2 = false

# Sidechain custom hi-cut 2 [boolean]: true/false
schc_2 = false

# Sidechain lo-cut frequency 2 [Hz]: 20.000000..20000.000000
sclf_2 = 100.000000

# Sidechain hi-cut frequency 2 [Hz]: 20.000000..20000.000000
schf_2 = 252.000000

# Compression mode 2: 0..1
#   0: Down
#   1: Up
cm_2 = 1

# Compressor enable 2 [boolean]: true/false
ce_2 = true

# Solo band 2 [boolean]: true/false
bs_2 = false

# Mute band 2 [boolean]: true/false
bm_2 = false

# Attack level 2 [G]: 0.001000..1.000000
al_2 = 0.063096

# Attack time 2 [ms]: 0.000000..2000.000000
at_2 = 26.000000

# Relative release level 2 [G]: 0.000000..63.095749
rrl_2 = 0.000000

# Release time 2 [ms]: 0.000000..5000.000000
rt_2 = 104.000000

# Ratio 2: 1.000000..100.000000
cr_2 = 2.080000

# Knee 2 [G]: 0.063100..1.000000
kn_2 = 0.100000

# Makeup gain 2 [G]: 0.001000..1000.000000
mk_2 = 1.000000

# Hue  2: 0.000000..1.000000
hue_2 = 0.250000

# Sidechain source 3: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_3 = 0

# Sidechain mode 3: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_3 = 3

# Sidechain lookahead 3 [ms]: 0.000000..20.000000
sla_3 = 4.000000

# Sidechain reactivity 3 [ms]: 0.000000..250.000000
scr_3 = 24.000000

# Sidechain preamp 3 [G]: 0.000000..100.000000
scp_3 = 1.000000

# Sidechain custom lo-cut 3 [boolean]: true/false
sclc_3 = false

# Sidechain custom hi-cut 3 [boolean]: true/false
schc_3 = false

# Sidechain lo-cut frequency 3 [Hz]: 20.000000..20000.000000
sclf_3 = 252.000000

# Sidechain hi-cut frequency 3 [Hz]: 20.000000..20000.000000
schf_3 = 632.000000

# Compression mode 3: 0..1
#   0: Down
#   1: Up
cm_3 = 1

# Compressor enable 3 [boolean]: true/false
ce_3 = true

# Solo band 3 [boolean]: true/false
bs_3 = false

# Mute band 3 [boolean]: true/false
bm_3 = false

# Attack level 3 [G]: 0.001000..1.000000
al_3 = 0.063096

# Attack time 3 [ms]: 0.000000..2000.000000
at_3 = 24.000000

# Relative release level 3 [G]: 0.000000..63.095749
rrl_3 = 0.000000

# Release time 3 [ms]: 0.000000..5000.000000
rt_3 = 96.000000

# Ratio 3: 1.000000..100.000000
cr_3 = 2.080000

# Knee 3 [G]: 0.063100..1.000000
kn_3 = 0.100000

# Makeup gain 3 [G]: 0.001000..1000.000000
mk_3 = 1.000000

# Hue  3: 0.000000..1.000000
hue_3 = 0.375000

# Sidechain source 4: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_4 = 0

# Sidechain mode 4: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_4 = 3

# Sidechain lookahead 4 [ms]: 0.000000..20.000000
sla_4 = 4.000000

# Sidechain reactivity 4 [ms]: 0.000000..250.000000
scr_4 = 16.000000

# Sidechain preamp 4 [G]: 0.000000..100.000000
scp_4 = 1.000000

# Sidechain custom lo-cut 4 [boolean]: true/false
sclc_4 = false

# Sidechain custom hi-cut 4 [boolean]: true/false
schc_4 = false

# Sidechain lo-cut frequency 4 [Hz]: 20.000000..20000.000000
sclf_4 = 632.000000

# Sidechain hi-cut frequency 4 [Hz]: 20.000000..20000.000000
schf_4 = 1587.000000

# Compression mode 4: 0..1
#   0: Down
#   1: Up
cm_4 = 1

# Compressor enable 4 [boolean]: true/false
ce_4 = true

# Solo band 4 [boolean]: true/false
bs_4 = false

# Mute band 4 [boolean]: true/false
bm_4 = false

# Attack level 4 [G]: 0.001000..1.000000
al_4 = 0.063096

# Attack time 4 [ms]: 0.000000..2000.000000
at_4 = 16.000000

# Relative release level 4 [G]: 0.000000..63.095749
rrl_4 = 0.000000

# Release time 4 [ms]: 0.000000..5000.000000
rt_4 = 64.000000

# Ratio 4: 1.000000..100.000000
cr_4 = 2.080000

# Knee 4 [G]: 0.063100..1.000000
kn_4 = 0.100000

# Makeup gain 4 [G]: 0.001000..1000.000000
mk_4 = 1.000000

# Hue  4: 0.000000..1.000000
hue_4 = 0.500000

# Sidechain source 5: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_5 = 0

# Sidechain mode 5: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_5 = 3

# Sidechain lookahead 5 [ms]: 0.000000..20.000000
sla_5 = 4.000000

# Sidechain reactivity 5 [ms]: 0.000000..250.000000
scr_5 = 12.000000

# Sidechain preamp 5 [G]: 0.000000..100.000000
scp_5 = 1.000000

# Sidechain custom lo-cut 5 [boolean]: true/false
sclc_5 = false

# Sidechain custom hi-cut 5 [boolean]: true/false
schc_5 = false

# Sidechain lo-cut frequency 5 [Hz]: 20.000000..20000.000000
sclf_5 = 1587.000000

# Sidechain hi-cut frequency 5 [Hz]: 20.000000..20000.000000
schf_5 = 3984.000000

# Compression mode 5: 0..1
#   0: Down
#   1: Up
cm_5 = 1

# Compressor enable 5 [boolean]: true/false
ce_5 = true

# Solo band 5 [boolean]: true/false
bs_5 = false

# Mute band 5 [boolean]: true/false
bm_5 = false

# Attack level 5 [G]: 0.001000..1.000000
al_5 = 0.063096

# Attack time 5 [ms]: 0.000000..2000.000000
at_5 = 12.000000

# Relative release level 5 [G]: 0.000000..63.095749
rrl_5 = 0.000000

# Release time 5 [ms]: 0.000000..5000.000000
rt_5 = 48.000000

# Ratio 5: 1.000000..100.000000
cr_5 = 2.080000

# Knee 5 [G]: 0.063100..1.000000
kn_5 = 0.100000

# Makeup gain 5 [G]: 0.001000..1000.000000
mk_5 = 1.000000

# Hue  5: 0.000000..1.000000
hue_5 = 0.625000

# Sidechain source 6: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_6 = 0

# Sidechain mode 6: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_6 = 3

# Sidechain lookahead 6 [ms]: 0.000000..20.000000
sla_6 = 4.000000

# Sidechain reactivity 6 [ms]: 0.000000..250.000000
scr_6 = 8.000000

# Sidechain preamp 6 [G]: 0.000000..100.000000
scp_6 = 1.000000

# Sidechain custom lo-cut 6 [boolean]: true/false
sclc_6 = false

# Sidechain custom hi-cut 6 [boolean]: true/false
schc_6 = false

# Sidechain lo-cut frequency 6 [Hz]: 20.000000..20000.000000
sclf_6 = 3984.001221

# Sidechain hi-cut frequency 6 [Hz]: 20.000000..20000.000000
schf_6 = 10000.000977

# Compression mode 6: 0..1
#   0: Down
#   1: Up
cm_6 = 1

# Compressor enable 6 [boolean]: true/false
ce_6 = true

# Solo band 6 [boolean]: true/false
bs_6 = false

# Mute band 6 [boolean]: true/false
bm_6 = false

# Attack level 6 [G]: 0.001000..1.000000
al_6 = 0.044668

# Attack time 6 [ms]: 0.000000..2000.000000
at_6 = 8.000000

# Relative release level 6 [G]: 0.000000..63.095749
rrl_6 = 0.000000

# Release time 6 [ms]: 0.000000..5000.000000
rt_6 = 32.000000

# Ratio 6: 1.000000..100.000000
cr_6 = 1.920000

# Knee 6 [G]: 0.063100..1.000000
kn_6 = 0.251189

# Makeup gain 6 [G]: 0.001000..1000.000000
mk_6 = 1.000000

# Hue  6: 0.000000..1.000000
hue_6 = 0.750000

# Sidechain source 7: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_7 = 0

# Sidechain mode 7: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_7 = 3

# Sidechain lookahead 7 [ms]: 0.000000..20.000000
sla_7 = 4.000000

# Sidechain reactivity 7 [ms]: 0.000000..250.000000
scr_7 = 4.000000

# Sidechain preamp 7 [G]: 0.000000..100.000000
scp_7 = 1.000000

# Sidechain custom lo-cut 7 [boolean]: true/false
sclc_7 = false

# Sidechain custom hi-cut 7 [boolean]: true/false
schc_7 = false

# Sidechain lo-cut frequency 7 [Hz]: 20.000000..20000.000000
sclf_7 = 10000.000000

# Sidechain hi-cut frequency 7 [Hz]: 20.000000..20000.000000
schf_7 = 20000.000000

# Compression mode 7: 0..1
#   0: Down
#   1: Up
cm_7 = 1

# Compressor enable 7 [boolean]: true/false
ce_7 = true

# Solo band 7 [boolean]: true/false
bs_7 = false

# Mute band 7 [boolean]: true/false
bm_7 = false

# Attack level 7 [G]: 0.001000..1.000000
al_7 = 0.063096

# Attack time 7 [ms]: 0.000000..2000.000000
at_7 = 4.000000

# Relative release level 7 [G]: 0.000000..63.095749
rrl_7 = 0.000000

# Release time 7 [ms]: 0.000000..5000.000000
rt_7 = 16.000000

# Ratio 7: 1.000000..100.000000
cr_7 = 2.080000

# Knee 7 [G]: 0.063100..1.000000
kn_7 = 0.100000

# Makeup gain 7 [G]: 0.001000..1000.000000
mk_7 = 1.000000

# Hue  7: 0.000000..1.000000
hue_7 = 0.875000

#-------------------------------------------------------------------------------

Although, anything in up-mode should behave the same. Latency of the pipeline also gone up from 13-14ms to 18-19ms, mainly because of compressor and limiter but previously compressor would show 0ms with limiter bypassed which was weird, now its ~16ms. But attack and lookahead time in compressor do not seem to change latency measured by lsp-plugins-latency-meter noticeably.

My goal with this was to decrease dynamic range of recordings to "recover" "lost details" when played on lower DAC volume but avoid squashing peaks by bringing up background lows instead of normal compression or limiting with low threshold. Not sure if what's came out is "better" but it sure is "different"…

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 14, 2020

But -48db is quite low if you target to uplift -48 to -96 or -144 and don't touch 0 to -24 or -36 at all by decreasing attack level, so amplification mostly would happen at about 24-64 range.

I know, it's just to see on the graph that both knees are working well when changing compressor's threshold value.

Not only did it fixed self-muting and lack of output visualization, it also fixed #72 !

Nice to hear that.

Personally, as amateur, I would call normal knee "upper/upside/top"

I've decided to call it 'Boost threshold'. Below this threshold, compressor has a constant finite boost gain applied to the audio signal.

I'm currently working on adding 'Boost' knob to the compressor's interface.

And speaking of knees, I've noticed that "SC Boost" feature basically nullifies "upward" compression mode on >1KHz frequencies.

You probably don't understand well how does 'SC Boost' work. 'SC Boost' is additionally designed filter that applies +3dB/oct boost to the audio spectrum at the whole audible range of frequencies.
So if you've tuned your compressors without 'SC Boost' option and then enabled it, higher frequencies of the sidechain will get boosted, the compressor's envelope will raise and you'll get compressors not working. To compensate this behaviour, just lower 'SC Preamp' knob so the compressor's working point will return at the usual place.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 14, 2020

Now there's a 'Boost' knob in the UI that allows to control the threshold for both multiband and single-band compressors.

@v-fox
Copy link
Author

v-fox commented Feb 14, 2020

Not only did it fixed self-muting and lack of output visualization, it also fixed #72 !

Nice to hear that.

…actually, I might have been too quick to say that #72 is gone. It seems that it's just became quieter.

And speaking of knees, I've noticed that "SC Boost" feature basically nullifies "upward" compression mode on >1KHz frequencies.

You probably don't understand well how does 'SC Boost' work. 'SC Boost' is additionally designed filter that applies +3dB/oct boost to the audio spectrum at the whole audible range of frequencies.
So if you've tuned your compressors without 'SC Boost' option and then enabled it, higher frequencies of the sidechain will get boosted, the compressor's envelope will raise and you'll get compressors not working. To compensate this behaviour, just lower 'SC Preamp' knob so the compressor's working point will return at the usual place.

Indeed, my "understanding" would be an overstatement, it's a "notion" at best.
So, compensation for "Pink" would be "minus 3" even in up-mode ?
That musical track still "blows up" 1760-3520 frequency band though BUT it's not visible in LSP compressor's output, only on input that goes after it. Maybe the peak is "too fast" to be visualized.

Now there's a 'Boost' knob in the UI that allows to control the threshold for both multiband and single-band compressors.

I will check it out, openSUSE Build Service seems to have broke for the moment.

@v-fox
Copy link
Author

v-fox commented Feb 15, 2020

Now there's a 'Boost' knob in the UI that allows to control the threshold for both multiband and single-band compressors.

I will check it out, openSUSE Build Service seems to have broke for the moment.

Finally tested it out with patch for #77 over github-issue-71 branch. Curve seems nice, however, it does not restore from configurations the way it was saved, by default it's not exactly 72db and saving 116db turns into 113,98db on restore.

That musical track still "blows up" 1760-3520 frequency band though BUT it's not visible in LSP compressor's output, only on input that goes after it. Maybe the peak is "too fast" to be visualized.

A little clarification: by "blows up" I mean that further plugins in pipeline, such as limiter, detect peak of about +16db over 0db even though visual averaging in compressor itself never seem to exceed 0db or comes close to it. Even with newer, conservative config that accounts for the new knee, I get up to +13db bumps at these frequencies on the beat while whole signal does not seem to clip over 0db.

This is the config for the version with "boost" knob. Compressor is set to -12db on output and further limiter is set to -12db threshold, otherwise everything else, other than peaks, is too low. +9db is there for compressor's input because previous plugins have 9-12db of attenuation on them.
#-------------------------------------------------------------------------------
#
# This file contains configuration of the audio plugin.
#   Plugin name:         Multi-band Kompressor Stereo x8 (Multiband Compressor Stereo x8)
#   Plugin version:      1.0.1
#   LV2 URI:             http://lsp-plug.in/plugins/lv2/mb_compressor_stereo
#   VST identifier:      gjsn
#   LADSPA identifier:   5002135
# 
# (C) Linux Studio Plugins Project 
#   http://lsp-plug.in/ 
# 
#-------------------------------------------------------------------------------

# Compressor mode: 0..1
#   0: Classic
#   1: Modern
mode = 1

# Input gain [G]: 0.000000..10.000000
g_in = 2.818383

# Output gain [G]: 0.000000..10.000000
g_out = 0.251189

# Dry gain [G]: 0.000000..10.000000
g_dry = 0.000000

# Wet gain [G]: 0.000000..10.000000
g_wet = 1.000000

# FFT reactivity [ms]: 0.000000..1.000000
react = 0.200000

# Shift gain [G]: 0.000000..100.000000
shift = 1.000000

# Graph zoom [G]: 0.125890..1.000000
zoom = 1.000000

# Envelope boost: 0..4
#   0: None
#   1: Pink BT
#   2: Pink MT
#   3: Brown BT
#   4: Brown MT
envb = 2

# Band selection: 0..8
#   0: Split
#   1: Band 0
#   2: Band 1
#   3: Band 2
#   4: Band 3
#   5: Band 4
#   6: Band 5
#   7: Band 6
#   8: Band 7
bsel = 0

# Band filter curves [boolean]: true/false
flt = true

# Input FFT graph enable Left [boolean]: true/false
ife_l = true

# Output FFT graph enable Left [boolean]: true/false
ofe_l = true

# Input FFT graph enable Right [boolean]: true/false
ife_r = true

# Output FFT graph enable Right [boolean]: true/false
ofe_r = true

# Compression band enable 1 [boolean]: true/false
cbe_1 = true

# Split frequency 1 [Hz]: 20.000000..20000.000000
sf_1 = 55.000000

# Compression band enable 2 [boolean]: true/false
cbe_2 = true

# Split frequency 2 [Hz]: 20.000000..20000.000000
sf_2 = 110.000000

# Compression band enable 3 [boolean]: true/false
cbe_3 = true

# Split frequency 3 [Hz]: 20.000000..20000.000000
sf_3 = 220.000000

# Compression band enable 4 [boolean]: true/false
cbe_4 = true

# Split frequency 4 [Hz]: 20.000000..20000.000000
sf_4 = 440.000000

# Compression band enable 5 [boolean]: true/false
cbe_5 = true

# Split frequency 5 [Hz]: 20.000000..20000.000000
sf_5 = 1760.000000

# Compression band enable 6 [boolean]: true/false
cbe_6 = true

# Split frequency 6 [Hz]: 20.000000..20000.000000
sf_6 = 3520.000000

# Compression band enable 7 [boolean]: true/false
cbe_7 = true

# Split frequency 7 [Hz]: 20.000000..20000.000000
sf_7 = 7040.000000

# Sidechain source 0: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_0 = 0

# Sidechain mode 0: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_0 = 3

# Sidechain lookahead 0 [ms]: 0.000000..20.000000
sla_0 = 4.000000

# Sidechain reactivity 0 [ms]: 0.000000..250.000000
scr_0 = 32.000000

# Sidechain preamp 0 [G]: 0.000000..100.000000
scp_0 = 0.707946

# Sidechain custom lo-cut 0 [boolean]: true/false
sclc_0 = false

# Sidechain custom hi-cut 0 [boolean]: true/false
schc_0 = false

# Sidechain lo-cut frequency 0 [Hz]: 20.000000..20000.000000
sclf_0 = 20.000000

# Sidechain hi-cut frequency 0 [Hz]: 20.000000..20000.000000
schf_0 = 40.000000

# Compression mode 0: 0..1
#   0: Down
#   1: Up
cm_0 = 1

# Compressor enable 0 [boolean]: true/false
ce_0 = true

# Solo band 0 [boolean]: true/false
bs_0 = false

# Mute band 0 [boolean]: true/false
bm_0 = false

# Attack level 0 [G]: 0.001000..1.000000
al_0 = 0.125893

# Attack time 0 [ms]: 0.000000..2000.000000
at_0 = 32.000000

# Relative release level 0 [G]: 0.000000..63.095749
rrl_0 = 0.000000

# Release time 0 [ms]: 0.000000..5000.000000
rt_0 = 128.000000

# Ratio 0: 1.000000..100.000000
cr_0 = 1.640000

# Knee 0 [G]: 0.063100..1.000000
kn_0 = 0.063100

# Boost threshold 0 [G]: 0.000001..0.001000
bth_0 = 0.000016

# Makeup gain 0 [G]: 0.001000..1000.000000
mk_0 = 1.000000

# Hue  0: 0.000000..1.000000
hue_0 = 0.000000

# Sidechain source 1: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_1 = 0

# Sidechain mode 1: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_1 = 3

# Sidechain lookahead 1 [ms]: 0.000000..20.000000
sla_1 = 4.000000

# Sidechain reactivity 1 [ms]: 0.000000..250.000000
scr_1 = 28.000000

# Sidechain preamp 1 [G]: 0.000000..100.000000
scp_1 = 0.707946

# Sidechain custom lo-cut 1 [boolean]: true/false
sclc_1 = false

# Sidechain custom hi-cut 1 [boolean]: true/false
schc_1 = false

# Sidechain lo-cut frequency 1 [Hz]: 20.000000..20000.000000
sclf_1 = 40.000000

# Sidechain hi-cut frequency 1 [Hz]: 20.000000..20000.000000
schf_1 = 100.000000

# Compression mode 1: 0..1
#   0: Down
#   1: Up
cm_1 = 1

# Compressor enable 1 [boolean]: true/false
ce_1 = true

# Solo band 1 [boolean]: true/false
bs_1 = false

# Mute band 1 [boolean]: true/false
bm_1 = false

# Attack level 1 [G]: 0.001000..1.000000
al_1 = 0.125893

# Attack time 1 [ms]: 0.000000..2000.000000
at_1 = 28.000000

# Relative release level 1 [G]: 0.000000..63.095749
rrl_1 = 0.000000

# Release time 1 [ms]: 0.000000..5000.000000
rt_1 = 112.000000

# Ratio 1: 1.000000..100.000000
cr_1 = 1.640000

# Knee 1 [G]: 0.063100..1.000000
kn_1 = 0.063100

# Boost threshold 1 [G]: 0.000001..0.001000
bth_1 = 0.000016

# Makeup gain 1 [G]: 0.001000..1000.000000
mk_1 = 1.000000

# Hue  1: 0.000000..1.000000
hue_1 = 0.125000

# Sidechain source 2: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_2 = 0

# Sidechain mode 2: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_2 = 3

# Sidechain lookahead 2 [ms]: 0.000000..20.000000
sla_2 = 4.000000

# Sidechain reactivity 2 [ms]: 0.000000..250.000000
scr_2 = 26.000000

# Sidechain preamp 2 [G]: 0.000000..100.000000
scp_2 = 0.707946

# Sidechain custom lo-cut 2 [boolean]: true/false
sclc_2 = false

# Sidechain custom hi-cut 2 [boolean]: true/false
schc_2 = false

# Sidechain lo-cut frequency 2 [Hz]: 20.000000..20000.000000
sclf_2 = 100.000000

# Sidechain hi-cut frequency 2 [Hz]: 20.000000..20000.000000
schf_2 = 252.000000

# Compression mode 2: 0..1
#   0: Down
#   1: Up
cm_2 = 1

# Compressor enable 2 [boolean]: true/false
ce_2 = true

# Solo band 2 [boolean]: true/false
bs_2 = false

# Mute band 2 [boolean]: true/false
bm_2 = false

# Attack level 2 [G]: 0.001000..1.000000
al_2 = 0.125893

# Attack time 2 [ms]: 0.000000..2000.000000
at_2 = 26.000000

# Relative release level 2 [G]: 0.000000..63.095749
rrl_2 = 0.000000

# Release time 2 [ms]: 0.000000..5000.000000
rt_2 = 104.000000

# Ratio 2: 1.000000..100.000000
cr_2 = 1.640000

# Knee 2 [G]: 0.063100..1.000000
kn_2 = 0.063100

# Boost threshold 2 [G]: 0.000001..0.001000
bth_2 = 0.000016

# Makeup gain 2 [G]: 0.001000..1000.000000
mk_2 = 1.000000

# Hue  2: 0.000000..1.000000
hue_2 = 0.250000

# Sidechain source 3: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_3 = 0

# Sidechain mode 3: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_3 = 3

# Sidechain lookahead 3 [ms]: 0.000000..20.000000
sla_3 = 4.000000

# Sidechain reactivity 3 [ms]: 0.000000..250.000000
scr_3 = 24.000000

# Sidechain preamp 3 [G]: 0.000000..100.000000
scp_3 = 0.707946

# Sidechain custom lo-cut 3 [boolean]: true/false
sclc_3 = false

# Sidechain custom hi-cut 3 [boolean]: true/false
schc_3 = false

# Sidechain lo-cut frequency 3 [Hz]: 20.000000..20000.000000
sclf_3 = 252.000000

# Sidechain hi-cut frequency 3 [Hz]: 20.000000..20000.000000
schf_3 = 632.000000

# Compression mode 3: 0..1
#   0: Down
#   1: Up
cm_3 = 1

# Compressor enable 3 [boolean]: true/false
ce_3 = true

# Solo band 3 [boolean]: true/false
bs_3 = false

# Mute band 3 [boolean]: true/false
bm_3 = false

# Attack level 3 [G]: 0.001000..1.000000
al_3 = 0.125893

# Attack time 3 [ms]: 0.000000..2000.000000
at_3 = 24.000000

# Relative release level 3 [G]: 0.000000..63.095749
rrl_3 = 0.000000

# Release time 3 [ms]: 0.000000..5000.000000
rt_3 = 96.000000

# Ratio 3: 1.000000..100.000000
cr_3 = 1.640000

# Knee 3 [G]: 0.063100..1.000000
kn_3 = 0.063100

# Boost threshold 3 [G]: 0.000001..0.001000
bth_3 = 0.000016

# Makeup gain 3 [G]: 0.001000..1000.000000
mk_3 = 1.000000

# Hue  3: 0.000000..1.000000
hue_3 = 0.375000

# Sidechain source 4: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_4 = 0

# Sidechain mode 4: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_4 = 3

# Sidechain lookahead 4 [ms]: 0.000000..20.000000
sla_4 = 4.000000

# Sidechain reactivity 4 [ms]: 0.000000..250.000000
scr_4 = 16.000000

# Sidechain preamp 4 [G]: 0.000000..100.000000
scp_4 = 0.707946

# Sidechain custom lo-cut 4 [boolean]: true/false
sclc_4 = false

# Sidechain custom hi-cut 4 [boolean]: true/false
schc_4 = false

# Sidechain lo-cut frequency 4 [Hz]: 20.000000..20000.000000
sclf_4 = 632.000000

# Sidechain hi-cut frequency 4 [Hz]: 20.000000..20000.000000
schf_4 = 1587.000000

# Compression mode 4: 0..1
#   0: Down
#   1: Up
cm_4 = 1

# Compressor enable 4 [boolean]: true/false
ce_4 = true

# Solo band 4 [boolean]: true/false
bs_4 = false

# Mute band 4 [boolean]: true/false
bm_4 = false

# Attack level 4 [G]: 0.001000..1.000000
al_4 = 0.125893

# Attack time 4 [ms]: 0.000000..2000.000000
at_4 = 16.000000

# Relative release level 4 [G]: 0.000000..63.095749
rrl_4 = 0.000000

# Release time 4 [ms]: 0.000000..5000.000000
rt_4 = 64.000000

# Ratio 4: 1.000000..100.000000
cr_4 = 1.640000

# Knee 4 [G]: 0.063100..1.000000
kn_4 = 0.063100

# Boost threshold 4 [G]: 0.000001..0.001000
bth_4 = 0.000016

# Makeup gain 4 [G]: 0.001000..1000.000000
mk_4 = 1.000000

# Hue  4: 0.000000..1.000000
hue_4 = 0.500000

# Sidechain source 5: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_5 = 0

# Sidechain mode 5: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_5 = 3

# Sidechain lookahead 5 [ms]: 0.000000..20.000000
sla_5 = 4.000000

# Sidechain reactivity 5 [ms]: 0.000000..250.000000
scr_5 = 12.000000

# Sidechain preamp 5 [G]: 0.000000..100.000000
scp_5 = 0.707946

# Sidechain custom lo-cut 5 [boolean]: true/false
sclc_5 = false

# Sidechain custom hi-cut 5 [boolean]: true/false
schc_5 = false

# Sidechain lo-cut frequency 5 [Hz]: 20.000000..20000.000000
sclf_5 = 1587.000000

# Sidechain hi-cut frequency 5 [Hz]: 20.000000..20000.000000
schf_5 = 3984.000000

# Compression mode 5: 0..1
#   0: Down
#   1: Up
cm_5 = 1

# Compressor enable 5 [boolean]: true/false
ce_5 = true

# Solo band 5 [boolean]: true/false
bs_5 = false

# Mute band 5 [boolean]: true/false
bm_5 = false

# Attack level 5 [G]: 0.001000..1.000000
al_5 = 0.125893

# Attack time 5 [ms]: 0.000000..2000.000000
at_5 = 12.000000

# Relative release level 5 [G]: 0.000000..63.095749
rrl_5 = 0.000000

# Release time 5 [ms]: 0.000000..5000.000000
rt_5 = 48.000000

# Ratio 5: 1.000000..100.000000
cr_5 = 1.640000

# Knee 5 [G]: 0.063100..1.000000
kn_5 = 0.063100

# Boost threshold 5 [G]: 0.000001..0.001000
bth_5 = 0.000016

# Makeup gain 5 [G]: 0.001000..1000.000000
mk_5 = 1.000000

# Hue  5: 0.000000..1.000000
hue_5 = 0.625000

# Sidechain source 6: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_6 = 0

# Sidechain mode 6: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_6 = 3

# Sidechain lookahead 6 [ms]: 0.000000..20.000000
sla_6 = 4.000000

# Sidechain reactivity 6 [ms]: 0.000000..250.000000
scr_6 = 8.000000

# Sidechain preamp 6 [G]: 0.000000..100.000000
scp_6 = 0.707946

# Sidechain custom lo-cut 6 [boolean]: true/false
sclc_6 = false

# Sidechain custom hi-cut 6 [boolean]: true/false
schc_6 = false

# Sidechain lo-cut frequency 6 [Hz]: 20.000000..20000.000000
sclf_6 = 3984.001221

# Sidechain hi-cut frequency 6 [Hz]: 20.000000..20000.000000
schf_6 = 10000.000977

# Compression mode 6: 0..1
#   0: Down
#   1: Up
cm_6 = 1

# Compressor enable 6 [boolean]: true/false
ce_6 = true

# Solo band 6 [boolean]: true/false
bs_6 = false

# Mute band 6 [boolean]: true/false
bm_6 = false

# Attack level 6 [G]: 0.001000..1.000000
al_6 = 0.089125

# Attack time 6 [ms]: 0.000000..2000.000000
at_6 = 8.000000

# Relative release level 6 [G]: 0.000000..63.095749
rrl_6 = 0.000000

# Release time 6 [ms]: 0.000000..5000.000000
rt_6 = 32.000000

# Ratio 6: 1.000000..100.000000
cr_6 = 1.580000

# Knee 6 [G]: 0.063100..1.000000
kn_6 = 0.063100

# Boost threshold 6 [G]: 0.000001..0.001000
bth_6 = 0.000016

# Makeup gain 6 [G]: 0.001000..1000.000000
mk_6 = 1.000000

# Hue  6: 0.000000..1.000000
hue_6 = 0.750000

# Sidechain source 7: 0..3
#   0: Mid
#   1: Side
#   2: Left
#   3: Right
scs_7 = 0

# Sidechain mode 7: 0..3
#   0: Peak
#   1: RMS
#   2: LPF
#   3: Uniform
scm_7 = 3

# Sidechain lookahead 7 [ms]: 0.000000..20.000000
sla_7 = 4.000000

# Sidechain reactivity 7 [ms]: 0.000000..250.000000
scr_7 = 4.000000

# Sidechain preamp 7 [G]: 0.000000..100.000000
scp_7 = 0.707946

# Sidechain custom lo-cut 7 [boolean]: true/false
sclc_7 = false

# Sidechain custom hi-cut 7 [boolean]: true/false
schc_7 = false

# Sidechain lo-cut frequency 7 [Hz]: 20.000000..20000.000000
sclf_7 = 10000.000000

# Sidechain hi-cut frequency 7 [Hz]: 20.000000..20000.000000
schf_7 = 20000.000000

# Compression mode 7: 0..1
#   0: Down
#   1: Up
cm_7 = 1

# Compressor enable 7 [boolean]: true/false
ce_7 = true

# Solo band 7 [boolean]: true/false
bs_7 = false

# Mute band 7 [boolean]: true/false
bm_7 = false

# Attack level 7 [G]: 0.001000..1.000000
al_7 = 0.125893

# Attack time 7 [ms]: 0.000000..2000.000000
at_7 = 4.000000

# Relative release level 7 [G]: 0.000000..63.095749
rrl_7 = 0.000000

# Release time 7 [ms]: 0.000000..5000.000000
rt_7 = 16.000000

# Ratio 7: 1.000000..100.000000
cr_7 = 1.640000

# Knee 7 [G]: 0.063100..1.000000
kn_7 = 0.063100

# Boost threshold 7 [G]: 0.000001..0.001000
bth_7 = 0.000016

# Makeup gain 7 [G]: 0.001000..1000.000000
mk_7 = 1.000000

# Hue  7: 0.000000..1.000000
hue_7 = 0.875000

#-------------------------------------------------------------------------------

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 15, 2020

Finally tested it out with patch for #77 over github-issue-71 branch. Curve seems nice, however, it does not restore from configurations the way it was saved, by default it's not exactly 72db and saving 116db turns into 113,98db on restore.

That's rounding error. 116 dB is ~1,585e-06. All decibel values are converted into linear gain values before saving. Probably I need to tune saving of small values.

I mean that further plugins in pipeline, such as limiter, detect peak of about +16db over 0db even though visual averaging in compressor itself never seem to exceed 0db or comes close to it

Maybe because witih your settings the change is so quick that compressor does not catch the change and still proceeds + tens of decibels amplification?

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 15, 2020

This commit should solve serialization issue: 8df6b99

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 16, 2020

I've played with your track ("Time To Make History" cover from "PERSONA4 meets BASS×BASS" album) and got the following chain:
LSP Parameteric Equalizer x16 Stereo -> LSP Multiband Compressor Stereo -> LSP Limiter Stereo
with following settings:

01-para-eq-stereo.txt
02-mb-compressor-stereo.txt
03-limiter-stereo.txt

@v-fox
Copy link
Author

v-fox commented Feb 17, 2020

I mean that further plugins in pipeline, such as limiter, detect peak of about +16db over 0db even though visual averaging in compressor itself never seem to exceed 0db or comes close to it

Maybe because witih your settings the change is so quick that compressor does not catch the change and still proceeds + tens of decibels amplification?

Big amplification in the compressor even with -12db on its output, I'm scared of trying this without the limiter. Thought that maybe it does not decrease gain in time, tried turning lookahead and attack time but was unable to find settings that would stop that.

This commit should solve serialization issue: 8df6b99

Yep, restoring config seems fine now.

I've played with your track ("Time To Make History" cover from "PERSONA4 meets BASS×BASS" album) and got the following chain:
LSP Parameteric Equalizer x16 Stereo -> LSP Multiband Compressor Stereo -> LSP Limiter Stereo
with following settings:

01-para-eq-stereo.txt
02-mb-compressor-stereo.txt
03-limiter-stereo.txt

Not sure what do you mean, I attached compressor config (at small arrow) at #71 (comment) and previously so you could reproduce the peaks and see if:
a) it's normal for such configuration and can't be changed with slight change in settings.
b) it can be changed with slight change in settings without changing the whole sound of track.
c) it's a bug in up-mode of the compressor that prevents it from acting quick enough.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 17, 2020

Probably you mean this +12 dB peak at the start of track?

image

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 17, 2020

I belive using 'Peak' mode for the sidechain and short attack time will duck the amplification quickly. The lookahead should be around 2-4 times greater than the attack value. Also such setting requires to set longer release time. Otherwise you'll hear some kind of distortion when envelope will fall down.
Anyway, the accorging to my understanding, rim shot is too loud and too annoying in that track.
Maybe downward compression would be a better choice, as I've did in the #71 (comment) .

Here I've played with your settings.
mb-compressor-updated.txt

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 19, 2020

Merged changes into devel branch: 40ea31b

High peaks for rapidly changing signals are normal behaviour for upward compressor because if the signal is low, it's acting as an amplifier. When a signal peak occurs, there's not enough time for the compressor's envelope to grow enough and turn off amplification. To cut these rapidly growing peaks, you need to use sidechain input in peak mode, lookahead option and very low Attack values. Such settings do repeat behaviour of a limiter but still with a slight reactivity.

I think, there's nothing to do more in this topic and the topic should be marked as pending for release.

@sadko4u sadko4u added PENDING FOR RELEASE This issue will be added to the nearest upcoming release and removed discuss Discussing the issue labels Feb 19, 2020
@v-fox
Copy link
Author

v-fox commented Feb 19, 2020

Probably you mean this +12 dB peak at the start of track?

Well, more like on every beat.

I belive using 'Peak' mode for the sidechain and short attack time will duck the amplification quickly. The lookahead should be around 2-4 times greater than the attack value. Also such setting requires to set longer release time. Otherwise you'll hear some kind of distortion when envelope will fall down.
Anyway, the accorging to my understanding, rim shot is too loud and too annoying in that track.
Maybe downward compression would be a better choice, as I've did in the #71 (comment) .

Interesting, I should remember that. Luckily, CML squashes those peaks somewhat but I'm not sure if they could have been shaped more accurately instead.

Merged changes into devel branch: 40ea31b

Great !

High peaks for rapidly changing signals are normal behaviour for upward compressor because if the signal is low, it's acting as an amplifier. When a signal peak occurs, there's not enough time for the compressor's envelope to grow enough and turn off amplification. To cut these rapidly growing peaks, you need to use sidechain input in peak mode, lookahead option and very low Attack values. Such settings do repeat behaviour of a limiter but still with a slight reactivity.

"To use sidechain input in peak mode, lookahead option and very low Attack values" in same up-mode compressor or in 2nd-stage down-compressor ?

But keeping two compressor would introduce much more CPU load and latency. Could CPU & latency demand be lowered if a single compressor had some kind of "mixed-mode" with uniform amplification below attack threshold and compression above it (S-shaped curve) + its own "reverse boost-knee" that defines ≥0db-to-+24db threshold which it would not allow signal to cross by gradually compressing it, according to its curve, or would it be just a limiter ?

I think, there's nothing to do more in this topic and the topic should be marked as pending for release.

Indeed, as far as issues go. Everything else discussed is about additions.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 19, 2020

"To use sidechain input in peak mode, lookahead option and very low Attack values" in same up-mode compressor or in 2nd-stage down-compressor ?

It depends on tasks which you're going to solve. Anyway, please look at the file I've attached to #71 (comment)
It's your original settings file with changed sidechain mode, lookup attack and release values (and maybe some other values, I don't remember).

But keeping two compressor would introduce much more CPU load and latency. Could CPU & latency demand be lowered if a single compressor had some kind of "mixed-mode" with uniform amplification below attack threshold and compression above it (S-shaped curve)

I think it's too complicated behaviour for a single compressor. If I understand right, S-shaped curve won't help you. You can get an S-shaped curve just by setting high compression on the upward compressor.

with uniform amplification below attack threshold and compression above it

It sounds like just a downward compressor with adjusted makeup gain.

By the other side, your demand is clear. You want to avoid very aggressive peaks even if amplification is too high. For me it sounds like a limiter which tracks current envelope of the signal (RMS value) and provides dynamic threshold for limiting peaks above the fixed threshold over the RMS value. But it's not an upward compressor. It's some kind of advanced dynamic limiter (or, maybe, maximizer?). Anyway, good idea for a new plugin.

@sadko4u
Copy link
Collaborator

sadko4u commented Feb 25, 2020

I've created the #79 issue for an additional plugin.

@sub26nico
Copy link

I don't know if it is related to it or not but i have issues with the LSP Multiband Compressor. It happens not every time and i don't know how to reproduce it. It happens while making mastering tasks, with plugin (lv2 version) on the master bus on Ardour 5.12 or Mixbus 5.3.4. After some work on the tracks, the master bus meter become red and no sound anymore. if i by-pass the plugin, sound reappears. I can't reproduce it with vst version in Reaper 6. Ardour dialog window doesn't say nothing, and when i launch Ardour with the terminal it doesn't happen.
Feel free to ask me more details if it can help. Btw, thanks for this amazing plugin, i hope it can be fixed soon, there is no multiband compressor as versatile and efficient in linuxaudio galaxy.

@sadko4u
Copy link
Collaborator

sadko4u commented Mar 7, 2020

What plugins do you have in the chain before MB Compresor?
Do you use upward or downward compression?

It seems that compressor is blowing by NaNs (Not-a-number floating point values) at the input or internally at the processing stage.

@sub26nico
Copy link

What plugins do you have in the chain before MB Compresor?
Do you use upward or downward compression?

a-Compressor stereo -> LSP Parametric Equalizer x-16 Stereo -> LSP MB Compressor
IIUC, it's downward compression.

LSPMBComp

It seems that compressor is blowing by NaNs (Not-a-number floating point values) at the input or internally at the processing stage.

I have no technical knowledge to know, but i've already encounter this NaN issue with another plugins (Caps ampVTS lv2 IIRC, and other one but I can't remember which one), and I've seen the same behaviour (Meters in red and sound cuts).

@sadko4u
Copy link
Collaborator

sadko4u commented Mar 20, 2020

Changes available in 1.1.14 release!

@sadko4u sadko4u closed this as completed Mar 20, 2020
@sadko4u sadko4u removed the PENDING FOR RELEASE This issue will be added to the nearest upcoming release label Mar 20, 2020
@sadko4u
Copy link
Collaborator

sadko4u commented Mar 26, 2020

@sub26nico @v-fox
FYI I've created issue #82 and already pushed changes to the devel branch. At least these changes will guarantee that there won't be any NaNs, Infs or denormal values at the input of plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants