How to know which program changes are used in a midi file ?


    May 22 2011 | 2:01 pm
    Hello,
    After loading a midi file (type 1) in max, I want to know the program change number used for each track. I tried detonate, but he gives no info for the program change...
    For example, in a midi file with 3 instruments, how can I know that one instrument use program change 0 for a piano sound, another one use program change 32 for a bass, etc. ?
    Thanks

    • May 22 2011 | 7:10 pm
      If your question is about knowing what program change messages are contained in the file, you can use [pgmin] to track the messages. On the other hand, if your question is about which instrument produces a piano sound for a given patch number, that's often not standardized--unless they are using General MIDI--but a function of the synth itself.
    • May 22 2011 | 8:00 pm
      Thanks for your answer.
      Indeed, my question is about knowing what program change messages are contained in a midi file.
      I've looked to the pgmin but I don't understand at all how it works. In patch help and reference page it's always used with the input connected to nothing (!?), so how did it receives MIDI information ? And from where ?
      In my case, I have a midi files which is played by a detonate object. So I have to connect one of the output of detonate object to the input of pgmin ?
      Thanks again for your help, I'm totally lost with this...
    • May 22 2011 | 8:07 pm
      [detonate] should be able to output controller 0, but you could also use
      [filein], read at word, and search for the hex string for controller 0.
      -110
    • May 22 2011 | 8:08 pm
      What if you used [seq] instead of [detonate]? If all you need to do is play MIDI sequences, would that work? You could then connect the [pgmin] object to the left outlet of [seq]. Check out the helpfile for [seq] for instructions on loading and playing MIDI files.
    • May 22 2011 | 8:55 pm
      Thanks both for the tips.
      In fact, I use detonate because I have to deal with midi file type 1.
      To explain a little more, I have to load a midi file (type 1) and played each track with different vst sounds. For example, if my midi file have 3 tracks : Acoustic Grand Piano / Acoustic Guitar (nylon) / Slap Bass 1, I have to send the piano track to a vst~ object and use program change 0 to play it, then the program change 24 for the guitar on another vst and the program change 36 for the bass on a third vst.
      So that's why I'm trying to automatically get the program change of each track to assign the track to the right vst preset.
    • May 22 2011 | 9:08 pm
      How about [mtr] then?
    • May 22 2011 | 10:29 pm
      Unfortunately there is no Max object for playing (or analyzing) universal midi files.
      But you could try the external 'ajm.midi2coll' from Adam Murray.
    • May 22 2011 | 10:44 pm
      I tried with seq and pgmin doesn't work. But I think I'm doing mistakes.
      It's the first time I use MIDI in max so I discover a new (complex) world :-)
      I'm looking at [mtr] but I don't understand yet how it works.
    • May 22 2011 | 10:46 pm
      Oh I didn't saw your answer broc.
      Thank you, I'll take a look at this object.
    • May 22 2011 | 11:16 pm
      Have you checked the MIDI tutorials in Max?
    • May 23 2011 | 10:05 am
      Yep I've checked the MIDI tutorials, but I have to spend more time to understand all objects.
    • Nov 06 2015 | 4:46 am
      {
      "boxes" : [ {
      "box" : {
      "maxclass" : "message",
      "text" : "0",
      "outlettype" : [ "" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-63",
      "patching_rect" : [ 224.0, 772.0, 29.5, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "gswitch2",
      "parameter_enable" : 0,
      "outlettype" : [ "", "" ],
      "int" : 1,
      "style" : "",
      "presentation_rect" : [ 355.833344, 745.333374, 0.0, 0.0 ],
      "numinlets" : 2,
      "id" : "obj-59",
      "patching_rect" : [ 319.5, 761.333313, 39.0, 32.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "del 10",
      "outlettype" : [ "bang" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-58",
      "patching_rect" : [ 261.25, 660.0, 43.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "presentation_rect" : [ 565.333313, 805.666687, 0.0, 0.0 ],
      "numinlets" : 1,
      "id" : "obj-56",
      "patching_rect" : [ 494.5, 755.333374, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "0",
      "outlettype" : [ "" ],
      "style" : "",
      "presentation_rect" : [ 605.333313, 641.333313, 0.0, 0.0 ],
      "numinlets" : 2,
      "id" : "obj-53",
      "patching_rect" : [ 533.25, 622.666687, 29.5, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "1",
      "outlettype" : [ "" ],
      "style" : "",
      "presentation_rect" : [ 546.333313, 641.333313, 0.0, 0.0 ],
      "numinlets" : 2,
      "id" : "obj-54",
      "patching_rect" : [ 499.25, 622.666687, 29.5, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "gswitch2",
      "parameter_enable" : 0,
      "outlettype" : [ "", "" ],
      "style" : "",
      "presentation_rect" : [ 546.333313, 687.333313, 0.0, 0.0 ],
      "numinlets" : 2,
      "id" : "obj-55",
      "patching_rect" : [ 494.5, 674.666687, 39.0, 32.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "presentation_rect" : [ 627.0, 389.666656, 0.0, 0.0 ],
      "numinlets" : 1,
      "id" : "obj-47",
      "patching_rect" : [ 545.0, 580.333374, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-46",
      "patching_rect" : [ 508.0, 441.666687, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "max reached",
      "style" : "helpfile_label",
      "numinlets" : 1,
      "id" : "obj-31",
      "patching_rect" : [ 532.0, 441.666687, 88.0, 21.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "min reached",
      "style" : "helpfile_label",
      "numinlets" : 1,
      "id" : "obj-29",
      "patching_rect" : [ 508.0, 475.666687, 84.0, 21.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-37",
      "patching_rect" : [ 532.0, 402.666687, 50.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "toggle",
      "parameter_enable" : 0,
      "outlettype" : [ "int" ],
      "style" : "",
      "presentation_rect" : [ 503.0, 321.0, 24.0, 24.0 ],
      "numinlets" : 1,
      "id" : "obj-39",
      "patching_rect" : [ 484.0, 475.666687, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-40",
      "patching_rect" : [ 459.999969, 509.666687, 50.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "counter 0 1 5000",
      "outlettype" : [ "int", "", "", "int" ],
      "fontname" : "Arial",
      "style" : "",
      "fontface" : 0,
      "fontsize" : 13.0,
      "numinlets" : 5,
      "id" : "obj-3",
      "patching_rect" : [ 459.999969, 372.666687, 108.0, 23.0 ],
      "numoutlets" : 4
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "del 1",
      "outlettype" : [ "bang" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-34",
      "patching_rect" : [ 542.0, 524.000061, 37.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "byte-offset 1000",
      "outlettype" : [ "" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-22",
      "patching_rect" : [ 244.0, 327.333344, 94.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "defer",
      "outlettype" : [ "" ],
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-24",
      "patching_rect" : [ 209.0, 647.333313, 37.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "Gets the file info\n",
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-21",
      "patching_rect" : [ 254.0, 701.333313, 150.0, 21.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "0",
      "outlettype" : [ "" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-13",
      "patching_rect" : [ 268.0, 557.333313, 29.5, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "1",
      "outlettype" : [ "" ],
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-9",
      "patching_rect" : [ 209.0, 557.333313, 29.5, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-4",
      "patching_rect" : [ 209.0, 699.833313, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "gswitch2",
      "parameter_enable" : 0,
      "outlettype" : [ "", "" ],
      "int" : 1,
      "style" : "",
      "numinlets" : 2,
      "id" : "obj-2",
      "patching_rect" : [ 209.0, 603.333313, 39.0, 32.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "print ProgramChange",
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-1",
      "patching_rect" : [ 123.5, 822.333313, 120.0, 23.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "midiparse",
      "outlettype" : [ "", "", "", "int", "int", "int", "int" ],
      "style" : "",
      "numinlets" : 1,
      "id" : "obj-49",
      "patching_rect" : [ 92.0, 770.333313, 82.0, 23.0 ],
      "numoutlets" : 7
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "counter",
      "outlettype" : [ "int", "", "", "int" ],
      "style" : "",
      "numinlets" : 5,
      "id" : "obj-44",
      "patching_rect" : [ 324.0, 275.333344, 61.0, 23.0 ],
      "numoutlets" : 4
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "fclose",
      "outlettype" : [ "" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 2,
      "id" : "obj-27",
      "patching_rect" : [ 139.0, 388.333344, 45.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "bang when 'read' finished",
      "linecount" : 2,
      "style" : "helpfile_label",
      "numinlets" : 1,
      "id" : "obj-20",
      "patching_rect" : [ 294.0, 518.333313, 90.0, 35.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "bang on end of file",
      "linecount" : 2,
      "style" : "helpfile_label",
      "numinlets" : 1,
      "id" : "obj-19",
      "patching_rect" : [ 184.0, 518.333313, 69.0, 35.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "data output",
      "style" : "helpfile_label",
      "numinlets" : 1,
      "id" : "obj-18",
      "patching_rect" : [ 94.0, 518.333313, 77.0, 21.0 ],
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "presentation_rect" : [ 265.0, 350.0, 24.0, 24.0 ],
      "numinlets" : 1,
      "id" : "obj-17",
      "patching_rect" : [ 268.0, 493.333344, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "outlettype" : [ "bang" ],
      "style" : "",
      "presentation_rect" : [ 145.0, 350.0, 24.0, 24.0 ],
      "numinlets" : 1,
      "id" : "obj-16",
      "patching_rect" : [ 209.0, 493.333344, 24.0, 24.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-14",
      "patching_rect" : [ 89.0, 499.333344, 87.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-12",
      "patching_rect" : [ 314.0, 388.333344, 50.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-11",
      "patching_rect" : [ 204.0, 388.333344, 50.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "number",
      "parameter_enable" : 0,
      "outlettype" : [ "", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 1,
      "id" : "obj-10",
      "patching_rect" : [ 158.5, 327.333344, 66.0, 23.0 ],
      "numoutlets" : 2
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "spool",
      "outlettype" : [ "" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 2,
      "id" : "obj-8",
      "patching_rect" : [ 106.5, 322.333344, 42.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "read",
      "outlettype" : [ "" ],
      "fontname" : "Arial",
      "style" : "",
      "fontsize" : 13.0,
      "numinlets" : 2,
      "id" : "obj-7",
      "patching_rect" : [ 89.0, 288.333344, 37.0, 23.0 ],
      "numoutlets" : 1
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "filein",
      "outlettype" : [ "int", "bang", "bang" ],
      "fontname" : "Arial",
      "style" : "",
      "fontface" : 0,
      "fontsize" : 13.0,
      "numinlets" : 3,
      "id" : "obj-5",
      "patching_rect" : [ 89.0, 448.333344, 40.0, 23.0 ],
      "numoutlets" : 3
      }
      }
      ],
      "lines" : [ {
      "patchline" : {
      "source" : [ "obj-46", 0 ],
      "destination" : [ "obj-34", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-34", 0 ],
      "destination" : [ "obj-47", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-17", 0 ],
      "destination" : [ "obj-4", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-3", 1 ],
      "destination" : [ "obj-39", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-3", 3 ],
      "destination" : [ "obj-37", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-3", 0 ],
      "destination" : [ "obj-40", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-10", 0 ],
      "destination" : [ "obj-3", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-3", 2 ],
      "destination" : [ "obj-46", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-7", 0 ],
      "destination" : [ "obj-63", 0 ],
      "hidden" : 0,
      "midpoints" : [ 98.5, 340.333344, 75.0, 340.333344, 75.0, 756.0, 233.5, 756.0 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-63", 0 ],
      "destination" : [ "obj-59", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-9", 0 ],
      "destination" : [ "obj-59", 0 ],
      "hidden" : 0,
      "midpoints" : [ 218.5, 594.333313, 329.0, 594.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-59", 0 ],
      "destination" : [ "obj-55", 1 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-4", 0 ],
      "destination" : [ "obj-59", 1 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-55", 0 ],
      "destination" : [ "obj-44", 0 ],
      "hidden" : 0,
      "midpoints" : [ 504.0, 729.666626, 406.0, 729.666626, 406.0, 251.333313, 333.5, 251.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-58", 0 ],
      "destination" : [ "obj-4", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-47", 0 ],
      "destination" : [ "obj-58", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-55", 0 ],
      "destination" : [ "obj-56", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-47", 0 ],
      "destination" : [ "obj-53", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-46", 0 ],
      "destination" : [ "obj-54", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-53", 0 ],
      "destination" : [ "obj-55", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-54", 0 ],
      "destination" : [ "obj-55", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-24", 0 ],
      "destination" : [ "obj-4", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-9", 0 ],
      "destination" : [ "obj-2", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-8", 0 ],
      "destination" : [ "obj-5", 0 ],
      "hidden" : 0,
      "midpoints" : [ 116.0, 434.333313, 98.5, 434.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-7", 0 ],
      "destination" : [ "obj-5", 0 ],
      "hidden" : 0,
      "midpoints" : [ 98.5, 314.333313, 98.5, 314.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-5", 0 ],
      "destination" : [ "obj-49", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-5", 2 ],
      "destination" : [ "obj-17", 0 ],
      "hidden" : 0,
      "midpoints" : [ 119.5, 473.333313, 277.5, 473.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-5", 1 ],
      "destination" : [ "obj-16", 0 ],
      "hidden" : 0,
      "midpoints" : [ 109.0, 473.333313, 218.5, 473.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-5", 0 ],
      "destination" : [ "obj-14", 0 ],
      "hidden" : 0,
      "midpoints" : [ 98.5, 473.333313, 98.5, 473.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-49", 3 ],
      "destination" : [ "obj-1", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-44", 0 ],
      "destination" : [ "obj-10", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-27", 0 ],
      "destination" : [ "obj-5", 0 ],
      "hidden" : 0,
      "midpoints" : [ 148.5, 434.333313, 98.5, 434.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-2", 0 ],
      "destination" : [ "obj-24", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-17", 0 ],
      "destination" : [ "obj-13", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-16", 0 ],
      "destination" : [ "obj-9", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-14", 0 ],
      "destination" : [ "obj-2", 1 ],
      "hidden" : 0,
      "midpoints" : [ 98.5, 587.333313, 238.5, 587.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-13", 0 ],
      "destination" : [ "obj-44", 2 ],
      "hidden" : 0,
      "midpoints" : [ 277.5, 598.333313, 393.333344, 598.333313, 393.333344, 264.333313, 354.5, 264.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-13", 0 ],
      "destination" : [ "obj-2", 0 ],
      "hidden" : 0,
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-12", 0 ],
      "destination" : [ "obj-5", 2 ],
      "hidden" : 0,
      "midpoints" : [ 323.5, 434.333313, 119.5, 434.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-11", 0 ],
      "destination" : [ "obj-5", 1 ],
      "hidden" : 0,
      "midpoints" : [ 213.5, 434.333313, 109.0, 434.333313 ],
      "disabled" : 0
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-10", 0 ],
      "destination" : [ "obj-5", 0 ],
      "hidden" : 0,
      "midpoints" : [ 168.0, 377.333313, 98.5, 377.333313 ],
      "disabled" : 0
      }
      }
      ],
      "appversion" : {
      "major" : 7,
      "minor" : 0,
      "revision" : 6,
      "architecture" : "x86",
      "modernui" : 1
      }
      }
    • Nov 06 2015 | 4:50 am
      Oops, meant to compress. I hope someone finds this useful! I'd love feedback if there are better ways to do it.