<instrument type='blue.orchestra.BlueSynthBuilder'>
  <name>4 FM Oscilators</name>
  <comment>DESCRIPTION

This is a 4 oscillator synthesizer.  Each oscillator uses FM synthesis to produce its output (thereby actually making this an 8 oscillator synthesizer), but the output from the oscillators can be combined via additive synthesis or ring modulation.  Each FM signal has its choice of waveform for the carrier and the modulating oscillator.  There is also some optional HP/LP filtering available for the final signal.

UI EXPLANATION

There are four rows of widgets that take up most of the UI.  Each of these rows represents one FM signal.  At the bottom are controls to modify the final amplitude of the signal as well as HP/LP filtering.

Going back to the rows that make up the FM signals.  Each row starts at the left with two waveform selection boxes.  The top box is the waveform for the carrier signal; the bottom box is for the modulating signal. The next widget is a knob to control a value that will be multiplied by the base frequency (p4) to form the carrier&apos;s frequency. The next two knobs are added together and multipled by the base frequency to form the modulating frequency. The next knob&apos;s value is multiplied by the base frequency to form the modulating amplitude, or index. The next two knobs determine the FM signal&apos;s amplitude; the first knob is multiplied by the base amplitude (p5), then then next knob&apos;s value is added to that for fine control over the amplitude.  The last widget determines how this FM signal will be combined with the FM signal from the row below it.

The carrier wave selection and first four knobs after are standard FM synthesis controls.  However, by setting the fifth knob to zero and the sixth knob to some fractional value, one makes the FM signal oscillate between -1 and 1, making it a good candidate for a multiplying value and enabling one to make it be the modulating signal for ring modulation on the next FM signal.

Below the four rows there is a knob and a slider.  The values from these two controls are added and then multiplied to the final signal (after filtering), allowing one to compensate for signal loss.  The two sliders below that control the lowpass and highpass cutoff frequencies respectively.  One can do both simultaneously; lowpass is processed first.

NOTES

If you don&apos;t want to use all four FM signals, just set the carrier amplitude knobs (the fifth and sixth ones) of the FM signals you don&apos;t wish to use to zero.  However, make sure the preceding signal&apos;s function is add, not multiply or divide.  If you wish for one signal not to be FM (and just a plain oscillator), set its modulating amp. multiplier knob (the fourth from the left) to zero.  If you don&apos;t want LP or HP filtering, just set the cutoff frequencies to zero.  Lastly, make sure that the final output multiplier as determined by the knob and slider near the bottom of the UI are (combined) greater than zero or else you won&apos;t get any sound.</comment>
  <globalOrc>gisqrtb_&lt;INSTR_ID&gt;	ftgen	0, 0, 4096, 7, 1, 2048, 1, 0, -1, 2048, -1
gisinetb_&lt;INSTR_ID&gt;	ftgen	0, 0, 4096, 10, 1
gisawtb_&lt;INSTR_ID&gt;	ftgen	0, 0, 4096, 7, -1, 4096, 1
gitrngtb_&lt;INSTR_ID&gt;	ftgen	0, 0, 4096, 7, -1, 2048, 1, 2048, -1
giatktb_&lt;INSTR_ID&gt;	ftgen	0, 0, 4097, 5, .001, 4096, 1</globalOrc>
  <globalSco/>
  <instrumentText>; p3 - duration
; p4 - frequency (pch)
; p5 - amplitude

ipitch	=	cpspch(p4)

iosc1type	=	&lt;dropOsc1Type&gt;
iosc2type	=	&lt;dropOsc2Type&gt;
iosc3type	=	&lt;dropOsc3Type&gt;
iosc4type	=	&lt;dropOsc4Type&gt;
iosc1modt	=	&lt;dropOsc1ModType&gt;
iosc2modt	=	&lt;dropOsc2ModType&gt;
iosc3modt	=	&lt;dropOsc3ModType&gt;
iosc4modt	=	&lt;dropOsc4ModType&gt;
iosc1amp	=	&lt;knobOsc1Amp&gt;
iosc2amp	=	&lt;knobOsc2Amp&gt;
iosc3amp	=	&lt;knobOsc3Amp&gt;
iosc4amp	=	&lt;knobOsc4Amp&gt;
iosc1ampq	=	&lt;knobOsc1AmpEq&gt;
iosc2ampq	=	&lt;knobOsc2AmpEq&gt;
iosc3ampq	=	&lt;knobOsc3AmpEq&gt;
iosc4ampq	=	&lt;knobOsc4AmpEq&gt;
iosc1car	=	&lt;knobOsc1Car&gt;
iosc2car	=	&lt;knobOsc2Car&gt;
iosc3car	=	&lt;knobOsc3Car&gt;
iosc4car	=	&lt;knobOsc4Car&gt;
iosc1mod	=	&lt;knobOsc1Mod1&gt; + &lt;knobOsc1Mod2&gt;
iosc2mod	=	&lt;knobOsc2Mod1&gt; + &lt;knobOsc2Mod2&gt;
iosc3mod	=	&lt;knobOsc3Mod1&gt; + &lt;knobOsc3Mod2&gt;
iosc4mod	=	&lt;knobOsc4Mod1&gt; + &lt;knobOsc4Mod2&gt;
iosc1idx	=	&lt;knobOsc1Idx&gt;
iosc2idx	=	&lt;knobOsc2Idx&gt;
iosc3idx	=	&lt;knobOsc3Idx&gt;
iosc4idx	=	&lt;knobOsc4Idx&gt;
iosc1op	=	&lt;dropOsc1Op&gt;
iosc2op	=	&lt;dropOsc2Op&gt;
iosc3op	=	&lt;dropOsc3Op&gt;
ioutmul	=	&lt;knobOutMul&gt; + &lt;slidOutMul&gt;
iLPfreq	=	&lt;slidLP&gt;
iHPfreq	=	&lt;slidHP&gt;

