<effect>
  <name>ShimmerReverb</name>
  <enabled>true</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>if (&lt;ShimmerON&gt; == 1) then
    ainl    =   ain1
    ainr    =   ain2
    ain1 = vdelay3(ain1, &lt;Shimmer_delay time&gt;, 100)                                     ; pre-delay
    ain2 = vdelay3(ain2, &lt;Shimmer_delay time&gt;, 100)
 
    aout1 init 0
    aout2 init 0
    kfblvl = &lt;Shimmer_feedback&gt;                                                         ; +- 0.45
    ain1 = ain1 + (aout1 * kfblvl)
    ain2 = ain2 + (aout2 * kfblvl)

    ain1 = dcblock2(ain1)                                                       ; important, or signal bias grows rapidly
    ain2 = dcblock2(ain2)
    ain1 = tanh(ain1)                                                           ; to help ensure it doesn&apos;t blow up
    ain2 = tanh(ain2)
    kdepth  expcurve &lt;Shimmer_depth&gt;, .5
    ain1, ain2 reverbsc ain1, ain2, kdepth, &lt;Shimmer_colour&gt;

    kratio = &lt;Shimmer_ratio&gt;
    ifftsize  = 2048 
    ioverlap  = ifftsize / 4 
    iwinsize  = ifftsize 
    iwinshape = 1                                                               ; von-Hann window 
    fftin     pvsanal ain1, ifftsize, ioverlap, iwinsize, iwinshape 
    fftscale  pvscale fftin, kratio, 0, 1
    atransL   pvsynth fftscale
    fftin2    pvsanal ain2, ifftsize, ioverlap, iwinsize, iwinshape 
    fftscale2 pvscale fftin2, kratio, 0, 1
    atransR   pvsynth fftscale2
  
    aout1 = vdelay3(atransL, &lt;Shimmer_feedback delay&gt;, 200)                             ;; delay the feedback to let it build up over time
    aout2 = vdelay3(atransR, &lt;Shimmer_feedback delay&gt;, 200)

    aout1 = (ainl * &lt;Shimmer_wetdry&gt;) + ((aout1 * .7) * (1 - &lt;Shimmer_wetdry&gt;))                        ; mix
    aout2 = (ainr * &lt;Shimmer_wetdry&gt;) + ((aout2 * .7) * (1 - &lt;Shimmer_wetdry&gt;))
else
    aout1   =   ain1
    aout2   =   ain2
endif</code>
  <comments>
DESCRIPTION:

Code from Steven Yi, adapted (and some values extended) as a Blue effect by Menno Knevel
Reference: https://kunstmusik.com/2018/08/21/shimmer-reverb/


CONTROLLERS:

ON/OFF          -       bypass
ratio           -       scaling ratio
delay time      -       delay time in ms
delay feedback  -       delay feedback level
reverb feedback -       reverb feedback level
reverb depth    -       amount of reverb 
reverb colour   -       cutoff frequency of simple first order lowpass filters
Mix             -       mix direct signal with effect

---

version 1.02, July 2020
- added BSB information comments

version 1.01, May 2020
- added comments on controllers

