<effect>
  <name>Mod-mod</name>
  <enabled>true</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>kdel1amp	=	&lt;del1Amp&gt;/2
kdel1frq	=	&lt;del1FrqA&gt;+&lt;del1FrqB&gt;+&lt;del1FrqC&gt;
kmod1amp	=	&lt;mod1Amp&gt;/2
kmod1frqmin	=	kdel1frq * (&lt;mod1MinFrqA&gt;+&lt;mod1MinFrqB&gt;)
kmod1frqmax	=	kdel1frq * (&lt;mod1MaxFrqA&gt;+&lt;mod1MaxFrqB&gt;)
kdel2amp	=	&lt;del2Amp&gt;/2
kdel2frq	=	&lt;del2FrqA&gt;+&lt;del2FrqB&gt;+&lt;del2FrqC&gt;
kmod2amp	=	&lt;mod2Amp&gt;/2
kmod2frqmin	=	kdel1frq * (&lt;mod2MinFrqA&gt;+&lt;mod2MinFrqB&gt;)
kmod2frqmax	=	kdel1frq * (&lt;mod2MaxFrqA&gt;+&lt;mod2MaxFrqB&gt;)
kdel1fdbk	=	&lt;del1Fdbk&gt;
kdel2fdbk	=	&lt;del2Fdbk&gt;
imaxdel		=	4
itbsin	ftgentmp	0, 0, 8192, 10, 1, 0

; delay modifiers
kmod1A	jspline	kmod1amp, kmod1frqmin, kmod1frqmax
kmod1B	jspline	kmod1amp, kmod1frqmin, kmod1frqmax
kmod1A	=	kmod1A+kmod1amp
kmod1B	=	kmod1B+kmod1amp
kmod2A	jspline	kmod2amp, kmod2frqmin, kmod2frqmax
kmod2B	jspline	kmod2amp, kmod2frqmin, kmod2frqmax
kmod2A	=	kmod2A+kmod2amp
kmod2B	=	kmod2B+kmod2amp

; delay oscilators
kdel1A	oscili	kdel1amp, kdel1frq*(1+kmod1A), itbsin
kdel1B	oscili	kdel1amp, kdel1frq*(1+kmod1B), itbsin
kdel1A	=	kdel1A+kdel1amp
kdel1B	=	kdel1B+kdel1amp
kdel2A	oscili	kdel2amp, kdel2frq*(1+kmod2A), itbsin
kdel2B	oscili	kdel2amp, kdel2frq*(1+kmod2B), itbsin
kdel2A	=	kdel2A+kdel2amp
kdel2B	=	kdel2B+kdel2amp

; setup delay lines

afdbk1	init	0
afdbk2	init	0

adelL	delayr	imaxdel
afeed1A	deltapi	kdel1A
afeed2A	deltapi	kdel2A
delayw	ain1+afdbk1

adelR	delayr	imaxdel
afeed1B	deltapi	kdel1B
afeed2B	deltapi	kdel2B
delayw	ain2+afdbk2

afdbk1	=	((afeed1A+afeed1B)/2)*kdel1fdbk
afdbk2	=	((afeed2A+afeed2B)/2)*kdel2fdbk

