<instrument type='blue.orchestra.BlueSynthBuilder' editEnabled='true'>
  <name>FM_Clang</name>
  <comment>FM_Clang 
Cabbage original written by Iain McCurdy, 2014
Blue Instrument version translated and extended by Steven Yi, 2017.10.06

============
DESCRIPTION 
============

An FM synthesis based instrument that specialises in creating percussive metallic &apos;clang&apos;-like sounds.

AMPLITUDE - controls pertaining to the control of each notes amplitude
Level		-	Global amplitude control
Attack		-	Attack time. Actually just a small range of control but increasing it can soften the attack subtly
Vel.Att.	-	Degree to which lower note velocities lengthen attack time.
Duration	-	Duration of the overall amplitude decay. Note that depending on other settings notes may actually sound for a shorter time.
Sustain		-	Similar to the effect of a sustain pedal being depressed.

MODULATOR - controls pertaining to the modulator in the FM algorithm
Ratio		-	Ratio of the modulator frequency to that of the carrier.
Vel.Index	-	Index of modulation. This is also always dependent upon note velocity.
Decay		-	Rate of decay of the index. This is heard as the rate of loss of spectral energy or damping.

CARRIER - controls pertaining to the carrier in the FM algorithm
Kyb.Scale	-	Keyboard scaling of the carrier frequency. Zero means that frequencies follow normal keyboard temperament. 
                                                                   Values less than zero mean that frequency intervals from note to note will be compressed.
                                                                   Values greater than zero mean that frequency intervals from note to note will be expanded.

DETUNE - Two FM carrier/modulator pairings can be created with a detuning offset between them to create beating effects. 
          Detuning will also be unique (and repeatable) from note to note to give the instrument character.
Mix		-	Amplitude of the second FM pair. This will control the amplitude of beating (amplitude modulation) effects resulting from the detuning.
Amount		-	Amplitude of the detuning intervals

STEREO - A stereo broadening effect by applying short delays to the left and right channels. The exact durations of the delays will be unique (and repeatable) from note to note to give the instrument character.
Dry/Wet		-	A dry/wet control of this effect
Width		-	A control of the durations of the delays which is heard as a control of the stereo width of the effect.

NOISE - Filtered gaussian noise can be added to the modulator ratio to add discordancy to the tone.
Amount	-	Amplitude of the gaussian noise signal
Filter	-	Narrowness of the bandpass filtering applied to the gaussian noise
Follow Modulator (checkbox)	-	Selects whether the bandpass filter follows the modulator frequency. If &apos;off&apos; it simply follows the carrier frequency.

LFO - A sine shaped LFO added to the modulator ratio of an auxilliary FM pair which is then mixed to an unmodulated pair. This can introduce spectral modulation, as in a bell swinging back and forth as it rings.
Mix	-	Amount of modulated signal mixed into the output.
Depth	-	Depth of the LFO modulation.
Rate	-	Rate of the LFO modulation.
Kybd.Follow	-	Extend to which the rate of LFO modulation follows keyboard notes - keyboard following means that lower notes will modulate at lower frequencies, higher notes will modulate at higher frequencies.

FILTER - Filtering of the sound
LPF	-	A lowpass filter that follows the fundemental frequency of the FM pair
Filter Fundemental (checkbox)	-	If active, the fundemental will be filtered off.

REVERB - a reverb effect using the freeverb opcode

USE MIDI PFIELDS - Allow working with p4=MIDI Key (0-127), p5=MIDI Vel (0-127), or with p4=PCH or Freq, p5 = amdbfs [-96, 0]


=========
REQUIRES
========= 

* Blue 2.7.1
* Csound 6+


========
HISTORY
========

v1.1

* Reworked ftable generation into instrument code to make instrument encapsulated

v1.0

* Translated to Blue from Cabbage, added non-MIDI value pfield operation of instrument
</comment>
  <globalOrc>ga_fmclang_&lt;INSTR_ID&gt; init 0</globalOrc>
  <globalSco/>
  <instrumentText>;; FTables
