<effect>
  <name>spectraloscils</name>
  <enabled>false</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>if (&lt;spectraloscilsON&gt; == 1) then

    ftps1   pvsanal     ain1, &lt;spectraloscils_size&gt;, &lt;spectraloscils_overlap&gt;, &lt;spectraloscils_size&gt;, 1 ; analyse it
    ftps2   pvsanal     ain2, &lt;spectraloscils_size&gt;, &lt;spectraloscils_overlap&gt;, &lt;spectraloscils_size&gt;, 1

    kchanged2    changed &lt;spectraloscils_bins&gt;, &lt;spectraloscils_binoffset&gt;, &lt;spectraloscils_binincr&gt;    ; check knob movement                                            ; check if loop time 2 has changed
        if kchanged2 == 1 then
            reinit	REBIN
        endif
    REBIN:
    aouts1  pvsadsyn    ftps1, i(&lt;spectraloscils_bins&gt;), &lt;spectraloscils_freq&gt;, i(&lt;spectraloscils_binoffset&gt;), i(&lt;spectraloscils_binincr&gt;) ; convert to oscillators
    aouts2  pvsadsyn	ftps2, i(&lt;spectraloscils_bins&gt;), &lt;spectraloscils_freq&gt;, i(&lt;spectraloscils_binoffset&gt;), i(&lt;spectraloscils_binincr&gt;)
        rireturn                                                                ; return from changed 
    aout1 = (ain1 * &lt;spectraloscils_wetdry&gt;) + (aouts1 * (1 - &lt;spectraloscils_wetdry&gt;))
    aout2 = (ain2 * &lt;spectraloscils_wetdry&gt;) + (aouts2 * (1 - &lt;spectraloscils_wetdry&gt;))   
else
    aout1   =   ain1
    aout2   =   ain2
endif</code>
  <comments>
DESCRIPTION:

the spectraloscils effect is using Victor Lazzarini&apos;s pvsadsyn. 
It resynthesizes using a fast oscillator-bank.

Using the Increment knob, together with other setting, might result in an error.
There is no protection for it (yet) but it does not blow up the computer either...

---

version 1.1, September 2021
- now i rate knob are re-initialized

version 1.0, September 2021
- initial version by Menno Knevel

</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <gridSettings>
      <width>5</width>
      <height>5</height>
      <gridStyle>LINE</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>spectraloscils_binincr</objectName>
          <x>175</x>
          <y>20</y>
          <comment>Starting from bin ibinoffset, resynthesize bins ibinincr apart.</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>1.0</minimum>
          <maximum>15.0</maximum>
          <bdresolution>1</bdresolution>
          <value>1.0</value>
          <sliderHeight>60</sliderHeight>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>false</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>171</x>
          <y>9</y>
          <label>increm</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>275</x>
          <y>60</y>
          <label>overlap</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>spectraloscils_bins</objectName>
          <x>75</x>
          <y>10</y>
          <comment>The number of analysis bins to synthesise</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>1.0</minimum>
          <maximum>1025.0</maximum>
          <value>142.43518796992475</value>
          <knobWidth>40</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>bins</label>
          <labelEnabled>true</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>275</x>
          <y>31</y>
          <label>size</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBVSlider' version='2'>
          <objectName>spectraloscils_wetdry</objectName>
          <x>325</x>
          <y>25</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.3</value>
          <sliderHeight>50</sliderHeight>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>false</valueDisplayEnabled>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>331</x>
          <y>15</y>
          <label>mix</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown' version='2'>
          <objectName>spectraloscils_size</objectName>
          <x>217</x>
          <y>27</y>
          <comment>The FFT size in samples</comment>
          <automationAllowed>false</automationAllowed>
          <selectedIndex>3</selectedIndex>
          <fontSize>12</fontSize>
          <randomizable>true</randomizable>
          <bsbDropdownItemList>
            <bsbDropdownItem uniqueId='-1149711119'>
              <name>256</name>
              <value>256</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711118'>
              <name>512</name>
              <value>512</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711117'>
              <name>1024</name>
              <value>1024</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711116'>
              <name>2048</name>
              <value>2048</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711115'>
              <name>4096</name>
              <value>4096</value>
            </bsbDropdownItem>
          </bsbDropdownItemList>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>spectraloscils_binoffset</objectName>
          <x>125</x>
          <y>10</y>
          <comment>The first (lowest) bin to resynthesise, counting from 0</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1000.0</maximum>
          <value>0.0</value>
          <knobWidth>40</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>offset</label>
          <labelEnabled>true</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown' version='2'>
          <objectName>spectraloscils_overlap</objectName>
          <x>217</x>
          <y>57</y>
          <comment>The distance in samples (?hop size?) between overlapping analysis frames</comment>
          <automationAllowed>false</automationAllowed>
          <selectedIndex>2</selectedIndex>
          <fontSize>12</fontSize>
          <randomizable>true</randomizable>
          <bsbDropdownItemList>
            <bsbDropdownItem uniqueId='-1149711122'>
              <name>256</name>
              <value>256</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711121'>
              <name>512</name>
              <value>512</value>
            </bsbDropdownItem>
            <bsbDropdownItem uniqueId='-1149711120'>
              <name>1024</name>
              <value>1024</value>
            </bsbDropdownItem>
          </bsbDropdownItemList>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>spectraloscils_freq</objectName>
          <x>10</x>
          <y>10</y>
          <comment>scale all frequencies</comment>
          <automationAllowed>true</automationAllowed>
          <minimum>0.01</minimum>
          <maximum>4.0</maximum>
          <value>1.0</value>
          <knobWidth>40</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>frequency</label>
          <labelEnabled>true</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
        <objectName>spectraloscilsON</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='-1149711113' name='spectraloscils_binincr' label='' min='1.0' max='15.0' bdresolution='1' automationEnabled='false' value='1.0'>
      <line name='' version='2' max='15.0' min='1.0' bdresolution='1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1149711111' name='spectraloscils_bins' label='' min='1.0' max='1025.0' bdresolution='-1' automationEnabled='false' value='142.43518796992475'>
      <line name='' version='2' max='1025.0' min='1.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='142.43518796992475'/>
      </line>
    </parameter>
    <parameter uniqueId='-1149711109' name='spectraloscils_wetdry' label='' min='0.0' max='1.0' bdresolution='0.1' automationEnabled='false' value='0.3'>
      <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.3'/>
      </line>
    </parameter>
    <parameter uniqueId='-1149711107' name='spectraloscils_binoffset' label='' min='0.0' max='1000.0' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='1000.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1149711105' name='spectraloscils_freq' label='' min='0.01' max='4.0' bdresolution='-1' automationEnabled='false' value='1.0'>
      <line name='' version='2' max='4.0' min='0.01' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1149711103' name='spectraloscilsON' 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>