aout1	=	(ain1+afeed1A+afeed2A)/3
aout2	=	(ain2+afeed1B+afeed2B)/3
</code>
  <comments>A dual modulator, dual channel delay-based modulator. Each modulator uses an oscillator as the base to mosulate the delay lines; this can be an LFO or audio-range frequency. These oscillators are then modulated by their own jspline modulator, fully configurable in the UI. The results can be anything from full-on distortion to subtle chorus effects.</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <uniqueNameManager nameIndex='11' defaultPrefix='bsbObj'/>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>149</x>
      <y>9</y>
      <label>&lt;html&gt;&lt;font size=&quot;+1&quot;&gt;Delay 1&lt;/font&gt;&lt;/html&gt;</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del1Amp</objectName>
      <x>23</x>
      <y>40</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.058489654</value>
      <knobWidth>120</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>20</x>
      <y>181</y>
      <label>Delay range (in seconds)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del1FrqA</objectName>
      <x>176</x>
      <y>47</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.30636454</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>del1FrqB</objectName>
      <x>248</x>
      <y>57</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>100.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>del1FrqC</objectName>
      <x>249</x>
      <y>92</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>22000.0</maximum>
      <resolution>100.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>253</x>
      <y>134</y>
      <label>Delay Frequency</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod1Amp</objectName>
      <x>27</x>
      <y>205</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.41468227</value>
      <knobWidth>120</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>0</x>
      <y>346</y>
      <label>Mod. range (as factor of del. freq.)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod1MinFrqA</objectName>
      <x>177</x>
      <y>160</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>mod1MinFrqB</objectName>
      <x>251</x>
      <y>180</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1000.0</maximum>
      <resolution>1.0</resolution>
      <value>37.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>196</x>
      <y>241</y>
      <label>Mod. Min. Freq. (factor of delay frq)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod1MaxFrqA</objectName>
      <x>177</x>
      <y>265</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>mod1MaxFrqB</objectName>
      <x>251</x>
      <y>285</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1000.0</maximum>
      <resolution>1.0</resolution>
      <value>51.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>196</x>
      <y>346</y>
      <label>Mod. Max. Freq. (factor of delay frq)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>631</x>
      <y>15</y>
      <label>&lt;html&gt;&lt;font size=&quot;+1&quot;&gt;Delay 2&lt;/font&gt;&lt;/html&gt;</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del2Amp</objectName>
      <x>505</x>
      <y>46</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.036174744</value>
      <knobWidth>120</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>502</x>
      <y>187</y>
      <label>Delay range (in seconds)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del2FrqA</objectName>
      <x>658</x>
      <y>53</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.30636454</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>del2FrqB</objectName>
      <x>730</x>
      <y>63</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>100.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>del2FrqC</objectName>
      <x>731</x>
      <y>98</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>22000.0</maximum>
      <resolution>100.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>735</x>
      <y>140</y>
      <label>Delay Frequency</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod2Amp</objectName>
      <x>509</x>
      <y>211</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.37465295</value>
      <knobWidth>120</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>482</x>
      <y>352</y>
      <label>Mod. range (as factor of del. freq.)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod2MinFrqA</objectName>
      <x>659</x>
      <y>166</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>mod2MinFrqB</objectName>
      <x>733</x>
      <y>186</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1000.0</maximum>
      <resolution>1.0</resolution>
      <value>44.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>678</x>
      <y>247</y>
      <label>Mod. Min. Freq. (factor of delay frq)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>mod2MaxFrqA</objectName>
      <x>659</x>
      <y>271</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>mod2MaxFrqB</objectName>
      <x>733</x>
      <y>291</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1000.0</maximum>
      <resolution>1.0</resolution>
      <value>51.0</value>
      <sliderWidth>150</sliderWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>678</x>
      <y>352</y>
      <label>Mod. Max. Freq. (factor of delay frq)</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del1Fdbk</objectName>
      <x>61</x>
      <y>380</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>72</x>
      <y>483</y>
      <label>Feedback</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>del2Fdbk</objectName>
      <x>553</x>
      <y>385</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>564</x>
      <y>488</y>
      <label>Feedback</label>
    </bsbObject>
  </graphicInterface>
  <bsbParameterList>
    <parameter uniqueId='-742244987' name='del1Amp' label='' min='0.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.058489654'/>
      </line>
    </parameter>
    <parameter uniqueId='-674710429' name='del1Fdbk' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244985' name='del1FrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.30636454'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244983' name='del1FrqB' label='' min='0.0' max='100.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='100.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244981' name='del1FrqC' label='' min='0.0' max='22000.0' resolution='100.0' automationEnabled='false'>
      <line name='' version='2' max='22000.0' min='0.0' resolution='100.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244895' name='del2Amp' label='' min='0.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.036174744'/>
      </line>
    </parameter>
    <parameter uniqueId='-674710427' name='del2Fdbk' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244893' name='del2FrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.30636454'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244891' name='del2FrqB' label='' min='0.0' max='100.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='100.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244889' name='del2FrqC' label='' min='0.0' max='22000.0' resolution='100.0' automationEnabled='false'>
      <line name='' version='2' max='22000.0' min='0.0' resolution='100.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244979' name='mod1Amp' label='' min='0.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.41468227'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244973' name='mod1MaxFrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244971' name='mod1MaxFrqB' label='' min='0.0' max='1000.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='1000.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='51.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244977' name='mod1MinFrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244975' name='mod1MinFrqB' label='' min='0.0' max='1000.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='1000.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='37.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244887' name='mod2Amp' label='' min='0.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.37465295'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244881' name='mod2MaxFrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244879' name='mod2MaxFrqB' label='' min='0.0' max='1000.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='1000.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='51.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244885' name='mod2MinFrqA' label='' min='0.0' max='1.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='1.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-742244883' name='mod2MinFrqB' label='' min='0.0' max='1000.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='1000.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='44.0'/>
      </line>
    </parameter>
  </bsbParameterList>
</effect>