<effect>
  <name>PucketteStereo</name>
  <enabled>true</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>if (&lt;PucketteStereoON&gt; == 1) then

    ain = (ain1+ain2)*.5                                                        ; be sure it is mono                          
    kdelt = &lt;PucketteStereo_delaytime&gt;
    adelt interp kdelt                                                          ; convert to a-rate
    kamt = &lt;PucketteStereo_amount&gt;
    adel vdelayx ain, adelt*0.001, 0.1, 4                                       ; delay the signal a few ms
    aout1 = ain+(adel*kamt)                                                     ; mix direct and delayed signal
    aout2 = ain-(adel*kamt)

else
    aout1   =   ain1
    aout2   =   ain2

endif</code>
  <comments>
DESCRIPTION:

This is a stereoizer method from Miller Puckette.
In all its simplicity, the result is that frequency bands will be panned left and right alternately. 
The size of the frequency bands are determined by the delay time like this: 1000/Bw = Dt. E.g. a delay time of 5 ms gives alternating frequency bands every 200 Hz.
It is also mono compatible, if you collapse the stereo track to mono, the effect will cancel itself out.


CONTROLLERS:

ON/OFF          -       bypass
delay           -       delay the signal a few ms
amount          -       mix direct signal and delayed signal

---

version 1.02, July 2020
- added BSB information comments

version 1.01, May 2020
- added comments on controllers

version 1.0, May 2020
- initial version by Menno Knevel (Original code idea from  Miller Puckette)
</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <gridSettings>
      <width>10</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>0x4d8080ff</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>false</titleEnabled>
        <width>20</width>
        <height>20</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBVSlider' version='2'>
          <objectName>PucketteStereo_amount</objectName>
          <x>70</x>
          <y>20</y>
          <comment>mix direct signal and delayed signal</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <bdresolution>0.01</bdresolution>
          <value>0.63</value>
          <sliderHeight>60</sliderHeight>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>false</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>60</x>
          <y>10</y>
          <label>amount</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>PucketteStereo_delaytime</objectName>
          <x>10</x>
          <y>10</y>
          <comment>delay the signal a few ms</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>20.0</maximum>
          <value>5.0</value>
          <knobWidth>40</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>delay</label>
          <labelEnabled>true</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
        <objectName>PucketteStereoON</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='-170818729' name='PucketteStereoON' 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='-170818727' name='PucketteStereo_delaytime' label='' min='0.0' max='20.0' bdresolution='-1' automationEnabled='false' value='5.0'>
      <line name='' version='2' max='20.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='5.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-170818725' name='PucketteStereo_amount' label='' min='0.0' max='1.0' bdresolution='0.01' automationEnabled='false' value='0.63'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='0.01' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.63'/>
      </line>
    </parameter>
  </parameterList>
</effect>