if (chnget:i(&quot;FM_Clang:sine&quot;) == 0) then
  chnset(ftgen(0,0,4096,10,1), &quot;FM_Clang:sine&quot;)                       ;A SINE WAVE. USED BY THE LFOs.
  chnset(ftgen(0,0,128,21,1,1), &quot;FM_Clang:detune&quot;)			; random array used for fixing unique detune values for each note
  chnset(ftgen(0,0,4096,7,1,2048,1,2048,0), &quot;FM_Clang:dryMap&quot;)         ; dry mixer control mapping
  chnset(ftgen(0,0,4097,9,0.5,1,0), &quot;FM_Clang:impulse&quot;)                    ; shape for the hammer inpulse
  chnset(ftgen(0,0,256,21,1,1), &quot;FM_Clang:stereo&quot;)			; random array used for fixing unique stereo values for each note
  chnset(ftgen(0,0,256,21,1,1), &quot;FM_Clang:hammer&quot;)			; random array used for fixing unique detune values for each note
  chnset(ftgen(0,0,128,-7,-1,128,1), &quot;FM_Clang:scale&quot;)
endif

iftsine	= chnget:i(&quot;FM_Clang:sine&quot;)
iftdetune = chnget:i(&quot;FM_Clang:detune&quot;)
iftDryMap = chnget:i(&quot;FM_Clang:dryMap&quot;)
iftImp = chnget:i(&quot;FM_Clang:impulse&quot;)
iftstereo = chnget:i(&quot;FM_Clang:stereo&quot;)
iftdetune = chnget:i(&quot;FM_Clang:hammer&quot;)
iftscale = chnget:i(&quot;FM_Clang:scale&quot;)

;; Allow working with p4=MIDI Key (0-127), p5=MIDI Vel (0-127), or 
;; with p4=PCH or Freq, p5 = amdbfs [-96, 0]
if ( i(&lt;midiPfields&gt;) == 1) then
    inum = p4
    icps = cpsmidinn(inum)
    ivel = p5
else    
    icps = (p4 &lt; 20) ? cps2pch(p4, 12) : p4
    inum = limit(ftom:i(icps), 0, 127)
    idb = limit(p4, -96, 0)
    ivel = ((idb + 96) / 96) * 127
endif

; Keyboard scaling value. Note &apos;0&apos; maps to a value of -1, note 64 maps to a 
; value of zero and note 127 maps to a value of 1.
iKybdScl = table(inum, iftscale) 

; Amplitude Envelope
idur = i(&lt;Dur&gt;)
iAmpCurve = -8
iRelTim	= (i(&lt;sustain&gt;)==1) ? idur : 0.1
iAttVel	= velmap(ivel, i(&lt;AttVel&gt;) * 0.05, 0)
iAttTim	= iAttVel + i(&lt;AttTime&gt;)

if (iAttTim==0) then
    aAEnv = transegr:a(1, idur, iAmpCurve, 0, iRelTim, iAmpCurve, 0)
else
    aAEnv = transegr:a(0, iAttTim, iAmpCurve, 1, idur, iAmpCurve, 0, iRelTim, iAmpCurve, 0)
endif

; Key velocity to amplitude
iAVel = velmap(ivel, 0, 0.1)

; FM index
iNdx = velmap(ivel, 0, i(&lt;NdxVel&gt;))					; Key velocity to FM index 
kIEnv = transeg(iNdx * octave(-iKybdScl*4), idur, -i(&lt;NdxCurve&gt;), 0)	; Index envelope. Amplitude influenced by &apos;Index&apos; widget control and keyboard scaling (index reduced for higher notes, increased for lower notes)

; Carrier frequency keyboard scaling
icar = 1 * octave(iKybdScl * i(&lt;CarKyb&gt;))

; Carrier ratio modulation
iModRte	= table(inum,iftscale)
iModRte	= octave(iModRte * i(&lt;ModRteKyb&gt;))
kDepEnv	= transeg:a(1, idur, -4, 0)
amod = lfo(&lt;ModDep&gt; * 0.1 * kDepEnv, &lt;ModRte&gt; * iModRte, 0)