kamp1	envlpx	(p5*iosc1amp)+iosc1ampq, .1, p3, p3*.5, giatktb_&lt;INSTR_ID&gt;, .8, .001
kamp2	envlpx	(p5*iosc2amp)+iosc2ampq, .1, p3, p3*.5, giatktb_&lt;INSTR_ID&gt;, .8, .001
kamp3	envlpx	(p5*iosc3amp)+iosc3ampq, .1, p3, p3*.5, giatktb_&lt;INSTR_ID&gt;, .8, .001
kamp4	envlpx	(p5*iosc4amp)+iosc4ampq, .1, p3, p3*.5, giatktb_&lt;INSTR_ID&gt;, .8, .001

amod1	oscili	ipitch*iosc1idx, ipitch*iosc1mod, iosc1modt
aosc1	oscili	kamp1, (ipitch*iosc1car)+amod1, iosc1type

amod2	oscili	ipitch*iosc2idx, ipitch*iosc2mod, iosc2modt
aosc2	oscili	kamp2, (ipitch*iosc2car)+amod2, iosc2type

amod3	oscili	ipitch*iosc3idx, ipitch*iosc3mod, iosc3modt
aosc3	oscili	kamp3, (ipitch*iosc3car)+amod3, iosc3type

amod4	oscili	ipitch*iosc4idx, ipitch*iosc4mod, iosc4modt
aosc4	oscili	kamp4, (ipitch*iosc4car)+amod4, iosc4type

stage1:
if (iosc1op == 1) goto osc1add
if (iosc1op == 2) goto osc1sub
if (iosc1op == 3) goto osc1mul
if (iosc1op == 4) goto osc1div

osc1add:
a1	=	aosc1+aosc2
goto stage2

osc1sub:
a1	=	aosc2 - aosc1
goto stage2

osc1mul:
a1	=	aosc1*aosc2
goto stage2

osc1div:
a1	=	aosc2 / aosc1
goto stage2

stage2:
if (iosc2op == 1) goto osc2add
if (iosc2op == 2) goto osc2sub
if (iosc2op == 3) goto osc2mul
if (iosc2op == 4) goto osc2div

osc2add:
a2	=	a1+aosc3
goto stage3

osc2sub:
a2	=	aosc3-a1
goto stage3

osc2mul:
a2	=	a1*aosc3
goto stage3

osc2div:
a2	=	aosc3 / a1
goto stage3

stage3:
if (iosc3op == 1) goto osc3add
if (iosc3op == 2) goto osc3sub
if (iosc3op == 3) goto osc3mul
if (iosc3op == 4) goto osc3div

osc3add:
a3	=	a2+aosc4
goto done

osc3sub:
a3	=	aosc4-a2
goto done

osc3mul:
a3	=	aosc4 * a2
goto done

osc3div:
a3	=	aosc4 / a2
goto done

done:
afilt1	=	0
afilt2	=	0
if (iLPfreq &gt; 0) goto LPF
goto DoHP

LPF:
afilt1	butlp	a3, iLPfreq
afilt1	balance	afilt1, a3

DoHP:
if (iHPfreq &gt; 0) goto HPF
goto DoOuts

HPF:
afilt2	buthp	a3, iHPfreq
afilt2	balance	afilt2, a3

DoOuts:
afilts	=	afilt1+afilt2	
if (iHPfreq+iLPfreq &gt; 0) goto DoFilt
aout	=	a3*ioutmul
goto finished

DoFilt:
aout	=	afilts*ioutmul