version 1.0, 2016
- initial version, using code by Steven Yi, now a blue effect by Menno Knevel
</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <gridSettings>
      <width>5</width>
      <height>5</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>0x4d8080ff</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>false</titleEnabled>
        <width>20</width>
        <height>20</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
          <objectName></objectName>
          <x>60</x>
          <y>5</y>
          <groupName>delay</groupName>
          <backgroundColor>0x00000033</backgroundColor>
          <borderColor>0x1a4d4dff</borderColor>
          <labelTextColor>0xffffffff</labelTextColor>
          <titleEnabled>true</titleEnabled>
          <width>20</width>
          <height>20</height>
          <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
            <objectName>Shimmer_delay time</objectName>
            <x>10</x>
            <y>10</y>
            <comment>delay time in ms</comment>
            <automationAllowed>true</automationAllowed>
            <minimum>10.0</minimum>
            <maximum>200.0</maximum>
            <value>200.0</value>
            <knobWidth>40</knobWidth>
            <randomizable>true</randomizable>
            <valueDisplayEnabled>true</valueDisplayEnabled>
            <label>time</label>
            <labelEnabled>true</labelEnabled>
            <font>
              <name>System Regular</name>
              <size>12.0</size>
            </font>
          </bsbObject>
          <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
            <objectName>Shimmer_feedback delay</objectName>
            <x>60</x>
            <y>10</y>
            <comment>delay feedback level</comment>
            <automationAllowed>true</automationAllowed>
            <minimum>10.0</minimum>
            <maximum>200.0</maximum>
            <value>200.0</value>
            <knobWidth>40</knobWidth>
            <randomizable>true</randomizable>
            <valueDisplayEnabled>true</valueDisplayEnabled>
            <label>feedback</label>
            <labelEnabled>true</labelEnabled>
            <font>
              <name>System Regular</name>
              <size>12.0</size>
            </font>
          </bsbObject>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
          <objectName></objectName>
          <x>185</x>
          <y>5</y>
          <groupName>reverb</groupName>
          <backgroundColor>0x00000033</backgroundColor>
          <borderColor>0x1a4d4dff</borderColor>
          <labelTextColor>0xffffffff</labelTextColor>
          <titleEnabled>true</titleEnabled>
          <width>20</width>
          <height>20</height>
          <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
            <objectName>Shimmer_feedback</objectName>
            <x>10</x>
            <y>10</y>
            <comment>reverb feedback level</comment>
            <automationAllowed>true</automationAllowed>
            <minimum>0.0</minimum>
            <maximum>1.0</maximum>
            <value>0.8899999999999999</value>
            <knobWidth>40</knobWidth>
            <randomizable>true</randomizable>
            <valueDisplayEnabled>true</valueDisplayEnabled>
            <label>feedback</label>
            <labelEnabled>true</labelEnabled>
            <font>
              <name>System Regular</name>
              <size>12.0</size>
            </font>
          </bsbObject>
          <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
            <objectName>Shimmer_depth</objectName>
            <x>75</x>
            <y>10</y>
            <comment>amount of reverb </comment>
            <automationAllowed>true</automationAllowed>
            <minimum>0.0</minimum>
            <maximum>1.0</maximum>
            <value>0.95</value>
            <knobWidth>40</knobWidth>
            <randomizable>true</randomizable>
            <valueDisplayEnabled>true</valueDisplayEnabled>
            <label>depth</label>
            <labelEnabled>true</labelEnabled>
            <font>
              <name>System Regular</name>
              <size>12.0</size>
            </font>
          </bsbObject>
          <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
            <objectName>Shimmer_colour</objectName>
            <x>130</x>
            <y>10</y>
            <comment>cutoff frequency of simple first order lowpass filters</comment>
            <automationAllowed>true</automationAllowed>
            <minimum>200.0</minimum>
            <maximum>20000.0</maximum>
            <value>20000.0</value>
            <knobWidth>40</knobWidth>
            <randomizable>true</randomizable>
            <valueDisplayEnabled>true</valueDisplayEnabled>
            <label>colour</label>
            <labelEnabled>true</labelEnabled>
            <font>
              <name>System Regular</name>
              <size>12.0</size>
            </font>
          </bsbObject>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>370</x>
          <y>35</y>
          <label>mix</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBVSlider' version='2'>
          <objectName>Shimmer_wetdry</objectName>
          <x>365</x>
          <y>45</y>
          <comment>mix direct signal with effect</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <bdresolution>0.1</bdresolution>
          <value>0.6</value>
          <sliderHeight>60</sliderHeight>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>false</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>Shimmer_ratio</objectName>
          <x>10</x>
          <y>35</y>
          <comment>scaling ratio</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>3.0</maximum>
          <value>1.92</value>
          <knobWidth>40</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>ratio</label>
          <labelEnabled>true</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
        <objectName>ShimmerON</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='613739873' name='Shimmer_delay time' label='' min='10.0' max='200.0' bdresolution='-1' automationEnabled='false' value='200.0'>
      <line name='' version='2' max='200.0' min='10.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='200.0'/>
      </line>
    </parameter>
    <parameter uniqueId='613739875' name='Shimmer_feedback delay' label='' min='10.0' max='200.0' bdresolution='-1' automationEnabled='false' value='200.0'>
      <line name='' version='2' max='200.0' min='10.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='200.0'/>
      </line>
    </parameter>
    <parameter uniqueId='613739877' name='Shimmer_wetdry' label='' min='0.0' max='1.0' bdresolution='0.1' automationEnabled='false' value='0.6'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='0.1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.6'/>
      </line>
    </parameter>
    <parameter uniqueId='613739879' name='Shimmer_ratio' label='' min='0.0' max='3.0' bdresolution='-1' automationEnabled='false' value='1.92'>
      <line name='' version='2' max='3.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.92'/>
      </line>
    </parameter>
    <parameter uniqueId='613739881' name='Shimmer_feedback' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.8899999999999999'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.8899999999999999'/>
      </line>
    </parameter>
    <parameter uniqueId='613739883' name='Shimmer_depth' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.95'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.95'/>
      </line>
    </parameter>
    <parameter uniqueId='613739885' name='Shimmer_colour' label='' min='200.0' max='20000.0' bdresolution='-1' automationEnabled='false' value='20000.0'>
      <line name='' version='2' max='20000.0' min='200.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='20000.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-104104179' name='ShimmerON' 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>
  </parameterList>
</effect>