; Noise bandpass filter cutoff as it respond to the &apos;Carrier Follow&apos; switch 
kcf = (&lt;NseFllw&gt; == 1) ? icps * &lt;mod&gt; : icps

; Noise amplitude keyboard following
kNseAmp	= octave(iKybdScl * -4) * &lt;NseAmp&gt;

; Main FM algorithm
if (&lt;NseAmp&gt; &gt; 0) then			; If noise amplitude is greater than zero...
    aNse = gauss(kNseAmp)			; ... generate some gaussian noise
    aNse = butbp(aNse, kcf, kcf * &lt;NseBW&gt;)	; bandpass filter the noise
    aNse = butbp(aNse, kcf, kcf * &lt;NseBW&gt;)  	; and again
else 
    aNse = 0			; Otherwise no noise signal!
endif

idetune	= table:i(inum,iftdetune)	; Read a detuning value from a random table
asig = foscil(iAVel, icps*cent(-&lt;Detune&gt; * idetune), 
              icar + aNse, &lt;mod&gt;, kIEnv, iftsine)	; FM pair
aModSig	= foscil(iAVel, icps*cent(-&lt;Detune&gt; * idetune), 
                 icar + amod + aNse, &lt;mod&gt;, kIEnv, iftsine)	; FM pair with modulation
asig = asig + (aModSig * &lt;ModMix&gt;)							; Mix the two FM pairs.

; Auxilliary FM algorithm (used for detuning)
if (&lt;DtnMix&gt; &gt; 0 &amp;&amp; &lt;Detune&gt; &gt; 0) then
    if (&lt;NseAmp&gt; &gt; 0) then
        aNse = gauss(kNseAmp)
        aNse = butbp(aNse, kcf, kcf * &lt;NseBW&gt;)
        aNse = butbp(aNse, kcf, kcf * &lt;NseBW&gt;)
    else 
        aNse= 0
    endif

    idetune = table(inum + 128, iftdetune)	; Read a detuning value from a random table
    asig2 = foscil(iAVel, icps * cent(&lt;Detune&gt; * idetune), icar + aNse, &lt;mod&gt;, kIEnv)	; Detuning applied to fundemental
    aModSig2 = foscil(iAVel, icps * cent(&lt;Detune&gt; * idetune), icar + amod + aNse, &lt;mod&gt;, kIEnv)
    asig2 += (aModSig2 * &lt;ModMix&gt;)
    asig += asig2 * &lt;DtnMix&gt;
endif

; Filter Fundemental
if (i(&lt;FiltFund&gt;) == 1) then 				; If filter fundemental switch is active
    asig = butbr(asig, icps * icar, icps * icar * 0.3)		; Filter out fundemental
    asig = butbr(asig, icps * icar, icps * icar * 0.3)		; and again to make sure it is all gone
endif

; Lowpass Filter
if (i(&lt;LPF&gt;) &lt; 32) then					; If lowpass filter is less than maximum...
 kCF = limit(icps * &lt;LPF&gt;, 20, 20000)			; ...create the cutoff value in CPS based on fundemental and LPF ratio control. Limit to prevent out of range values. 
 asig = clfilt(asig, kCF, 0, 2)				; Butterworth lowpass filter
endif

; Amplitude Envelope
asig = asig * aAEnv * &lt;Amp&gt;				; Apply amplitude envelope

; Stereo Effect
iDlyTimL = table(inum,iftstereo)			; Read a delay time value from a random table based on note played
iDlyTimR = table(inum + 128,iftstereo)		; Read a different delay time value from a random table based on note played

if (&lt;StWidth&gt; &gt; 0 &amp;&amp; &lt;StMix&gt; &gt; 0) then				; If &apos;width&apos; is above zero and &apos;mix&apos; is above zero...
    aL = vdelay(asig, iDlyTimL * &lt;StWidth&gt; * 1000, 0.2 * 1000)	; ...left channel delay
    aR = vdelay(asig, iDlyTimR * &lt;StWidth&gt; * 1000, 0.2 * 1000)	; right channel delay
    aL = ntrpol(asig, aL, &lt;StMix&gt;)			; Mix delayed and dry signal
    aR = ntrpol(asig, aR, &lt;StMix&gt;)	
    blueMixerOut aL, aR					; 
