User:Eufalesio/How to build edos in DAWs

Revision as of 12:45, 12 December 2025 by Eufalesio (talk | contribs) (Birth)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This guide explains the workflow I use to build any edo. I could theoretically build any edo well up until the forty-thousands, but for practicality's sake (plus stylistic choice and personal taste) I really only use 12, 72, 94, 217, 270, 311.

This guide is for Logic Pro, for Apple, the DAW I use to compose my music. I have no guarantee that my workflow will be compatible with other DAWs, but it can help from a theoretical standpoint if you choose to build edos in other DAWs using the methods I expose in this article.

Edos 1,2,3,4,6

Just use 12edo.

Edos 5,7,8,9,10,11

You need to retune your plugin. Since they have less than 12 notes, you can fit everything within an octave.

  • Advantages: Trivially easy to build and use, accessible xenharmony (not microtonality).
  • Disdvantages: Non-transposing friendly, very coarse edos, bad intonation.

Edos 12n

This technically also includes subset edos like 8, 9, 10, 16, 18, 27 with a fine enough 12n edo. Just create copies of the same track, detuned by 100/n cents from each other, and make each instance to a whitelist a unique MIDI channel, controlled by a master track.

To compose in it, play your thing in the master track as if it were 12edo, and detune the notes to your heart's content.

  • Advantages: Trivially easy to build and use, transposing friendly, extremely intuitive, accessible microtonality!
  • Disadvantages: Only possible with 12n edos. Edos above 72 or 84 may become unwieldy or RAM-intensive, due to the abundance of many instrument instances.

Good edos: 24, 72, 84

Edos >12

At this point, you have two ways of building edos, each of them benefits and drawbacks.

Keyboard retuning

Fit the whole gamut of your edo within as many semitones as you need. Viable for edos for up to ~36. Absolute limit is 128edo, which maps every single midi note to an edostep, but you only have an octave span. Thankfully, if you need more octaves, you can make more instances at different octaves. This is how Lumatone mappings often work.

  • Advantages: Naïve approach to retune an edo. Extremely easy to conceptualize and build, if your plugin supports scale export.
  • Disadvantages: Much harder to compose using this method because the keyboard has the notes way out of place. Programming notes in, is a more viable workflow, albeit less in the feels. Limited octave range, but can be expanded with MIDI channels.

Good edos: 17, 19, 22, 31, 34 - Reasoning: Good fifths and/or Good 5-limit approximations

Preset-scale deviations - MIDI channels only

