<instrument type='blue.orchestra.BlueSynthBuilder' editEnabled='true'>
  <name>Pickover</name>
  <comment>As originally coded by Ignasi Alvarez Garriga (I think...)</comment>
  <globalOrc/>
  <globalSco/>
  <instrumentText>; Pickover attractor
;
;	x&apos; = sin(ay) - z cos(bx)
;	y&apos; = z sin(cx) - cos(dy)
;	z&apos; = sin(x)
;
;	parameters : a, b, c, d
;
;	Ignasi Alvarez, 1998
;	Rev. 2005

izoom = p4
ipanL	=	sqrt(p5)
ipanR	=	sqrt(1-p5)
kgain	=	&lt;gain&gt;

ka = &lt;paramA&gt;
kb = &lt;paramB&gt;
kc = &lt;paramC&gt;
kd = &lt;paramD&gt;

kdt = &lt;dt&gt;
kdt2 = kdt/2
kgainx = &lt;gainX&gt;
kgainy = &lt;gainY&gt;
kgainz = &lt;gainZ&gt;

; les variables kfun es necessiten per calcular els valors amb l&apos;opcode sin i cos
kfun1 init 0
kfun2 init 0
kfun3 init 0
kfun4 init 0
kpimedios = 1.570796326795

ky init 1
kz init 1
kx init 1

kxo init 0
kyo init 0
kzo init 0

kynew init 0
kxnew init 0
kznew init 0

kynewo init 0
kxnewo init 0
kznewo init 0

kcont init 0

loop:

;sistema d&apos;equacions

kfun1 = sin(ka*ky*kpimedios)
kfun2 = cos(kb*kx*kpimedios)
kfun3 = sin(kc*kx*kpimedios)
kfun4 = cos(kd*ky*kpimedios)

kxnew=kfun1-kz*kfun2
kynew=kfun3*kz-kfun4
kznew= sin(kx)

kxo=kx
kyo=ky
kzo=kz

kxnewo=kxnew
kynewo=kynew
kznewo=kznew

kx=kxo+kxnewo*kdt
ky=kyo+kynewo*kdt
kz=kzo+kznewo*kdt

;sistema d&apos;equacions

kfun1 = sin(ka*ky*kpimedios)
kfun2 = cos(kb*kx*kpimedios)
kfun3 = sin(kc*kx*kpimedios)
kfun4 = cos(kd*ky*kpimedios)

kxnew=kfun1-kz*kfun2
kynew=kfun3*kz-kfun4
kznew= sin(kx)

kx=kxo+kdt2*(kxnew+kxnewo)
ky=kyo+kdt2*(kynew+kynewo)
kz=kzo+kdt2*(kznew+kznewo)

kcont=kcont+1

if kcont!=izoom kgoto loop
kcont=0

asig1 = (kx*kgainx+ky*kgainy+kgainz*kz)*kgain

; Optionally output to a Display object:

;outvalue &quot;kdisplax&quot;, 1.25+kx/5
;outvalue &quot;kdisplay&quot;, 1.25+ky/5


blueMixerOut asig1*ipanL,asig1*ipanR
</instrumentText>
  <graphicInterface editEnabled='false'>
    <uniqueNameManager nameIndex='4' defaultPrefix='bsbObj'/>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>paramA</objectName>
      <x>61</x>
      <y>34</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.954</minimum>
      <maximum>0.965</maximum>
      <value>0.954</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>79</x>
      <y>135</y>
      <label>Param A</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>paramB</objectName>
      <x>154</x>
      <y>34</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.415</minimum>
      <maximum>0.438</maximum>
      <value>0.423018</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>172</x>
      <y>135</y>
      <label>Param B</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>paramC</objectName>
      <x>245</x>
      <y>34</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.731</minimum>
      <maximum>0.74</maximum>
      <value>0.734963</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>263</x>
      <y>135</y>
      <label>Param C</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>paramD</objectName>
      <x>334</x>
      <y>34</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.215</minimum>
      <maximum>0.217</maximum>
      <value>0.217</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>352</x>
      <y>135</y>
      <label>Param D</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>dt</objectName>
      <x>61</x>
      <y>164</y>
      <automationAllowed>true</automationAllowed>
      <minimum>2.0E-4</minimum>
      <maximum>0.2</maximum>
      <value>0.134925</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>93</x>
      <y>266</y>
      <label>dT</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>gainX</objectName>
      <x>152</x>
      <y>164</y>
      <automationAllowed>true</automationAllowed>
      <minimum>-5000.0</minimum>
      <maximum>5000.0</maximum>
      <value>-605.0</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>173</x>
      <y>264</y>
      <label>Gain X</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>gainY</objectName>
      <x>242</x>
      <y>164</y>
      <automationAllowed>true</automationAllowed>
      <minimum>-5000.0</minimum>
      <maximum>5000.0</maximum>
      <value>1304.0</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>263</x>
      <y>264</y>
      <label>Gain Y</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>gainZ</objectName>
      <x>334</x>
      <y>164</y>
      <automationAllowed>true</automationAllowed>
      <minimum>-5000.0</minimum>
      <maximum>5000.0</maximum>
      <value>-639.0</value>
      <knobWidth>80</knobWidth>
      <randomizable>true</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>355</x>
      <y>264</y>
      <label>Gain Z</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
      <objectName>gain</objectName>
      <x>469</x>
      <y>62</y>
      <automationAllowed>true</automationAllowed>
      <minimum>0.01</minimum>
      <maximum>5.0</maximum>
      <value>3.2612545</value>
      <knobWidth>60</knobWidth>
      <randomizable>false</randomizable>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName></objectName>
      <x>464</x>
      <y>138</y>
      <label>Master Gain</label>
    </bsbObject>
  </graphicInterface>
  <bsbParameterList>
    <parameter uniqueId='-1365000820' name='dt' label='' min='2.0E-4' max='0.2' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='0.2' min='2.0E-4' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.134925'/>
      </line>
    </parameter>
    <parameter uniqueId='-567852091' name='gain' label='' min='0.01' max='5.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='5.0' min='0.01' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='3.2612545'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000818' name='gainX' label='' min='-5000.0' max='5000.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='5000.0' min='-5000.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='-605.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000816' name='gainY' label='' min='-5000.0' max='5000.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='5000.0' min='-5000.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='1304.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-567852111' name='gainZ' label='' min='-5000.0' max='5000.0' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='5000.0' min='-5000.0' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='-639.0'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000828' name='paramA' label='' min='0.954' max='0.965' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='0.965' min='0.954' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.954'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000826' name='paramB' label='' min='0.415' max='0.438' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='0.438' min='0.415' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.423018'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000824' name='paramC' label='' min='0.731' max='0.74' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='0.74' min='0.731' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.734963'/>
      </line>
    </parameter>
    <parameter uniqueId='-1365000822' name='paramD' label='' min='0.215' max='0.217' resolution='-1.0' automationEnabled='false'>
      <line name='' version='2' max='0.217' min='0.215' resolution='-1.0' color='-8355712' rightBound='false'>
        <linePoint x='0.0' y='0.217'/>
      </line>
    </parameter>
  </bsbParameterList>
  <presetGroup name='Presets'/>
  <opcodeList/>
</instrument>