<effect>
  <name>ladspa ZaMaximX2</name>
  <enabled>true</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>if (&lt;ladspa_ZaMaximX2ON&gt; == 1) then
    ihandle dssiinit &quot;&lt;ladspa_ZaMaximX2_ladspa&gt;&quot;, 0, 0

    dssiactivate ihandle, 1
;	
    dssictls ihandle, 5, &lt;ladspa_ZaMaximX2_Release&gt;, 1                                           ; (1 to 100)
    dssictls ihandle, 6, &lt;ladspa_ZaMaximX2_Output Ceiling&gt;, 1                                    ; (-30 to 0)
    dssictls ihandle, 7, &lt;ladspa_ZaMaximX2_Threshold&gt;, 1                                         ; (-30 to 0)

    aout1, aout2 dssiaudio ihandle, ain1, ain2                                  ; stereo in, stereo out

else
    aout1   =   ain1
    aout2   =   ain2
endif

</code>
  <comments>a wrapper of ladspa plugin 1515018290 called ZaMaximX2, created by Damien Zammit. Copyright: GPL v2+.
plugin has stereo inputs, stereo outputs.

The dssi opcodes are wrapping the ladspa plugin so it can be used as an effect in Blue.
The PATH for the ladspa plugins on my Linux systemm is /usr/lib/ladspa. Be sure to set the right PATH if you run OSX or Windows.

DESCRIPTION:

this acts as a brickwall limiter for mastering in its default state, but can also be tweaked to raise the average level as a stereo maximizer without ever clipping.
Sounds musical even with rough treatment. (Based on DSP found in a DAFX?02 paper).


CONTROLLERS:

ON/OFF              -       bypass
File Selector       -       set path for ZaMaximX2-ladspa.so
Release             -       The longer the release time, the less low frequency distortions
Output Ceiling      -       the limit in dB
Treshold            -       sets the lowest decibel level that will be allowed through

---

version 1.02, July 2020
- added BSB information comments

version 1.01, May 2020
- added comments on controllers       

version 1.0, June 2019
- initial version by Menno Knevel</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <gridSettings>
      <width>5</width>
      <height>10</height>
      <gridStyle>DOT</gridStyle>
      <snapGridEnabled>true</snapGridEnabled>
    </gridSettings>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
      <objectName></objectName>
      <x>0</x>
      <y>0</y>
      <groupName>Group</groupName>
      <backgroundColor>0x00000033</backgroundColor>
      <borderColor>0x000000ff</borderColor>
      <labelTextColor>0xffffffff</labelTextColor>
      <titleEnabled>true</titleEnabled>
      <width>20</width>
      <height>20</height>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>10</x>
        <y>10</y>
        <groupName>Group</groupName>
        <backgroundColor>0x666666ff</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>false</titleEnabled>
        <width>20</width>
        <height>20</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBFileSelector'>
          <objectName>ladspa_ZaMaximX2_ladspa</objectName>
          <x>10</x>
          <y>10</y>
          <comment>set path for ZaMaximX2-ladspa.so</comment>
          <fileName>/usr/lib/ladspa/ZaMaximX2-ladspa.so</fileName>
          <textFieldWidth>280</textFieldWidth>
          <stringChannelEnabled>false</stringChannelEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider' version='2'>
          <objectName>ladspa_ZaMaximX2_Output Ceiling</objectName>
          <x>10</x>
          <y>80</y>
          <comment>the limit in dB</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>-30.0</minimum>
          <maximum>0.0</maximum>
          <bdresolution>0.1</bdresolution>
          <value>-6.0</value>
          <sliderWidth>150</sliderWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider' version='2'>
          <objectName>ladspa_ZaMaximX2_Threshold</objectName>
          <x>10</x>
          <y>110</y>
          <comment>sets the lowest decibel level that will be allowed through</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>-30.0</minimum>
          <maximum>0.0</maximum>
          <bdresolution>0.1</bdresolution>
          <value>-15.0</value>
          <sliderWidth>150</sliderWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>215</x>
          <y>60</y>
          <label>Release</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>215</x>
          <y>90</y>
          <label>Output Ceiling</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider' version='2'>
          <objectName>ladspa_ZaMaximX2_Release</objectName>
          <x>10</x>
          <y>50</y>
          <comment>The longer the release time, the less low frequency distortions</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>1.0</minimum>
          <maximum>100.0</maximum>
          <bdresolution>1</bdresolution>
          <value>51.0</value>
          <sliderWidth>150</sliderWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>215</x>
          <y>120</y>
          <label>Threshold</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
        <objectName>ladspa_ZaMaximX2ON</objectName>
        <x>0</x>
        <y>0</y>
        <comment>bypass</comment>
        <automationAllowed>true</automationAllowed>
        <label/>
        <selected>true</selected>
        <randomizable>true</randomizable>
      </bsbObject>
    </bsbObject>
  </graphicInterface>
  <parameterList>
    <parameter uniqueId='-1879271721' name='ladspa_ZaMaximX2ON' label='' min='0.0' max='1.0' bdresolution='1' automationEnabled='false' value='1.0'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1879271719' name='ladspa_ZaMaximX2_Output Ceiling' label='' min='-30.0' max='0.0' bdresolution='0.1' automationEnabled='false' value='-6.0'>
      <line name='' version='2' max='0.0' min='-30.0' bdresolution='0.1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='-6.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1879271717' name='ladspa_ZaMaximX2_Threshold' label='' min='-30.0' max='0.0' bdresolution='0.1' automationEnabled='false' value='-15.0'>
      <line name='' version='2' max='0.0' min='-30.0' bdresolution='0.1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='-15.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1879271715' name='ladspa_ZaMaximX2_Release' label='' min='1.0' max='100.0' bdresolution='1' automationEnabled='false' value='51.0'>
      <line name='' version='2' max='100.0' min='1.0' bdresolution='1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='51.0'/>
      </line>
    </parameter>
  </parameterList>
</effect>