LSP Project

Discuss anything new and newsworthy! See http://planet.linuxaudio.org for more Linux Audio News!

Announcements of proprietary software may fit better in the Marketplace.

Moderators: raboof, MattKingUSA, khz

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

falkTX, i've just started to port UI to the VST format and met the following documentation:

Code: Select all

	effEditOpen,		///< [ptr]: system dependent Window pointer, e.g. HWND on Windows  @see AEffEditor::open
	effEditClose,		///< no arguments @see AEffEditor::close

        // ...
	effEditIdle,		///< no arguments @see AEffEditor::idle
What's the [ptr] type for Linux? I'm currently creating my own instance of the window in GTK2 and get such picture:

Image

Is it possible to close the original window or integrate my GTK widget into passed to effEditOpen window?
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

falkTX wrote:Your best choice will be to look at amsynth code, since they also have a gtk2 ui working with VST.
Good point, thank you, will look.
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

falkTX wrote:FYI I just added support for the longer vst parameter names in carla.
Currently I'm getting segfault:

Code: Select all

T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=48 (effGetProductString), index=0, value=0, ptr=0x7ffe6e5f0940, opt = 0,000
T[vst.cpp: 335] vst_dispatcher: product_string = LSP Verzögerungsausgleicher Stereo [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0a40, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0b40, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=45 (effGetEffectName), index=0, value=0, ptr=0x7f9e23b6a560, opt = 0,000
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=35 (effGetPlugCategory), index=0, value=0, ptr=(nil), opt = 0,000
T[vst.cpp: 427] vst_dispatcher: plugin_category = 6
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=48 (effGetProductString), index=0, value=0, ptr=0x7ffe6e5f0500, opt = 0,000
T[vst.cpp: 335] vst_dispatcher: product_string = LSP Verzögerungsausgleicher Stereo [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0600, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0700, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=35 (effGetPlugCategory), index=0, value=0, ptr=(nil), opt = 0,000
T[vst.cpp: 427] vst_dispatcher: plugin_category = 6
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=48 (effGetProductString), index=0, value=0, ptr=0x7ffe6e5eff50, opt = 0,000
T[vst.cpp: 335] vst_dispatcher: product_string = LSP Verzögerungsausgleicher Stereo [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0050, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=47 (effGetVendorString), index=0, value=0, ptr=0x7ffe6e5f0150, opt = 0,000
T[vst.cpp: 323] vst_dispatcher: vendor_string = LSP [VST]
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=45 (effGetEffectName), index=0, value=0, ptr=0x7f9e23b6a560, opt = 0,000
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x2671d00, opcode=56 (effGetParameterProperties), index=0, value=0, ptr=0x7ffe6e5efd10, opt = 0,000
T[vst.cpp:  59] vst_get_parameter_properties: parameter id=bypass, name=Bypass
Segmentation fault
UPD: The crash happens outside the VST dispatcher function.
Last edited by sadko4u on Fri Jan 15, 2016 9:01 am, edited 1 time in total.
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

falkTX wrote:well it's your plugin and you have the code for both the host and plugin..
if there's a change I need to make let me know.
Just commented out and re-built:

Code: Select all

    void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override
    {
        CARLA_SAFE_ASSERT_RETURN(fEffect != nullptr,);
        CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,);

        strBuf[0] = '\0';

/*        VstParameterProperties prop;
        carla_zeroStruct(prop);
  
        if (dispatcher(effGetParameterProperties, static_cast<int32_t>(parameterId), 0, &prop, 0) == 1 && prop.label[0] != '\0')
        {
            std::strncpy(strBuf, prop.label, 64);
            strBuf[64] = '\0';
            return;
        }*/
 
        strBuf[0] = '\0';
        dispatcher(effGetParamName, static_cast<int32_t>(parameterId), 0, strBuf, 0.0f);
    }
Works fine.

Then I've added some debug code in CarlaStandalone.cpp:

Code: Select all

    if (CarlaPlugin* const plugin = gStandalone.engine->getPlugin(pluginId))
    {
        if (parameterId < plugin->getParameterCount())
        {
            char strBufName[STR_MAX+1];
            char strBufSymbol[STR_MAX+1];
            char strBufUnit[STR_MAX+1];

            carla_zeroChars(strBufName, STR_MAX+1);
            carla_zeroChars(strBufSymbol, STR_MAX+1);
            carla_zeroChars(strBufUnit, STR_MAX+1);

            info.scalePointCount = plugin->getParameterScalePointCount(parameterId);

            std::fprintf(stderr, "get_parameter_name %d, %p [%d]\n", parameterId, strBufName, int(STR_MAX+1));
            plugin->getParameterName(parameterId, strBufName);
            std::fprintf(stderr, "get_parameter_name returned %s\n", strBufName);
            info.name = carla_strdup_safe(strBufName);
            std::fprintf(stderr, "strdup_safe ok = %s\n", info.name);

            plugin->getParameterSymbol(parameterId, strBufSymbol);
            info.symbol = carla_strdup_safe(strBufSymbol);

            plugin->getParameterUnit(parameterId, strBufUnit);
            info.unit = carla_strdup_safe(strBufUnit);

            checkStringPtr(info.name);
            checkStringPtr(info.symbol);
            checkStringPtr(info.unit);
        }
        else
            carla_stderr2("carla_get_parameter_info(%i, %i) - parameterId out of bounds", pluginId, parameterId);
And CarlaPluginVST2.cpp:

Code: Select all

    void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override
    {
        CARLA_SAFE_ASSERT_RETURN(fEffect != nullptr,);
        CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,);

        strBuf[0] = '\0';

        VstParameterProperties prop;
        carla_zeroStruct(prop);

        std::fprintf(stderr, "CARLA query parameter properties %p\n", &prop);
        if ((dispatcher(effGetParameterProperties, static_cast<int32_t>(parameterId), 0, &prop, 0) == 1) && (prop.label[0] != '\0'))
        {
            std::fprintf(stderr, "CARLA label: %s, copy to %p\n", prop.label, strBuf);
            std::strncpy(strBuf, prop.label, 64);
            strBuf[63] = '\0';
            std::fprintf(stderr, "CARLA return: %s\n", strBuf);
            return;
        }

        strBuf[0] = '\0';
        std::fprintf(stderr, "CARLA call getParamName %p\n", strBuf);
        dispatcher(effGetParamName, static_cast<int32_t>(parameterId), 0, strBuf, 0.0f);
        std::fprintf(stderr, "CARLA call OK\n");
        std::fprintf(stderr, "CARLA param name = %s\n", strBuf);
    }
I get such log:

Code: Select all

get_parameter_name 0, 0x7fffffff85b0 [256]
CARLA query parameter properties 0x7fffffff8510
T[vst.cpp: 303] vst_dispatcher: vst_dispatcher effect=0x11a3760, opcode=56 (effGetParameterProperties), index=0, value=0, ptr=0x7fffffff8510, opt = 0,000
T[vst.cpp:  59] vst_get_parameter_properties: parameter id=bypass, name=Bypass
CARLA label: Bypass, copy to 0x7fffffff85b0
CARLA return: Bypass
get_parameter_name returned Bypass

Program received signal SIGSEGV, Segmentation fault.
0x00007fffd738eeca in carla_get_parameter_info () from /usr/local/lib/carla/libcarla_standalone2.so
The backtrace:

Code: Select all

(gdb) bt
#0  0x00007fffd738eeca in carla_get_parameter_info () at /usr/local/lib/carla/libcarla_standalone2.so
#1  0x00007fffe015752a in ffi_call_unix64 () at /usr/lib64/python3.4/lib-dynload/_ctypes.cpython-34m.so
#2  0x00007fffe0155df9 in ffi_call () at /usr/lib64/python3.4/lib-dynload/_ctypes.cpython-34m.so
#3  0x00007fffe014cd9d in _ctypes_callproc () at /usr/lib64/python3.4/lib-dynload/_ctypes.cpython-34m.so
#4  0x00007fffe0143948 in  () at /usr/lib64/python3.4/lib-dynload/_ctypes.cpython-34m.so
#5  0x00007ffff7a4df3a in PyObject_Call () at /usr/lib64/libpython3.4m.so.1.0
#6  0x00007ffff7a70907 in PyEval_EvalFrameEx () at /usr/lib64/libpython3.4m.so.1.0
#7  0x00007ffff7a70a44 in PyEval_EvalFrameEx () at /usr/lib64/libpython3.4m.so.1.0
#8  0x00007ffff7a70a44 in PyEval_EvalFrameEx () at /usr/lib64/libpython3.4m.so.1.0
#9  0x00007ffff7a70a44 in PyEval_EvalFrameEx () at /usr/lib64/libpython3.4m.so.1.0
#10 0x00007ffff7a764e0 in PyEval_EvalCodeEx () at /usr/lib64/libpython3.4m.so.1.0
#11 0x00007ffff7a51ec8 in  () at /usr/lib64/libpython3.4m.so.1.0
#12 0x00007ffff7a4df3a in PyObject_Call () at /usr/lib64/libpython3.4m.so.1.0
And the disassembly:

Code: Select all

   │0x7fffd738ee49 <carla_get_parameter_info+233>   lea    0x200(%rsp),%r14                                                                                                                                                                 │
   │0x7fffd738ee51 <carla_get_parameter_info+241>   mov    %r12d,%esi                                                                                                                                                                       │
   │0x7fffd738ee54 <carla_get_parameter_info+244>   mov    %rsp,%r13                                                                                                                                                                        │
   │0x7fffd738ee57 <carla_get_parameter_info+247>   mov    %rsp,%rbp                                                                                                                                                                        │
   │0x7fffd738ee5a <carla_get_parameter_info+250>   mov    %r15,%rdi                                                                                                                                                                        │
   │0x7fffd738ee5d <carla_get_parameter_info+253>   mov    $0x20,%cl                                                                                                                                                                        │
   │0x7fffd738ee5f <carla_get_parameter_info+255>   rep stos %rax,%es:(%rdi)                                                                                                                                                                │
   │0x7fffd738ee62 <carla_get_parameter_info+258>   mov    %r14,%rdi                                                                                                                                                                        │
   │0x7fffd738ee65 <carla_get_parameter_info+261>   mov    $0x20,%cl                                                                                                                                                                        │
   │0x7fffd738ee67 <carla_get_parameter_info+263>   rep stos %rax,%es:(%rdi)                                                                                                                                                                │
   │0x7fffd738ee6a <carla_get_parameter_info+266>   mov    %rbx,%rdi                                                                                                                                                                        │
   │0x7fffd738ee6d <carla_get_parameter_info+269>   mov    (%rbx),%rax                                                                                                                                                                      │
   │0x7fffd738ee70 <carla_get_parameter_info+272>   callq  *0x40(%rax)                                                                                                                                                                      │
   │0x7fffd738ee73 <carla_get_parameter_info+275>   mov    %eax,0xd7ab5f(%rip)        # 0x7fffd81099d8                                                                                                                                      │
   │0x7fffd738ee79 <carla_get_parameter_info+281>   mov    0xd67060(%rip),%rax        # 0x7fffd80f5ee0                                                                                                                                      │
   │0x7fffd738ee80 <carla_get_parameter_info+288>   lea    0x26cdc9(%rip),%rsi        # 0x7fffd75fbc50                                                                                                                                      │
   │0x7fffd738ee87 <carla_get_parameter_info+295>   mov    $0x100,%r8d                                                                                                                                                                      │
   │0x7fffd738ee8d <carla_get_parameter_info+301>   mov    %rsp,%rcx                                                                                                                                                                        │
   │0x7fffd738ee90 <carla_get_parameter_info+304>   mov    %r12d,%edx                                                                                                                                                                       │
   │0x7fffd738ee93 <carla_get_parameter_info+307>   mov    (%rax),%rdi                                                                                                                                                                      │
   │0x7fffd738ee96 <carla_get_parameter_info+310>   xor    %eax,%eax                                                                                                                                                                        │
   │0x7fffd738ee98 <carla_get_parameter_info+312>   callq  0x7fffd7372a70 <fprintf@plt>                                                                                                                                                     │
   │0x7fffd738ee9d <carla_get_parameter_info+317>   mov    (%rbx),%rax                                                                                                                                                                      │
   │0x7fffd738eea0 <carla_get_parameter_info+320>   mov    %rsp,%rdx                                                                                                                                                                        │
   │0x7fffd738eea3 <carla_get_parameter_info+323>   mov    %r12d,%esi                                                                                                                                                                       │
   │0x7fffd738eea6 <carla_get_parameter_info+326>   mov    %rbx,%rdi                                                                                                                                                                        │
   │0x7fffd738eea9 <carla_get_parameter_info+329>   callq  *0x88(%rax)                                                                                                                                                                      │
   │0x7fffd738eeaf <carla_get_parameter_info+335>   mov    0xd6702a(%rip),%rax        # 0x7fffd80f5ee0                                                                                                                                      │
   │0x7fffd738eeb6 <carla_get_parameter_info+342>   lea    0x26cdb3(%rip),%rsi        # 0x7fffd75fbc70                                                                                                                                      │
   │0x7fffd738eebd <carla_get_parameter_info+349>   mov    %rsp,%rdx                                                                                                                                                                        │
   │0x7fffd738eec0 <carla_get_parameter_info+352>   mov    (%rax),%rdi                                                                                                                                                                      │
   │0x7fffd738eec3 <carla_get_parameter_info+355>   xor    %eax,%eax                                                                                                                                                                        │
   │0x7fffd738eec5 <carla_get_parameter_info+357>   callq  0x7fffd7372a70 <fprintf@plt>                                                                                                                                                     │
  >│0x7fffd738eeca <carla_get_parameter_info+362>   mov    0x0(%rbp),%edx                                                                                                                                                                   │
   │0x7fffd738eecd <carla_get_parameter_info+365>   add    $0x4,%rbp                                                                                                                                                                        │
   │0x7fffd738eed1 <carla_get_parameter_info+369>   lea    -0x1010101(%rdx),%eax                                                                                                                                                            │
   │0x7fffd738eed7 <carla_get_parameter_info+375>   not    %edx                                                                                                                                                                             │
   │0x7fffd738eed9 <carla_get_parameter_info+377>   and    %edx,%eax                                                                                                                                                                        │
   │0x7fffd738eedb <carla_get_parameter_info+379>   and    $0x80808080,%eax                                                                                                                                                                 │
   │0x7fffd738eee0 <carla_get_parameter_info+384>   je     0x7fffd738eeca <carla_get_parameter_info+362>
By currently unknown reason the RBP register is corrupt:

Code: Select all

rax            0x23     35
rbx            0x0      0
rcx            0x7ffff7490d8d   140737342147981
rdx            0x0      0
rsi            0x0      0
rdi            0x7fffffff5dc0   140737488313792
rbp            0x0      0x0
rsp            0x7fffffff85b0   0x7fffffff85b0
r8             0x7ffff7fc4700   140737353893632
r9             0x7ffff7757bc0   140737345059776
r10            0xfffffffa       4294967290
r11            0x0      0
r12            0x0      0
r13            0x0      0
r14            0x0      0
r15            0x7fffffff86b0   140737488324272
rip            0x7fffd738eeca   0x7fffd738eeca <carla_get_parameter_info+362>
eflags         0x10202  [ IF RF ]
cs             0x33     51
ss             0x2b     43
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Okay, HERE YOU ARE!

That's error in vestige.h file!
The code in vestige.h:

Code: Select all

struct _VstParameterProperties
{
        float stepFloat;
        float smallStepFloat;
        float largeStepFloat;
        char label[64];
        int32_t flags;
        int32_t minInteger;
        int32_t maxInteger;
        int32_t stepInteger;
        int32_t largeStepInteger;
        char shortLabel[8];
};
The code of official VST SDK:

Code: Select all

//-------------------------------------------------------------------------------------------------------
/** Parameter Properties used in #effGetParameterProperties. */
//-------------------------------------------------------------------------------------------------------
struct VstParameterProperties
{
//-------------------------------------------------------------------------------------------------------
	float stepFloat;			///< float step
	float smallStepFloat;		///< small float step
	float largeStepFloat;		///< large float step
	char label[kVstMaxLabelLen];///< parameter label
	VstInt32 flags;				///< @see VstParameterFlags
	VstInt32 minInteger;		///< integer minimum
	VstInt32 maxInteger;		///< integer maximum
	VstInt32 stepInteger;		///< integer step
	VstInt32 largeStepInteger;	///< large integer step
	char shortLabel[kVstMaxShortLabelLen];	///< short label, recommended: 6 + delimiter

	// The following are for remote controller display purposes.
	// Note that the kVstParameterSupportsDisplayIndex flag must be set.
	// Host can scan all parameters, and find out in what order
	// to display them:

	VstInt16 displayIndex;		///< index where this parameter should be displayed (starting with 0)

	// Host can also possibly display the parameter group (category), such as...
	// ---------------------------
	// Osc 1
	// Wave  Detune  Octave  Mod
	// ---------------------------
	// ...if the plug-in supports it (flag #kVstParameterSupportsDisplayCategory)

	VstInt16 category;			///< 0: no category, else group index + 1
	VstInt16 numParametersInCategory;			///< number of parameters in category
	VstInt16 reserved;			///< zero
	char categoryLabel[kVstMaxCategLabelLen];	///< category label, e.g. "Osc 1" 

	char future[16];			///< reserved for future use
//-------------------------------------------------------------------------------------------------------
};
The problem is in this strip:

Code: Select all

	char future[16];			///< reserved for future use
Currently sizeof(vestige:_VstParameterProperties) < sizeof(sdk:VstParameterProperties) !!!!

Because my plugin does:

Code: Select all

    void vst_get_parameter_properties(const port_t *m, VstParameterProperties *p)
    {
        memset(p, 0, sizeof(VstParameterProperties));
It corrupts stack frame where %rpb is stored, so carla gets invalid %rbp from stack and crashes.
I will fix it in my code and recommend you to fix the vestige header in Carla.
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Just looked again, there are many fields:

Code: Select all

   // The following are for remote controller display purposes.
   // Note that the kVstParameterSupportsDisplayIndex flag must be set.
   // Host can scan all parameters, and find out in what order
   // to display them:

   VstInt16 displayIndex;      ///< index where this parameter should be displayed (starting with 0)

   // Host can also possibly display the parameter group (category), such as...
   // ---------------------------
   // Osc 1
   // Wave  Detune  Octave  Mod
   // ---------------------------
   // ...if the plug-in supports it (flag #kVstParameterSupportsDisplayCategory)

   VstInt16 category;         ///< 0: no category, else group index + 1
   VstInt16 numParametersInCategory;         ///< number of parameters in category
   VstInt16 reserved;         ///< zero
   char categoryLabel[kVstMaxCategLabelLen];   ///< category label, e.g. "Osc 1"

   char future[16];         ///< reserved for future use
So, if i remove the memset in my plugin, It still will crash because fills these fields with zero values.
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Now it works, thanks for update!
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
Capoeira
Established Member
Posts: 1283
Joined: Tue May 12, 2009 1:01 pm
Location: Brazil

Re: LSP Project

Post by Capoeira »

so this project is yours. great stuff.
some pretty unique stuff in there.
thanks for this.

will try out this soon. I hope I can get a nice studio IR with it https://lsp-plug.in/?page=manuals&secti ... der_stereo

User avatar
Capoeira
Established Member
Posts: 1283
Joined: Tue May 12, 2009 1:01 pm
Location: Brazil

Re: LSP Project

Post by Capoeira »

how can I make lsp-plugins-impulse-reverb or lsp-plugins-impulse-responses plugins start with saved settings?
I want to make my filters start automaticly with Qjackctrl.
I would like to do the same with a compressor

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Capoeira wrote:how can I make lsp-plugins-impulse-reverb or lsp-plugins-impulse-responses plugins start with saved settings?
I want to make my filters start automaticly with Qjackctrl.
I would like to do the same with a compressor
Since 1.1.10 release, you may pass --config parameter:

Code: Select all

lsp-plugins-impulse-reverb-mono --help
Usage: lsp-plugins-impulse-reverb-mono [parameters]

Available parameters:
  -c, --config <file>   Load settings file on startup
  -h, --help            Output help
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
Capoeira
Established Member
Posts: 1283
Joined: Tue May 12, 2009 1:01 pm
Location: Brazil

Re: LSP Project

Post by Capoeira »

sadko4u wrote:
Capoeira wrote:how can I make lsp-plugins-impulse-reverb or lsp-plugins-impulse-responses plugins start with saved settings?
I want to make my filters start automaticly with Qjackctrl.
I would like to do the same with a compressor
Since 1.1.10 release, you may pass --config parameter:

Code: Select all

lsp-plugins-impulse-reverb-mono --help
Usage: lsp-plugins-impulse-reverb-mono [parameters]

Available parameters:
  -c, --config <file>   Load settings file on startup
  -h, --help            Output help
Thanks. Haven't even thought of checking command line options. works like a charm.

Basslint
Established Member
Posts: 509
Joined: Sun Jan 27, 2019 2:25 pm
Location: Italy

Re: LSP Project

Post by Basslint »

Very nice plugins, thanks!

I'd like to have them on the Debian official repos...Someone already packaged them but nobody is sponsoring the package. Any Debian sponsor out there?
The community of believers was of one heart and mind, and no one claimed that any of his possessions was his own, but they had everything in common. [Acts 4:32]

Wanna make music on openSUSE? Check out GeekosDAW!

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Basslint wrote:I'd like to have them on the Debian official repos...Someone already packaged them but nobody is sponsoring the package. Any Debian sponsor out there?
I believe you can contact this man and ask about Debian:
https://github.com/eeickmeyer
LSP (Linux Studio Plugins) Developer and Maintainer.

User avatar
Capoeira
Established Member
Posts: 1283
Joined: Tue May 12, 2009 1:01 pm
Location: Brazil

Re: LSP Project

Post by Capoeira »

Capoeira wrote:
will try out this soon. I hope I can get a nice studio IR with it https://lsp-plug.in/?page=manuals&secti ... der_stereo
before I get into the truble of creating a room (or are there any usefull available to download?) for this:
does this treat all frequencies as rays? only frequencies above the Schroeder Frequency behave like that.

User avatar
sadko4u
Established Member
Posts: 777
Joined: Mon Sep 28, 2015 9:03 pm

Re: LSP Project

Post by sadko4u »

Capoeira wrote: before I get into the truble of creating a room (or are there any usefull available to download?) for this:
does this treat all frequencies as rays? only frequencies above the Schroeder Frequency behave like that.
It doesn't simulate frequencies. It simulates the spreading of the front of the wave. Different fronts of different waves come at the same place at the different instants of time, this is similar to mixing of the huge set of Comb filters, so finally you get some impulse response at the point and, as a result, a frequency response.

You can use rooms from presets or download them from this place:
https://github.com/sadko4u/lsp-plugins/ ... /models/3d
LSP (Linux Studio Plugins) Developer and Maintainer.

Post Reply