else
    blueMixerOut asig, asig
endif


kDry = table(&lt;RvbDryWet&gt;, iftDryMap, 1)		; map dry/wet control

ga_fmclang_&lt;INSTR_ID&gt; += (asig * kDry)
		
</instrumentText>
  <alwaysOnInstrumentText>aL, aR blueMixerIn

asig = ga_fmclang_&lt;INSTR_ID&gt; 

if (chnget:i(&quot;FM_Clang:wetMap&quot;) == 0) then
  chnset(ftgen(0,0,4096,7,0,2048,1,2048,1), &quot;FM_Clang:wetMap&quot;)         ; wet mixer control mapping
endif
iftWetMap = chnget:i(&quot;FM_Clang:wetMap&quot;)

iRvbHiCut = 1000
aL = butlp(aL, iRvbHiCut)		; Remove some high frequencies
aR = butlp(aR, iRvbHiCut) 
aL, aR freeverb aL, aR, &lt;RvbSize&gt;, 1

kWet = table(&lt;RvbDryWet&gt;, iftWetMap, 1)		

aL = aL * kWet * 4 
aR = aR * kWet * 4

blueMixerOut aL + asig, aR + asig

ga_fmclang_&lt;INSTR_ID&gt; = 0</alwaysOnInstrumentText>
  <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>Amplitude</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>230</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>Amp</objectName>
          <x>10</x>
          <y>29</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>8.0</maximum>
          <value>0.5</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>Dur</objectName>
          <x>168</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.1</minimum>
          <maximum>24.0</maximum>
          <value>12.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>AttVel</objectName>
          <x>115</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>AttTime</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>0.1</maximum>
          <value>0.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>170</x>
          <y>11</y>
          <label>Duration</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>18</x>
          <y>10</y>
          <label>Level</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
          <objectName>sustain</objectName>
          <x>10</x>
          <y>100</y>
          <automationAllowed>true</automationAllowed>
          <label>Sustain</label>
          <selected>true</selected>
          <randomizable>true</randomizable>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>114</x>
          <y>11</y>
          <label>Vel Attack</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>70</x>
          <y>11</y>
          <label>Attack</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>650</x>
        <y>10</y>
        <groupName>Filter</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>200</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>25</x>
          <y>10</y>
          <label>LPF</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
          <objectName>FiltFund</objectName>
          <x>70</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <label>Filter Fundamental</label>
          <selected>true</selected>
          <randomizable>true</randomizable>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>LPF</objectName>
          <x>10</x>
          <y>29</y>
          <automationAllowed>true</automationAllowed>
          <minimum>1.0</minimum>
          <maximum>16.0</maximum>
          <value>16.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>660</x>
        <y>170</y>
        <groupName>Config</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x6680e6ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>190</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
          <objectName>midiPfields</objectName>
          <x>10</x>
          <y>10</y>
          <automationAllowed>true</automationAllowed>
          <label>Use MIDI pfields</label>
          <selected>false</selected>
          <randomizable>true</randomizable>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>520</x>
        <y>10</y>
        <groupName>Detune</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>20</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>20</x>
          <y>10</y>
          <label>Mix</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>62</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>DtnMix</objectName>
          <x>10</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>1.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>Detune</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>25.0</maximum>
          <value>1.5</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>440</x>
        <y>10</y>
        <groupName>Carrier</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>20</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>CarKyb</objectName>
          <x>10</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>-4.0</minimum>
          <maximum>4.0</maximum>
          <value>0.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>10</x>
          <y>10</y>
          <label>Kyb.Scale</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>400</x>
        <y>170</y>
        <groupName>Stereo</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x330033ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>121</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>12</x>
          <y>10</y>
          <label>Dry/Wet</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>71</x>
          <y>10</y>
          <label>Width</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>StMix</objectName>
          <x>10</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.5</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>StWidth</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>0.2</maximum>
          <value>0.01</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>160</x>
        <y>170</y>
        <groupName>LFO</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>230</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>ModMix</objectName>
          <x>10</x>
          <y>29</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>ModDep</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.1</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>126</x>
          <y>11</y>
          <label>Rate</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>ModRteKyb</objectName>
          <x>168</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>-4.0</minimum>
          <maximum>4.0</maximum>
          <value>0.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>164</x>
          <y>11</y>
          <label>Kyb. Follow</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>70</x>
          <y>11</y>
          <label>Depth</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>ModRte</objectName>
          <x>115</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>32.0</maximum>
          <value>3.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>18</x>
          <y>10</y>
          <label>Mix</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>10</x>
        <y>170</y>
        <groupName>Noise</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>140</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>18</x>
          <y>10</y>
          <label>Amount</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>75</x>
          <y>11</y>
          <label>Filter</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBCheckBox'>
          <objectName>NseFllw</objectName>
          <x>10</x>
          <y>100</y>
          <automationAllowed>true</automationAllowed>
          <label>Follow Modulator</label>
          <selected>false</selected>
          <randomizable>true</randomizable>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>NseAmp</objectName>
          <x>10</x>
          <y>29</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>2000.0</maximum>
          <value>1000.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>NseBW</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>5.0E-4</minimum>
          <maximum>1.0</maximum>
          <value>0.001</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>530</x>
        <y>170</y>
        <groupName>Reverb</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x330033ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>20</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>RvbSize</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.55</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>RvbDryWet</objectName>
          <x>10</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>1.0</maximum>
          <value>0.3</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>75</x>
          <y>10</y>
          <label>Size</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>11</x>
          <y>10</y>
          <label>Dry/Wet</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
      <bsbObject type='blue.orchestra.blueSynthBuilder.BSBGroup'>
        <objectName></objectName>
        <x>250</x>
        <y>10</y>
        <groupName>Modulator</groupName>
        <backgroundColor>0x00000033</backgroundColor>
        <borderColor>0x000000ff</borderColor>
        <labelTextColor>0xffffffff</labelTextColor>
        <titleEnabled>true</titleEnabled>
        <width>180</width>
        <height>131</height>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>120</x>
          <y>10</y>
          <label>Decay</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>mod</objectName>
          <x>10</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>1.0</minimum>
          <maximum>17.0</maximum>
          <value>2.29</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>NdxVel</objectName>
          <x>62</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>0.0</minimum>
          <maximum>2.0</maximum>
          <value>1.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>72</x>
          <y>10</y>
          <label>Index</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob' version='2'>
          <objectName>NdxCurve</objectName>
          <x>114</x>
          <y>30</y>
          <automationAllowed>true</automationAllowed>
          <minimum>8.0</minimum>
          <maximum>256.0</maximum>
          <value>16.0</value>
          <knobWidth>50</knobWidth>
          <randomizable>true</randomizable>
          <valueDisplayEnabled>true</valueDisplayEnabled>
          <label>label</label>
          <labelEnabled>false</labelEnabled>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
        <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel' version='2'>
          <objectName></objectName>
          <x>20</x>
          <y>10</y>
          <label>Ratio</label>
          <font>
            <name>System Regular</name>
            <size>12.0</size>
          </font>
        </bsbObject>
      </bsbObject>
    </bsbObject>
  </graphicInterface>
  <parameterList>
    <parameter uniqueId='645703541' name='Amp' label='' min='0.0' max='8.0' bdresolution='-1' automationEnabled='false' value='0.5'>
      <line name='' version='2' max='8.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.5'/>
      </line>
    </parameter>
    <parameter uniqueId='645703543' name='Dur' label='' min='0.1' max='24.0' bdresolution='-1' automationEnabled='false' value='12.0'>
      <line name='' version='2' max='24.0' min='0.1' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='12.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703545' name='AttVel' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703547' name='AttTime' label='' min='0.0' max='0.1' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='0.1' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703549' name='sustain' 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='645703551' name='FiltFund' 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='645703553' name='LPF' label='' min='1.0' max='16.0' bdresolution='-1' automationEnabled='false' value='16.0'>
      <line name='' version='2' max='16.0' min='1.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='16.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703555' name='midiPfields' label='' min='0.0' max='1.0' bdresolution='1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703557' name='DtnMix' 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='645703559' name='Detune' label='' min='0.0' max='25.0' bdresolution='-1' automationEnabled='false' value='1.5'>
      <line name='' version='2' max='25.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.5'/>
      </line>
    </parameter>
    <parameter uniqueId='645703561' name='CarKyb' label='' min='-4.0' max='4.0' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='4.0' min='-4.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703563' name='StMix' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.5'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.5'/>
      </line>
    </parameter>
    <parameter uniqueId='645703565' name='StWidth' label='' min='0.0' max='0.2' bdresolution='-1' automationEnabled='false' value='0.01'>
      <line name='' version='2' max='0.2' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.01'/>
      </line>
    </parameter>
    <parameter uniqueId='645703567' name='ModMix' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703569' name='ModDep' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.1'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.1'/>
      </line>
    </parameter>
    <parameter uniqueId='645703571' name='ModRteKyb' label='' min='-4.0' max='4.0' bdresolution='-1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='4.0' min='-4.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703573' name='ModRte' label='' min='0.0' max='32.0' bdresolution='-1' automationEnabled='false' value='3.0'>
      <line name='' version='2' max='32.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='3.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703575' name='NseFllw' label='' min='0.0' max='1.0' bdresolution='1' automationEnabled='false' value='0.0'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703577' name='NseAmp' label='' min='0.0' max='2000.0' bdresolution='-1' automationEnabled='false' value='1000.0'>
      <line name='' version='2' max='2000.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1000.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703579' name='NseBW' label='' min='5.0E-4' max='1.0' bdresolution='-1' automationEnabled='false' value='0.001'>
      <line name='' version='2' max='1.0' min='5.0E-4' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.001'/>
      </line>
    </parameter>
    <parameter uniqueId='645703581' name='RvbSize' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.55'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.55'/>
      </line>
    </parameter>
    <parameter uniqueId='645703583' name='RvbDryWet' label='' min='0.0' max='1.0' bdresolution='-1' automationEnabled='false' value='0.3'>
      <line name='' version='2' max='1.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='0.3'/>
      </line>
    </parameter>
    <parameter uniqueId='645703585' name='mod' label='' min='1.0' max='17.0' bdresolution='-1' automationEnabled='false' value='2.29'>
      <line name='' version='2' max='17.0' min='1.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='2.29'/>
      </line>
    </parameter>
    <parameter uniqueId='645703587' name='NdxVel' label='' min='0.0' max='2.0' bdresolution='-1' automationEnabled='false' value='1.0'>
      <line name='' version='2' max='2.0' min='0.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='1.0'/>
      </line>
    </parameter>
    <parameter uniqueId='645703589' name='NdxCurve' label='' min='8.0' max='256.0' bdresolution='-1' automationEnabled='false' value='16.0'>
      <line name='' version='2' max='256.0' min='8.0' bdresolution='-1' color='-8355712' rightBound='false' endPointsLinked='false'>
        <linePoint x='0.0' y='16.0'/>
      </line>
    </parameter>
  </parameterList>
  <presetGroup name='Presets' currentPresetUniqueId='-209334457' currentPresetModified='false'>
    <presetGroup name='I. McCurdy'>
      <preset name='Preset 01' uniqueId='-209334457'>
        <setting name='Amp'>ver2:0.5</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:1.5</setting>
        <setting name='DtnMix'>ver2:1</setting>
        <setting name='Dur'>ver2:12</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:16</setting>
        <setting name='NdxVel'>ver2:1</setting>
        <setting name='NseAmp'>ver2:1000</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.3</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:2.29</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 02' uniqueId='-209334456'>
        <setting name='Amp'>ver2:0.8</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:0</setting>
        <setting name='DtnMix'>ver2:0</setting>
        <setting name='Dur'>ver2:1.7</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:3.8</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:100</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.1</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:5.04</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 03' uniqueId='-209334455'>
        <setting name='Amp'>ver2:0.5</setting>
        <setting name='AttTime'>ver2:0.1</setting>
        <setting name='AttVel'>ver2:0.5</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:15</setting>
        <setting name='DtnMix'>ver2:1</setting>
        <setting name='Dur'>ver2:3.8</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:1</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:28</setting>
        <setting name='NdxVel'>ver2:2</setting>
        <setting name='NseAmp'>ver2:50</setting>
        <setting name='NseBW'>ver2:0.0077</setting>
        <setting name='NseFllw'>true</setting>
        <setting name='RvbDryWet'>ver2:0.3</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:1</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 04' uniqueId='-196345801'>
        <setting name='Amp'>ver2:0.5</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0.006</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:2.5</setting>
        <setting name='DtnMix'>ver2:0.47</setting>
        <setting name='Dur'>ver2:24</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:1</setting>
        <setting name='ModRte'>ver2:0.33</setting>
        <setting name='ModRteKyb'>ver2:1.7</setting>
        <setting name='NdxCurve'>ver2:15</setting>
        <setting name='NdxVel'>ver2:1</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.3</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:3.19</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 05' uniqueId='-196345800'>
        <setting name='Amp'>ver2:0.8</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:1</setting>
        <setting name='CarKyb'>ver2:-2.68</setting>
        <setting name='Detune'>ver2:25</setting>
        <setting name='DtnMix'>ver2:1</setting>
        <setting name='Dur'>ver2:6.6</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:3.8</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:13</setting>
        <setting name='NdxVel'>ver2:1</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.172</setting>
        <setting name='RvbSize'>ver2:0.21</setting>
        <setting name='StMix'>ver2:1</setting>
        <setting name='StWidth'>ver2:0.02</setting>
        <setting name='mod'>ver2:1.12</setting>
        <setting name='sustain'>false</setting>
      </preset>
      <preset name='Preset 06' uniqueId='-196345799'>
        <setting name='Amp'>ver2:3.25</setting>
        <setting name='AttTime'>ver2:0.1</setting>
        <setting name='AttVel'>ver2:1</setting>
        <setting name='CarKyb'>ver2:-2.3</setting>
        <setting name='Detune'>ver2:1.5</setting>
        <setting name='DtnMix'>ver2:0</setting>
        <setting name='Dur'>ver2:1.28</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:35</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:2000</setting>
        <setting name='NseBW'>ver2:0.0025</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.68</setting>
        <setting name='RvbSize'>ver2:0.93</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:2.55</setting>
        <setting name='sustain'>false</setting>
      </preset>
      <preset name='Preset 07' uniqueId='-196345798'>
        <setting name='Amp'>ver2:4</setting>
        <setting name='AttTime'>ver2:0.1</setting>
        <setting name='AttVel'>ver2:1</setting>
        <setting name='CarKyb'>ver2:-2.3</setting>
        <setting name='Detune'>ver2:1.5</setting>
        <setting name='DtnMix'>ver2:0</setting>
        <setting name='Dur'>ver2:2.39</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:35</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:16</setting>
        <setting name='NseBW'>ver2:0.1262</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:1</setting>
        <setting name='RvbSize'>ver2:0</setting>
        <setting name='StMix'>ver2:0</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:2.55</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 08' uniqueId='-196345797'>
        <setting name='Amp'>ver2:1</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:-2.3</setting>
        <setting name='Detune'>ver2:1.5</setting>
        <setting name='DtnMix'>ver2:0.13</setting>
        <setting name='Dur'>ver2:14.25</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:4.78</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:1</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:35</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:16</setting>
        <setting name='NseBW'>ver2:0.0326</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.6</setting>
        <setting name='RvbSize'>ver2:0</setting>
        <setting name='StMix'>ver2:0</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:6.97</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 09' uniqueId='-196345796'>
        <setting name='Amp'>ver2:1.65</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:0</setting>
        <setting name='DtnMix'>ver2:0</setting>
        <setting name='Dur'>ver2:1.7</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:3.8</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:100</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.1</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:1.2</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 10' uniqueId='-196345795'>
        <setting name='Amp'>ver2:2</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:12</setting>
        <setting name='DtnMix'>ver2:0.21</setting>
        <setting name='Dur'>ver2:1</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:3.8</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:100</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>false</setting>
        <setting name='RvbDryWet'>ver2:0.35</setting>
        <setting name='RvbSize'>ver2:0.37</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:2.15</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 11' uniqueId='-196345794'>
        <setting name='Amp'>ver2:2</setting>
        <setting name='AttTime'>ver2:0.1</setting>
        <setting name='AttVel'>ver2:1</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:25</setting>
        <setting name='DtnMix'>ver2:0.21</setting>
        <setting name='Dur'>ver2:3.44</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:100</setting>
        <setting name='NdxVel'>ver2:0.55</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>true</setting>
        <setting name='RvbDryWet'>ver2:0</setting>
        <setting name='RvbSize'>ver2:0.37</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.05</setting>
        <setting name='mod'>ver2:3.75</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 12' uniqueId='-196345793'>
        <setting name='Amp'>ver2:2</setting>
        <setting name='AttTime'>ver2:0.1</setting>
        <setting name='AttVel'>ver2:1</setting>
        <setting name='CarKyb'>ver2:0</setting>
        <setting name='Detune'>ver2:25</setting>
        <setting name='DtnMix'>ver2:0.21</setting>
        <setting name='Dur'>ver2:1.45</setting>
        <setting name='FiltFund'>false</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:0</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:16</setting>
        <setting name='NdxVel'>ver2:1</setting>
        <setting name='NseAmp'>ver2:0</setting>
        <setting name='NseBW'>ver2:0.001</setting>
        <setting name='NseFllw'>true</setting>
        <setting name='RvbDryWet'>ver2:0.6</setting>
        <setting name='RvbSize'>ver2:0.37</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.05</setting>
        <setting name='mod'>ver2:2.66</setting>
        <setting name='sustain'>true</setting>
      </preset>
      <preset name='Preset 13' uniqueId='-196345792'>
        <setting name='Amp'>ver2:1.9</setting>
        <setting name='AttTime'>ver2:0</setting>
        <setting name='AttVel'>ver2:0</setting>
        <setting name='CarKyb'>ver2:-4</setting>
        <setting name='Detune'>ver2:1.5</setting>
        <setting name='DtnMix'>ver2:1</setting>
        <setting name='Dur'>ver2:24</setting>
        <setting name='FiltFund'>true</setting>
        <setting name='LPF'>ver2:16</setting>
        <setting name='ModDep'>ver2:0.1</setting>
        <setting name='ModMix'>ver2:1</setting>
        <setting name='ModRte'>ver2:3</setting>
        <setting name='ModRteKyb'>ver2:0</setting>
        <setting name='NdxCurve'>ver2:23.25</setting>
        <setting name='NdxVel'>ver2:1</setting>
        <setting name='NseAmp'>ver2:151</setting>
        <setting name='NseBW'>ver2:0.0178</setting>
        <setting name='NseFllw'>true</setting>
        <setting name='RvbDryWet'>ver2:0.3</setting>
        <setting name='RvbSize'>ver2:0.55</setting>
        <setting name='StMix'>ver2:0.5</setting>
        <setting name='StWidth'>ver2:0.01</setting>
        <setting name='mod'>ver2:2.29</setting>
        <setting name='sustain'>true</setting>
      </preset>
    </presetGroup>
  </presetGroup>
  <opcodeList>
    <udo>
      <opcodeName>velmap</opcodeName>
      <outTypes>i</outTypes>
      <inTypes>iii</inTypes>
      <codeBody>ivel, ilo, ihi xin

xout ilo + ((ivel / 127) * (ihi - ilo))
</codeBody>
      <comments>UDO version of veloc opcode that operates on passed-in value instead of MIDI-initiated note velocity.</comments>
    </udo>
  </opcodeList>
</instrument>