finished:
out	aout</instrumentText>
  <graphicInterface>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc1Type</objectName>
      <x>14</x>
      <y>51</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>3</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc2Type</objectName>
      <x>16</x>
      <y>121</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc3Type</objectName>
      <x>18</x>
      <y>191</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc4Type</objectName>
      <x>16</x>
      <y>263</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1Car</objectName>
      <x>104</x>
      <y>41</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.500964</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2Car</objectName>
      <x>104</x>
      <y>114</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.49959445</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3Car</objectName>
      <x>104</x>
      <y>184</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.25260845</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4Car</objectName>
      <x>104</x>
      <y>256</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.25312445</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1Mod1</objectName>
      <x>172</x>
      <y>42</y>
      <minimum>0.0</minimum>
      <maximum>10.0</maximum>
      <value>0.20183627</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1Mod2</objectName>
      <x>234</x>
      <y>42</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>1.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2Mod2</objectName>
      <x>234</x>
      <y>114</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>1.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2Mod1</objectName>
      <x>172</x>
      <y>114</y>
      <minimum>0.0</minimum>
      <maximum>10.0</maximum>
      <value>0.20361179</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3Mod2</objectName>
      <x>234</x>
      <y>186</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>1.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3Mod1</objectName>
      <x>172</x>
      <y>186</y>
      <minimum>0.0</minimum>
      <maximum>10.0</maximum>
      <value>0.22485344</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4Mod2</objectName>
      <x>234</x>
      <y>258</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.25676453</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4Mod1</objectName>
      <x>172</x>
      <y>258</y>
      <minimum>0.0</minimum>
      <maximum>10.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1Idx</objectName>
      <x>296</x>
      <y>42</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.8732132</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2Idx</objectName>
      <x>296</x>
      <y>114</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.40060535</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3Idx</objectName>
      <x>296</x>
      <y>186</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.751258</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4Idx</objectName>
      <x>296</x>
      <y>258</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>1.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc1ModType</objectName>
      <x>14</x>
      <y>80</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc2ModType</objectName>
      <x>16</x>
      <y>150</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>1</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc3ModType</objectName>
      <x>18</x>
      <y>218</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc4ModType</objectName>
      <x>16</x>
      <y>292</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>sine</name>
          <value>gisinetb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>square</name>
          <value>gisqrtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>sawtooth</name>
          <value>gisawtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>triangle</name>
          <value>gitrngtb_&lt;INSTR_ID&gt;</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>2</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1Amp</objectName>
      <x>380</x>
      <y>43</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2Amp</objectName>
      <x>380</x>
      <y>117</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3Amp</objectName>
      <x>380</x>
      <y>187</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.47859785</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4Amp</objectName>
      <x>380</x>
      <y>257</y>
      <minimum>0.0</minimum>
      <maximum>2.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc1AmpEq</objectName>
      <x>442</x>
      <y>43</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.5061612</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc2AmpEq</objectName>
      <x>442</x>
      <y>117</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.52828926</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc3AmpEq</objectName>
      <x>442</x>
      <y>187</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOsc4AmpEq</objectName>
      <x>442</x>
      <y>257</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>0.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc1Op</objectName>
      <x>519</x>
      <y>62</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>add</name>
          <value>1</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>subtract from</name>
          <value>2</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>multiply</name>
          <value>3</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>divide into</name>
          <value>4</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc2Op</objectName>
      <x>519</x>
      <y>134</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>add</name>
          <value>1</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>subtract from</name>
          <value>2</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>multiply</name>
          <value>3</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>divide into</name>
          <value>4</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>2</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBDropdown'>
      <objectName>dropOsc3Op</objectName>
      <x>519</x>
      <y>206</y>
      <bsbDropdownItemList>
        <bsbDropdownItem>
          <name>add</name>
          <value>1</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>subtract from</name>
          <value>2</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>multiply</name>
          <value>3</value>
        </bsbDropdownItem>
        <bsbDropdownItem>
          <name>divide into</name>
          <value>4</value>
        </bsbDropdownItem>
      </bsbDropdownItemList>
      <selectedIndex>0</selectedIndex>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>24</x>
      <y>366</y>
      <label>Multiply output by:</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBKnob'>
      <objectName>knobOutMul</objectName>
      <x>134</x>
      <y>350</y>
      <minimum>0.0</minimum>
      <maximum>1.0</maximum>
      <value>1.0</value>
      <knobWidth>60</knobWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>slidOutMul</objectName>
      <x>222</x>
      <y>361</y>
      <minimum>0.0</minimum>
      <maximum>10.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>slidLP</objectName>
      <x>32</x>
      <y>446</y>
      <minimum>0.0</minimum>
      <maximum>14000.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>38</x>
      <y>430</y>
      <label>Lowpass</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBHSlider'>
      <objectName>slidHP</objectName>
      <x>242</x>
      <y>446</y>
      <minimum>0.0</minimum>
      <maximum>14000.0</maximum>
      <resolution>1.0</resolution>
      <value>0.0</value>
      <sliderWidth>150</sliderWidth>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>268</x>
      <y>428</y>
      <label>Highpass</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>17</x>
      <y>10</y>
      <label>Carrier wave</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>20</x>
      <y>29</y>
      <label>Mod. wave</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>101</x>
      <y>7</y>
      <label>Carrier freq.</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>110</x>
      <y>23</y>
      <label>multiplier</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>177</x>
      <y>23</y>
      <label>Mod. freq. multiplier</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>299</x>
      <y>8</y>
      <label>Mod. amp.</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>304</x>
      <y>26</y>
      <label>multiplier</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>406</x>
      <y>15</y>
      <label>Carrier amp.</label>
    </bsbObject>
    <bsbObject type='blue.orchestra.blueSynthBuilder.BSBLabel'>
      <objectName/>
      <x>505</x>
      <y>17</y>
      <label>Function on next signal</label>
    </bsbObject>
  </graphicInterface>
  <presetGroup name=''/>
</instrument>