lsp-plugins / lsp-plugins-para-equalizer

Parameteric equalizer plugin series
GNU Lesser General Public License v3.0
3 stars 2 forks source link

Unlimited amount of Channels #7

Closed zDEFz closed 1 month ago

zDEFz commented 1 month ago

Using EE, I notice that the limit is 32 bands. Can we have unlimited amount? For science? I noticed that when visiting https://autoeq.app I can pick "Wavelet" and get a 141 Band output.

Of course you need to parse this still for Equalizer APO, but still. That's higher accuracy. Would this make any sense?

If I wanted to apply the full calibration for HD 800 S, I can't yet.

https://0x0.st/X61L.csv

sadko4u commented 1 month ago

The main problem is here, the understanding what the plugin actually is. The plugin can be imagined like a box with audio and MIDI inputs and audio and MIDI outputs which does some DSP processing on them inside. But that's not all. Plugins also have controls and output meters which allow to configure the DSP processing. And they need to show these controls to the host. That means that the number of controls is fixed and you need to decide the limit at the design stage of the plugin. Yes, you can hide some controls inside of the plugin and write the UI code that modifies these controls but that yields to serious drawback: controls are now not visible to the host, it can not change them except the UI provided to the user and can not automate them. So if equalizer had all controls hidden inside, there won't be possible for EasyEffects to provide their own front-end for the equalizer. For modern audio engineering, 32 independent filters for an equalizer is more than enough. If you still need more, you just can perform serial connection of multiple equalizers.

zDEFz commented 1 month ago

@sadko4u or load it straight into pipewire. We got a parametric module that loads well-formed APO presets. I am not aware of a Filter limit.

context.modules = [
    {
        name = libpipewire-module-parametric-equalizer
        args = {
            remote.name            = "pipewire-0"
            equalizer.filepath     = "/home/blu/git/mainrig-MS-7D51/.config/pipewire/pipewire.conf.d/EQ/HD800S/HD 800 S EQ amirm"
            equalizer.description  = "HD 800 S EQ amirm"
            audio.channels         = 2
            audio.position         = [ FL, FR ]
            playback.props = {
                node.name              = "EQ-amirm"
            }
            capture.props = {
                node.name              = "EQ-amirm"
            }
        }
    },
    {
        name = libpipewire-module-parametric-equalizer
        args = {
            remote.name            = "pipewire-0"
            equalizer.filepath     = "/home/blu/git/mainrig-MS-7D51/.config/pipewire/pipewire.conf.d/EQ/HD800S/HD 800 S EQ crinacle GRAS 43AG-7"
            equalizer.description  = "HD 800 S EQ crinacle GRAS 43AG-7"
            audio.channels         = 2
            audio.position         = [ FL, FR ]
            playback.props = {
               node.name              = "EQ-crinacle-GRAS-43AG-7"
            }
            capture.props = {
               node.name              = "EQ-crinacle-GRAS-43AG-7"
            }
        }
    },
    {
        name = libpipewire-module-parametric-equalizer
        args = {
            remote.name            = "pipewire-0"
            equalizer.filepath     = "/home/blu/git/mainrig-MS-7D51/.config/pipewire/pipewire.conf.d/EQ/HD800S/HD 800 S EQ oratory1990 GRAS 45-BC"
            equalizer.description  = "HD 800 S EQ oratory1990 GRAS 45-BC"
            audio.channels         = 2
            audio.position         = [ FL, FR ]
            playback.props = {
                node.name              = "EQ-oratory-GRAS-45-BC"
            }
            capture.props = {
                node.name              = "EQ-oratory-GRAS-45-BC"
            }
        }
    },
    {
        name = libpipewire-module-parametric-equalizer
        args = {
            remote.name            = "pipewire-0"
            equalizer.filepath     = "/home/blu/git/mainrig-MS-7D51/.config/pipewire/pipewire.conf.d/EQ/DT770/DT 770 Pro EQ crinacle GRAS 43AG-7"
            equalizer.description  = "DT 770 Pro EQ crinacle GRAS 43AG-7"
            audio.channels         = 2
            audio.position         = [ FL, FR ]
            playback.props = {
                node.name              = "EQ-DT770-crinacle"
            }
            capture.props = {
                node.name              = "EQ-DT770-crinacle"
            }
        }
    }
]

etc pp

sadko4u commented 1 month ago

You can use standalone JACK versions of plugin in headless mode and supply configuration files to them.

sadko4u commented 1 month ago

I think we can close this issue now as it was done in the EasyEffects' discussion.