Tune your 12 notes in your octave to a fixed scale, I recommend 12edo or 5L 7s 6|5 (or 7L 5s 6|5 if you're using meantone), as it is very easy to extend to any edo, specially as they get large. Then, make separate instances of each track that differ by edosteps, with a whitelisted midi channel. Of course, there are only 16 MIDI channels, so this method cannot be extended indefinitely. This method is robust, as it can allow you to reach any edo up to sharp-16 (A1≥16). This includes every edo up to 199 except for 148, 160, 162, 165, 167, 169, 172, 174, 176, 177, 179, 181, 183, 184, 186, 188, 189, 190, 191, 193, 195, 196, 197, 198.

  • Advantages: Able to build very fine-grained edos, able to compose using 12 notes, then able to retune them.
  • Disadvantages: Harder to set up, less transposing-friendly because of wolf intervals.

Good edos: 41, 53, 94, 130, 159 - Reasoning: Astounding fifths and/or Great 13-limit approximations

Preset-scale deviations - MIDI and articulations

Have your fixed scale, and your instances, but now, not only are we detuning with MIDI channels, but with articulations too. These are part of MIDI 2, mind you. In Logic Pro, you can have up to 255 articulations, and with some clever scripting and combining that with MIDI channels, you can theoretically compose in any edo with sharpness up to 4080! That's around 43000edo!

But there's a caveat. To do this method effectively, you must use a plugin with MPE (MIDI Polyphonic Expression), and make sure you have enough pitch bend resolution to represent the amount of pitchbend per edostep accurately (MPE PB spans +- 8192). I vibe coded a Javascript script that manages to do so, with the following .plist for all the articulations. I don't know if it works in other DAWs, but it works in Logic, and that's enough for me.

  • Advantages: Near total freedom of pitch and tuning options, allows use of extremely fine edos, 10.3 octave range, practical to compose in.
  • Disadvantages: (Probably) Non-transposing friendly. Requires MPE or else instrument must be monophonic. Hard to setup, very technical, prone to error.

Good edos: 217, 270, 311, 612, 1600, 2460 - Reasoning: Very high consistency limit / Astonishing 2.3.5.7.11.13.19 approximations (270edo). When you begin to use edos beyond 159, the absolute error starts to be come negligible with good edos, and consistency is what makes a fine-grained edo great. 270 is special because it approximates the 2.3.5.7.11.13.19 astonishingly well for its size. 1600edo has absolute error comparable to 270, and almost 43-odd-limit consistency. 612edo and 2460 are S tier 12n edos, so you get transposing-friendly hyperfine microtonality.

Vibe-coded Javascript script
// Generalized EDO via MIDI Channel base steps + CC micro offsets + per-note channel allocator (MPE-style)
// ─────────────────────────────────────────────────────────────────────────────────────────────────────
// Base step: (incomingChannel - (n+1)) * MidiChDeviationSplit
// Micro step (only if Split > 1):
//   Split=2: CC values 63,64,65 → -1,0,+1
//   Split=3: CC values 62..66    → -2,-1,0,+1,+2
// Final step = base + micro; cents = step * (1200/EDO)
//
// Each NoteOn gets a dedicated member channel (2..16 by default). We send PB there, then delay NoteOn
// slightly so the bend lands first. NoteOff releases the channel and re-centers PB when idle.

// ===== Defaults / State =====
var n = 8;                        // zero step at channel (n+1); handled IN channels 2..(2n-2)
var maxDeviation = 200;           // synth PB ±range in cents (±100=±1 st, ±200=±2 st)
var ccNumber = 27;                // articulation CC number
var EDO = 311;                    // generalized EDO
var MidiChDeviationSplit = 2;     // 1=+1/chan, 2=+2/chan, 3=+3/chan (others = base-only)

var noteDelayMs = 2;              // ensure PB lands before NoteOn
var memberStart = 2, memberEnd = 16; // allocator pool for per-note channels
var offsetScopeGlobal = true;     // Global-Last vs Per-Channel CC latching
var swallowCC = true;             // keep articulation CC from reaching the synth
var debug = false;

// Derived
var STEP_CENTS = 1200.0 / EDO;

// Micro offset memory
var globalMicro = 0;
var microByInCh = Array(17).fill(0);   // 1..16

// Allocator state
var channelBusy = Array(17).fill(0);   // active note count per member channel
var centered = Array(17).fill(true);   // whether PB is centered on that channel
var noteMap = {};                      // key(inCh,pitch,id) -> { ch, id }
var uniq = 1;

// ===== UI =====
var PluginParameters = [
  // EDO numeric entry, now capped at 65535
  { name:"EDO", type:"lin", minValue:1, maxValue:65535, numberOfSteps:65534, defaultValue:311 },

  { name:"Channel at which step=0 (n)", type:"lin", minValue:3, maxValue:9, numberOfSteps:6, defaultValue:8 },
  { name:"PB range (± cents)", type:"float", minValue:1, maxValue:4800, numberOfSteps:4799, defaultValue:200 },
  { name:"Articulation CC#", type:"lin", minValue:0, maxValue:127, numberOfSteps:127, defaultValue:27 },

  // MidiChDeviationSplit slider 0..63 (1/2/3 keep special CC semantics; others = base-only)
  { name:"MidiChDeviationSplit", type:"lin", minValue:0, maxValue:63, numberOfSteps:63, defaultValue:2 },

  { name:"Offset scope", type:"menu", valueStrings:["Per-Channel","Global-Last"], defaultValue:1 },
  { name:"Swallow CC to synth", type:"menu", valueStrings:["No","Yes"], defaultValue:1 },
  { name:"Member Ch Start", type:"lin", minValue:2, maxValue:16, numberOfSteps:14, defaultValue:2 },
  { name:"Member Ch End", type:"lin", minValue:2, maxValue:16, numberOfSteps:14, defaultValue:16 },
  { name:"NoteOn Delay (ms)", type:"lin", minValue:0, maxValue:10, numberOfSteps:10, defaultValue:2 },
  { name:"Debug Trace", type:"menu", valueStrings:["Off","On"], defaultValue:0 }
];

function ParameterChanged(p,v){
  if (p===0){
    // EDO clamp 1..65535; keep as integer
    var EDO_MAX = 65535;
    var iv = Math.floor(v);
    if (iv < 1) iv = 1;
    if (iv > EDO_MAX) iv = EDO_MAX;
    EDO = iv;
    STEP_CENTS = 1200.0 / EDO;
  }
  else if (p===1){ n = Math.floor(v); }
  else if (p===2){ maxDeviation = Math.max(1, v); }
  else if (p===3){ ccNumber = Math.floor(v); }
  else if (p===4){
    // Split 0..63 integer; only 1/2/3 have micro-CC semantics; others = base-only (micro=0)
    var sv = Math.floor(v);
    if (sv < 0) sv = 0;
    if (sv > 63) sv = 63;
    MidiChDeviationSplit = sv;
  }
  else if (p===5){ offsetScopeGlobal = (v|0)===1; }
  else if (p===6){ swallowCC = (v|0)===1; }
  else if (p===7){ memberStart = Math.max(2, Math.min(16, v|0)); }
  else if (p===8){ memberEnd   = Math.max(2, Math.min(16, v|0)); }
  else if (p===9){ noteDelayMs = v|0; }
  else if (p===10){ debug = (v|0)===1; }
  if (memberEnd < memberStart) memberEnd = memberStart;
}

// ===== Helpers =====
function safeCh(ch){ ch=(ch|0)||1; if (ch<1) ch=1; if (ch>16) ch=16; return ch; }

function baseStepFromInChannel(ch){
  // Zero at (n+1); channels 2..(2n-2) are the intended control lanes
  return (ch - (n + 1)) * MidiChDeviationSplit;
}

// CC micro decoding per split setting (unchanged semantics)
function microFromCC(val){
  // Split==1: CC ignored (base-only), as designed
  if (MidiChDeviationSplit === 1) return 0;

  // General rule for all other Split values:
  // interpret CC around 64 as a signed offset in EDO steps.
  // CC 0..127 → micro −64..+63 (clamped).
  var m = (val|0) - 64;
  if (m < -64) m = -64;
  if (m >  63) m =  63;
  return m;
}


function centsToPB(c){
  var v = (c / maxDeviation) * 8191.0;
  if (v > 8191) v = 8191;
  if (v < -8192) v = -8192;
  return Math.round(v);
}

function sendPB(ch, value){
  var pb = new PitchBend;
  pb.channel = safeCh(ch);
  pb.value = value;
  pb.send();
  centered[ch] = (value === 0);
}

function key(inCh, pitch, id){ return ((safeCh(inCh)&0xFF)<<16) | ((pitch&0x7F)<<8) | (id&0xFF); }

function allocChannel(){
  for (var ch=memberStart; ch<=memberEnd; ch++){
    if (channelBusy[ch]===0) return ch;
  }
  var best = memberStart, min = channelBusy[memberStart];
  for (var c=memberStart+1; c<=memberEnd; c++){
    if (channelBusy[c] < min){ min = channelBusy[c]; best = c; }
  }
  return best;
}

// ===== Main =====
function HandleMIDI(e){

  if (e instanceof ControlChange && e.number === ccNumber){
    var ch = safeCh(e.channel);
    var micro = microFromCC(e.value|0);
    microByInCh[ch] = micro;
    if (offsetScopeGlobal) globalMicro = micro;
    if (debug) Trace("CC"+ccNumber+" ch "+ch+" val="+e.value+" → micro "+micro+(offsetScopeGlobal?" (GLOBAL)":""));
    if (swallowCC) return;
    e.send();
    return;
  }

  if (e instanceof NoteOn){
    var inCh = safeCh(e.channel);
    var base = baseStepFromInChannel(inCh);
    var micro = offsetScopeGlobal ? globalMicro : (microByInCh[inCh] || 0);
    var step = base + micro;
    var cents = step * STEP_CENTS;
    var pb = centsToPB(cents);

    var tgt = allocChannel();

    if (debug){
      Trace("Note "+e.pitch+" inCh "+inCh+" base="+base+" micro="+micro+" step="+step+
            " → "+cents.toExponential(5)+"¢  allocCh="+tgt+"  PB="+pb);
    }

    sendPB(tgt, pb);

    var on = new NoteOn(e);
    on.channel = tgt;
    if (noteDelayMs>0) on.sendAfterMilliseconds(noteDelayMs);
    else on.send();

    channelBusy[tgt]++;
    var id = (uniq = (uniq+1)&0xFF) || 1;
    noteMap[key(inCh, e.pitch, id)] = { ch:tgt, id:id };
    return;
  }

  if (e instanceof NoteOff){
    var inCh = safeCh(e.channel);
    var foundKey = null, info = null, bestId = -1;
    for (var k in noteMap){
      var packed = k|0, kCh = (packed>>16)&0xFF, kPitch = (packed>>8)&0x7F, val = noteMap[k];
      if (kCh===inCh && kPitch===(e.pitch|0) && val.id>bestId){ bestId = val.id; foundKey=k; info=val; }
    }

    var off = new NoteOff(e);
    if (info){
      off.channel = info.ch;
      off.send();
      channelBusy[info.ch] = Math.max(0, channelBusy[info.ch]-1);
      if (channelBusy[info.ch]===0 && !centered[info.ch]) sendPB(info.ch, 0);
      delete noteMap[foundKey];
    } else {
      off.channel = inCh;
      off.send();
    }
    return;
  }

  e.send();
}

function Reset(){
  for (var ch=1; ch<=16; ch++){
    channelBusy[ch]=0; centered[ch]=false; sendPB(ch,0);
    microByInCh[ch]=0;
  }
  globalMicro=0; noteMap={}; uniq=1;
  Trace("Reset: allocator "+memberStart+".."+memberEnd+" cleared; PB centered.");
}

NOTE: You need to tune your 12 notes to a scale supported by your edo. I recommend 12edo or Pyth-like 5L 7s 6|5 if you're not using a 12n edo. I use MTS-ESP to do this globally, but you could do it inside the plugin itself.

Parameters:

  • EDO: Obviously, the edo you'll be working with.
  • Channel at which step=0 (n): from 3 to 9. The midpoint of your edostep deviations. Channel 1 is not used here. If you choose 5, then your edosteps will be 2:-3, 3:-2, 4:-1, 5:0, 6:+1, 7:+2, 8:+3, so the amount of deviations you have at your disposal is 2n+1. Note that no matter the input channel (the one in your piano roll), it will be sent as Channel 1, or allocated to another channel for MPE.
  • PB range (± cents): The range of your plugin's PB. Recommend values like 200 or 1200. For MPE, it is often 4800, but if you're using very fine grained edos, you might want to bring this down to get more resolution.
  • Articulation CC#: The CC at which articulations will be sent, you can change it if it causes conflicts with your plugin, but then you need to change all the articulation set's CC. Not recommended.
  • MidiChDeviationSplit: Multiplies the edosteps deviations of the MIDI channels by this number. at n=9, and this=16, then 10:+16, 8:-16, 11:+32, 7:-32... etc. If you are using HUGE edos (or edos with sharpness higher than 15), you will need to set this to a value bigger than 1. If you set this to 1, you can use it for smaller edos without duplicating instances (Preset-scale deviations - MIDI channels only, 12n)
  • Offset scope: I don't know what this is. I set it to Global-Last, and I assume it has something to do with the MPE. But it works.
  • Swallow CC to synth: I suppose this makes the synth recieve CC27...?
  • Member Ch Start: The lowest working channel for MPE.
  • Member Ch End: The highest working channel for MPE.
  • NoteOn Delay (ms): Set higher than 0 if the notes aren't being detuned correctly. Obviously, don't set it too high. Default 2.
  • Debug Trace: If something is not working, check this box to see debugging output in the Scripter.
.plist Articulation set
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Articulations</key>
	<array>
		<dict><key>ArticulationID</key><integer>1</integer><key>ID</key><integer>1001</integer><key>Name</key><string>-64</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>0</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>2</integer><key>ID</key><integer>1002</integer><key>Name</key><string>-63</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>1</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>3</integer><key>ID</key><integer>1003</integer><key>Name</key><string>-62</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>2</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>4</integer><key>ID</key><integer>1004</integer><key>Name</key><string>-61</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>3</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>5</integer><key>ID</key><integer>1005</integer><key>Name</key><string>-60</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>4</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>6</integer><key>ID</key><integer>1006</integer><key>Name</key><string>-59</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>5</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>7</integer><key>ID</key><integer>1007</integer><key>Name</key><string>-58</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>6</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>8</integer><key>ID</key><integer>1008</integer><key>Name</key><string>-57</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>7</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>9</integer><key>ID</key><integer>1009</integer><key>Name</key><string>-56</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>8</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>10</integer><key>ID</key><integer>1010</integer><key>Name</key><string>-55</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>9</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>11</integer><key>ID</key><integer>1011</integer><key>Name</key><string>-54</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>10</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>12</integer><key>ID</key><integer>1012</integer><key>Name</key><string>-53</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>11</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>13</integer><key>ID</key><integer>1013</integer><key>Name</key><string>-52</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>12</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>14</integer><key>ID</key><integer>1014</integer><key>Name</key><string>-51</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>13</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>15</integer><key>ID</key><integer>1015</integer><key>Name</key><string>-50</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>14</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>16</integer><key>ID</key><integer>1016</integer><key>Name</key><string>-49</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>15</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>17</integer><key>ID</key><integer>1017</integer><key>Name</key><string>-48</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>16</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>18</integer><key>ID</key><integer>1018</integer><key>Name</key><string>-47</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>17</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>19</integer><key>ID</key><integer>1019</integer><key>Name</key><string>-46</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>18</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>20</integer><key>ID</key><integer>1020</integer><key>Name</key><string>-45</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>19</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>21</integer><key>ID</key><integer>1021</integer><key>Name</key><string>-44</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>20</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>22</integer><key>ID</key><integer>1022</integer><key>Name</key><string>-43</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>21</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>23</integer><key>ID</key><integer>1023</integer><key>Name</key><string>-42</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>22</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>24</integer><key>ID</key><integer>1024</integer><key>Name</key><string>-41</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>23</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>25</integer><key>ID</key><integer>1025</integer><key>Name</key><string>-40</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>24</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>26</integer><key>ID</key><integer>1026</integer><key>Name</key><string>-39</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>25</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>27</integer><key>ID</key><integer>1027</integer><key>Name</key><string>-38</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>26</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>28</integer><key>ID</key><integer>1028</integer><key>Name</key><string>-37</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>27</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>29</integer><key>ID</key><integer>1029</integer><key>Name</key><string>-36</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>28</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>30</integer><key>ID</key><integer>1030</integer><key>Name</key><string>-35</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>29</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>31</integer><key>ID</key><integer>1031</integer><key>Name</key><string>-34</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>30</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>32</integer><key>ID</key><integer>1032</integer><key>Name</key><string>-33</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>31</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>33</integer><key>ID</key><integer>1033</integer><key>Name</key><string>-32</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>32</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>34</integer><key>ID</key><integer>1034</integer><key>Name</key><string>-31</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>33</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>35</integer><key>ID</key><integer>1035</integer><key>Name</key><string>-30</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>34</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>36</integer><key>ID</key><integer>1036</integer><key>Name</key><string>-29</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>35</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>37</integer><key>ID</key><integer>1037</integer><key>Name</key><string>-28</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>36</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>38</integer><key>ID</key><integer>1038</integer><key>Name</key><string>-27</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>37</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>39</integer><key>ID</key><integer>1039</integer><key>Name</key><string>-26</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>38</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>40</integer><key>ID</key><integer>1040</integer><key>Name</key><string>-25</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>39</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>41</integer><key>ID</key><integer>1041</integer><key>Name</key><string>-24</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>40</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>42</integer><key>ID</key><integer>1042</integer><key>Name</key><string>-23</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>41</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>43</integer><key>ID</key><integer>1043</integer><key>Name</key><string>-22</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>42</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>44</integer><key>ID</key><integer>1044</integer><key>Name</key><string>-21</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>43</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>45</integer><key>ID</key><integer>1045</integer><key>Name</key><string>-20</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>44</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>46</integer><key>ID</key><integer>1046</integer><key>Name</key><string>-19</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>45</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>47</integer><key>ID</key><integer>1047</integer><key>Name</key><string>-18</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>46</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>48</integer><key>ID</key><integer>1048</integer><key>Name</key><string>-17</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>47</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>49</integer><key>ID</key><integer>1049</integer><key>Name</key><string>-16</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>48</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>50</integer><key>ID</key><integer>1050</integer><key>Name</key><string>-15</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>49</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>51</integer><key>ID</key><integer>1051</integer><key>Name</key><string>-14</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>50</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>52</integer><key>ID</key><integer>1052</integer><key>Name</key><string>-13</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>51</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>53</integer><key>ID</key><integer>1053</integer><key>Name</key><string>-12</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>52</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>54</integer><key>ID</key><integer>1054</integer><key>Name</key><string>-11</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>53</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>55</integer><key>ID</key><integer>1055</integer><key>Name</key><string>-10</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>54</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>56</integer><key>ID</key><integer>1056</integer><key>Name</key><string>-9</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>55</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>57</integer><key>ID</key><integer>1057</integer><key>Name</key><string>-8</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>56</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>58</integer><key>ID</key><integer>1058</integer><key>Name</key><string>-7</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>57</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>59</integer><key>ID</key><integer>1059</integer><key>Name</key><string>-6</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>58</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>60</integer><key>ID</key><integer>1060</integer><key>Name</key><string>-5</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>59</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>61</integer><key>ID</key><integer>1061</integer><key>Name</key><string>-4</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>60</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>62</integer><key>ID</key><integer>1062</integer><key>Name</key><string>-3</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>61</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>63</integer><key>ID</key><integer>1063</integer><key>Name</key><string>-2</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>62</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>64</integer><key>ID</key><integer>1064</integer><key>Name</key><string>-1</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>63</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>65</integer><key>ID</key><integer>1065</integer><key>Name</key><string>0</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>64</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>66</integer><key>ID</key><integer>1066</integer><key>Name</key><string>+1</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>65</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>67</integer><key>ID</key><integer>1067</integer><key>Name</key><string>+2</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>66</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>68</integer><key>ID</key><integer>1068</integer><key>Name</key><string>+3</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>67</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>69</integer><key>ID</key><integer>1069</integer><key>Name</key><string>+4</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>68</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>70</integer><key>ID</key><integer>1070</integer><key>Name</key><string>+5</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>69</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>71</integer><key>ID</key><integer>1071</integer><key>Name</key><string>+6</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>70</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>72</integer><key>ID</key><integer>1072</integer><key>Name</key><string>+7</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>71</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>73</integer><key>ID</key><integer>1073</integer><key>Name</key><string>+8</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>72</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>74</integer><key>ID</key><integer>1074</integer><key>Name</key><string>+9</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>73</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>75</integer><key>ID</key><integer>1075</integer><key>Name</key><string>+10</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>74</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>76</integer><key>ID</key><integer>1076</integer><key>Name</key><string>+11</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>75</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>77</integer><key>ID</key><integer>1077</integer><key>Name</key><string>+12</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>76</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>78</integer><key>ID</key><integer>1078</integer><key>Name</key><string>+13</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>77</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>79</integer><key>ID</key><integer>1079</integer><key>Name</key><string>+14</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>78</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>80</integer><key>ID</key><integer>1080</integer><key>Name</key><string>+15</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>79</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>81</integer><key>ID</key><integer>1081</integer><key>Name</key><string>+16</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>80</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>82</integer><key>ID</key><integer>1082</integer><key>Name</key><string>+17</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>81</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>83</integer><key>ID</key><integer>1083</integer><key>Name</key><string>+18</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>82</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>84</integer><key>ID</key><integer>1084</integer><key>Name</key><string>+19</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>83</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>85</integer><key>ID</key><integer>1085</integer><key>Name</key><string>+20</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>84</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>86</integer><key>ID</key><integer>1086</integer><key>Name</key><string>+21</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>85</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>87</integer><key>ID</key><integer>1087</integer><key>Name</key><string>+22</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>86</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>88</integer><key>ID</key><integer>1088</integer><key>Name</key><string>+23</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>87</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>89</integer><key>ID</key><integer>1089</integer><key>Name</key><string>+24</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>88</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>90</integer><key>ID</key><integer>1090</integer><key>Name</key><string>+25</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>89</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>91</integer><key>ID</key><integer>1091</integer><key>Name</key><string>+26</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>90</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>92</integer><key>ID</key><integer>1092</integer><key>Name</key><string>+27</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>91</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>93</integer><key>ID</key><integer>1093</integer><key>Name</key><string>+28</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>92</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>94</integer><key>ID</key><integer>1094</integer><key>Name</key><string>+29</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>93</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>95</integer><key>ID</key><integer>1095</integer><key>Name</key><string>+30</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>94</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>96</integer><key>ID</key><integer>1096</integer><key>Name</key><string>+31</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>95</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>97</integer><key>ID</key><integer>1097</integer><key>Name</key><string>+32</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>96</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>98</integer><key>ID</key><integer>1098</integer><key>Name</key><string>+33</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>97</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>99</integer><key>ID</key><integer>1099</integer><key>Name</key><string>+34</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>98</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>100</integer><key>ID</key><integer>1100</integer><key>Name</key><string>+35</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>99</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>101</integer><key>ID</key><integer>1101</integer><key>Name</key><string>+36</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>100</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>102</integer><key>ID</key><integer>1102</integer><key>Name</key><string>+37</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>101</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>103</integer><key>ID</key><integer>1103</integer><key>Name</key><string>+38</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>102</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>104</integer><key>ID</key><integer>1104</integer><key>Name</key><string>+39</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>103</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>105</integer><key>ID</key><integer>1105</integer><key>Name</key><string>+40</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>104</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>106</integer><key>ID</key><integer>1106</integer><key>Name</key><string>+41</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>105</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>107</integer><key>ID</key><integer>1107</integer><key>Name</key><string>+42</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>106</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>108</integer><key>ID</key><integer>1108</integer><key>Name</key><string>+43</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>107</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>109</integer><key>ID</key><integer>1109</integer><key>Name</key><string>+44</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>108</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>110</integer><key>ID</key><integer>1110</integer><key>Name</key><string>+45</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>109</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>111</integer><key>ID</key><integer>1111</integer><key>Name</key><string>+46</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>110</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>112</integer><key>ID</key><integer>1112</integer><key>Name</key><string>+47</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>111</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>113</integer><key>ID</key><integer>1113</integer><key>Name</key><string>+48</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>112</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>114</integer><key>ID</key><integer>1114</integer><key>Name</key><string>+49</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>113</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>115</integer><key>ID</key><integer>1115</integer><key>Name</key><string>+50</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>114</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>116</integer><key>ID</key><integer>1116</integer><key>Name</key><string>+51</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>115</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>117</integer><key>ID</key><integer>1117</integer><key>Name</key><string>+52</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>116</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>118</integer><key>ID</key><integer>1118</integer><key>Name</key><string>+53</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>117</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>119</integer><key>ID</key><integer>1119</integer><key>Name</key><string>+54</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>118</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>120</integer><key>ID</key><integer>1120</integer><key>Name</key><string>+55</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>119</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>121</integer><key>ID</key><integer>1121</integer><key>Name</key><string>+56</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>120</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>122</integer><key>ID</key><integer>1122</integer><key>Name</key><string>+57</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>121</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>123</integer><key>ID</key><integer>1123</integer><key>Name</key><string>+58</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>122</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>124</integer><key>ID</key><integer>1124</integer><key>Name</key><string>+59</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>123</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>125</integer><key>ID</key><integer>1125</integer><key>Name</key><string>+60</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>124</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>126</integer><key>ID</key><integer>1126</integer><key>Name</key><string>+61</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>125</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>127</integer><key>ID</key><integer>1127</integer><key>Name</key><string>+62</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>126</integer></dict></array></dict>
		<dict><key>ArticulationID</key><integer>128</integer><key>ID</key><integer>1128</integer><key>Name</key><string>+63</string><key>Output</key><array><dict><key>MB1</key><integer>27</integer><key>Status</key><string>Controller</string><key>ValueLow</key><integer>127</integer></dict></array></dict>
	</array>
	<key>Name</key>
	<string>ScriptEDOmicrodeviation_CC27_full_range</string>
	<key>Switches</key>
	<array/>
</dict>
</plist>