<effect>
  <name>Granularize</name>
  <enabled>true</enabled>
  <numIns>2</numIns>
  <numOuts>2</numOuts>
  <code>setksmps	1
itblsz	=	131072
itbfrq	=	sr / itblsz

; generate tables
ifnA1	ftgentmp	0, 0, itblsz, -7, 0, itblsz, 0
ifnA2	ftgentmp	0, 0, itblsz, -7, 0, itblsz, 0
idclip	ftgentmp	0, 0, itblsz, 7, 0, 36, 1, itblsz-72, 1, 36, 0
iwfn	ftgentmp	0, 0, 4096, 20, 5

; write signal to tables
awp  phasor itbfrq
awin tablei awp, idclip, 1
     tablew ain1*awin, awp, ifnA1, 1
     tablew ain2*awin, awp, ifnA2, 1

; set grain3 parameters
ipitch	=	itbfrq * &lt;freqMult&gt;
kphs	=	0
kfmd	=	&lt;fmdA&gt; + &lt;fmdB&gt;
kpmd	=	&lt;pmd&gt;
kgdur   =	&lt;gdur&gt;
kdens   =	&lt;densA&gt;+&lt;densB&gt;
kmaxovr	=	kdens*kgdur
imaxovr	=	(&lt;densA&gt;+&lt;densB&gt;)*&lt;gdur&gt;+1
kfrpow	=	&lt;frpow&gt;
kprpow	=	&lt;prpow&gt;
iseed	=	0
imode	=	0
kfn1	=	ifnA1
kfn2	=	ifnA2

; granularize both channels
agrain1	grain3	ipitch, kphs, kfmd, kpmd, kgdur, kdens, imaxovr, kfn1, iwfn, kfrpow, kprpow, iseed, imode
agrain2	grain3	ipitch, kphs, kfmd, kpmd, kgdur, kdens, imaxovr, kfn2, iwfn, kfrpow, kprpow, iseed-1, imode
ablk1	dcblock	agrain1
ablk2	dcblock	agrain2

; balance signals
cigoto	(imaxovr &gt; 1), bal
iscal	=	1
goto end

bal:
iscal	=	sqrt(imaxovr) * .666666

end:
print	iscal
aout1	=	ablk1/iscal
aout2	=	ablk2/iscal
</code>
  <comments>Granularize a signal using the grain3 opcode.</comments>
  <opcodeList/>
  <graphicInterface editEnabled='false'>
    <uniqueNameManager nameIndex='-1' defaultPrefix='bsbObj'/>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>fmdB</objectName>
      <x>124</x>
      <y>21</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2000.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>320</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>126</x>
      <y>55</y>
      <label>Variation (in hz) of grain frq.</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>pmd</objectName>
      <x>23</x>
      <y>104</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.1048207</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>14</x>
      <y>185</y>
      <label>Variation of phase</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>gdur</objectName>
      <x>125</x>
      <y>93</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.43119407</value>
      <knobWidth>120</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>147</x>
      <y>234</y>
      <label>Grain duration</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>densB</objectName>
      <x>14</x>
      <y>296</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>2000.0</maximum>
      <resolution>100.0</resolution>
      <value>0.0</value>
      <sliderWidth>400</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>17</x>
      <y>327</y>
      <label>Num. of grains per second</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>densA</objectName>
      <x>14</x>
      <y>261</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>100.0</maximum>
      <resolution>1.0</resolution>
      <value>20.0</value>
      <sliderWidth>400</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>256</x>
      <y>199</y>
      <label>Rnd. frq. distribution</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>frpow</objectName>
      <x>269</x>
      <y>101</y>
      <automationAllowed>true</automationAllowed>
      <minimum>-2.0</minimum>
      <maximum>2.0</maximum>
      <value>-0.3909154</value>
      <knobWidth>80</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>prpow</objectName>
      <x>392</x>
      <y>101</y>
      <automationAllowed>true</automationAllowed>
      <minimum>-2.0</minimum>
      <maximum>2.0</maximum>
      <value>-2.0</value>
      <knobWidth>80</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>379</x>
      <y>199</y>
      <label>Rnd. phase distribution</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>freqMult</objectName>
      <x>508</x>
      <y>17</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>4.0</maximum>
      <value>1.0005438</value>
      <knobWidth>120</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>520</x>
      <y>160</y>
      <label>Frequency Multiplier</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>fmdA</objectName>
      <x>50</x>
      <y>5</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.03121192</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
  </graphicInterface>
  <bsbParameterList>
    <parameter uniqueId='-550441752' name='densA' 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='20.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441754' name='densB' label='' min='0.0' max='2000.0' resolution='100.0' automationEnabled='false'>
      <line name='' version='2' max='2000.0' min='0.0' resolution='100.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441698' name='fmdA' 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.03121192'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441760' name='fmdB' label='' min='0.0' max='2000.0' resolution='1.0' automationEnabled='false'>
      <line name='' version='2' max='2000.0' min='0.0' resolution='1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441716' name='freqMult' label='' min='0.0' max='4.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='4.0' min='0.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='1.0005438'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441750' name='frpow' label='' min='-2.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='-2.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='-0.3909154'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441756' name='gdur' 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.43119407'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441758' name='pmd' 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.1048207'/>
      </line>
    </parameter>
    <parameter uniqueId='-550441748' name='prpow' label='' min='-2.0' max='2.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='2.0' min='-2.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='-2.0'/>
      </line>
    </parameter>
  </bsbParameterList>
</effect>